mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2025-08-18 01:25:45 +00:00
command event can be cancelled for teleport command + rtp menu testing
This commit is contained in:
parent
bdece2c552
commit
bd07536c0c
@ -10,6 +10,7 @@ import me.SuperRonanCraft.BetterRTPAddons.addons.logger.AddonLogger;
|
|||||||
import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.AddonMagicStick;
|
import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.AddonMagicStick;
|
||||||
import me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.AddonParty;
|
import me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp.AddonParty;
|
||||||
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals;
|
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals;
|
||||||
|
import me.SuperRonanCraft.BetterRTPAddons.addons.rtpmenu.AddonRTPMenu;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -48,6 +49,7 @@ public class AddonsHandler {
|
|||||||
EXTRAEFFECTS(new AddonExtraEffects()), //New cosmetica!
|
EXTRAEFFECTS(new AddonExtraEffects()), //New cosmetica!
|
||||||
COMMANDS(new AddonCommands()), //Commands on rtp events
|
COMMANDS(new AddonCommands()), //Commands on rtp events
|
||||||
PARTY_RTP(new AddonParty()), //Adds parties!
|
PARTY_RTP(new AddonParty()), //Adds parties!
|
||||||
|
RTP_MENU(new AddonRTPMenu()), //Adds /rtp menu
|
||||||
;
|
;
|
||||||
|
|
||||||
final Addon addon;
|
final Addon addon;
|
||||||
|
@ -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;
|
||||||
@ -15,16 +16,19 @@ 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 org.bukkit.inventory.Inventory;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
public class AddonRTPMenu implements Addon, Listener {
|
public class AddonRTPMenu implements Addon, Listener {
|
||||||
|
|
||||||
private 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<>();
|
||||||
|
|
||||||
public MenuData getData(Player p) {
|
public MenuData getData(Player p) {
|
||||||
|
if (!playerData.containsKey(p))
|
||||||
|
playerData.put(p, new MenuData());
|
||||||
return playerData.getOrDefault(p, null);
|
return playerData.getOrDefault(p, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,15 +59,16 @@ public class AddonRTPMenu implements Addon, Listener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
private void onClick(InventoryClickEvent e) {
|
private void onClick(InventoryClickEvent e) {
|
||||||
if (validClick(e)) {
|
if (validClick(e)) {
|
||||||
|
e.setCancelled(true);
|
||||||
e.getWhoClicked().sendMessage("Menu Inventory!");
|
e.getWhoClicked().sendMessage("Menu Inventory!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
private void onClick(RTP_CommandEvent e) {
|
private void onTeleport(RTP_CommandEvent e) {
|
||||||
if (e.getCmd() instanceof CmdTeleport && e.getCmd() instanceof Player) {
|
if (e.getCmd() instanceof CmdTeleport && e.getSendi() instanceof Player) {
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
RTPMenu_CreateInventory.createInv((Player) e.getSendi());
|
RTPMenu_CreateInventory.createInv(this, (Player) e.getSendi());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,11 +1,107 @@
|
|||||||
package me.SuperRonanCraft.BetterRTPAddons.addons.rtpmenu;
|
package me.SuperRonanCraft.BetterRTPAddons.addons.rtpmenu;
|
||||||
|
|
||||||
|
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||||
|
import me.SuperRonanCraft.BetterRTPAddons.util.Files;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class RTPMenu_CreateInventory {
|
public class RTPMenu_CreateInventory {
|
||||||
|
|
||||||
public static void createInv(Player p) {
|
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);
|
||||||
|
|
||||||
|
HashMap<World, Integer> world_slots = centerWorlds(new ArrayList<>(actual_worlds));
|
||||||
|
|
||||||
|
for (Map.Entry<World, Integer> world : world_slots.entrySet()) {
|
||||||
|
int slot = world.getValue();
|
||||||
|
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());
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
inv.setItem(slot, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
pl.getData(p).setMenuInv(inv);
|
||||||
|
p.openInventory(inv);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static HashMap<World, Integer> centerWorlds(List<World> actual_worlds) {
|
||||||
|
HashMap<World, Integer> map = new HashMap<>();
|
||||||
|
while(actual_worlds.size() >= 9) {
|
||||||
|
map.put(actual_worlds.get(0), map.size());
|
||||||
|
actual_worlds.remove(0);
|
||||||
|
}
|
||||||
|
int slot = map.size();
|
||||||
|
for (int i = 0; i < actual_worlds.size(); i++) {
|
||||||
|
map.put(actual_worlds.get(i), slot + getSlotOffset(actual_worlds.size(), i) + i);
|
||||||
|
}
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int getSlotOffset(int gear_to_show, int index) {
|
||||||
|
if (gear_to_show % 2 == 0) { //Is Even
|
||||||
|
switch (gear_to_show) {
|
||||||
|
case 2:
|
||||||
|
switch (index) {
|
||||||
|
case 0: return 3;
|
||||||
|
case 1: return 4;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
switch (index) {
|
||||||
|
case 0:
|
||||||
|
case 1: return 2;
|
||||||
|
case 2:
|
||||||
|
case 3: return 3;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
switch (index) {
|
||||||
|
case 0:
|
||||||
|
case 1:
|
||||||
|
case 2: return 1;
|
||||||
|
case 3:
|
||||||
|
case 4:
|
||||||
|
case 5: return 2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
if (index > 4) return 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch (gear_to_show) {
|
||||||
|
case 1: return 4;
|
||||||
|
case 3: return 3;
|
||||||
|
case 5: return 2;
|
||||||
|
case 7: return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Inventory createInventory(String title, int size) {
|
||||||
|
title = BetterRTP.getInstance().getText().color(title);
|
||||||
|
return Bukkit.createInventory(null, Math.min(size, 54), title);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -64,6 +64,10 @@ 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"
|
||||||
|
Items:
|
||||||
|
|
||||||
Worlds:
|
Worlds:
|
||||||
- world
|
- world
|
||||||
- world_nether
|
- world_nether
|
@ -59,6 +59,7 @@ public class Commands {
|
|||||||
} else {
|
} else {
|
||||||
RTP_CommandEvent event = new RTP_CommandEvent(sendi, new CmdTeleport());
|
RTP_CommandEvent event = new RTP_CommandEvent(sendi, new CmdTeleport());
|
||||||
Bukkit.getServer().getPluginManager().callEvent(event);
|
Bukkit.getServer().getPluginManager().callEvent(event);
|
||||||
|
if (!event.isCancelled())
|
||||||
event.getCmd().execute(sendi, label, args);
|
event.getCmd().execute(sendi, label, args);
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user