diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyData.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyData.java index c6cb3c4..8c33e1f 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyData.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyData.java @@ -10,7 +10,7 @@ public class PartyData { final Player leader; List members = new ArrayList<>(); - PartyData(Player leader) { + public PartyData(Player leader) { this.leader = leader; } 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 new file mode 100644 index 0000000..0084fe3 --- /dev/null +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyHandler.java @@ -0,0 +1,14 @@ +package me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp; + +import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_SettingUpEvent; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +public class PartyHandler implements Listener { + + //Dissallow players from teleporting unless all party members are ready + @EventHandler + public void onRTP(RTP_SettingUpEvent e) { + + } +} diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyMessages.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyMessages.java index 55e0f7e..bd1177f 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyMessages.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/PartyMessages.java @@ -5,7 +5,7 @@ import org.bukkit.Location; import org.bukkit.command.CommandSender; public class PartyMessages implements AddonsMessages { - private static final String preM = "Portals."; + private static final String preM = "Party."; public void getWarning(CommandSender sendi) { sms(sendi, getLang().getString(preM + "Warning")); @@ -15,70 +15,10 @@ public class PartyMessages implements AddonsMessages { return getLang().getString("Help.Portals"); } - //Create + //Invite - public void getCreateConfirm(CommandSender sendi, String name) { - sms(sendi, getLang().getString(preM + "Created.Confirmation.Default").replace("%name%", name)); - } - - public void getCreateConfirmWorld(CommandSender sendi, String name, String world) { - sms(sendi, getLang().getString(preM + "Created.Confirmation.Destination").replace("%name%", name).replace("%world%", world)); - } - - public void getCreateInvalid(CommandSender sendi) { - sms(sendi, getLang().getString(preM + "Created.Invalid")); - } - - public void getCreateName(CommandSender sendi) { - sms(sendi, getLang().getString(preM + "Created.Name")); - } - - public void getCreateDuplicate(CommandSender sendi) { - sms(sendi, getLang().getString(preM + "Created.Duplicate")); - } - - //Location - - public void getLocation_1(CommandSender sendi, Location loc) { - sms(sendi, getLang().getString(preM + "Location.1") - .replace("%location%", "x:" + loc.getBlockX() + ", y:" + loc.getBlockY() + ", z:" + loc.getBlockZ())); - } - - public void getLocation_2(CommandSender sendi, Location loc) { - sms(sendi, getLang().getString(preM + "Location.2") - .replace("%location%", "x:" + loc.getBlockX() + ", y:" + loc.getBlockY() + ", z:" + loc.getBlockZ())); - } - - public void getLocation_Look(CommandSender sendi) { - sms(sendi, getLang().getString(preM + "Location.Look")); - } - - public void getLocation_Ready(CommandSender sendi) { - sms(sendi, getLang().getString(preM + "Location.Ready").replace("%command%", "rtp")); - } - - //Remove - - public void getRemoveConfirm(CommandSender sendi, String name) { - sms(sendi, getLang().getString(preM + "Remove.Confirm").replace("%name%", name)); - } - - public void getRemoveNone(CommandSender sendi, String name) { - sms(sendi, getLang().getString(preM + "Remove.None").replace("%name%", name)); - } - - //List - - public String getListPrefix() { - return getLang().getString(preM + "List.Prefix"); - } - - public String getListPortal() { - return getLang().getString(preM + "List.Portal"); - } - - public void getListNone(CommandSender sendi) { - sms(sendi, getLang().getString(preM + "List.None")); + public void getInvite(CommandSender sendi, String name) { + sms(sendi, getLang().getString(preM + "Invite").replace("%name%", name)); } //Usages diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_Invite.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_Invite.java index 0f9f7fe..af164d0 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_Invite.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/partyrtp/cmds/PartyCommand_Invite.java @@ -20,7 +20,8 @@ public class PartyCommand_Invite implements PartyCommands, PartyCommandsTabable if (HelperParty.isInParty(p)) party = HelperParty.getParty(p); else - party = new PartyData() + party = new PartyData(p); + } //rtp party invite [args] diff --git a/BetterRTPAddons/src/main/resources/lang/en.yml b/BetterRTPAddons/src/main/resources/lang/en.yml index 811c741..6884841 100644 --- a/BetterRTPAddons/src/main/resources/lang/en.yml +++ b/BetterRTPAddons/src/main/resources/lang/en.yml @@ -27,6 +27,9 @@ MagicStick: 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!' +Party: + Invite: '&f%player_name% has been invited to an rtp party!' + Invited: '&f%player_name% has invited you to join their rtp party!' Addons: List: Prefix: '&e&m-----&6&l BetterRTP &7&lAddons &8| Addons Info &e&m-----' diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/BetterRTP.java b/src/main/java/me/SuperRonanCraft/BetterRTP/BetterRTP.java index 991d9ad..bfb927d 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/BetterRTP.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/BetterRTP.java @@ -14,6 +14,7 @@ import me.SuperRonanCraft.BetterRTP.references.file.Messages; import me.SuperRonanCraft.BetterRTP.references.invs.RTPInventories; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownHandler; import me.SuperRonanCraft.BetterRTP.references.settings.Settings; +import me.SuperRonanCraft.BetterRTP.references.systems.playerdata.PlayerDataManager; import me.SuperRonanCraft.BetterRTP.references.web.Metrics; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -32,6 +33,7 @@ public class BetterRTP extends JavaPlugin { private final Files files = new Files(); private final RTPInventories invs = new RTPInventories(); private final PlayerInfo pInfo = new PlayerInfo(); + @Getter private final PlayerDataManager playerDataManager = new PlayerDataManager(); private final Settings settings = new Settings(); @Getter private final DatabaseCooldowns databaseCooldowns = new DatabaseCooldowns(); @Getter private final CooldownHandler cooldowns = new CooldownHandler(); @@ -112,7 +114,7 @@ public class BetterRTP extends JavaPlugin { //(Re)Load all plugin systems/files/cache private void loadAll() { - pInfo.unloadAll(); + playerDataManager.clear(); files.loadAll(); settings.load(); invs.load(); diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/PlayerInfo.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/PlayerInfo.java index 323605a..92461b2 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/PlayerInfo.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/PlayerInfo.java @@ -4,58 +4,63 @@ import lombok.Getter; import lombok.Setter; import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData; +import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import java.util.HashMap; +import java.util.List; import java.util.UUID; public class PlayerInfo { - @Getter private final HashMap invs = new HashMap<>(); - @Getter private final HashMap invType = new HashMap<>(); - @Getter private final HashMap invWorld = new HashMap<>(); - @Getter private final HashMap invNextInv = new HashMap<>(); - @Getter private final HashMap cooldown = new HashMap<>(); - @Getter private final HashMap rtping = new HashMap<>(); + private final HashMap invs = new HashMap<>(); + private final HashMap invType = new HashMap<>(); + private final HashMap invWorld = new HashMap<>(); + private final HashMap invNextInv = new HashMap<>(); + private final HashMap cooldown = new HashMap<>(); + private final HashMap rtping = new HashMap<>(); + private final HashMap> previousLocations = new HashMap<>(); //private final HashMap rtpType = new HashMap<>(); - public void setInv(Player p, Inventory inv) { + private void setInv(Player p, Inventory inv) { invs.put(p, inv); } - public void setInvType(Player p, RTP_INV_SETTINGS type) { + private void setInvType(Player p, RTP_INV_SETTINGS type) { invType.put(p, type); } - public void setInvWorld(Player p, World type) { + private void setInvWorld(Player p, World type) { invWorld.put(p, type); } - public void setNextInv(Player p, RTP_INV_SETTINGS type) { + private void setNextInv(Player p, RTP_INV_SETTINGS type) { invNextInv.put(p, type); } //--Logic-- - public Boolean playerExists(Player p) { + private Boolean playerExists(Player p) { return invs.containsKey(p); } - public void unloadAll() { + private void unloadAll() { invs.clear(); invType.clear(); invWorld.clear(); invNextInv.clear(); cooldown.clear(); rtping.clear(); + previousLocations.clear(); } - public void unload(Player p) { + private void unload(Player p) { clearInvs(p); cooldown.remove(p); rtping.remove(p); + previousLocations.remove(p); } public void clearInvs(Player p) { diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Click.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Click.java index bfbe761..fdfb6cf 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Click.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Click.java @@ -3,6 +3,8 @@ package me.SuperRonanCraft.BetterRTP.player.events; import me.SuperRonanCraft.BetterRTP.references.invs.RTPInventories; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.PlayerInfo; +import me.SuperRonanCraft.BetterRTP.references.systems.HelperPlayer; +import me.SuperRonanCraft.BetterRTP.references.systems.playerdata.PlayerData; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; @@ -18,10 +20,10 @@ public class Click { private void handler(InventoryClickEvent e) { try { - PlayerInfo pInfo = BetterRTP.getInstance().getpInfo(); Player p = (Player) e.getWhoClicked(); + PlayerData data = HelperPlayer.getData(p); RTPInventories menu = BetterRTP.getInstance().getInvs(); - menu.getInv(pInfo.getInvType().get(p)).clickEvent(e); + menu.getInv(data.getMenu().getInvType()).clickEvent(e); } catch (NullPointerException ex) { //ex.printStackTrace(); } @@ -36,11 +38,11 @@ public class Click { return false; else if (e.getWhoClicked() instanceof Player) { // Clicks the inventory - if (!e.getInventory().equals(BetterRTP.getInstance().getpInfo().getInvs().get((Player) e.getWhoClicked()))) + PlayerData data = HelperPlayer.getData((Player) e.getWhoClicked()); + if (!e.getInventory().equals(data.getMenu().getInv())) return false; // Clicks their own inventory - else if (!e.getClickedInventory().equals(BetterRTP.getInstance().getpInfo().getInvs().get((Player) e - .getWhoClicked()))) { + else if (!e.getClickedInventory().equals(data.getMenu().getInv())) { e.setCancelled(true); return false; } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Leave.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Leave.java index a3973ab..dc4a7f6 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Leave.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Leave.java @@ -1,17 +1,13 @@ package me.SuperRonanCraft.BetterRTP.player.events; -import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.systems.HelperPlayer; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerQuitEvent; -import java.util.UUID; - class Leave { void event(PlayerQuitEvent e) { - BetterRTP pl = BetterRTP.getInstance(); Player p = e.getPlayer(); - pl.getpInfo().getRtping().remove(p); - pl.getpInfo().unload(p); + HelperPlayer.unload(p); } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Listener.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Listener.java index 1c34504..1d41329 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Listener.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Listener.java @@ -7,6 +7,7 @@ import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.plugin.PluginManager; public class Listener implements org.bukkit.event.Listener { @@ -55,6 +56,11 @@ public class Listener implements org.bukkit.event.Listener { click.click(e); } + @EventHandler + private void teleport(PlayerTeleportEvent e) { + Teleport.tpEvent(e); + } + /*@EventHandler private void enablePlugin(PluginEnableEvent e) { pEnable.enabled(e); diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Teleport.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Teleport.java new file mode 100644 index 0000000..e14a26d --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Teleport.java @@ -0,0 +1,14 @@ +package me.SuperRonanCraft.BetterRTP.player.events; + +import me.SuperRonanCraft.BetterRTP.references.systems.HelperPlayer; +import me.SuperRonanCraft.BetterRTP.references.systems.playerdata.PlayerData; +import org.bukkit.entity.Player; +import org.bukkit.event.player.PlayerTeleportEvent; + +public class Teleport { + + static void tpEvent(PlayerTeleportEvent e) { + Player p = e.getPlayer(); + PlayerData data = HelperPlayer.getData(p); + } +} 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 c552f63..a2e2989 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java @@ -2,6 +2,7 @@ package me.SuperRonanCraft.BetterRTP.player.rtp; import lombok.Getter; import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_SettingUpEvent; import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.*; import org.bukkit.Bukkit; @@ -111,6 +112,11 @@ public class RTP { } public void start(RTPSetupInformation setup_info) { + + if (new RTP_SettingUpEvent(setup_info.player).isCancelled()) { + return; + } + String world_name = setup_info.world; Player p = setup_info.player; CommandSender sendi = setup_info.sender; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTPEvent.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTPEvent.java index f4bc32f..93154de 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTPEvent.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTPEvent.java @@ -1,5 +1,18 @@ package me.SuperRonanCraft.BetterRTP.references.customEvents; -public interface RTPEvent { - //Used purely to grab these classes during runtime without distinct class reference +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class RTPEvent extends Event { + + private static final HandlerList handler = new HandlerList(); + + @Override + public HandlerList getHandlers() { + return handler; + } + + public static HandlerList getHandlerList() { + return handler; + } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTPEvents.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTPEvents.java deleted file mode 100644 index fe1b39e..0000000 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTPEvents.java +++ /dev/null @@ -1,16 +0,0 @@ -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 4aee865..5d51685 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 implements RTPEvent { //Called when a delayed rtp is cancelled cause player moved +public class RTP_CancelledEvent extends RTPEvent { //Called when a delayed rtp is cancelled cause player moved Player p; private static final HandlerList handler = new HandlerList(); @@ -16,13 +16,4 @@ public class RTP_CancelledEvent extends Event implements RTPEvent { //Called whe 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_CommandEvent.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_CommandEvent.java index 4b897cf..3f3ab41 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 implements RTPEvent { +public class RTP_CommandEvent extends RTPEvent { CommandSender sendi; RTPCommand cmd; @@ -24,13 +24,4 @@ public class RTP_CommandEvent extends Event implements RTPEvent { public RTPCommand getCmd() { return cmd; } - - @Override - public HandlerList getHandlers() { - return handler; - } - - public static HandlerList getHandlerList() { - return handler; - } } 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 eed9879..61df8f6 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 @@ -6,12 +6,11 @@ import org.bukkit.entity.Player; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; -public class RTP_FindLocationEvent extends Event implements RTPEvent { +public class RTP_FindLocationEvent extends 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; @@ -33,13 +32,4 @@ public class RTP_FindLocationEvent extends Event implements RTPEvent { 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_SettingUpEvent.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_SettingUpEvent.java new file mode 100644 index 0000000..10e85fc --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_SettingUpEvent.java @@ -0,0 +1,28 @@ +package me.SuperRonanCraft.BetterRTP.references.customEvents; + +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; + +public class RTP_SettingUpEvent extends RTPEvent implements Cancellable { + + Player p; + boolean cancelled = false; + + public RTP_SettingUpEvent(Player p) { + this.p = p; + } + + public Player getPlayer() { + return p; + } + + @Override + public boolean isCancelled() { + return cancelled; + } + + @Override + public void setCancelled(boolean b) { + cancelled = b; + } +} 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 d4d8547..2a4f70e 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,12 +6,11 @@ import org.bukkit.entity.Player; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; -public class RTP_TeleportEvent extends Event implements RTPEvent { +public class RTP_TeleportEvent extends RTPEvent { Player p; Location loc; WORLD_TYPE worldType; - private static final HandlerList handler = new HandlerList(); public RTP_TeleportEvent(Player p, Location loc, WORLD_TYPE worldType) { this.p = p; @@ -27,15 +26,6 @@ public class RTP_TeleportEvent extends Event implements RTPEvent { return loc; } - @Override - public HandlerList getHandlers() { - return handler; - } - - public static HandlerList getHandlerList() { - return handler; - } - public void changeLocation(Location loc) { this.loc = 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 9be223a..8a05041 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,13 +6,12 @@ import org.bukkit.entity.Player; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; -public class RTP_TeleportPostEvent extends Event implements RTPEvent { +public class RTP_TeleportPostEvent extends RTPEvent { Player p; Location loc; Location oldLoc; RTP_TYPE type; - private static final HandlerList handler = new HandlerList(); public RTP_TeleportPostEvent(Player p, Location loc, Location oldLoc, RTP_TYPE type) { this.p = p; @@ -33,15 +32,6 @@ public class RTP_TeleportPostEvent extends Event implements RTPEvent { return oldLoc; } - @Override - public HandlerList getHandlers() { - return handler; - } - - public static HandlerList getHandlerList() { - return handler; - } - public RTP_TYPE getType() { return type; } 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 17aa20b..29d2941 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,10 +4,9 @@ import org.bukkit.entity.Player; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; -public class RTP_TeleportPreEvent extends Event implements RTPEvent { //Called upon every rtp call, does not mean player will be teleported +public class RTP_TeleportPreEvent extends RTPEvent { //Called upon every rtp call, does not mean player will be teleported Player p; - private static final HandlerList handler = new HandlerList(); public RTP_TeleportPreEvent(Player p) { this.p = p; @@ -17,12 +16,4 @@ public class RTP_TeleportPreEvent extends Event implements RTPEvent { //Called u return p; } - @Override - public HandlerList getHandlers() { - return handler; - } - - public static HandlerList getHandlerList() { - return handler; - } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/enums/RTPInventory_Defaults.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/enums/RTPInventory_Defaults.java index 6f98e41..2a41371 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/enums/RTPInventory_Defaults.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/enums/RTPInventory_Defaults.java @@ -3,6 +3,8 @@ package me.SuperRonanCraft.BetterRTP.references.invs.enums; import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.PlayerInfo; +import me.SuperRonanCraft.BetterRTP.references.systems.HelperPlayer; +import me.SuperRonanCraft.BetterRTP.references.systems.playerdata.PlayerData; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -34,9 +36,9 @@ public interface RTPInventory_Defaults { } default void cacheInv(Player p, Inventory inv, RTP_INV_SETTINGS type) { - PlayerInfo info = BetterRTP.getInstance().getpInfo(); - info.setInv(p, inv); - info.setInvType(p, type); + PlayerData info = HelperPlayer.getData(p); + info.getMenu().setInv(inv); + info.getMenu().setInvType(type); } default Inventory createInv(int size, String title) { 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 88cf9c7..6d102ff 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/CooldownHandler.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/CooldownHandler.java @@ -5,6 +5,8 @@ import me.SuperRonanCraft.BetterRTP.player.PlayerInfo; import me.SuperRonanCraft.BetterRTP.references.database.DatabaseCooldowns; import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.systems.HelperPlayer; +import me.SuperRonanCraft.BetterRTP.references.systems.playerdata.PlayerData; import org.bukkit.Bukkit; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.YamlConfiguration; @@ -28,7 +30,6 @@ public class CooldownHandler { public void load() { //configfile = new File(BetterRTP.getInstance().getDataFolder(), "data/cooldowns.yml"); - getPInfo().getCooldown().clear(); FileBasics.FILETYPE config = FileBasics.FILETYPE.CONFIG; enabled = config.getBoolean("Settings.Cooldown.Enabled"); downloading.clear(); @@ -58,22 +59,23 @@ public class CooldownHandler { public void add(Player player) { if (!enabled) return; - CooldownData data = getPInfo().getCooldown().getOrDefault(player, - new CooldownData(player.getUniqueId(), 0L, 0)); + CooldownData data = getData(player).getCooldown(); + if (data == null) + data = new CooldownData(player.getUniqueId(), 0L, 0); if (lockedAfter > 0) data.setUses(data.getUses() + 1); data.setTime(System.currentTimeMillis()); - getPInfo().getCooldown().put(player, data); + getData(player).setCooldown(data); savePlayer(data, false); } public boolean exists(Player p) { - return getPInfo().getCooldown().containsKey(p); + return getData(p).getCooldown() != null; } @Nullable public CooldownData getPlayer(Player p) { - return getPInfo().getCooldown().getOrDefault(p, null); + return getData(p).getCooldown(); } public long timeLeft(CooldownData data) { @@ -87,18 +89,18 @@ public class CooldownHandler { public void removeCooldown(Player player) { if (!enabled) return; - CooldownData data = getPInfo().getCooldown().get(player); + CooldownData data = getData(player).getCooldown(); if (data != null) if (lockedAfter > 0) { //uses.put(id, uses.getOrDefault(id, 1) - 1); if (data.getUses() <= 0) { //Remove from file as well savePlayer(data, true); - getPInfo().getCooldown().remove(player); + getData(player).setCooldown(null); } else { //Keep the player cached savePlayer(data, false); } } else { //Remove completely - getPInfo().getCooldown().remove(player); + getData(player).setCooldown(null); savePlayer(data, true); } } @@ -116,9 +118,9 @@ public class CooldownHandler { public void loadPlayer(Player player) { downloading.add(player); if (isEnabled()) { - CooldownData data = getDatabase().getCooldown(player.getUniqueId()); - if (data != null) - getPInfo().getCooldown().put(player, data); + CooldownData cooldown = getDatabase().getCooldown(player.getUniqueId()); + if (cooldown != null) + getData(player).setCooldown(cooldown); } downloading.remove(player); } @@ -184,7 +186,7 @@ public class CooldownHandler { return BetterRTP.getInstance().getDatabaseCooldowns(); } - private PlayerInfo getPInfo() { - return BetterRTP.getInstance().getpInfo(); + private PlayerData getData(Player p) { + return HelperPlayer.getData(p); } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/systems/HelperPlayer.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/systems/HelperPlayer.java new file mode 100644 index 0000000..1454aee --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/systems/HelperPlayer.java @@ -0,0 +1,20 @@ +package me.SuperRonanCraft.BetterRTP.references.systems; + +import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.systems.playerdata.PlayerData; +import org.bukkit.entity.Player; + +public class HelperPlayer { + + public static PlayerData getData(Player p) { + return getPl().getPlayerDataManager().getData(p); + } + + public static void unload(Player p) { + getPl().getPlayerDataManager().clear(p); + } + + private static BetterRTP getPl() { + return BetterRTP.getInstance(); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/systems/playerdata/PlayerData.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/systems/playerdata/PlayerData.java new file mode 100644 index 0000000..850ddfe --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/systems/playerdata/PlayerData.java @@ -0,0 +1,26 @@ +package me.SuperRonanCraft.BetterRTP.references.systems.playerdata; + +import lombok.Getter; +import lombok.Setter; +import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData; +import org.bukkit.entity.Player; + +public class PlayerData { + + public boolean loading; //Is this players data loading? + public final Player player; + //Menus + @Getter final PlayerData_Menus menu = new PlayerData_Menus(); + //Player Data + @Getter @Setter CooldownData cooldown; + @Getter @Setter boolean rtping; + + PlayerData(Player player) { + this.player = player; + } + + public void load(boolean joined) { + //Setup Defaults + //new TaskDownloadPlayerData(this, joined).start(); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/systems/playerdata/PlayerDataManager.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/systems/playerdata/PlayerDataManager.java new file mode 100644 index 0000000..0b305cc --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/systems/playerdata/PlayerDataManager.java @@ -0,0 +1,35 @@ +package me.SuperRonanCraft.BetterRTP.references.systems.playerdata; + +import lombok.NonNull; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.Nullable; + +import java.util.HashMap; +import java.util.UUID; + +public class PlayerDataManager { + + private final HashMap playerData = new HashMap<>(); + + public PlayerData getData(@NonNull Player p) { + if (!playerData.containsKey(p)) + playerData.put(p, new PlayerData(p)); + return playerData.get(p); + } + + @Nullable + public PlayerData getData(UUID id) { + for (Player p : playerData.keySet()) + if (p.getUniqueId().equals(id)) + return playerData.get(p); + return null; + } + + public void clear() { + playerData.clear(); + } + + public void clear(Player p) { + playerData.remove(p); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/systems/playerdata/PlayerData_Menus.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/systems/playerdata/PlayerData_Menus.java new file mode 100644 index 0000000..1479190 --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/systems/playerdata/PlayerData_Menus.java @@ -0,0 +1,16 @@ +package me.SuperRonanCraft.BetterRTP.references.systems.playerdata; + +import lombok.Getter; +import lombok.Setter; +import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS; +import org.bukkit.World; +import org.bukkit.inventory.Inventory; + +public class PlayerData_Menus { + + @Getter @Setter private Inventory inv; + @Getter @Setter RTP_INV_SETTINGS invType; + @Getter @Setter World invWorld; + @Getter @Setter RTP_INV_SETTINGS invNextInv; + +}