From 870b60b245a8af7b5c24ff49747a00ced8e716c3 Mon Sep 17 00:00:00 2001 From: RonanCraft Date: Thu, 10 Mar 2022 11:47:02 -0500 Subject: [PATCH] RTPMenu addon finalized - v1.8 - brtp v2.2.3 --- BetterRTPAddons/pom.xml | 3 +- .../addons/commands/CommandsLoader.java | 1 - .../addons/logger/AddonLogger.java | 1 - .../addons/magicStick/MagicStickEvents.java | 1 - .../addons/partyrtp/AddonParty.java | 3 +- .../addons/portals/AddonPortals.java | 2 +- .../addons/portals/PortalsEvents.java | 3 +- .../addons/rtpmenu/AddonRTPMenu.java | 13 ++-- .../addons/rtpmenu/MenuData.java | 4 ++ ...nventory.java => RTPMenu_SelectWorld.java} | 59 +++++++++++++------ .../util/LocSerialization.java | 2 +- BetterRTPAddons/src/main/resources/config.yml | 5 +- pom.xml | 2 +- 13 files changed, 60 insertions(+), 39 deletions(-) rename BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/{RTPMenu_CreateInventory.java => RTPMenu_SelectWorld.java} (54%) diff --git a/BetterRTPAddons/pom.xml b/BetterRTPAddons/pom.xml index 9517092..ff03a63 100644 --- a/BetterRTPAddons/pom.xml +++ b/BetterRTPAddons/pom.xml @@ -12,6 +12,7 @@ 1.8 1.8 + UTF-8 @@ -108,7 +109,7 @@ me.SuperRonanCraft BetterRTP - 3.3.0 + 3.2.3 provided 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 e839994..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 @@ -28,7 +28,6 @@ public class CommandsLoader implements Listener { commands.put(type, cmds); } } - HandlerList.unregisterAll(this); Bukkit.getPluginManager().registerEvents(this, Main.getInstance()); } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/logger/AddonLogger.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/logger/AddonLogger.java index a681649..11d875e 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/logger/AddonLogger.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/logger/AddonLogger.java @@ -37,7 +37,6 @@ public class AddonLogger implements Addon, Listener { @Override public void load() { - HandlerList.unregisterAll(this); Bukkit.getPluginManager().registerEvents(this, Main.getInstance()); this.format = getFile(Files.FILETYPE.CONFIG).getString(name + ".Format"); this.toConsole = getFile(Files.FILETYPE.CONFIG).getBoolean(name + ".LogToConsole"); 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 80920d0..059c5a0 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 @@ -34,7 +34,6 @@ public class MagicStickEvents implements Listener { private final List teleportingPlayers = new ArrayList<>(); void load() { - HandlerList.unregisterAll(this); Bukkit.getPluginManager().registerEvents(this, Main.getInstance()); Files.FILETYPE file = Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG); String title = file.getString("MagicStick.Item.Name"); 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 0a04de2..02ef1a6 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 @@ -28,14 +28,13 @@ public class AddonParty implements Addon { @Override public void load() { instance = this; - HelperRTP_Command.registerCommand(cmd, false); PluginManager pm = BetterRTP.getInstance().getServer().getPluginManager(); pm.registerEvents(handler, BetterRTP.getInstance()); } @Override public void unload() { - + HelperRTP_Command.registerCommand(cmd, false); } public static AddonParty getInstance() { 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 41e4d2d..1d6853a 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 @@ -32,7 +32,7 @@ public class AddonPortals implements Addon { @Override public void unload() { portalsCache.unload(); - events.unregiter(); + events.unregister(); } @Override 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 63cf3f1..25021f6 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 @@ -1,6 +1,5 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.portals; -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; @@ -36,7 +35,7 @@ public class PortalsEvents implements Listener { ignoreCooldown = Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG).getBoolean("Portals.IgnoreCooldown"); } - public void unregiter() { + public void unregister() { HandlerList.unregisterAll(this); } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/AddonRTPMenu.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/AddonRTPMenu.java index 366a1d8..c1bd9e5 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/AddonRTPMenu.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/AddonRTPMenu.java @@ -1,11 +1,8 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.rtpmenu; -import lombok.Getter; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; import me.SuperRonanCraft.BetterRTP.player.commands.types.CmdTeleport; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_CommandEvent; -import me.SuperRonanCraft.BetterRTP.references.player.HelperPlayer; -import me.SuperRonanCraft.BetterRTP.references.player.playerdata.PlayerData; import me.SuperRonanCraft.BetterRTPAddons.Addon; import me.SuperRonanCraft.BetterRTPAddons.Main; import me.SuperRonanCraft.BetterRTPAddons.util.Files; @@ -16,7 +13,6 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.inventory.Inventory; import java.util.HashMap; import java.util.Objects; @@ -42,13 +38,12 @@ public class AddonRTPMenu implements Addon, Listener { for (Player p : playerData.keySet()) p.closeInventory(); playerData.clear(); - HandlerList.unregisterAll(this); Bukkit.getServer().getPluginManager().registerEvents(this, Main.getInstance()); } @Override public void unload() { - + HandlerList.unregisterAll(this); } @Override @@ -60,7 +55,9 @@ public class AddonRTPMenu implements Addon, Listener { private void onClick(InventoryClickEvent e) { if (validClick(e)) { e.setCancelled(true); - e.getWhoClicked().sendMessage("Menu Inventory!"); + MenuData data = getData((Player) e.getWhoClicked()); + CmdTeleport.teleport(e.getWhoClicked(), "rtp", data.getWorldSlots().get(e.getSlot()).getName(), null); + e.getWhoClicked().closeInventory(); } } @@ -68,7 +65,7 @@ public class AddonRTPMenu implements Addon, Listener { private void onTeleport(RTP_CommandEvent e) { if (e.getCmd() instanceof CmdTeleport && e.getSendi() instanceof Player) { e.setCancelled(true); - RTPMenu_CreateInventory.createInv(this, (Player) e.getSendi()); + RTPMenu_SelectWorld.createInv(this, (Player) e.getSendi()); } } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/MenuData.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/MenuData.java index a68d79d..fc5ea72 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/MenuData.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/MenuData.java @@ -2,10 +2,14 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.rtpmenu; import lombok.Getter; import lombok.Setter; +import org.bukkit.World; import org.bukkit.inventory.Inventory; +import java.util.HashMap; + public class MenuData { @Getter @Setter Inventory menuInv; + @Getter @Setter HashMap worldSlots; } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/RTPMenu_CreateInventory.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/RTPMenu_SelectWorld.java similarity index 54% rename from BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/RTPMenu_CreateInventory.java rename to BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/RTPMenu_SelectWorld.java index 704d5eb..12de333 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/RTPMenu_CreateInventory.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/RTPMenu_SelectWorld.java @@ -1,7 +1,9 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.rtpmenu; import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.player.commands.types.CmdTeleport; import me.SuperRonanCraft.BetterRTPAddons.util.Files; +import net.md_5.bungee.api.ChatColor; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.World; @@ -15,46 +17,61 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -public class RTPMenu_CreateInventory { +public class RTPMenu_SelectWorld { public static void createInv(AddonRTPMenu pl, Player p) { List bukkit_worlds = Bukkit.getWorlds(); List display_worlds = Files.FILETYPE.CONFIG.getStringList(AddonRTPMenu.name + ".Worlds"); List actual_worlds = new ArrayList<>(); - for (int i = 0; i < 10; i++) //add x Junk worlds for testing - for (World world : bukkit_worlds) { - if (display_worlds.contains(world.getName())) - actual_worlds.add(world); - } - Inventory inv = createInventory(Files.FILETYPE.CONFIG.getString(AddonRTPMenu.name + ".Menu.Title"), Math.floorDiv(actual_worlds.size(), 9) * 9 + 9); + for (World world : bukkit_worlds) { + if (display_worlds.contains(world.getName()) && BetterRTP.getInstance().getPerms().getAWorld(p, world.getName())) + actual_worlds.add(world); + } + if (actual_worlds.size() <= 1) { + CmdTeleport.teleport(p, "rtp", null, null); + return; + } + int size = Math.floorDiv(actual_worlds.size(), 9) * 9; + if (size < actual_worlds.size()) size += 9; + Inventory inv = createInventory(color(Files.FILETYPE.CONFIG.getString(AddonRTPMenu.name + ".Menu.Title")), size); - HashMap world_slots = centerWorlds(new ArrayList<>(actual_worlds)); + HashMap world_slots = centerWorlds(new ArrayList<>(actual_worlds)); - for (Map.Entry world : world_slots.entrySet()) { - int slot = world.getValue(); + String item_name = Files.FILETYPE.CONFIG.getString(AddonRTPMenu.name + ".Menu.Items.Name"); + List item_lore = Files.FILETYPE.CONFIG.getStringList(AddonRTPMenu.name + ".Menu.Items.Lore"); + for (Map.Entry world : world_slots.entrySet()) { + int slot = world.getKey(); ItemStack item = new ItemStack(Material.MAP, 1); ItemMeta meta = item.getItemMeta(); assert meta != null; - meta.setDisplayName(world.getKey().getName() + ": " + actual_worlds.size() + " " + world_slots.size()); + meta.setDisplayName(color(item_name.replace("%world%", world.getValue().getName()))); + List lore = new ArrayList<>(item_lore); + lore.forEach(s -> lore.set(lore.indexOf(s), color(s).replace("%world%", world.getValue().getName()))); + meta.setLore(lore); item.setItemMeta(meta); inv.setItem(slot, item); } pl.getData(p).setMenuInv(inv); + pl.getData(p).setWorldSlots(world_slots); p.openInventory(inv); } - private static HashMap centerWorlds(List actual_worlds) { - HashMap map = new HashMap<>(); + private static HashMap centerWorlds(List actual_worlds) { + HashMap map = new HashMap<>(); while(actual_worlds.size() >= 9) { - map.put(actual_worlds.get(0), map.size()); - actual_worlds.remove(0); + for (int i = 0; i < 9; i++) { + map.put(map.size(), actual_worlds.get(0)); + actual_worlds.remove(0); + } } int slot = map.size(); + //BetterRTP.getInstance().getLogger().log(Level.INFO, "- " + actual_worlds.size()); for (int i = 0; i < actual_worlds.size(); i++) { - map.put(actual_worlds.get(i), slot + getSlotOffset(actual_worlds.size(), i) + i); + int offset = getSlotOffset(actual_worlds.size(), i); + //BetterRTP.getInstance().getLogger().log(Level.INFO, "- " + offset); + map.put(slot + offset + i, actual_worlds.get(i)); } - return map; } @@ -86,7 +103,7 @@ public class RTPMenu_CreateInventory { } break; case 8: - if (index > 4) return 1; + if (index >= 4) return 1; } } else { switch (gear_to_show) { @@ -99,9 +116,13 @@ public class RTPMenu_CreateInventory { return 0; } + private static String color(String str) { + return ChatColor.translateAlternateColorCodes('&', str); + } + private static Inventory createInventory(String title, int size) { title = BetterRTP.getInstance().getText().color(title); - return Bukkit.createInventory(null, Math.min(size, 54), title); + return Bukkit.createInventory(null, Math.max(Math.min(size, 54), 9), title); } } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/util/LocSerialization.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/util/LocSerialization.java index c1aed36..dc1b717 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/util/LocSerialization.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/util/LocSerialization.java @@ -7,7 +7,7 @@ import org.bukkit.World; public class LocSerialization { public static String getStringFromLocation(Location loc) { - if (loc == null) { + if (loc == null || loc.getWorld() == null) { return ""; } return loc.getWorld().getName() + ":" + loc.getX() + ":" + loc.getY() + ":" + loc.getZ() + ":" + loc.getYaw() + ":" + loc.getPitch() ; diff --git a/BetterRTPAddons/src/main/resources/config.yml b/BetterRTPAddons/src/main/resources/config.yml index 170f0d0..28d3ef5 100644 --- a/BetterRTPAddons/src/main/resources/config.yml +++ b/BetterRTPAddons/src/main/resources/config.yml @@ -67,7 +67,10 @@ RTPMenu: Menu: Title: "Choose World" Items: - + Name: '&7%world%' + Lore: + - '' + - '&8Click to rtp into this world!' Worlds: - world - world_nether \ No newline at end of file diff --git a/pom.xml b/pom.xml index 235cd37..90e532f 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ me.SuperRonanCraft BetterRTP jar - 3.3.0 + 3.2.3 1.8