Progress on #929
Fix area loading from config with negative ids @skroob
This commit is contained in:
Jesse Boyd 2016-03-06 19:07:40 +11:00
parent b95fdeccca
commit 00c174fdf1
8 changed files with 30 additions and 30 deletions

View File

@ -1519,7 +1519,7 @@ public class PS {
} }
for (String areaId : areasSection.getKeys(false)) { for (String areaId : areasSection.getKeys(false)) {
log(C.PREFIX.s() + "&3 - " + areaId); log(C.PREFIX.s() + "&3 - " + areaId);
String[] split = areaId.split("-"); String[] split = areaId.split("(?<![;])-");
if (split.length != 3) { if (split.length != 3) {
throw new IllegalArgumentException("Invalid Area identifier: " + areaId + ". Expected form `<name>-<pos1>-<pos2>`"); throw new IllegalArgumentException("Invalid Area identifier: " + areaId + ". Expected form `<name>-<pos1>-<pos2>`");
} }

View File

@ -138,7 +138,7 @@ public class Auto extends SubCommand {
} }
} }
if ((EconHandler.manager != null) && plotarea.USE_ECONOMY) { if ((EconHandler.manager != null) && plotarea.USE_ECONOMY) {
double cost = plotarea.PLOT_PRICE; double cost = plotarea.PRICES.get("claim");
cost = (size_x * size_z) * cost; cost = (size_x * size_z) * cost;
if (cost > 0d) { if (cost > 0d) {
if (EconHandler.manager.getMoney(plr) < cost) { if (EconHandler.manager.getMoney(plr) < cost) {

View File

@ -109,7 +109,7 @@ public class Claim extends SubCommand {
} }
final PlotArea world = plot.getArea(); final PlotArea world = plot.getArea();
if ((EconHandler.manager != null) && world.USE_ECONOMY) { if ((EconHandler.manager != null) && world.USE_ECONOMY) {
final double cost = world.PLOT_PRICE; final double cost = world.PRICES.get("claim");
if (cost > 0d) { if (cost > 0d) {
if (EconHandler.manager.getMoney(plr) < cost) { if (EconHandler.manager.getMoney(plr) < cost) {
return sendMessage(plr, C.CANNOT_AFFORD_PLOT, "" + cost); return sendMessage(plr, C.CANNOT_AFFORD_PLOT, "" + cost);

View File

@ -74,7 +74,7 @@ public class Delete extends SubCommand {
public void run() { public void run() {
plot.removeRunning(); plot.removeRunning();
if ((EconHandler.manager != null) && plotworld.USE_ECONOMY) { if ((EconHandler.manager != null) && plotworld.USE_ECONOMY) {
final double value = plotworld.SELL_PRICE * plots.size(); final double value = plotworld.PRICES.get("sell") * plots.size();
if (value > 0d) { if (value > 0d) {
EconHandler.manager.depositMoney(plr, value); EconHandler.manager.depositMoney(plr, value);
sendMessage(plr, C.ADDED_BALANCE, value + ""); sendMessage(plr, C.ADDED_BALANCE, value + "");

View File

@ -88,9 +88,10 @@ public class Merge extends SubCommand {
} }
} }
final PlotArea plotworld = plot.getArea(); final PlotArea plotworld = plot.getArea();
if (EconHandler.manager != null && plotworld.USE_ECONOMY && plotworld.MERGE_PRICE > 0d final double price = plotworld.PRICES.get("merge");
&& EconHandler.manager.getMoney(plr) < plotworld.MERGE_PRICE) { if (EconHandler.manager != null && plotworld.USE_ECONOMY && price > 0d
sendMessage(plr, C.CANNOT_AFFORD_MERGE, plotworld.MERGE_PRICE + ""); && EconHandler.manager.getMoney(plr) < price) {
sendMessage(plr, C.CANNOT_AFFORD_MERGE, price + "");
return false; return false;
} }
final int size = plot.getConnectedPlots().size(); final int size = plot.getConnectedPlots().size();
@ -122,9 +123,9 @@ public class Merge extends SubCommand {
terrain = "true".equalsIgnoreCase(args[1]); terrain = "true".equalsIgnoreCase(args[1]);
} }
if (plot.autoMerge(-1, maxSize, uuid, terrain)) { if (plot.autoMerge(-1, maxSize, uuid, terrain)) {
if (EconHandler.manager != null && plotworld.USE_ECONOMY && plotworld.MERGE_PRICE > 0d) { if (EconHandler.manager != null && price > 0d) {
EconHandler.manager.withdrawMoney(plr, plotworld.MERGE_PRICE); EconHandler.manager.withdrawMoney(plr, price);
sendMessage(plr, C.REMOVED_BALANCE, plotworld.MERGE_PRICE + ""); sendMessage(plr, C.REMOVED_BALANCE, price + "");
} }
MainUtil.sendMessage(plr, C.SUCCESS_MERGE); MainUtil.sendMessage(plr, C.SUCCESS_MERGE);
return true; return true;
@ -152,9 +153,9 @@ public class Merge extends SubCommand {
terrain = Settings.MERGE_REMOVES_ROADS; terrain = Settings.MERGE_REMOVES_ROADS;
} }
if (plot.autoMerge(direction, maxSize - size, uuid, terrain)) { if (plot.autoMerge(direction, maxSize - size, uuid, terrain)) {
if (EconHandler.manager != null && plotworld.USE_ECONOMY && plotworld.MERGE_PRICE > 0d) { if (EconHandler.manager != null && plotworld.USE_ECONOMY && price > 0d) {
EconHandler.manager.withdrawMoney(plr, plotworld.MERGE_PRICE); EconHandler.manager.withdrawMoney(plr, price);
sendMessage(plr, C.REMOVED_BALANCE, plotworld.MERGE_PRICE + ""); sendMessage(plr, C.REMOVED_BALANCE, price + "");
} }
MainUtil.sendMessage(plr, C.SUCCESS_MERGE); MainUtil.sendMessage(plr, C.SUCCESS_MERGE);
return true; return true;
@ -187,13 +188,13 @@ public class Merge extends SubCommand {
sendMessage(accepter, C.MERGE_NOT_VALID); sendMessage(accepter, C.MERGE_NOT_VALID);
return; return;
} }
if (EconHandler.manager != null && plotworld.USE_ECONOMY && plotworld.MERGE_PRICE > 0d) { if (EconHandler.manager != null && plotworld.USE_ECONOMY && price > 0d) {
if (EconHandler.manager.getMoney(plr) < plotworld.MERGE_PRICE) { if (EconHandler.manager.getMoney(plr) < price) {
sendMessage(plr, C.CANNOT_AFFORD_MERGE, plotworld.MERGE_PRICE + ""); sendMessage(plr, C.CANNOT_AFFORD_MERGE, price + "");
return; return;
} }
EconHandler.manager.withdrawMoney(plr, plotworld.MERGE_PRICE); EconHandler.manager.withdrawMoney(plr, price);
sendMessage(plr, C.REMOVED_BALANCE, plotworld.MERGE_PRICE + ""); sendMessage(plr, C.REMOVED_BALANCE, price + "");
} }
MainUtil.sendMessage(plr, C.SUCCESS_MERGE); MainUtil.sendMessage(plr, C.SUCCESS_MERGE);
} }

View File

@ -1595,7 +1595,7 @@ public class SQLManager implements AbstractDB {
ConfigurationSection areaSection = worldSection.getConfigurationSection(worldKey + ".areas"); ConfigurationSection areaSection = worldSection.getConfigurationSection(worldKey + ".areas");
if (areaSection != null) { if (areaSection != null) {
for (String areaKey : areaSection.getKeys(false)) { for (String areaKey : areaSection.getKeys(false)) {
String[] split = areaKey.split("-"); String[] split = areaKey.split("(?<![;])-");
if (split.length == 3) { if (split.length == 3) {
areas.add(worldKey + ";" + split[0]); areas.add(worldKey + ";" + split[0]);
} }
@ -2473,7 +2473,7 @@ public class SQLManager implements AbstractDB {
ConfigurationSection areaSection = worldSection.getConfigurationSection(worldKey + ".areas"); ConfigurationSection areaSection = worldSection.getConfigurationSection(worldKey + ".areas");
if (areaSection != null) { if (areaSection != null) {
for (String areaKey : areaSection.getKeys(false)) { for (String areaKey : areaSection.getKeys(false)) {
String[] split = areaKey.split("-"); String[] split = areaKey.split("(?<![;])-");
if (split.length == 3) { if (split.length == 3) {
areas.add(worldKey + ";" + split[0]); areas.add(worldKey + ";" + split[0]);
} }

View File

@ -63,9 +63,7 @@ public abstract class PlotArea {
public List<String> SCHEMATICS = null; public List<String> SCHEMATICS = null;
public HashMap<String, Flag> DEFAULT_FLAGS; public HashMap<String, Flag> DEFAULT_FLAGS;
public boolean USE_ECONOMY = false; public boolean USE_ECONOMY = false;
public double PLOT_PRICE = 100; public HashMap<String, Double> PRICES = new HashMap<>();
public double MERGE_PRICE = 100;
public double SELL_PRICE = 100;
public boolean SPAWN_EGGS = false; public boolean SPAWN_EGGS = false;
public boolean SPAWN_CUSTOM = true; public boolean SPAWN_CUSTOM = true;
public boolean SPAWN_BREEDING = false; public boolean SPAWN_BREEDING = false;
@ -209,9 +207,10 @@ public abstract class PlotArea {
SCHEMATIC_CLAIM_SPECIFY = config.getBoolean("schematic.specify_on_claim"); SCHEMATIC_CLAIM_SPECIFY = config.getBoolean("schematic.specify_on_claim");
SCHEMATICS = config.getStringList("schematic.schematics"); SCHEMATICS = config.getStringList("schematic.schematics");
USE_ECONOMY = config.getBoolean("economy.use") && EconHandler.manager != null; USE_ECONOMY = config.getBoolean("economy.use") && EconHandler.manager != null;
PLOT_PRICE = config.getDouble("economy.prices.claim"); ConfigurationSection priceSection = config.getConfigurationSection("economy.prices");
MERGE_PRICE = config.getDouble("economy.prices.merge"); for (String key : priceSection.getKeys(false)) {
SELL_PRICE = config.getDouble("economy.prices.sell"); PRICES.put(key, priceSection.getDouble(key));
}
PLOT_CHAT = config.getBoolean("chat.enabled"); PLOT_CHAT = config.getBoolean("chat.enabled");
WORLD_BORDER = config.getBoolean("world.border"); WORLD_BORDER = config.getBoolean("world.border");
MAX_BUILD_HEIGHT = config.getInt("world.max_height"); MAX_BUILD_HEIGHT = config.getInt("world.max_height");
@ -303,9 +302,9 @@ public abstract class PlotArea {
options.put("schematic.specify_on_claim", SCHEMATIC_CLAIM_SPECIFY); options.put("schematic.specify_on_claim", SCHEMATIC_CLAIM_SPECIFY);
options.put("schematic.schematics", SCHEMATICS); options.put("schematic.schematics", SCHEMATICS);
options.put("economy.use", USE_ECONOMY); options.put("economy.use", USE_ECONOMY);
options.put("economy.prices.claim", PLOT_PRICE); options.put("economy.prices.claim", 100);
options.put("economy.prices.merge", MERGE_PRICE); options.put("economy.prices.merge", 100);
options.put("economy.prices.sell", SELL_PRICE); options.put("economy.prices.sell", 100);
options.put("chat.enabled", PLOT_CHAT); options.put("chat.enabled", PLOT_CHAT);
options.put("flags.default", null); options.put("flags.default", null);
options.put("event.spawn.egg", SPAWN_EGGS); options.put("event.spawn.egg", SPAWN_EGGS);
@ -700,7 +699,7 @@ public abstract class PlotArea {
public boolean mergePlots(final PlotPlayer player, final ArrayList<PlotId> plotIds) { public boolean mergePlots(final PlotPlayer player, final ArrayList<PlotId> plotIds) {
if (EconHandler.manager != null && USE_ECONOMY) { if (EconHandler.manager != null && USE_ECONOMY) {
final double cost = plotIds.size() * MERGE_PRICE; final double cost = plotIds.size() * PRICES.getOrDefault("merge", 0d);
if (cost > 0d) { if (cost > 0d) {
if (EconHandler.manager.getMoney(player) < cost) { if (EconHandler.manager.getMoney(player) < cost) {
MainUtil.sendMessage(player, C.CANNOT_AFFORD_MERGE, "" + cost); MainUtil.sendMessage(player, C.CANNOT_AFFORD_MERGE, "" + cost);

Binary file not shown.