From 5ebee9590b18d1092e2cce026beae42b2db61f1f Mon Sep 17 00:00:00 2001 From: RonanCraft Date: Tue, 12 Apr 2022 14:51:35 -0400 Subject: [PATCH] cooldown can be set per world type + addons fix --- BetterRTPAddons/pom.xml | 4 ++-- .../addons/rtpmenu/AddonRTPMenu.java | 2 +- .../addons/rtpmenu/RTPMenu_SelectWorld.java | 3 ++- .../BetterRTP/player/commands/types/CmdInfo.java | 11 +++++++---- .../BetterRTP/player/rtp/RTP.java | 8 ++++---- .../references/rtpinfo/CooldownHandler.java | 4 ++-- .../references/rtpinfo/worlds/RTPWorld.java | 4 +--- .../rtpinfo/worlds/RTPWorld_Defaulted.java | 3 +++ .../references/rtpinfo/worlds/WorldCustom.java | 15 +++++++++++++++ .../references/rtpinfo/worlds/WorldDefault.java | 5 +++++ .../rtpinfo/worlds/WorldLocations.java | 13 +++++++++++++ .../rtpinfo/worlds/WorldPermissionGroup.java | 5 +++++ .../references/rtpinfo/worlds/WorldPlayer.java | 16 ++++++++++++++-- src/main/resources/config.yml | 1 + src/main/resources/locations.yml | 4 ++-- 15 files changed, 77 insertions(+), 21 deletions(-) diff --git a/BetterRTPAddons/pom.xml b/BetterRTPAddons/pom.xml index 9d4df6a..e53ec11 100644 --- a/BetterRTPAddons/pom.xml +++ b/BetterRTPAddons/pom.xml @@ -7,7 +7,7 @@ me.SuperRonanCraft BetterRTPAddons jar - 1.8.2 + 1.8.3 1.8 @@ -109,7 +109,7 @@ me.SuperRonanCraft BetterRTP - 3.3.0 + 3.4.0 provided diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/AddonRTPMenu.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/AddonRTPMenu.java index 02f6a8e..3b8dbf9 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/AddonRTPMenu.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/AddonRTPMenu.java @@ -91,7 +91,7 @@ public class AddonRTPMenu implements Addon, Listener { if (validClick(e)) { e.setCancelled(true); MenuData data = getData((Player) e.getWhoClicked()); - CmdTeleport.teleport(e.getWhoClicked(), "rtp", data.getWorldSlots().get(e.getSlot()).getName(), null); + CmdTeleport.teleport(e.getWhoClicked(), "rtp", data.getWorldSlots().get(e.getSlot()), null); e.getWhoClicked().closeInventory(); } } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/RTPMenu_SelectWorld.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/RTPMenu_SelectWorld.java index ec58222..2297719 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/RTPMenu_SelectWorld.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/RTPMenu_SelectWorld.java @@ -2,6 +2,7 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.rtpmenu; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.commands.types.CmdTeleport; +import me.SuperRonanCraft.BetterRTP.references.PermissionNode; import me.SuperRonanCraft.BetterRTPAddons.util.Files; import net.md_5.bungee.api.ChatColor; import org.bukkit.Bukkit; @@ -23,7 +24,7 @@ public class RTPMenu_SelectWorld { List bukkit_worlds = Bukkit.getWorlds(); List actual_worlds = new ArrayList<>(); for (World world : bukkit_worlds) { - if (pl.getWorlds().containsKey(world.getName()) && BetterRTP.getInstance().getPerms().getAWorld(p, world.getName())) + if (pl.getWorlds().containsKey(world.getName()) && PermissionNode.getAWorld(p, world.getName())) actual_worlds.add(world); } if (actual_worlds.isEmpty() || (actual_worlds.size() <= 1 && !BetterRTP.getInstance().getSettings().isDebug())) { 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 77ed566..8edffcd 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 @@ -140,10 +140,11 @@ public class CmdInfo implements RTPCommand, RTPCommandHelpable { info.add("&7- &6Min Y&7: &f" + _rtpworld.getMinY()); info.add("&7- &eMax Y&7: &f" + _rtpworld.getMaxY()); info.add("&7- &6Price&7: &f" + _rtpworld.getPrice() + getInfo(_rtpworld, worldDefault, "price")); - info.add("&7- &eBiomes&7: &f" + _rtpworld.getBiomes().toString()); - info.add("&7- &6Shape&7: &f" + _rtpworld.getShape().toString() + getInfo(_rtpworld, worldDefault, "shape")); - info.add("&7- &ePermission Group&7: " + (_rtpworld.getConfig() != null ? "&a" + _rtpworld.getConfig().getGroupName() : "&cN/A")); - info.add("&7- &6Queue Available&7: " + QueueHandler.getApplicable(_rtpworld).size()); + info.add("&7- &eCooldown&7: &f" + _rtpworld.getCooldown() + getInfo(_rtpworld, worldDefault, "cooldown")); + info.add("&7- &6Biomes&7: &f" + _rtpworld.getBiomes().toString()); + info.add("&7- &eShape&7: &f" + _rtpworld.getShape().toString() + getInfo(_rtpworld, worldDefault, "shape")); + info.add("&7- &6Permission Group&7: " + (_rtpworld.getConfig() != null ? "&a" + _rtpworld.getConfig().getGroupName() : "&cN/A")); + info.add("&7- &eQueue Available&7: " + QueueHandler.getApplicable(_rtpworld).size()); } } return info; @@ -169,6 +170,8 @@ public class CmdInfo implements RTPCommand, RTPCommandHelpable { return worldPlayer.getShape() == worldDefault.getShape() ? " &8(default)" : ""; case "setup": return worldPlayer.setup_type == RTP_SETUP_TYPE.LOCATION ? " &7(" + worldPlayer.setup_name + ")" : ""; + case "cooldown": + return worldPlayer.getPlayer() != null ? PermissionNode.BYPASS_COOLDOWN.check(worldPlayer.getPlayer()) ? " &8(bypassing)" : "" : "&cN/A"; } return ""; } 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 a64191a..8b933f5 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java @@ -91,7 +91,7 @@ public class RTP { break; } } - pWorld.setup(setup_name, setup_info.getLocation(), setup_info.getLocation().getBiomes(), setup_info.isPersonalized()); + pWorld.setup(setup_name, setup_info.getLocation(), setup_info.getLocation().getBiomes()); } if (!pWorld.isSetup()) { @@ -113,17 +113,17 @@ public class RTP { //Permission Group if (group != null) { - pWorld.setup(null, group, setup_info.getBiomes(), setup_info.isPersonalized()); + pWorld.setup(null, group, setup_info.getBiomes()); pWorld.config = group; } //Custom World else if (RTPcustomWorld.containsKey(setup_info.getWorld().getName())) { RTPWorld cWorld = RTPcustomWorld.get(pWorld.getWorld().getName()); - pWorld.setup(null, cWorld, setup_info.getBiomes(), setup_info.isPersonalized()); + pWorld.setup(null, cWorld, setup_info.getBiomes()); } //Default World else - pWorld.setup(null, RTPdefaultWorld, setup_info.getBiomes(), setup_info.isPersonalized()); + pWorld.setup(null, RTPdefaultWorld, setup_info.getBiomes()); } //World type pWorld.setWorldtype(getWorldType(pWorld)); diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/CooldownHandler.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/CooldownHandler.java index b58c180..562ca1d 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/CooldownHandler.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/CooldownHandler.java @@ -22,7 +22,7 @@ import java.util.List; public class CooldownHandler { @Getter boolean enabled, loaded, cooldownByWorld; - @Getter private int cooldownTime; //Global Cooldown timer + @Getter private int defaultCooldownTime; //Global Cooldown timer private int lockedAfter; //Rtp's before being locked private final List downloading = new ArrayList<>(); //private final DatabaseCooldownsGlobal globalCooldown = new DatabaseCooldownsGlobal(); @@ -34,7 +34,7 @@ public class CooldownHandler { downloading.clear(); loaded = false; if (enabled) { - cooldownTime = config.getInt("Settings.Cooldown.Time"); + defaultCooldownTime = config.getInt("Settings.Cooldown.Time"); lockedAfter = config.getInt("Settings.Cooldown.LockAfter"); cooldownByWorld = config.getBoolean("Settings.Cooldown.PerWorld"); } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld.java index 90ce0fd..9a624bd 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld.java @@ -38,7 +38,5 @@ public interface RTPWorld { return null; } - default long getCooldown() { - return BetterRTP.getInstance().getCooldowns().getCooldownTime(); - } + long getCooldown(); } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld_Defaulted.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld_Defaulted.java index 879cd54..5a060c2 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld_Defaulted.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld_Defaulted.java @@ -30,6 +30,8 @@ public interface RTPWorld_Defaulted { void setMaxY(int value); + void setCooldown(long value); + default void setupDefaults() { setAllFrom(BetterRTP.getInstance().getRTP().RTPdefaultWorld); } @@ -45,5 +47,6 @@ public interface RTPWorld_Defaulted { setShape(rtpWorld.getShape()); setMinY(rtpWorld.getMinY()); setMaxY(rtpWorld.getMaxY()); + setCooldown(rtpWorld.getCooldown()); } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldCustom.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldCustom.java index 9dca58d..d393232 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldCustom.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldCustom.java @@ -16,6 +16,7 @@ public class WorldCustom implements RTPWorld, RTPWorld_Defaulted { public World world; private boolean useWorldborder; private int centerX, centerZ, maxRad, minRad, price, miny, maxy; + private long cooldown; private List biomes; private RTP_SHAPE shape; @@ -98,6 +99,10 @@ public class WorldCustom implements RTPWorld, RTPWorld_Defaulted { if (test.get("MaxY").getClass() == Integer.class) this.maxy = Integer.parseInt((test.get("MaxY")).toString()); } + if (test.get("Cooldown") != null) { + if (test.get("Cooldown").getClass() == Long.class) + this.cooldown = Long.parseLong((test.get("Cooldown")).toString()); + } } } //Booleans @@ -209,6 +214,11 @@ public class WorldCustom implements RTPWorld, RTPWorld_Defaulted { return maxy; } + @Override + public long getCooldown() { + return cooldown; + } + //Setters @Override public void setUseWorldBorder(boolean value) { @@ -264,4 +274,9 @@ public class WorldCustom implements RTPWorld, RTPWorld_Defaulted { public void setMaxY(int value) { this.maxy = value; } + + @Override + public void setCooldown(long value) { + this.cooldown = value; + } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldDefault.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldDefault.java index 6f32c97..5ede39f 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldDefault.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldDefault.java @@ -143,4 +143,9 @@ public class WorldDefault implements RTPWorld { public int getMaxY() { return maxy; } + + @Override + public long getCooldown() { + return BetterRTP.getInstance().getCooldowns().getDefaultCooldownTime(); + } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldLocations.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldLocations.java index a222788..a26bac0 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldLocations.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldLocations.java @@ -15,6 +15,7 @@ import java.util.Map; public class WorldLocations implements RTPWorld, RTPWorld_Defaulted { private boolean useWorldborder; private int centerX, centerZ, maxRad, minRad, price, miny, maxy; + private long cooldown; private List biomes; private World world; private RTP_SHAPE shape; @@ -114,6 +115,9 @@ public class WorldLocations implements RTPWorld, RTPWorld_Defaulted { if (test.get("MaxY") != null) if (test.get("MaxY").getClass() == Integer.class) this.maxy = Integer.parseInt(test.get("MaxY").toString()); + if (test.get("Cooldown") != null) + if (test.get("Cooldown").getClass() == Long.class) + this.cooldown = Long.parseLong(test.get("Cooldown").toString()); } } } @@ -184,6 +188,10 @@ public class WorldLocations implements RTPWorld, RTPWorld_Defaulted { return name; } + @Override + public long getCooldown() { + return cooldown; + } //Setters @Override @@ -240,4 +248,9 @@ public class WorldLocations implements RTPWorld, RTPWorld_Defaulted { public void setMaxY(int value) { this.maxy = value; } + + @Override + public void setCooldown(long value) { + this.cooldown = value; + } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldPermissionGroup.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldPermissionGroup.java index 301d351..69a36e8 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldPermissionGroup.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldPermissionGroup.java @@ -240,6 +240,11 @@ public class WorldPermissionGroup implements RTPWorld, RTPWorld_Defaulted { this.maxy = value; } + @Override + public void setCooldown(long value) { + this.cooldown = value; + } + /*public static class RTPPermConfiguration { boolean valid; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldPlayer.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldPlayer.java index e4144f7..45cae32 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldPlayer.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldPlayer.java @@ -15,6 +15,7 @@ import java.util.*; public class WorldPlayer implements RTPWorld, RTPWorld_Defaulted { private boolean useWorldborder; private int CenterX, CenterZ, maxRad, minRad, price, min_y, max_y; + private long cooldown; private List Biomes; @Getter private final Player player; private final World world; @@ -32,7 +33,7 @@ public class WorldPlayer implements RTPWorld, RTPWorld_Defaulted { this.world = world; } - public void setup(String setup_name, RTPWorld world, List biomes, boolean personal) { + public void setup(String setup_name, RTPWorld world, List biomes) { if (world instanceof WorldLocations) { setup_type = RTP_SETUP_TYPE.LOCATION; } else if (world instanceof WorldCustom) { @@ -74,7 +75,8 @@ public class WorldPlayer implements RTPWorld, RTPWorld_Defaulted { //MinY setMinY(world.getMinY()); setMaxY(world.getMaxY()); - //min_y = world.getWorld().getBlockAt(0, -1, 0).getType() != Material.AIR ? + //Cooldown + setCooldown(world.getCooldown()); setup = true; } @@ -264,6 +266,11 @@ public class WorldPlayer implements RTPWorld, RTPWorld_Defaulted { this.max_y = value; } + @Override + public void setCooldown(long value) { + this.cooldown = value; + } + public WorldPermissionGroup getConfig() { return this.config; } @@ -280,4 +287,9 @@ public class WorldPlayer implements RTPWorld, RTPWorld_Defaulted { public int getMaxY() { return max_y; } + + @Override + public long getCooldown() { + return cooldown; + } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 0fb876c..1f19ef6 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -102,6 +102,7 @@ CustomWorlds: Shape: 'square' MaxY: 320 MinY: 0 + Cooldown: 60 - other_custom_world: MaxRadius: 10000 MinRadius: 150 diff --git a/src/main/resources/locations.yml b/src/main/resources/locations.yml index f88a3bd..e75f9a9 100644 --- a/src/main/resources/locations.yml +++ b/src/main/resources/locations.yml @@ -12,7 +12,6 @@ Enabled: false #enable the locations feature RequirePermission: false #Require players to have `betterrtp.location.` UseLocationIfAvailable: true #Will choose a location upon `/rtp` if location(s) is available in the world -#OnlyAllowInWorld: true #Only allow players to use locations that correspond to the world they are standing in #coming soon Locations: - main_loc: @@ -23,4 +22,5 @@ Locations: MinRadius: 5 #optional Shape: square #optional MinY: 0 #optional - MaxY: 320 #optional \ No newline at end of file + MaxY: 320 #optional + Cooldown: 300 #optional \ No newline at end of file