mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2025-08-17 17:15:47 +00:00
full rtp menu revamp
This commit is contained in:
parent
91ef3ff3c8
commit
8fc4824190
@ -7,7 +7,7 @@
|
|||||||
<groupId>me.SuperRonanCraft</groupId>
|
<groupId>me.SuperRonanCraft</groupId>
|
||||||
<artifactId>BetterRTPAddons</artifactId>
|
<artifactId>BetterRTPAddons</artifactId>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<version>1.8.1</version>
|
<version>1.8.2</version>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<maven.compiler.source>1.8</maven.compiler.source>
|
<maven.compiler.source>1.8</maven.compiler.source>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package me.SuperRonanCraft.BetterRTPAddons.addons.rtpmenu;
|
package me.SuperRonanCraft.BetterRTPAddons.addons.rtpmenu;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
|
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
|
||||||
import me.SuperRonanCraft.BetterRTP.player.commands.types.CmdTeleport;
|
import me.SuperRonanCraft.BetterRTP.player.commands.types.CmdTeleport;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_CommandEvent;
|
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_CommandEvent;
|
||||||
@ -8,19 +9,21 @@ import me.SuperRonanCraft.BetterRTPAddons.Main;
|
|||||||
import me.SuperRonanCraft.BetterRTPAddons.util.Files;
|
import me.SuperRonanCraft.BetterRTPAddons.util.Files;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import javax.security.auth.login.Configuration;
|
||||||
import java.util.Objects;
|
import java.util.*;
|
||||||
|
|
||||||
public class AddonRTPMenu implements Addon, Listener {
|
public class AddonRTPMenu implements Addon, Listener {
|
||||||
|
|
||||||
public static String name = "RTPMenu";
|
public static String name = "RTPMenu";
|
||||||
private final HashMap<Player, MenuData> playerData = new HashMap<>();
|
private final HashMap<Player, MenuData> playerData = new HashMap<>();
|
||||||
|
@Getter private HashMap<String, RTPMenuWorldInfo> worlds = new HashMap<>();
|
||||||
|
|
||||||
public MenuData getData(Player p) {
|
public MenuData getData(Player p) {
|
||||||
if (!playerData.containsKey(p))
|
if (!playerData.containsKey(p))
|
||||||
@ -38,12 +41,44 @@ public class AddonRTPMenu implements Addon, Listener {
|
|||||||
for (Player p : playerData.keySet())
|
for (Player p : playerData.keySet())
|
||||||
p.closeInventory();
|
p.closeInventory();
|
||||||
playerData.clear();
|
playerData.clear();
|
||||||
|
ConfigurationSection config = getFile(Files.FILETYPE.CONFIG).getConfigurationSection("RTPMenu");
|
||||||
|
List<Map<?, ?>> map = config.getMapList("WorldList");
|
||||||
|
for (Map<?, ?> m : map) {
|
||||||
|
for (Map.Entry<?, ?> entry : m.entrySet()) {
|
||||||
|
String world = entry.getKey().toString();
|
||||||
|
Map<?, ?> test = ((Map<?, ?>) m.get(world));
|
||||||
|
if (test == null)
|
||||||
|
continue;
|
||||||
|
String item = "MAP";
|
||||||
|
String name = world;
|
||||||
|
List<String> lore = new ArrayList<>();
|
||||||
|
if (test.get("Item") != null) {
|
||||||
|
if (test.get("Item").getClass() == String.class)
|
||||||
|
item = String.valueOf(test.get("Item").toString());
|
||||||
|
}
|
||||||
|
if (test.get("Name") != null) {
|
||||||
|
if (test.get("Name").getClass() == String.class)
|
||||||
|
name = String.valueOf(test.get("Name").toString());
|
||||||
|
}
|
||||||
|
if (test.get("Lore") != null) {
|
||||||
|
if (test.get("Lore").getClass() == ArrayList.class)
|
||||||
|
lore = new ArrayList<String>((ArrayList) test.get("Lore"));
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
worlds.put(world, new RTPMenuWorldInfo(name, Material.valueOf(item.toUpperCase()), lore));
|
||||||
|
} catch (IllegalArgumentException | NullPointerException e) {
|
||||||
|
Main.getInstance().getLogger().warning("The item " + item + " is an unknown item id! Set to a map!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Bukkit.getServer().getPluginManager().registerEvents(this, Main.getInstance());
|
Bukkit.getServer().getPluginManager().registerEvents(this, Main.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void unload() {
|
public void unload() {
|
||||||
HandlerList.unregisterAll(this);
|
HandlerList.unregisterAll(this);
|
||||||
|
for (Player p : playerData.keySet())
|
||||||
|
p.closeInventory();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -0,0 +1,18 @@
|
|||||||
|
package me.SuperRonanCraft.BetterRTPAddons.addons.rtpmenu;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class RTPMenuWorldInfo {
|
||||||
|
|
||||||
|
public final String name;
|
||||||
|
public final Material item;
|
||||||
|
public final List<String> lore;
|
||||||
|
|
||||||
|
RTPMenuWorldInfo(String name, Material item, List<String> lore) {
|
||||||
|
this.name = name;
|
||||||
|
this.item = item;
|
||||||
|
this.lore = lore;
|
||||||
|
}
|
||||||
|
}
|
@ -21,31 +21,30 @@ public class RTPMenu_SelectWorld {
|
|||||||
|
|
||||||
public static void createInv(AddonRTPMenu pl, Player p) {
|
public static void createInv(AddonRTPMenu pl, Player p) {
|
||||||
List<World> bukkit_worlds = Bukkit.getWorlds();
|
List<World> bukkit_worlds = Bukkit.getWorlds();
|
||||||
List<String> display_worlds = Files.FILETYPE.CONFIG.getStringList(AddonRTPMenu.name + ".Worlds");
|
|
||||||
List<World> actual_worlds = new ArrayList<>();
|
List<World> actual_worlds = new ArrayList<>();
|
||||||
for (World world : bukkit_worlds) {
|
for (World world : bukkit_worlds) {
|
||||||
if (display_worlds.contains(world.getName()) && BetterRTP.getInstance().getPerms().getAWorld(p, world.getName()))
|
if (pl.getWorlds().containsKey(world.getName()) && BetterRTP.getInstance().getPerms().getAWorld(p, world.getName()))
|
||||||
actual_worlds.add(world);
|
actual_worlds.add(world);
|
||||||
}
|
}
|
||||||
if (actual_worlds.size() <= 1) {
|
if (actual_worlds.isEmpty() || (actual_worlds.size() <= 1 && !BetterRTP.getInstance().getSettings().isDebug())) {
|
||||||
CmdTeleport.teleport(p, "rtp", null, null);
|
CmdTeleport.teleport(p, "rtp", null, null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int size = Math.floorDiv(actual_worlds.size(), 9) * 9;
|
int size = Math.floorDiv(actual_worlds.size(), 9) * 9;
|
||||||
if (size < actual_worlds.size()) size += 9;
|
if (size < actual_worlds.size()) size += 9;
|
||||||
Inventory inv = createInventory(color(Files.FILETYPE.CONFIG.getString(AddonRTPMenu.name + ".Menu.Title")), size);
|
Inventory inv = createInventory(color(Files.FILETYPE.CONFIG.getString(AddonRTPMenu.name + ".Title")), size);
|
||||||
|
|
||||||
HashMap<Integer, World> world_slots = centerWorlds(new ArrayList<>(actual_worlds));
|
HashMap<Integer, World> world_slots = centerWorlds(new ArrayList<>(actual_worlds));
|
||||||
|
|
||||||
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()) {
|
for (Map.Entry<Integer, World> world : world_slots.entrySet()) {
|
||||||
|
String worldName = world.getValue().getName();
|
||||||
|
RTPMenuWorldInfo worldInfo = pl.getWorlds().getOrDefault(worldName, new RTPMenuWorldInfo(worldName, Material.MAP, null));
|
||||||
int slot = world.getKey();
|
int slot = world.getKey();
|
||||||
ItemStack item = new ItemStack(Material.MAP, 1);
|
ItemStack item = new ItemStack(worldInfo.item, 1);
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
assert meta != null;
|
assert meta != null;
|
||||||
meta.setDisplayName(color(item_name.replace("%world%", world.getValue().getName())));
|
meta.setDisplayName(color(worldInfo.name));
|
||||||
List<String> lore = new ArrayList<>(item_lore);
|
List<String> lore = new ArrayList<>(worldInfo.lore);
|
||||||
lore.forEach(s -> lore.set(lore.indexOf(s), color(s).replace("%world%", world.getValue().getName())));
|
lore.forEach(s -> lore.set(lore.indexOf(s), color(s).replace("%world%", world.getValue().getName())));
|
||||||
meta.setLore(lore);
|
meta.setLore(lore);
|
||||||
item.setItemMeta(meta);
|
item.setItemMeta(meta);
|
||||||
|
@ -64,13 +64,17 @@ Parties:
|
|||||||
#Addon RTPMenu (Enable `/rtp` world select menu)
|
#Addon RTPMenu (Enable `/rtp` world select menu)
|
||||||
RTPMenu:
|
RTPMenu:
|
||||||
Enabled: false
|
Enabled: false
|
||||||
Menu:
|
Title: "Choose World"
|
||||||
Title: "Choose World"
|
WorldList:
|
||||||
Items:
|
- world:
|
||||||
Name: '&7%world%'
|
Name: '&7World'
|
||||||
Lore:
|
Item: 'map'
|
||||||
- ''
|
Lore:
|
||||||
- '&8Click to rtp into this world!'
|
- ''
|
||||||
Worlds:
|
- '&8Click to rtp in world!'
|
||||||
- world
|
- world_nether:
|
||||||
- world_nether
|
Name: '&cNether'
|
||||||
|
Item: 'netherrack'
|
||||||
|
Lore:
|
||||||
|
- ''
|
||||||
|
- '&8Click to rtp in world!'
|
Loading…
x
Reference in New Issue
Block a user