RTPMenu addon finalized - v1.8 - brtp v2.2.3

This commit is contained in:
RonanCraft 2022-03-10 11:47:02 -05:00
parent bd07536c0c
commit 870b60b245
13 changed files with 60 additions and 39 deletions

View File

@ -12,6 +12,7 @@
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<resources>
@ -108,7 +109,7 @@
<dependency>
<groupId>me.SuperRonanCraft</groupId>
<artifactId>BetterRTP</artifactId>
<version>3.3.0</version>
<version>3.2.3</version>
<scope>provided</scope>
</dependency>
<!-- ProtocolLib -->

View File

@ -28,7 +28,6 @@ public class CommandsLoader implements Listener {
commands.put(type, cmds);
}
}
HandlerList.unregisterAll(this);
Bukkit.getPluginManager().registerEvents(this, Main.getInstance());
}

View File

@ -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");

View File

@ -34,7 +34,6 @@ public class MagicStickEvents implements Listener {
private final List<PlayerListener> 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");

View File

@ -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() {

View File

@ -32,7 +32,7 @@ public class AddonPortals implements Addon {
@Override
public void unload() {
portalsCache.unload();
events.unregiter();
events.unregister();
}
@Override

View File

@ -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);
}

View File

@ -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());
}
}

View File

@ -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<Integer, World> worldSlots;
}

View File

@ -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<World> bukkit_worlds = Bukkit.getWorlds();
List<String> display_worlds = Files.FILETYPE.CONFIG.getStringList(AddonRTPMenu.name + ".Worlds");
List<World> 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, Integer> world_slots = centerWorlds(new ArrayList<>(actual_worlds));
HashMap<Integer, World> world_slots = centerWorlds(new ArrayList<>(actual_worlds));
for (Map.Entry<World, Integer> world : world_slots.entrySet()) {
int slot = world.getValue();
String item_name = Files.FILETYPE.CONFIG.getString(AddonRTPMenu.name + ".Menu.Items.Name");
List<String > item_lore = Files.FILETYPE.CONFIG.getStringList(AddonRTPMenu.name + ".Menu.Items.Lore");
for (Map.Entry<Integer, World> 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<String> 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<World, Integer> centerWorlds(List<World> actual_worlds) {
HashMap<World, Integer> map = new HashMap<>();
private static HashMap<Integer, World> centerWorlds(List<World> actual_worlds) {
HashMap<Integer, World> 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);
}
}

View File

@ -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() ;

View File

@ -67,7 +67,10 @@ RTPMenu:
Menu:
Title: "Choose World"
Items:
Name: '&7%world%'
Lore:
- ''
- '&8Click to rtp into this world!'
Worlds:
- world
- world_nether

View File

@ -7,7 +7,7 @@
<groupId>me.SuperRonanCraft</groupId>
<artifactId>BetterRTP</artifactId>
<packaging>jar</packaging>
<version>3.3.0</version>
<version>3.2.3</version>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>