diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsHandler.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsHandler.java index 1bcb75d..cfc5147 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsHandler.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsHandler.java @@ -1,6 +1,7 @@ package me.SuperRonanCraft.BetterRTPAddons; import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTPAddons.addons.commands.AddonCommands; import me.SuperRonanCraft.BetterRTPAddons.addons.extraEffects.AddonExtraEffects; import me.SuperRonanCraft.BetterRTPAddons.addons.flashback.AddonFlashback; import me.SuperRonanCraft.BetterRTPAddons.addons.interfaces.AddonInterface; @@ -43,6 +44,7 @@ public class AddonsHandler { //INTERFACES(new AddonInterface()) MAGICSTICK(new AddonMagicStick()), //Handy teleport want EXTRAEFFECTS(new AddonExtraEffects()), //New cosmetica! + COMMANDS(new AddonCommands()), //Commands on rtp events ; Addon addon; diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/commands/AddonCommands.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/commands/AddonCommands.java new file mode 100644 index 0000000..3c28a50 --- /dev/null +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/commands/AddonCommands.java @@ -0,0 +1,25 @@ +package me.SuperRonanCraft.BetterRTPAddons.addons.commands; + +import me.SuperRonanCraft.BetterRTPAddons.Addon; +import me.SuperRonanCraft.BetterRTPAddons.util.Files; + +public class AddonCommands implements Addon { + + private final String name = "Commands"; + private final CommandsLoader loader = new CommandsLoader(); + + @Override + public boolean isEnabled() { + return getFile(Files.FILETYPE.CONFIG).getBoolean(name + ".Enabled"); + } + + @Override + public void load() { + loader.load(); + } + + @Override + 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 new file mode 100644 index 0000000..6089e50 --- /dev/null +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/commands/CommandsLoader.java @@ -0,0 +1,65 @@ +package me.SuperRonanCraft.BetterRTPAddons.addons.commands; + +import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_CancelledEvent; +import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportEvent; +import me.SuperRonanCraft.BetterRTPAddons.Main; +import me.SuperRonanCraft.BetterRTPAddons.util.Files; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.Listener; + +import java.util.HashMap; +import java.util.List; + +public class CommandsLoader implements Listener { + + HashMap> commands = new HashMap<>(); + + void load() { + Files.FILETYPE file = getFile(); + String name = "Commands"; + commands.clear(); + for (Command_types type : Command_types.values()) { + String path = name + "." + type.path; + if (file.getBoolean(path + ".Enabled")) { + List cmds = file.getStringList(path + ".Commands"); + commands.put(type, cmds); + } + } + Bukkit.getPluginManager().registerEvents(this, Main.getInstance()); + } + + private Files.FILETYPE getFile() { + return Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG); + } + + //Events + public void eventTeleport(RTP_TeleportEvent event) { + if (!commands.containsKey(Command_types.TELEPORT)) return; + executeCommands(commands.get(Command_types.TELEPORT), event.getPlayer()); + } + + public void eventCancelled(RTP_CancelledEvent event) { + if (!commands.containsKey(Command_types.CANCELLED)) return; + executeCommands(commands.get(Command_types.CANCELLED), event.getPlayer()); + } + + private void executeCommands(List cmds, Player p) { + for (String cmd : cmds) { + cmd = cmd.replaceAll("%player_name%", p.getName()); + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), cmd); + } + } + +} + +enum Command_types { + TELEPORT("Teleport"), + CANCELLED("Cancelled"); + + String path; + + Command_types(String path) { + this.path = path; + } +} \ No newline at end of file diff --git a/BetterRTPAddons/src/main/resources/config.yml b/BetterRTPAddons/src/main/resources/config.yml index a866e5c..7f2bbbf 100644 --- a/BetterRTPAddons/src/main/resources/config.yml +++ b/BetterRTPAddons/src/main/resources/config.yml @@ -42,4 +42,16 @@ MagicStick: - '' - '&7Right click this stick and unlock' - '&7a brand new adventure!' - Take: true \ No newline at end of file + Take: true + +Commands: + Enabled: false + Events: + Teleport: + Enabled: true + Commands: + - 'broadcast &cThe player %player_name% just teleported!' + Cancelled: + Enabled: false + Commands: + - 'broadcast &e%player_name% moved while trying to rtp, chump!' \ No newline at end of file diff --git a/pom.xml b/pom.xml index 905616f..fef1a28 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ me.SuperRonanCraft BetterRTP jar - 3.0.4-1 + 3.0.5 1.8 @@ -231,5 +231,11 @@ particle 1.5.1 + + me.SuperRonanCraft + BetterRTP + 3.0.3-1 + compile + \ No newline at end of file diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTPEvent.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTPEvent.java new file mode 100644 index 0000000..f4bc32f --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTPEvent.java @@ -0,0 +1,5 @@ +package me.SuperRonanCraft.BetterRTP.references.customEvents; + +public interface RTPEvent { + //Used purely to grab these classes during runtime without distinct class reference +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTPEvents.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTPEvents.java new file mode 100644 index 0000000..fe1b39e --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTPEvents.java @@ -0,0 +1,16 @@ +package me.SuperRonanCraft.BetterRTP.references.customEvents; + +public enum RTPEvents { + CANCELLED(RTP_CancelledEvent.class), + COMMAND(RTP_CommandEvent.class), + FINDLOCATION(RTP_FindLocationEvent.class), + TELEPORT(RTP_TeleportEvent.class), + TELEPORTPOST(RTP_TeleportPostEvent.class), + TELEPORTPRE(RTP_TeleportPreEvent.class); + + public Class cl; + + RTPEvents(Class cl) { + this.cl = cl; + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_CancelledEvent.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_CancelledEvent.java index 52b303d..4aee865 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_CancelledEvent.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_CancelledEvent.java @@ -4,7 +4,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; -public class RTP_CancelledEvent extends Event { +public class RTP_CancelledEvent extends Event implements RTPEvent { //Called when a delayed rtp is cancelled cause player moved Player p; private static final HandlerList handler = new HandlerList(); diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_CommandEvent.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_CommandEvent.java index 4ea2fd5..4b897cf 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_CommandEvent.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_CommandEvent.java @@ -6,7 +6,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; -public class RTP_CommandEvent extends Event { +public class RTP_CommandEvent extends Event implements RTPEvent { CommandSender sendi; RTPCommand cmd; 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 0de06f7..f97b06f 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 @@ -3,12 +3,15 @@ package me.SuperRonanCraft.BetterRTP.references.customEvents; import me.SuperRonanCraft.BetterRTP.references.worlds.RTPWorld; import org.bukkit.Location; import org.bukkit.entity.Player; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; -public class RTP_FindLocationEvent { +public class RTP_FindLocationEvent extends Event implements RTPEvent { Player p; RTPWorld world; Location loc = null; + private static final HandlerList handler = new HandlerList(); public RTP_FindLocationEvent(Player p, RTPWorld world) { this.p = p; @@ -30,4 +33,13 @@ public class RTP_FindLocationEvent { public Player getPlayer() { return p; } + + @Override + public HandlerList getHandlers() { + return handler; + } + + public static HandlerList getHandlerList() { + return handler; + } } 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 index 7322f1c..75aa9cb 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportEvent.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportEvent.java @@ -6,7 +6,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; -public class RTP_TeleportEvent extends Event { +public class RTP_TeleportEvent extends Event implements RTPEvent { Player p; Location loc; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportPostEvent.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportPostEvent.java index 1b70087..9be223a 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportPostEvent.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportPostEvent.java @@ -6,7 +6,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; -public class RTP_TeleportPostEvent extends Event { +public class RTP_TeleportPostEvent extends Event implements RTPEvent { Player p; Location loc; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportPreEvent.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportPreEvent.java index 3b5b4c4..17aa20b 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportPreEvent.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportPreEvent.java @@ -4,7 +4,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; -public class RTP_TeleportPreEvent extends Event { +public class RTP_TeleportPreEvent extends Event implements RTPEvent { //Called upon every rtp call, does not mean player will be teleported Player p; private static final HandlerList handler = new HandlerList(); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 8389bfa..be18af8 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.4-1' +version: '3.0.5' name: BetterRTP author: SuperRonanCraft softdepend: