mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2025-08-17 17:15:47 +00:00
RTPMenu addon finalized - v1.8 - brtp v2.2.3
This commit is contained in:
parent
bd07536c0c
commit
870b60b245
@ -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 -->
|
||||
|
@ -28,7 +28,6 @@ public class CommandsLoader implements Listener {
|
||||
commands.put(type, cmds);
|
||||
}
|
||||
}
|
||||
HandlerList.unregisterAll(this);
|
||||
Bukkit.getPluginManager().registerEvents(this, Main.getInstance());
|
||||
}
|
||||
|
||||
|
@ -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");
|
||||
|
@ -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");
|
||||
|
@ -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() {
|
||||
|
@ -32,7 +32,7 @@ public class AddonPortals implements Addon {
|
||||
@Override
|
||||
public void unload() {
|
||||
portalsCache.unload();
|
||||
events.unregiter();
|
||||
events.unregister();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
@ -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() ;
|
||||
|
@ -67,7 +67,10 @@ RTPMenu:
|
||||
Menu:
|
||||
Title: "Choose World"
|
||||
Items:
|
||||
|
||||
Name: '&7%world%'
|
||||
Lore:
|
||||
- ''
|
||||
- '&8Click to rtp into this world!'
|
||||
Worlds:
|
||||
- world
|
||||
- world_nether
|
Loading…
x
Reference in New Issue
Block a user