From 462b2fa6be0bae7ecf2e6551b7a91b4ba1df53c0 Mon Sep 17 00:00:00 2001 From: SuperRonanCraft Date: Thu, 19 Nov 2020 17:30:43 -0500 Subject: [PATCH] teleport during event + extraEffects addon - portals addon can force ignore delay and cooldowns - Rtp commands were moved after a command was actually executed, fixing addons reload --- .../BetterRTPAddons/AddonsHandler.java | 2 + .../extraEffects/AddonExtraEffects.java | 58 ++++++++++++++++ .../extraEffects/ExtraEffectsEffect.java | 11 +++ .../ExtraEffectsEffect_Skyhigh.java | 36 ++++++++++ .../addons/flashback/FlashbackDatabase.java | 4 +- .../addons/magicStick/AddonMagicStick.java | 28 ++++++++ .../addons/magicStick/MagicStickMessages.java | 17 +++++ .../magicStick/cmds/MagicStickCommand.java | 67 +++++++++++++++++++ .../cmds/MagicStickCommand_Give.java | 14 ++++ .../magicStick/cmds/MagicStickCommands.java | 10 +++ .../addons/portals/AddonPortals.java | 2 +- .../addons/portals/PortalsEvents.java | 8 ++- BetterRTPAddons/src/main/resources/config.yml | 35 ++++++++-- .../src/main/resources/lang/en.yml | 5 +- .../BetterRTP/player/commands/Commands.java | 31 ++++++--- .../BetterRTP/player/rtp/RTPTeleport.java | 7 +- .../customEvents/RTP_TeleportEvent.java | 39 +++++++++++ 17 files changed, 352 insertions(+), 22 deletions(-) create mode 100644 BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/extraEffects/AddonExtraEffects.java create mode 100644 BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/extraEffects/ExtraEffectsEffect.java create mode 100644 BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/extraEffects/ExtraEffectsEffect_Skyhigh.java create mode 100644 BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/AddonMagicStick.java create mode 100644 BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/MagicStickMessages.java create mode 100644 BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/cmds/MagicStickCommand.java create mode 100644 BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/cmds/MagicStickCommand_Give.java create mode 100644 BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/cmds/MagicStickCommands.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportEvent.java diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsHandler.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsHandler.java index 4e1b05a..b78d33c 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsHandler.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsHandler.java @@ -4,6 +4,7 @@ import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTPAddons.addons.flashback.AddonFlashback; import me.SuperRonanCraft.BetterRTPAddons.addons.interfaces.AddonInterface; import me.SuperRonanCraft.BetterRTPAddons.addons.logger.AddonLogger; +import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.AddonMagicStick; import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals; import java.util.ArrayList; @@ -39,6 +40,7 @@ public class AddonsHandler { FLASH_BACK(new AddonFlashback()), PORTALS(new AddonPortals()), //INTERFACES(new AddonInterface()) + MAGICSTICK(new AddonMagicStick()), ; Addon addon; diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/extraEffects/AddonExtraEffects.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/extraEffects/AddonExtraEffects.java new file mode 100644 index 0000000..126959b --- /dev/null +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/extraEffects/AddonExtraEffects.java @@ -0,0 +1,58 @@ +package me.SuperRonanCraft.BetterRTPAddons.addons.extraEffects; + +import me.SuperRonanCraft.BetterRTPAddons.Addon; +import me.SuperRonanCraft.BetterRTPAddons.util.Files; +import org.bukkit.event.Listener; + +import java.util.ArrayList; +import java.util.List; + +public class AddonExtraEffects implements Addon { + + private final String name = "ExtraEffects"; + private final List effects = new ArrayList<>(); //List of enabled effects + + @Override + public boolean isEnabled() { + return getFile(Files.FILETYPE.CONFIG).getBoolean(name + ".Enabled"); + } + + @Override + public void load() { + this.effects.clear(); + for (Effects effect : Effects.values()) + if (effect.isEnabled()) { + effect.load(); + this.effects.add(effect); + } + } + + @Override + public void unload() { + for (Effects effect : this.effects) + effect.unload(); + this.effects.clear(); + } + + enum Effects { + SKYHIGH(new ExtraEffectsEffect_Skyhigh()); + + private final ExtraEffectsEffect effect; + + Effects(ExtraEffectsEffect effect) { + this.effect = effect; + } + + boolean isEnabled() { + return effect.isEnabled(); + } + + void load() { + effect.load(); + } + + void unload() { + effect.unload(); + } + } +} diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/extraEffects/ExtraEffectsEffect.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/extraEffects/ExtraEffectsEffect.java new file mode 100644 index 0000000..7f79d0e --- /dev/null +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/extraEffects/ExtraEffectsEffect.java @@ -0,0 +1,11 @@ +package me.SuperRonanCraft.BetterRTPAddons.addons.extraEffects; + +public interface ExtraEffectsEffect { + + void load(); + + boolean isEnabled(); + + void unload(); + +} diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/extraEffects/ExtraEffectsEffect_Skyhigh.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/extraEffects/ExtraEffectsEffect_Skyhigh.java new file mode 100644 index 0000000..9b652de --- /dev/null +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/extraEffects/ExtraEffectsEffect_Skyhigh.java @@ -0,0 +1,36 @@ +package me.SuperRonanCraft.BetterRTPAddons.addons.extraEffects; + +import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportEvent; +import me.SuperRonanCraft.BetterRTPAddons.Main; +import me.SuperRonanCraft.BetterRTPAddons.util.Files; +import org.bukkit.event.EventHandler; +import org.bukkit.event.HandlerList; +import org.bukkit.event.Listener; + +//Teleport the player VERY high into the sky +public class ExtraEffectsEffect_Skyhigh implements ExtraEffectsEffect, Listener { + + private int offset; + + @Override + public void load() { + Files.FILETYPE file = Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG); + this.offset = file.getInt("ExtraEffects.YOffset.Offset"); + Main.getInstance().getServer().getPluginManager().registerEvents(this, Main.getInstance()); + } + + @Override + public boolean isEnabled() { + return Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG).getBoolean("ExtraEffects.YOffset.Enabled"); + } + + @Override + public void unload() { + HandlerList.unregisterAll(this); + } + + @EventHandler + void tpEvent(RTP_TeleportEvent e) { + e.changeLocation(e.getLocation().add(0, offset, 0)); + } +} diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/FlashbackDatabase.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/FlashbackDatabase.java index 4d96c01..43d0485 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/FlashbackDatabase.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/FlashbackDatabase.java @@ -106,10 +106,10 @@ public class FlashbackDatabase extends Database { ); UUID id = p.getUniqueId(); ps.setString(1, id.toString()); - ps.setInt(2, timeGoal.intValue()); + ps.setLong(2, timeGoal); String serialLocation = LocSerialization.getStringFromLocation(oldLocation); ps.setString(3, serialLocation); - ps.setInt(4, timeGoal.intValue()); + ps.setLong(4, timeGoal); ps.setString(5, serialLocation); ps.executeUpdate(); } catch (SQLException ex) { 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 new file mode 100644 index 0000000..bd69b6d --- /dev/null +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/AddonMagicStick.java @@ -0,0 +1,28 @@ +package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick; + +import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTPAddons.Addon; +import me.SuperRonanCraft.BetterRTPAddons.Main; +import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.cmds.MagicStickCommand; +import me.SuperRonanCraft.BetterRTPAddons.util.Files; + +public class AddonMagicStick implements Addon { + + public MagicStickMessages msgs = new MagicStickMessages(); + MagicStickCommand cmd = new MagicStickCommand(this); + + @Override + public boolean isEnabled() { + return Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG).getBoolean("MagicStick.Enabled"); + } + + @Override + public void load() { + BetterRTP.getInstance().getCmd().registerCommand(cmd, false); + } + + @Override + public void unload() { + + } +} diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/MagicStickMessages.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/MagicStickMessages.java new file mode 100644 index 0000000..5c5bf75 --- /dev/null +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/MagicStickMessages.java @@ -0,0 +1,17 @@ +package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick; + +import me.SuperRonanCraft.BetterRTPAddons.AddonsMessages; +import org.bukkit.command.CommandSender; + +public class MagicStickMessages implements AddonsMessages { + private static final String preM = "MagicStick."; + + public String getHelp() { + return getLang().getString("Help.MagicStick"); + } + + //Give + public void getGive(CommandSender sendi, String name) { + sms(sendi, getLang().getString(preM + "Give").replace("%name%", name)); + } +} diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/cmds/MagicStickCommand.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/cmds/MagicStickCommand.java new file mode 100644 index 0000000..b1091f9 --- /dev/null +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/cmds/MagicStickCommand.java @@ -0,0 +1,67 @@ +package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.cmds; + +import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; +import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; +import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.AddonMagicStick; +import org.bukkit.command.CommandSender; + +import java.util.ArrayList; +import java.util.List; + +public class MagicStickCommand implements RTPCommand, RTPCommandHelpable { + + AddonMagicStick pl; + + public MagicStickCommand(AddonMagicStick pl) { + this.pl = pl; + } + + public String getName() { + return "magicstick"; + } + + @Override + public void execute(CommandSender sendi, String label, String[] args) { + if (args.length > 1) + for (subCmd subCmd : subCmd.values()) { + if (args[1].equalsIgnoreCase(subCmd.name())) { + subCmd.cmd.execute(sendi, label, args, pl); + return; + } + } + sendi.sendMessage("Invalid argument!"); + } + + @Override + public List tabComplete(CommandSender sendi, String[] args) { + List list = new ArrayList<>(); + if (args.length == 2) + for (subCmd subCmd : subCmd.values()) { + if (subCmd.name().toLowerCase().startsWith(args[1].toLowerCase())) { + list.add(subCmd.name().toLowerCase()); + } + } + return list; + } + + @Override + public boolean permission(CommandSender sendi) { + return BetterRTP.getInstance().getPerms().checkPerm("betterrtp.addon.portals", sendi); + } + + @Override + public String getHelp() { + return pl.msgs.getHelp(); + } + + private enum subCmd { + GIVE(new MagicStickCommand_Give()); + + MagicStickCommands cmd; + + subCmd(MagicStickCommands cmd) { + this.cmd = cmd; + } + } +} diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/cmds/MagicStickCommand_Give.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/cmds/MagicStickCommand_Give.java new file mode 100644 index 0000000..35df7db --- /dev/null +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/cmds/MagicStickCommand_Give.java @@ -0,0 +1,14 @@ +package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.cmds; + +import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.AddonMagicStick; +import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals; +import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsRegionInfo; +import org.bukkit.command.CommandSender; + +public class MagicStickCommand_Give implements MagicStickCommands { + + @Override + public void execute(CommandSender sendi, String label, String[] args, AddonMagicStick addon) { + sendi.sendMessage("magicstick give command!"); + } +} diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/cmds/MagicStickCommands.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/cmds/MagicStickCommands.java new file mode 100644 index 0000000..18bedf5 --- /dev/null +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/cmds/MagicStickCommands.java @@ -0,0 +1,10 @@ +package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.cmds; + +import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.AddonMagicStick; +import org.bukkit.command.CommandSender; + +public interface MagicStickCommands { + + void execute(CommandSender sendi, String label, String[] args, AddonMagicStick addonPortals); + +} 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 6ec9e65..d7633b9 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 @@ -24,7 +24,7 @@ public class AddonPortals implements Addon { public void load() { BetterRTP.getInstance().getCmd().registerCommand(cmd, false); database.load(PortalsDatabase.Columns.values()); - events.register(); + 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 0ba54fc..69429d5 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 @@ -5,6 +5,7 @@ import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent; import me.SuperRonanCraft.BetterRTPAddons.Main; import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsRegionInfo; +import me.SuperRonanCraft.BetterRTPAddons.util.Files; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -20,13 +21,16 @@ public class PortalsEvents implements Listener { AddonPortals addonPortals; private final HashMap playerPortaling = new HashMap<>(); + private boolean ignoreDelay, ignoreCooldown; PortalsEvents(AddonPortals addonPortals) { this.addonPortals = addonPortals; } - public void register() { + public void load() { Main.getInstance().getServer().getPluginManager().registerEvents(this, Main.getInstance()); + ignoreDelay = Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG).getBoolean("Portals.IgnoreDelay"); + ignoreCooldown = Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG).getBoolean("Portals.IgnoreCooldown"); } public void unregiter() { @@ -52,7 +56,7 @@ public class PortalsEvents implements Listener { && ploc.getBlockY() >= Math.min(loc1.getBlockY(), loc2.getBlockY())) { playerPortaling.put(e.getPlayer(), portal); BetterRTP.getInstance().getCmd().tp(e.getPlayer(), e.getPlayer(), - e.getPlayer().getWorld().getName(), null, RTP_TYPE.ADDON); + e.getPlayer().getWorld().getName(), null, RTP_TYPE.ADDON, ignoreCooldown, ignoreDelay); return; } } diff --git a/BetterRTPAddons/src/main/resources/config.yml b/BetterRTPAddons/src/main/resources/config.yml index 8b11018..00b7918 100644 --- a/BetterRTPAddons/src/main/resources/config.yml +++ b/BetterRTPAddons/src/main/resources/config.yml @@ -1,5 +1,6 @@ Language-File: 'en.yml' -#Addon Flashback + +##Addon Flashback Flashback: Enabled: true Timer: @@ -7,11 +8,37 @@ Flashback: Warnings: #Warning messages to send to a player when X amount of time is left - 5: "&eYou have 5 seconds left! Grab all your materials quick!" - 1: "&eHang on!" -#Addon Logger + +##Addon Logger Logger: Enabled: true LogToConsole: true Format: 'yyyy-MM-dd HH:mm:ss' -#Addon Portals + +##Addon Portals Portals: - Enabled: true \ No newline at end of file + Enabled: true + IgnoreDelay: true + IgnoreCooldown: true + +##Addon ExtraEffects +ExtraEffects: + Enabled: true + YOffset: + Enabled: true + Offset: 50 + +##Addon MagicStick +MagicStick: + Enabled: false + GiveFirstJoin: + Enabled: true + Amount: 1 + Item: + Name: '&d&lMagic RTP Stick &8(Right-Click)' + Material: 'Stick' + Lore: + - '' + - '&7Right click this stick and unlock' + - '&7a brand new adventure!' + Take: true \ No newline at end of file diff --git a/BetterRTPAddons/src/main/resources/lang/en.yml b/BetterRTPAddons/src/main/resources/lang/en.yml index 6f6bedd..68b5a94 100644 --- a/BetterRTPAddons/src/main/resources/lang/en.yml +++ b/BetterRTPAddons/src/main/resources/lang/en.yml @@ -17,6 +17,8 @@ Portals: Prefix: '&e&m-----&6&l BetterRTP &7&lAddons &8| Portals List &e&m-----' Portal: ' &7- &6%name% &8| &7%location%' None: '&7There are no portals! &8Create one with `/rtp portals create`' +MagicStick: + Give: '&7Magic Stick has been given to &a%player%' Usage: Portals: @@ -24,4 +26,5 @@ Usage: Help: - Portals: ' &7- &e/%command% portals &7- Setup an rtp portal' \ No newline at end of file + Portals: ' &7- &e/%command% portals &7- Setup an rtp portal' + MagicStick: ' &7- &e/%command% magicstick give [player] &7- Give a magic stick to a player' \ No newline at end of file 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 061dd86..d681ff4 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/Commands.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/Commands.java @@ -48,9 +48,9 @@ public class Commands { for (RTPCommand cmd : commands) { if (cmd.getName().equalsIgnoreCase(args[0])) { if (cmd.permission(sendi)) { + cmd.execute(sendi, label, args); //Command Event Bukkit.getServer().getPluginManager().callEvent(new RTP_CommandEvent(sendi, cmd)); - cmd.execute(sendi, label, args); } else noPerm(sendi); return; @@ -137,21 +137,32 @@ public class Commands { } public void tp(Player player, CommandSender sendi, String world, List biomes, RTP_TYPE rtpType) { - if (checkDelay(sendi, player)) { //Cooling down or rtp'ing - boolean delay = false; - if (sendi == player) //Forced? - if (pl.getSettings().delayEnabled && delayTimer > 0) //Delay enabled? - if (!pl.getPerms().getBypassDelay(player)) //Can bypass? - delay = true; - pl.getRTP().start(player, sendi, world, biomes, delay, 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) { + 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; + pl.getRTP().start(player, sendi, world, biomes, delay, rtpType); + } } } - private boolean checkDelay(CommandSender sendi, Player player) { + private boolean checkRTPing(Player player, CommandSender sendi) { if (rtping.containsKey(player.getUniqueId()) && rtping.get(player.getUniqueId())) { pl.getText().getAlready(sendi); return false; - } else if (sendi != player || pl.getPerms().getBypassCooldown(player)) { //Bypassing/Forced? + } + return true; + } + + private boolean checkCooldown(CommandSender sendi, Player player) { + if (sendi != player || pl.getPerms().getBypassCooldown(player)) { //Bypassing/Forced? return true; } else if (cooldowns.enabled) { //Cooling down? UUID id = player.getUniqueId(); diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPTeleport.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPTeleport.java index 704dc94..7b0dec6 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPTeleport.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPTeleport.java @@ -41,17 +41,20 @@ public class RTPTeleport { // CompletableFuture.allOf(asyncChunks.toArray(new CompletableFuture[] {})).cancel(true); // } - void sendPlayer(final CommandSender sendi, final Player p, final Location loc, final int price, + void sendPlayer(final CommandSender sendi, final Player p, final Location location, final int price, final int attempts) throws NullPointerException { Location oldLoc = p.getLocation(); loadingTeleport(p, sendi); //Send loading message to player who requested - List> asyncChunks = getChunks(loc); //Get a list of chunks + List> asyncChunks = getChunks(location); //Get a list of chunks //playerLoads.put(p, asyncChunks); CompletableFuture.allOf(asyncChunks.toArray(new CompletableFuture[] {})).thenRun(() -> { //Async chunk load new BukkitRunnable() { //Run synchronously @Override public void run() { try { + RTP_TeleportEvent event = new RTP_TeleportEvent(p, location); + getPl().getServer().getPluginManager().callEvent(event); + Location loc = event.getLocation(); PaperLib.teleportAsync(p, loc).thenRun(new BukkitRunnable() { //Async teleport @Override public void run() { diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportEvent.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportEvent.java new file mode 100644 index 0000000..f409d1b --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportEvent.java @@ -0,0 +1,39 @@ +package me.SuperRonanCraft.BetterRTP.references.customEvents; + +import org.bukkit.Location; +import org.bukkit.entity.Player; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class RTP_TeleportEvent extends Event { + + Player p; + Location loc; + private static final HandlerList handler = new HandlerList(); + + public RTP_TeleportEvent(Player p, Location loc) { + this.p = p; + this.loc = loc; + } + + public Player getPlayer() { + return p; + } + + public Location getLocation() { + return loc; + } + + @Override + public HandlerList getHandlers() { + return handler; + } + + public static HandlerList getHandlerList() { + return handler; + } + + public void changeLocation(Location loc) { + this.loc = loc; + } +}