@Override public void schedule(String world, String region) { if (Utils.getEntryBoolean(this, world, region, "taken")) { if (Utils.getEntryLong(this, world, region, "expiredate") < System.currentTimeMillis()) { if (Utils.getEntry(this, world, region, "owner") != null) { final String owner = Utils.getEntryString(this, world, region, "owner"); final String account = Utils.getEntryString(this, world, region, "account"); final Double price = Utils.getEntryDouble(this, world, region, "price"); final Player player = Bukkit.getPlayer(owner); if (SimpleRegionMarket.econManager.econHasEnough(owner, price)) { if (SimpleRegionMarket.econManager.moneyTransaction(owner, account, price)) { final long newExpTime = Utils.getEntryLong(this, world, region, "expiredate") + Utils.getEntryLong(this, world, region, "renttime"); Utils.setEntry(this, world, region, "expiredate", newExpTime); if (player != null) { if (SimpleRegionMarket.configurationHandler .getConfig() .getBoolean("Show_Auto_Expand_Message", true)) { final ArrayList<String> list = new ArrayList<String>(); list.add(region); LangHandler.NormalOut(player, "PLAYER.REGION.AUTO_EXPANDED", list); } SimpleRegionMarket.statisticManager.onMoneysUse( this.id, world, price, account, player.getName()); } return; } } if (player != null) { final ArrayList<String> list = new ArrayList<String>(); list.add(region); LangHandler.NormalOut(player, "PLAYER.REGION.EXPIRED", list); } } untakeRegion(world, region); } } }
@Override public void takeRegion(Player newOwner, String world, String region) { final ProtectedRegion protectedRegion = SimpleRegionMarket.wgManager.getProtectedRegion(Bukkit.getWorld(world), region); if (Utils.getEntryBoolean(this, world, region, "taken")) { final Player oldOwner = Bukkit.getPlayer(Utils.getEntryString(this, world, region, "owner")); final ArrayList<String> list = new ArrayList<String>(); list.add(region); list.add(newOwner.getName()); LangHandler.NormalOut(oldOwner, "PLAYER.REGION.JUST_TAKEN_BY", list); untakeRegion(world, region); } else { // Clear Members protectedRegion.setMembers(new DefaultDomain()); } protectedRegion.getMembers().addPlayer(SimpleRegionMarket.wgManager.wrapPlayer(newOwner)); checkTakeActions(protectedRegion, world); Utils.setEntry(this, world, region, "taken", true); Utils.setEntry(this, world, region, "owner", newOwner.getName()); Utils.setEntry( this, world, region, "expiredate", System.currentTimeMillis() + Utils.getEntryLong(this, world, region, "renttime")); Utils.setEntry(this, world, region, "hidden", true); final ArrayList<String> list = new ArrayList<String>(); list.add(region); LangHandler.NormalOut(newOwner, "PLAYER.REGION.RENT", list); tokenManager.updateSigns(this, world, region); }
@Override public boolean signCreated( Player player, String world, ProtectedRegion protectedRegion, Location signLocation, HashMap<String, String> input, String[] lines) { final String region = protectedRegion.getId(); if (!entries.containsKey(world) || !entries.get(world).containsKey(region)) { final double priceMin = Utils.getOptionDouble(this, "price.min"); final double priceMax = Utils.getOptionDouble(this, "price.max"); double price; if (SimpleRegionMarket.econManager.isEconomy()) { if (input.get("price") != null) { try { price = Double.parseDouble(input.get("price")); } catch (final Exception e) { LangHandler.ErrorOut(player, "PLAYER.ERROR.NO_PRICE", null); return false; } } else { price = priceMin; } } else { price = 0; } if (priceMin > price && (priceMax == -1 || price < priceMax)) { final ArrayList<String> list = new ArrayList<String>(); list.add(String.valueOf(priceMin)); list.add(String.valueOf(priceMax)); LangHandler.ErrorOut(player, "PLAYER.ERROR.PRICE_LIMIT", list); return false; } final long renttimeMin = Utils.getOptionLong(this, "renttime.min"); final long renttimeMax = Utils.getOptionLong(this, "renttime.max"); long renttime; if (input.get("time") != null && !input.get("time").isEmpty()) { try { renttime = Utils.parseSignTime(input.get("time")); } catch (final Exception e) { LangHandler.ErrorOut(player, "PLAYER.ERROR.NO_RENTTIME", null); return false; } } else { LangHandler.ErrorOut(player, "PLAYER.ERROR.NO_RENTTIME", null); return false; } if (renttimeMin > renttime && (renttimeMax == -1 || renttime < renttimeMax)) { final ArrayList<String> list = new ArrayList<String>(); list.add(String.valueOf(renttimeMin)); list.add(String.valueOf(renttimeMax)); LangHandler.ErrorOut(player, "PLAYER.ERROR.RENTTIME_LIMIT", list); return false; } String account = ""; if (input.get("account") != null && !input.get("account").isEmpty()) { account = input.get("account"); if (SimpleRegionMarket.permManager.hadAdminPermissions(player)) { if (input.get("account").equalsIgnoreCase("none")) { account = ""; } } } else { if (SimpleRegionMarket.configurationHandler.getBoolean("Player_Line_Empty")) { account = player.getName(); } else { account = SimpleRegionMarket.configurationHandler.getString("Default_Economy_Account"); } } Utils.setEntry(this, world, region, "price", price); Utils.setEntry(this, world, region, "renttime", renttime); Utils.setEntry(this, world, region, "account", account); Utils.setEntry(this, world, region, "taken", false); Utils.removeEntry(this, world, region, "owner"); } final ArrayList<Location> signLocations = Utils.getSignLocations(this, world, region); signLocations.add(signLocation); if (signLocations.size() == 1) { Utils.setEntry(this, world, region, "signs", signLocations); } tokenManager.updateSigns(this, world, region); return true; }