From f819bd782ea505fa1061486bd858e592557da7db Mon Sep 17 00:00:00 2001 From: RonanCraft Date: Tue, 8 Mar 2022 11:14:51 -0500 Subject: [PATCH] api helper classes to better easily access classes --- BetterRTPAddons/pom.xml | 4 +- .../BetterRTPAddons/AddonsHandler.java | 3 +- .../addons/commands/CommandsLoader.java | 2 +- .../addons/magicStick/AddonMagicStick.java | 3 +- .../addons/magicStick/MagicStickEvents.java | 3 +- .../addons/partyrtp/AddonParty.java | 3 +- .../addons/partyrtp/PartyHandler.java | 2 - .../addons/portals/AddonPortals.java | 6 +- .../addons/portals/PortalsEvents.java | 3 +- pom.xml | 2 +- .../BetterRTP/player/commands/Commands.java | 128 +----------------- .../player/commands/types/CmdBiome.java | 6 +- .../player/commands/types/CmdLocation.java | 5 +- .../player/commands/types/CmdPlayer.java | 8 +- .../player/commands/types/CmdSettings.java | 2 +- .../player/commands/types/CmdWorld.java | 15 +- .../BetterRTP/player/events/Join.java | 3 +- .../customEvents/RTP_FindLocationEvent.java | 1 + .../BetterRTP/references/file/Messages.java | 4 + .../references/helpers/HelperRTP.java | 105 ++++++++++++++ .../references/helpers/HelperRTP_Command.java | 12 ++ .../references/helpers/HelperRTP_Info.java | 41 ++++++ .../references/settings/Settings.java | 2 + 23 files changed, 205 insertions(+), 158 deletions(-) create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_Command.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_Info.java diff --git a/BetterRTPAddons/pom.xml b/BetterRTPAddons/pom.xml index d0dcac2..9517092 100644 --- a/BetterRTPAddons/pom.xml +++ b/BetterRTPAddons/pom.xml @@ -7,7 +7,7 @@ me.SuperRonanCraft BetterRTPAddons jar - 1.7 + 1.8 1.8 @@ -108,7 +108,7 @@ me.SuperRonanCraft BetterRTP - 3.2.1-4 + 3.3.0 provided diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsHandler.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsHandler.java index dc05da3..613e912 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsHandler.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsHandler.java @@ -2,6 +2,7 @@ package me.SuperRonanCraft.BetterRTPAddons; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; +import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP_Command; import me.SuperRonanCraft.BetterRTPAddons.addons.commands.AddonCommands; import me.SuperRonanCraft.BetterRTPAddons.addons.extraEffects.AddonExtraEffects; import me.SuperRonanCraft.BetterRTPAddons.addons.flashback.AddonFlashback; @@ -29,7 +30,7 @@ public class AddonsHandler { //addonCount++; } //Main.getInstance().getLogger().log(Level.INFO, addonCount + "/" + Addons.values().length + " addons were enabled!"); - BetterRTP.getInstance().getCmd().registerCommand(cmd, false); + HelperRTP_Command.registerCommand(cmd, false); } public void unload() { diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/commands/CommandsLoader.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/commands/CommandsLoader.java index 7c3b504..92b4363 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/commands/CommandsLoader.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/commands/CommandsLoader.java @@ -65,7 +65,7 @@ enum Command_types { TELEPORT("Teleport"), CANCELLED("Cancelled"); - String path; + final String path; Command_types(String path) { this.path = path; diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/AddonMagicStick.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/AddonMagicStick.java index 7224e6f..fe13a83 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/AddonMagicStick.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/AddonMagicStick.java @@ -2,6 +2,7 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; +import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP_Command; import me.SuperRonanCraft.BetterRTPAddons.Addon; import me.SuperRonanCraft.BetterRTPAddons.Main; import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.cmds.MagicStickCommand; @@ -21,7 +22,7 @@ public class AddonMagicStick implements Addon { @Override public void load() { - BetterRTP.getInstance().getCmd().registerCommand(cmd, false); + HelperRTP_Command.registerCommand(cmd, false); events.load(); } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/MagicStickEvents.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/MagicStickEvents.java index 6ccc255..e15e64f 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/MagicStickEvents.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/MagicStickEvents.java @@ -5,6 +5,7 @@ import me.SuperRonanCraft.BetterRTP.player.rtp.RTP; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_CancelledEvent; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent; +import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP; import me.SuperRonanCraft.BetterRTPAddons.Main; import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.cmds.MagicStickCommand; import me.SuperRonanCraft.BetterRTPAddons.util.Files; @@ -64,7 +65,7 @@ public class MagicStickEvents implements Listener { if (listener.p == e.getPlayer()) return; //Rtp the player - BetterRTP.getInstance().getCmd().tp(e.getPlayer(), e.getPlayer(), e.getPlayer().getWorld().getName(), null, RTP_TYPE.ADDON_MAGICSTICK); + HelperRTP.tp(e.getPlayer(), e.getPlayer(), e.getPlayer().getWorld().getName(), null, RTP_TYPE.ADDON_MAGICSTICK); if (this.take) teleportingPlayers.add(new PlayerListener(e.getPlayer())); } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/AddonParty.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/AddonParty.java index 90151fc..0a04de2 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/AddonParty.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/AddonParty.java @@ -2,6 +2,7 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; +import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP_Command; import me.SuperRonanCraft.BetterRTPAddons.Addon; import me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.cmds.PartyCommand; import me.SuperRonanCraft.BetterRTPAddons.util.Files; @@ -27,7 +28,7 @@ public class AddonParty implements Addon { @Override public void load() { instance = this; - BetterRTP.getInstance().getCmd().registerCommand(cmd, false); + HelperRTP_Command.registerCommand(cmd, false); PluginManager pm = BetterRTP.getInstance().getServer().getPluginManager(); pm.registerEvents(handler, BetterRTP.getInstance()); } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyHandler.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyHandler.java index b89e30c..5bb0f9c 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyHandler.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyHandler.java @@ -1,9 +1,7 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_SettingUpEvent; -import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportEvent; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent; -import me.SuperRonanCraft.BetterRTP.references.systems.playerdata.PlayerData; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/AddonPortals.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/AddonPortals.java index a6189cc..41e4d2d 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/AddonPortals.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/AddonPortals.java @@ -1,11 +1,11 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.portals; -import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; +import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP_Command; import me.SuperRonanCraft.BetterRTPAddons.Addon; import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.PortalsCommand; -import me.SuperRonanCraft.BetterRTPAddons.util.Files; import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsCache; +import me.SuperRonanCraft.BetterRTPAddons.util.Files; //Create portals for rtp'ing public class AddonPortals implements Addon { @@ -23,7 +23,7 @@ public class AddonPortals implements Addon { @Override public void load() { - BetterRTP.getInstance().getCmd().registerCommand(cmd, false); + HelperRTP_Command.registerCommand(cmd, false); database.load(PortalsDatabase.Columns.values()); events.load(); portalsCache.load(); diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsEvents.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsEvents.java index 16cef8d..3b9dac1 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsEvents.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsEvents.java @@ -4,6 +4,7 @@ import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_CancelledEvent; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent; +import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP; import me.SuperRonanCraft.BetterRTPAddons.Main; import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsRegionInfo; import me.SuperRonanCraft.BetterRTPAddons.util.Files; @@ -56,7 +57,7 @@ public class PortalsEvents implements Listener { if (ploc.getBlockY() <= Math.max(loc1.getBlockY(), loc2.getBlockY()) && ploc.getBlockY() >= Math.min(loc1.getBlockY(), loc2.getBlockY())) { playerPortaling.put(e.getPlayer(), portal); - BetterRTP.getInstance().getCmd().tp(e.getPlayer(), e.getPlayer(), + HelperRTP.tp(e.getPlayer(), e.getPlayer(), portal.getWorld(), null, RTP_TYPE.ADDON_PORTAL, ignoreCooldown, ignoreDelay); return; } diff --git a/pom.xml b/pom.xml index 3ef6a06..235cd37 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ me.SuperRonanCraft BetterRTP jar - 3.2.2-2 + 3.3.0 1.8 diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/Commands.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/Commands.java index 3a98181..566f0c1 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/Commands.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/Commands.java @@ -1,6 +1,7 @@ package me.SuperRonanCraft.BetterRTP.player.commands; import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownHandler; import me.SuperRonanCraft.BetterRTP.player.rtp.RTPSetupInformation; @@ -19,7 +20,6 @@ import java.util.List; public class Commands { private final BetterRTP pl; - private int delayTimer; public List commands = new ArrayList<>(); public Commands(BetterRTP pl) { @@ -28,7 +28,6 @@ public class Commands { public void load() { FileBasics.FILETYPE config = FileBasics.FILETYPE.CONFIG; - delayTimer = config.getInt("Settings.Delay.Time"); commands.clear(); for (RTPCommandType cmd : RTPCommandType.values()) registerCommand(cmd.getCmd(), false); @@ -55,7 +54,7 @@ public class Commands { } pl.getText().getInvalid(sendi, label); } else - rtp(sendi, label, null, null); + HelperRTP.rtp(sendi, label, null, null); } else pl.getText().getNoPermission(sendi); } @@ -80,127 +79,4 @@ public class Commands { } return list; } - - public void addBiomes(List list, String[] args) { - try { - for (Biome b : Biome.values()) - if (b.name().toUpperCase().replaceAll("minecraft:", "").startsWith(args[args.length - 1].toUpperCase())) - list.add(b.name().replaceAll("minecraft:", "")); - } catch (NoSuchMethodError e) { - //Not in 1.14.X - } - } - - public void rtp(CommandSender sendi, String cmd, String world, List biomes) { - if (sendi instanceof Player) - tp((Player) sendi, sendi, world, biomes, RTP_TYPE.COMMAND); - else - msgNotPlayer(sendi, cmd); - } - - public void msgNotPlayer(CommandSender sendi, String cmd) { - sendi.sendMessage(pl.getText().colorPre("Must be a player to use this command! Try '/" + cmd + " help'")); - } - - //Custom biomes - public List getBiomes(String[] args, int start, CommandSender sendi) { - List biomes = new ArrayList<>(); - boolean error_sent = false; - if (BetterRTP.getInstance().getPerms().getBiome(sendi)) - for (int i = start; i < args.length; i++) { - String str = args[i]; - try { - biomes.add(Biome.valueOf(str.replaceAll(",", "").toUpperCase()).name()); - } catch (Exception e) { - if (!error_sent) { - pl.getText().getOtherBiome(sendi, str); - error_sent = true; - } - } - } - return biomes; - } - - public void tp(Player player, CommandSender sendi, String world, List biomes, RTP_TYPE rtpType) { - this.tp(player, sendi, world, biomes, rtpType, false, false); - } - - public void tp(Player player, CommandSender sendi, String world, List biomes, RTP_TYPE rtpType, - boolean ignoreCooldown, boolean ignoreDelay) { - this.tp(player, sendi, world, biomes, rtpType, ignoreCooldown, ignoreDelay, null); - } - - public void tp(Player player, CommandSender sendi, String world, List biomes, RTP_TYPE rtpType, - boolean ignoreCooldown, boolean ignoreDelay, WorldLocations locations) { - if (checkRTPing(player, sendi)) { //Is RTP'ing - if (ignoreCooldown || checkCooldown(sendi, player)) { //Is Cooling down - boolean delay = false; - if (!ignoreDelay && sendi == player) //Forced? - if (pl.getSettings().delayEnabled && delayTimer > 0) //Delay enabled? - if (!pl.getPerms().getBypassDelay(player)) //Can bypass? - delay = true; - //player.sendMessage("Cooldown applies: " + cooldownApplies(sendi, player)); - RTPSetupInformation setup_info = new RTPSetupInformation(world, sendi, player, true, - biomes, delay, rtpType, locations, !ignoreCooldown && cooldownApplies(sendi, player)); //ignore cooldown or else - pl.getRTP().start(setup_info); - } - } - } - - private boolean checkRTPing(Player player, CommandSender sendi) { - if (getPl().getpInfo().getRtping().containsKey(player) && getPl().getpInfo().getRtping().get(player)) { - pl.getText().getAlready(sendi); - return false; - } - return true; - } - - private boolean checkCooldown(CommandSender sendi, Player player) { - if (cooldownApplies(sendi, player)) { //Bypassing/Forced? - CooldownHandler cooldownHandler = getPl().getCooldowns(); - if (!cooldownHandler.isLoaded() || !cooldownHandler.loadedPlayer(player)) { //Cooldowns have yet to download - pl.getText().getCooldown(sendi, String.valueOf(-1L)); - return false; - } - //Cooldown Data - CooldownData cooldownData = getPl().getCooldowns().getPlayer(player); - if (cooldownData != null) { - if (cooldownHandler.locked(cooldownData)) { //Infinite cooldown (locked) - pl.getText().getNoPermission(sendi); - return false; - } else { //Normal cooldown - long Left = cooldownHandler.timeLeft(cooldownData); - if (pl.getSettings().delayEnabled && !pl.getPerms().getBypassDelay(sendi)) - Left = Left + delayTimer; - if (Left > 0) { - //Still cooling down - pl.getText().getCooldown(sendi, String.valueOf(Left)); - return false; - } else { - //Reset timer, but allow them to tp - //cooldowns.add(id); - return true; - } - } - } //else - //cooldowns.add(id); - } - return true; - } - - private boolean cooldownOverride(CommandSender sendi, Player player) { - return sendi != player || pl.getPerms().getBypassCooldown(player); - } - - private boolean cooldownEnabled() { - return getPl().getCooldowns().isEnabled(); - } - - private boolean cooldownApplies(CommandSender sendi, Player player) { - return cooldownEnabled() && !cooldownOverride(sendi, player); - } - - private BetterRTP getPl() { - return BetterRTP.getInstance(); - } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdBiome.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdBiome.java index 1cf716f..80277df 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdBiome.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdBiome.java @@ -4,6 +4,8 @@ import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.commands.Commands; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; +import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP; +import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP_Info; import org.bukkit.command.CommandSender; import java.util.ArrayList; @@ -18,7 +20,7 @@ public class CmdBiome implements RTPCommand, RTPCommandHelpable { //rtp biome public void execute(CommandSender sendi, String label, String[] args) { if (args.length >= 2) - BetterRTP.getInstance().getCmd().rtp(sendi, label, null, BetterRTP.getInstance().getCmd().getBiomes(args, 1, sendi)); + HelperRTP.rtp(sendi, label, null, HelperRTP_Info.getBiomes(args, 1, sendi)); else usage(sendi, label); } @@ -26,7 +28,7 @@ public class CmdBiome implements RTPCommand, RTPCommandHelpable { public List tabComplete(CommandSender sendi, String[] args) { List list = new ArrayList<>(); if (args.length == 2) - getCmd().addBiomes(list, args); + HelperRTP_Info.addBiomes(list, args); return list; } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdLocation.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdLocation.java index 2903536..32dd9bd 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdLocation.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdLocation.java @@ -5,6 +5,7 @@ import me.SuperRonanCraft.BetterRTP.player.commands.Commands; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; +import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.RTPWorld; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldLocations; import org.bukkit.Bukkit; @@ -28,7 +29,7 @@ public class CmdLocation implements RTPCommand, RTPCommandHelpable { for (String location_name : getLocations().keySet()) { if (location_name.equalsIgnoreCase(args[1].toLowerCase())) { Player p = (Player) sendi; - BetterRTP.getInstance().getCmd().tp(p, sendi, null, null, RTP_TYPE.COMMAND, + HelperRTP.tp(p, sendi, null, null, RTP_TYPE.COMMAND, false, false, (WorldLocations) getLocations().get(location_name)); return; } @@ -41,7 +42,7 @@ public class CmdLocation implements RTPCommand, RTPCommandHelpable { if (p != null && p.isOnline()) { for (String location_name : getLocations().keySet()) { if (location_name.equalsIgnoreCase(args[1].toLowerCase())) { - BetterRTP.getInstance().getCmd().tp(p, sendi, null, null, RTP_TYPE.COMMAND, + HelperRTP.tp(p, sendi, null, null, RTP_TYPE.COMMAND, false, false, (WorldLocations) getLocations().get(location_name)); return; } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdPlayer.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdPlayer.java index ada59e3..b0682b0 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdPlayer.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdPlayer.java @@ -6,6 +6,8 @@ import me.SuperRonanCraft.BetterRTP.player.commands.Commands; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; +import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP; +import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP_Info; import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.command.CommandSender; @@ -24,7 +26,7 @@ public class CmdPlayer implements RTPCommand, RTPCommandHelpable { public void execute(CommandSender sendi, String label, String[] args) { if (args.length == 2) if (Bukkit.getPlayer(args[1]) != null && Bukkit.getPlayer(args[1]).isOnline()) - getCmd().tp(Bukkit.getPlayer(args[1]), sendi, Bukkit.getPlayer(args[1]).getWorld().getName(), null, RTP_TYPE.FORCED); + HelperRTP.tp(Bukkit.getPlayer(args[1]), sendi, Bukkit.getPlayer(args[1]).getWorld().getName(), null, RTP_TYPE.FORCED); else if (Bukkit.getPlayer(args[1]) != null) BetterRTP.getInstance().getText().getNotOnline(sendi, args[1]); else @@ -33,7 +35,7 @@ public class CmdPlayer implements RTPCommand, RTPCommandHelpable { if (Bukkit.getPlayer(args[1]) != null && Bukkit.getPlayer(args[1]).isOnline()) { World world = Bukkit.getWorld(args[2]); if (world != null) { - getCmd().tp(Bukkit.getPlayer(args[1]), sendi, world.getName(), getCmd().getBiomes(args, 3, sendi), RTP_TYPE.FORCED); + HelperRTP.tp(Bukkit.getPlayer(args[1]), sendi, world.getName(), HelperRTP_Info.getBiomes(args, 3, sendi), RTP_TYPE.FORCED); } else BetterRTP.getInstance().getText().getNotExist(sendi, args[2]); } else if (Bukkit.getPlayer(args[1]) != null) @@ -56,7 +58,7 @@ public class CmdPlayer implements RTPCommand, RTPCommandHelpable { list.add(w.getName()); } else if (args.length > 3) { if (RTPCommandType.BIOME.getCmd().permission(sendi)) - getCmd().addBiomes(list, args); + HelperRTP_Info.addBiomes(list, args); } return list; } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdSettings.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdSettings.java index bf1016f..d481ef0 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdSettings.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdSettings.java @@ -19,7 +19,7 @@ public class CmdSettings implements RTPCommand, RTPCommandHelpable { if (sendi instanceof Player) BetterRTP.getInstance().getInvs().getInv(RTP_INV_SETTINGS.MAIN).show((Player) sendi); else - BetterRTP.getInstance().getCmd().msgNotPlayer(sendi, label); + BetterRTP.getInstance().getText().getNotPlayer(sendi, label); } public List tabComplete(CommandSender sendi, String[] args) { diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdWorld.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdWorld.java index fd0bac9..5fcc3f9 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdWorld.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdWorld.java @@ -1,10 +1,11 @@ package me.SuperRonanCraft.BetterRTP.player.commands.types; -import me.SuperRonanCraft.BetterRTP.player.commands.Commands; -import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; import me.SuperRonanCraft.BetterRTP.BetterRTP; -import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandType; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; +import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; +import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandType; +import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP; +import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP_Info; import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.command.CommandSender; @@ -21,7 +22,7 @@ public class CmdWorld implements RTPCommand, RTPCommandHelpable { //rtp world public void execute(CommandSender sendi, String label, String[] args) { if (args.length >= 2) - BetterRTP.getInstance().getCmd().rtp(sendi, label, args[1], BetterRTP.getInstance().getCmd().getBiomes(args, 2, sendi)); + HelperRTP.rtp(sendi, label, args[1], HelperRTP_Info.getBiomes(args, 2, sendi)); else usage(sendi, label); } @@ -37,7 +38,7 @@ public class CmdWorld implements RTPCommand, RTPCommandHelpable { } } else if (args.length >= 3) { if (RTPCommandType.BIOME.getCmd().permission(sendi)) - getCmd().addBiomes(list, args); + HelperRTP_Info.addBiomes(list, args); } return list; } @@ -50,10 +51,6 @@ public class CmdWorld implements RTPCommand, RTPCommandHelpable { BetterRTP.getInstance().getText().getUsageWorld(sendi, label); } - private Commands getCmd() { - return BetterRTP.getInstance().getCmd(); - } - @Override public String getHelp() { return BetterRTP.getInstance().getText().getHelpWorld(); diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Join.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Join.java index b3091f2..54b271f 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Join.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Join.java @@ -4,6 +4,7 @@ import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; import me.SuperRonanCraft.BetterRTP.references.Updater; import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; +import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerJoinEvent; @@ -30,7 +31,7 @@ public class Join { //RTP on first join private void rtpOnFirstJoin(Player p) { if (getPl().getSettings().rtpOnFirstJoin_Enabled && !p.hasPlayedBefore()) - getPl().getCmd().tp(p, Bukkit.getConsoleSender(), getPl().getSettings().rtpOnFirstJoin_World, null, RTP_TYPE.JOIN); //Console is sender to override delays + HelperRTP.tp(p, Bukkit.getConsoleSender(), getPl().getSettings().rtpOnFirstJoin_World, null, RTP_TYPE.JOIN); //Console is sender to override delays } private BetterRTP getPl() { diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_FindLocationEvent.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_FindLocationEvent.java index 6711499..a0c70ba 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_FindLocationEvent.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_FindLocationEvent.java @@ -4,6 +4,7 @@ import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.RTPWorld; import org.bukkit.Location; import org.bukkit.entity.Player; +//Called when an rtp has found a valid location public class RTP_FindLocationEvent extends RTPEvent { Player p; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/file/Messages.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/file/Messages.java index 9ae4e1b..0a5ca65 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/file/Messages.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/file/Messages.java @@ -247,4 +247,8 @@ public class Messages { public void error(CommandSender sendi) { sms(sendi, "&cERROR &7Seems like your Administrator did not update their language file!"); } + + public void getNotPlayer(CommandSender sendi, String cmd) { + sms(sendi, "Must be a player to use this command! Try '/" + cmd + " help'"); + } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP.java new file mode 100644 index 0000000..ca57855 --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP.java @@ -0,0 +1,105 @@ +package me.SuperRonanCraft.BetterRTP.references.helpers; + +import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.player.rtp.RTPSetupInformation; +import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; +import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData; +import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownHandler; +import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldLocations; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.List; + +public class HelperRTP { + + public static void rtp(CommandSender sendi, String cmd, String world, List biomes) { + if (sendi instanceof Player) + HelperRTP.tp((Player) sendi, sendi, world, biomes, RTP_TYPE.COMMAND); + else + BetterRTP.getInstance().getText().getNotPlayer(sendi, cmd); + } + + public static void tp(Player player, CommandSender sendi, String world, List biomes, RTP_TYPE rtpType) { + tp(player, sendi, world, biomes, rtpType, false, false); + } + + public static void tp(Player player, CommandSender sendi, String world, List biomes, RTP_TYPE rtpType, + boolean ignoreCooldown, boolean ignoreDelay) { + tp(player, sendi, world, biomes, rtpType, ignoreCooldown, ignoreDelay, null); + } + + public static void tp(Player player, CommandSender sendi, String world, List biomes, RTP_TYPE rtpType, + boolean ignoreCooldown, boolean ignoreDelay, WorldLocations locations) { + if (checkRTPing(player, sendi)) { //Is RTP'ing + if (ignoreCooldown || checkCooldown(sendi, player)) { //Is Cooling down + boolean delay = false; + if (!ignoreDelay && sendi == player) //Forced? + if (getPl().getSettings().delayEnabled && getPl().getSettings().delayTime > 0) //Delay enabled? + if (!getPl().getPerms().getBypassDelay(player)) //Can bypass? + delay = true; + //player.sendMessage("Cooldown applies: " + cooldownApplies(sendi, player)); + RTPSetupInformation setup_info = new RTPSetupInformation(world, sendi, player, true, + biomes, delay, rtpType, locations, !ignoreCooldown && cooldownApplies(sendi, player)); //ignore cooldown or else + getPl().getRTP().start(setup_info); + } + } + } + + private static boolean checkRTPing(Player player, CommandSender sendi) { + if (getPl().getpInfo().getRtping().containsKey(player) && getPl().getpInfo().getRtping().get(player)) { + getPl().getText().getAlready(sendi); + return false; + } + return true; + } + + private static boolean checkCooldown(CommandSender sendi, Player player) { + if (cooldownApplies(sendi, player)) { //Bypassing/Forced? + CooldownHandler cooldownHandler = getPl().getCooldowns(); + if (!cooldownHandler.isLoaded() || !cooldownHandler.loadedPlayer(player)) { //Cooldowns have yet to download + getPl().getText().getCooldown(sendi, String.valueOf(-1L)); + return false; + } + //Cooldown Data + CooldownData cooldownData = getPl().getCooldowns().getPlayer(player); + if (cooldownData != null) { + if (cooldownHandler.locked(cooldownData)) { //Infinite cooldown (locked) + getPl().getText().getNoPermission(sendi); + return false; + } else { //Normal cooldown + long Left = cooldownHandler.timeLeft(cooldownData); + if (getPl().getSettings().delayEnabled && !getPl().getPerms().getBypassDelay(sendi)) + Left = Left + getPl().getSettings().delayTime; + if (Left > 0) { + //Still cooling down + getPl().getText().getCooldown(sendi, String.valueOf(Left)); + return false; + } else { + //Reset timer, but allow them to tp + //cooldowns.add(id); + return true; + } + } + } //else + //cooldowns.add(id); + } + return true; + } + + private static boolean cooldownOverride(CommandSender sendi, Player player) { + return sendi != player || getPl().getPerms().getBypassCooldown(player); + } + + private static boolean cooldownEnabled() { + return getPl().getCooldowns().isEnabled(); + } + + private static boolean cooldownApplies(CommandSender sendi, Player player) { + return cooldownEnabled() && !cooldownOverride(sendi, player); + } + + private static BetterRTP getPl() { + return BetterRTP.getInstance(); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_Command.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_Command.java new file mode 100644 index 0000000..23d7ffe --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_Command.java @@ -0,0 +1,12 @@ +package me.SuperRonanCraft.BetterRTP.references.helpers; + +import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; + +public class HelperRTP_Command { + + public static void registerCommand(RTPCommand cmd, boolean forced) { + BetterRTP.getInstance().getCmd().registerCommand(cmd, forced); + } + +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_Info.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_Info.java new file mode 100644 index 0000000..bfbfcc0 --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_Info.java @@ -0,0 +1,41 @@ +package me.SuperRonanCraft.BetterRTP.references.helpers; + +import me.SuperRonanCraft.BetterRTP.BetterRTP; +import org.bukkit.block.Biome; +import org.bukkit.command.CommandSender; + +import java.util.ArrayList; +import java.util.List; + +public class HelperRTP_Info { + + //Custom biomes + public static List getBiomes(String[] args, int start, CommandSender sendi) { + List biomes = new ArrayList<>(); + boolean error_sent = false; + if (BetterRTP.getInstance().getPerms().getBiome(sendi)) + for (int i = start; i < args.length; i++) { + String str = args[i]; + try { + biomes.add(Biome.valueOf(str.replaceAll(",", "").toUpperCase()).name()); + } catch (Exception e) { + if (!error_sent) { + BetterRTP.getInstance().getText().getOtherBiome(sendi, str); + error_sent = true; + } + } + } + return biomes; + } + + public static void addBiomes(List list, String[] args) { + try { + for (Biome b : Biome.values()) + if (b.name().toUpperCase().replaceAll("minecraft:", "").startsWith(args[args.length - 1].toUpperCase())) + list.add(b.name().replaceAll("minecraft:", "")); + } catch (NoSuchMethodError e) { + //Not in 1.14.X + } + } + +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/Settings.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/Settings.java index 4843798..47e59a8 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/Settings.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/Settings.java @@ -7,6 +7,7 @@ public class Settings { public boolean debug; public boolean delayEnabled; + public int delayTime; public boolean rtpOnFirstJoin_Enabled; public String rtpOnFirstJoin_World; public boolean rtpOnFirstJoin_SetAsRespawn; @@ -20,6 +21,7 @@ public class Settings { FileBasics.FILETYPE config = FileBasics.FILETYPE.CONFIG; debug = config.getBoolean("Settings.Debugger"); delayEnabled = config.getBoolean("Settings.Delay.Enabled"); + delayTime = config.getInt("Settings.Delay.Time"); rtpOnFirstJoin_Enabled = config.getBoolean("Settings.RtpOnFirstJoin.Enabled"); rtpOnFirstJoin_World = config.getString("Settings.RtpOnFirstJoin.World"); rtpOnFirstJoin_SetAsRespawn = config.getBoolean("Settings.RtpOnFirstJoin.SetAsRespawn");