From 2f218707a55543db11992b9fcb5ada38c2af49b2 Mon Sep 17 00:00:00 2001 From: SuperRonanCraft Date: Fri, 11 Dec 2020 16:51:27 -0500 Subject: [PATCH] custom world price fix --- pom.xml | 2 +- .../player/commands/types/CmdInfo.java | 30 +++++++++++++--- .../BetterRTP/player/rtp/RTP.java | 4 +-- .../references/worlds/WorldCustom.java | 36 +++++++++++-------- .../references/worlds/WorldDefault.java | 23 ++++++++++-- .../references/worlds/WorldPlayer.java | 7 ++-- src/main/resources/config.yml | 7 ++-- src/main/resources/economy.yml | 6 ++-- src/main/resources/plugin.yml | 2 +- 9 files changed, 84 insertions(+), 33 deletions(-) diff --git a/pom.xml b/pom.xml index 2432be4..2f8c17a 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ me.SuperRonanCraft BetterRTP jar - 3.0.2 + 3.0.3 1.8 diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdInfo.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdInfo.java index dbb81a8..9b203c0 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdInfo.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdInfo.java @@ -3,6 +3,7 @@ package me.SuperRonanCraft.BetterRTP.player.commands.types; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; import me.SuperRonanCraft.BetterRTP.player.rtp.RTPParticles; +import me.SuperRonanCraft.BetterRTP.references.worlds.WorldDefault; import me.SuperRonanCraft.BetterRTP.references.worlds.WorldPlayer; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; import me.SuperRonanCraft.BetterRTP.references.worlds.WORLD_TYPE; @@ -125,18 +126,39 @@ public class CmdInfo implements RTPCommand, RTPCommandHelpable { info.add("&7- &6WorldType: &f" + pl.getRTP().world_type.getOrDefault(w.getName(), WORLD_TYPE.NORMAL).name()); info.add("&7- &6Overriden: " + _false); WorldPlayer _rtpworld = BetterRTP.getInstance().getRTP().getPlayerWorld(sendi, w.getName(), null, personal); + WorldDefault worldDefault = BetterRTP.getInstance().getRTP().defaultWorld; info.add("&7- &6Custom: " + (BetterRTP.getInstance().getRTP().customWorlds.containsKey(w.getName()) ? _true : _false)); info.add("&7- &6UseWorldBorder: " + (_rtpworld.getUseWorldborder() ? _true : _false)); info.add("&7- &6Permission Group: " + (_rtpworld.getConfig() != null ? "&e" + _rtpworld.getConfig().name : "&cN/A")); - info.add("&7- &6Center X: &f" + _rtpworld.getCenterX()); - info.add("&7- &6Center Z: &f" + _rtpworld.getCenterZ()); - info.add("&7- &6MaxRad: &f" + _rtpworld.getMaxRad()); - info.add("&7- &6MinRad: &f" + _rtpworld.getMinRad()); + info.add("&7- &6Center X: &f" + _rtpworld.getCenterX() + getInfo(_rtpworld, worldDefault, "centerx")); + info.add("&7- &6Center Z: &f" + _rtpworld.getCenterZ() + getInfo(_rtpworld, worldDefault, "centerz")); + info.add("&7- &6MaxRad: &f" + _rtpworld.getMaxRad() + getInfo(_rtpworld, worldDefault, "max")); + info.add("&7- &6MinRad: &f" + _rtpworld.getMinRad() + getInfo(_rtpworld, worldDefault, "min")); + info.add("&7- &6Price: &f" + _rtpworld.getPrice() + getInfo(_rtpworld, worldDefault, "price")); + info.add("&7- &6World Type: &f" + _rtpworld.getWorldtype().name()); + info.add("&7- &6Biomes: &f" + _rtpworld.getBiomes().toString()); } } return info; } + //Janky, but it works + private String getInfo(WorldPlayer worldPlayer, WorldDefault worldDefault, String type) { + switch (type) { + case "centerx": + return worldPlayer.getUseWorldborder() || worldPlayer.getCenterX() != worldDefault.getCenterX() ? worldPlayer.getUseWorldborder() ? " &8(worldborder)" : "&a*" : ""; + case "centerz": + return worldPlayer.getUseWorldborder() || worldPlayer.getCenterX() != worldDefault.getCenterZ() ? worldPlayer.getUseWorldborder() ? " &8(worldborder)" : "&a*" : ""; + case "max": + return worldPlayer.getUseWorldborder() || worldPlayer.getMaxRad() != worldDefault.getMaxRad() ? worldPlayer.getUseWorldborder() ? " &8(worldborder)" : "&a*" : ""; + case "min": + return worldPlayer.getMinRad() != worldDefault.getMinRad() ? "&a*" : ""; + case "price": + return worldPlayer.getPrice() != worldDefault.getPrice() ? "&a*" : ""; + } + return ""; + } + //Effects private void infoEffects(CommandSender sendi) { List info = new ArrayList<>(); diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java index de26892..ae1f361 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java @@ -123,9 +123,9 @@ public class RTP { // Set all methods if (customWorlds.containsKey(world_name)) { RTPWorld cWorld = customWorlds.get(pWorld.getWorld().getName()); - pWorld.setup(cWorld, cWorld.getPrice(), biomes, personal); + pWorld.setup(cWorld, biomes, personal); } else - pWorld.setup(defaultWorld, defaultWorld.getPrice(), biomes, personal); + pWorld.setup(defaultWorld, biomes, personal); //World type WORLD_TYPE world_type = WORLD_TYPE.NORMAL; //World rtp type if (this.world_type.containsKey(world_name)) diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/WorldCustom.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/WorldCustom.java index 4608413..fdba20f 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/WorldCustom.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/WorldCustom.java @@ -16,7 +16,7 @@ public class WorldCustom implements RTPWorld { private List Biomes; public WorldCustom(String world) { - String pre = "CustomWorlds."; + //String pre = "CustomWorlds."; FileBasics.FILETYPE config = BetterRTP.getInstance().getFiles().getType(FileBasics.FILETYPE.CONFIG); List> map = config.getMapList("CustomWorlds"); this.world = world; @@ -75,8 +75,16 @@ public class WorldCustom implements RTPWorld { } if (test.get("Biomes") != null) { if (test.get("Biomes").getClass() == ArrayList.class) - this.Biomes = new ArrayList<>((ArrayList) test.get("Biomes")); + this.Biomes = new ArrayList((ArrayList) test.get("Biomes")); } + if (BetterRTP.getInstance().getFiles().getType(FileBasics.FILETYPE.ECO).getBoolean("Economy.Enabled")) + if (test.get("Price") != null) { + if (test.get("Price").getClass() == Integer.class) + this.price = Integer.parseInt(test.get("Price").toString()); + else + price = worldDefault.getPrice(world); + } else + price = worldDefault.getPrice(world); } } //Booleans @@ -96,24 +104,22 @@ public class WorldCustom implements RTPWorld { "WARNING! Custom world '" + world + "' Minimum radius of '" + minBorderRad + "' is not allowed! Set to default value!"); minBorderRad = BetterRTP.getInstance().getRTP().defaultWorld.getMinRad(); } - if (BetterRTP.getInstance().getFiles().getType(FileBasics.FILETYPE.ECO).getBoolean("Economy.Enabled")) - if (BetterRTP.getInstance().getFiles().getType(FileBasics.FILETYPE.ECO).getBoolean(pre + "Enabled")) { - map.clear(); - map = BetterRTP.getInstance().getFiles().getType(FileBasics.FILETYPE.ECO).getMapList("CustomWorlds"); - for (Map m : map) + /*if (BetterRTP.getInstance().getFiles().getType(FileBasics.FILETYPE.ECO).getBoolean("Economy.Enabled")) + if (BetterRTP.getInstance().getFiles().getType(FileBasics.FILETYPE.ECO).getBoolean("CustomWorlds.Enabled")) { + List> world_map = BetterRTP.getInstance().getFiles().getType(FileBasics.FILETYPE.ECO).getMapList("CustomWorlds.Worlds"); + for (Map m : world_map) for (Map.Entry entry : m.entrySet()) { - String key = entry.getKey().toString(); - Map test = ((Map) m.get(key)); - if (!key.equals(world)) + String _world = entry.getKey().toString(); + //System.out.println("Custom World Price " + _world + ":" + entry.getValue().toString()); + if (!_world.equals(world)) continue; - if (test.get("Price") != null) - if (test.get("Price").getClass() == Integer.class) - price = Integer.valueOf((test.get("Price")).toString()); + if (entry.getValue().getClass() == Integer.class) + price = Integer.parseInt((entry.getValue().toString())); } } else - price = BetterRTP.getInstance().getRTP().defaultWorld.getPrice(); + price = worldDefault.getPrice();*/ //Other - this.Biomes = config.getStringList(pre + world + ".Biomes"); + //this.Biomes = config.getStringList("CustomWorlds." + world + ".Biomes"); } @Override diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/WorldDefault.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/WorldDefault.java index 8ef5b60..3f1580e 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/WorldDefault.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/WorldDefault.java @@ -5,13 +5,17 @@ import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; import me.SuperRonanCraft.BetterRTP.BetterRTP; import org.bukkit.Bukkit; import org.bukkit.World; +import scala.Int; +import java.util.HashMap; import java.util.List; +import java.util.Map; public class WorldDefault implements RTPWorld { private boolean useWorldborder; private int CenterX, CenterZ, maxBorderRad, minBorderRad, price; private List Biomes; + private HashMap prices = new HashMap<>(); public void setup() { //Setups @@ -34,9 +38,20 @@ public class WorldDefault implements RTPWorld { "WARNING! Default Minimum radius of '" + minBorderRad + "' is not allowed! Set to '0'"); minBorderRad = 0; } - if (BetterRTP.getInstance().getFiles().getType(FileBasics.FILETYPE.ECO).getBoolean("Economy.Enabled")) + prices.clear(); + if (BetterRTP.getInstance().getFiles().getType(FileBasics.FILETYPE.ECO).getBoolean("Economy.Enabled")) { price = BetterRTP.getInstance().getFiles().getType(FileBasics.FILETYPE.ECO).getInt("Economy.Price"); - else + if (BetterRTP.getInstance().getFiles().getType(FileBasics.FILETYPE.ECO).getBoolean("CustomWorlds.Enabled")) { + List> world_map = BetterRTP.getInstance().getFiles().getType(FileBasics.FILETYPE.ECO).getMapList("CustomWorlds.Worlds"); + for (Map m : world_map) + for (Map.Entry entry : m.entrySet()) { + String _world = entry.getKey().toString(); + //System.out.println("Custom World Price " + _world + ":" + entry.getValue().toString()); + if (entry.getValue().getClass() == Integer.class) + prices.put(_world, Integer.parseInt((entry.getValue().toString()))); + } + } + } else price = 0; //Other this.Biomes = config.getStringList(pre + ".Biomes"); @@ -67,6 +82,10 @@ public class WorldDefault implements RTPWorld { return minBorderRad; } + public int getPrice(String world) { + return prices.getOrDefault(world, getPrice()); + } + @Override public int getPrice() { return price; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/WorldPlayer.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/WorldPlayer.java index 4c5356d..c88a72b 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/WorldPlayer.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/WorldPlayer.java @@ -28,13 +28,16 @@ public class WorldPlayer implements RTPWorld { this.world = world; } - public void setup(RTPWorld world, int price, List biomes, boolean personal) { + public void setup(RTPWorld world, List biomes, boolean personal) { setUseWorldborder(world.getUseWorldborder()); setCenterX(world.getCenterX()); setCenterZ(world.getCenterZ()); setMaxRad(world.getMaxRad()); setMinRad(world.getMinRad()); - setPrice(price); + if (world instanceof WorldDefault) + setPrice(((WorldDefault) world).getPrice(world.getWorld().getName())); + else + setPrice(world.getPrice()); List list = new ArrayList<>(world.getBiomes()); if (biomes != null) { list.clear(); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index d687343..ef44d94 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -85,12 +85,13 @@ CustomWorlds: MinRadius: 100 CenterX: 0 CenterZ: 0 - Price: 75 + Price: 50 - other_custom_world: - MaxRadius: 100000 - MinRadius: 1000 + MaxRadius: 10000 + MinRadius: 150 CenterX: 123 CenterZ: -123 + Price: 0 ## Biomes are optional, but useful! More biomes: https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/block/Biome.html Biomes: - 'desert' diff --git a/src/main/resources/economy.yml b/src/main/resources/economy.yml index 2f7383a..d5b379b 100644 --- a/src/main/resources/economy.yml +++ b/src/main/resources/economy.yml @@ -3,7 +3,7 @@ Economy: Enabled: false ## Set to "0" to not charge for rtp, "Success.Bypass" message will be sent! ## Give players the permission "betterrtp.eco.bypass" to bypass economy - Price: 5 + Price: 500 Hunger: #Make rtp'ing take up hunger to avoid exploits Enabled: false @@ -14,6 +14,6 @@ CustomWorlds: Enabled: true Worlds: ## PlayerWorld will be charged "5" when typing /rtp, if they do not have "betterrtp.eco.bypass" - world: 5 + - world: 50 ## Setting the price to "0" will make the "Success.Bypass" message show - world_end: 0 \ No newline at end of file + - world_end: 0 \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 4bdb719..5093063 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ main: me.SuperRonanCraft.BetterRTP.BetterRTP -version: '3.0.2' +version: '3.0.3' name: BetterRTP author: SuperRonanCraft softdepend: