diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/AddonFlashback.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/AddonFlashback.java index 549371d..6ff4bea 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/AddonFlashback.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/AddonFlashback.java @@ -18,7 +18,7 @@ import java.util.Map; //When rtp'ing, a player will be teleported back to old location after a set amount of time public class AddonFlashback implements Addon, Listener { - private String name = "Flashback"; + private final String name = "Flashback"; private Long time; public final FlashbackMessages msgs = new FlashbackMessages(); @@ -66,8 +66,7 @@ public class AddonFlashback implements Addon, Listener { } @EventHandler - void onTeleport(RTP_TeleportPostEvent e) { - System.out.println("Player " + e.getPlayer().getName() + " was rtp'd!"); + void onTeleport(RTP_TeleportPostEvent e) { //Create a timer to teleport player back if (e.getType() != RTP_TYPE.ADDON_PORTAL) players.add(new FlashbackPlayer(this, e.getPlayer(), e.getOldLocation(), time)); } 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 902d9ef..cf1898b 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 @@ -2,18 +2,23 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick; import me.SuperRonanCraft.BetterRTP.BetterRTP; 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.magicStick.cmds.MagicStickCommand; import me.SuperRonanCraft.BetterRTPAddons.util.Files; import org.bukkit.Bukkit; import org.bukkit.Material; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.function.Consumer; @@ -23,6 +28,8 @@ public class MagicStickEvents implements Listener { public ItemStack item; boolean take; + private final List teleportingPlayers = new ArrayList<>(); + void load() { Bukkit.getPluginManager().registerEvents(this, Main.getInstance()); Files.FILETYPE file = Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG); @@ -50,10 +57,49 @@ public class MagicStickEvents implements Listener { ItemStack eItem = e.getItem(); if (eItem != null && eItem.getType() == item.getType()) { if (Objects.equals(eItem.getItemMeta(), item.getItemMeta())) { - BetterRTP.getInstance().getCmd().tp(e.getPlayer(), e.getPlayer(), e.getPlayer().getWorld().getName(), null, RTP_TYPE.ADDON); + //Not currently rtp'ing + for (PlayerListener listener : teleportingPlayers) + 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); + if (this.take) + teleportingPlayers.add(new PlayerListener(e.getPlayer())); } } } } + private class PlayerListener implements Listener { + Player p; + + PlayerListener(Player p) { + this.p = p; + load(); + } + + void load() { + Bukkit.getServer().getPluginManager().registerEvents(this, Main.getInstance()); + } + + void unload() { + HandlerList.unregisterAll(this); + } + + @EventHandler + void tp(RTP_TeleportPostEvent e) { + if (e.getPlayer() == p && e.getType() == RTP_TYPE.ADDON_MAGICSTICK) { + teleportingPlayers.remove(this); + e.getPlayer().getInventory().removeItem(item); + this.unload(); + } + } + + @EventHandler + void drop(PlayerDropItemEvent e) { + if (e.getPlayer() == p) + e.setCancelled(true); + } + } + } 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 index 5c5bf75..128fe89 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/MagicStickMessages.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/MagicStickMessages.java @@ -14,4 +14,12 @@ public class MagicStickMessages implements AddonsMessages { public void getGive(CommandSender sendi, String name) { sms(sendi, getLang().getString(preM + "Give").replace("%name%", name)); } + + public void getGiven(CommandSender sendi) { + sms(sendi, getLang().getString(preM + "Given")); + } + + public void getPlayerError(CommandSender sendi, String name) { + sms(sendi, getLang().getString(preM + "Player").replace("%player%", name)); + } } 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 index 3340050..a428e08 100644 --- 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 @@ -3,6 +3,8 @@ 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.Bukkit; +import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -10,7 +12,28 @@ public class MagicStickCommand_Give implements MagicStickCommands { @Override public void execute(CommandSender sendi, String label, String[] args, AddonMagicStick addon) { - Player p = (Player) sendi; - p.getWorld().dropItem(p.getLocation(), addon.events.item.clone()); + if (args.length <= 2 && !(sendi instanceof Player)) { + sendi.sendMessage("Console is not able to give themself this item!"); + return; + } + if (args.length <= 2) { + Player p = (Player) sendi; + p.getInventory().addItem(addon.events.item.clone()); + addon.msgs.getGiven(sendi); + } else { + Player p = null; + for (Player plr : Bukkit.getOnlinePlayers()) { + if (plr.getName().startsWith(args[2])) { + p = plr; + break; + } + } + if (p != null) { + p.getInventory().addItem(addon.events.item.clone()); + addon.msgs.getGiven(sendi); + addon.msgs.getGive(sendi, p.getName()); + } else + addon.msgs.getPlayerError(sendi, args[2]); + } } } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsMessages.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsMessages.java index cac7882..502e678 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsMessages.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsMessages.java @@ -75,4 +75,8 @@ public class PortalsMessages implements AddonsMessages { public void usageRemove(CommandSender sendi, String label) { sms(sendi, getLang().getString(preM + "Usage.Remove").replace("%command%", label)); } + + public void usageBase(CommandSender sendi, String label) { + sms(sendi, getLang().getString(preM + "Usage.Base").replace("%command%", label)); + } } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand.java index c8915b1..8a017a2 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand.java @@ -31,7 +31,7 @@ public class PortalsCommand implements RTPCommand, RTPCommandHelpable { return; } } - sendi.sendMessage("Invalid argument!"); + pl.msgs.usageBase(sendi, label); } @Override diff --git a/BetterRTPAddons/src/main/resources/lang/en.yml b/BetterRTPAddons/src/main/resources/lang/en.yml index 68b5a94..704e3e2 100644 --- a/BetterRTPAddons/src/main/resources/lang/en.yml +++ b/BetterRTPAddons/src/main/resources/lang/en.yml @@ -1,5 +1,5 @@ Flashback: - Warning: '&6This Teleport is temporary! &7You will be teleported back soon...' + Warning: '&7This random teleport was temporary! You were teleported back to your original location.' Portals: Created: Confirm: '&7Portal &a%name% &7has been created!' @@ -18,10 +18,13 @@ Portals: 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%' + Give: '&dMagic Stick&7 has been given to &a%player%' + Given: '&7A &dMagic Stick&7 has been given to you' + Player: '&cWhoops! &7Seems like their is no player by the name of &a%player% &7online!' Usage: Portals: + Base: '&cUsage: &7/%command% portals ' Remove: '&cUsage: &7/%command% portals remove ' diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP_TYPE.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP_TYPE.java index 673973b..f7ba7b6 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP_TYPE.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP_TYPE.java @@ -5,5 +5,6 @@ public enum RTP_TYPE { FORCED, //Player was forced to rtp (/rtp player ) JOIN, //Player joined and was rtp'd automatically ADDON, //Player RTP'd from the external addons plugin - ADDON_PORTAL //Player RTP'd from the external addons (Portals) + ADDON_PORTAL, //Player RTP'd from the external addons (Portals) + ADDON_MAGICSTICK, //Player RTP'd from the external addons (MagicStick) }