converted base /rtp to be an RTPCommand + commands can now be cancelled

This commit is contained in:
RonanCraft
2022-03-09 11:00:02 -05:00
parent c5d4997cf4
commit bdece2c552
16 changed files with 206 additions and 26 deletions

View File

@@ -50,7 +50,7 @@ public class AddonsHandler {
PARTY_RTP(new AddonParty()), //Adds parties!
;
Addon addon;
final Addon addon;
Addons(Addon addon) {
this.addon = addon;

View File

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

View File

@@ -37,6 +37,7 @@ 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,6 +34,7 @@ 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

@@ -1,4 +0,0 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.menus;
public class AddonMenus {
}

View File

@@ -8,6 +8,7 @@ import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP;
import me.SuperRonanCraft.BetterRTPAddons.Main;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsRegionInfo;
import me.SuperRonanCraft.BetterRTPAddons.util.Files;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@@ -29,7 +30,8 @@ public class PortalsEvents implements Listener {
}
public void load() {
Main.getInstance().getServer().getPluginManager().registerEvents(this, Main.getInstance());
HandlerList.unregisterAll(this);
Bukkit.getServer().getPluginManager().registerEvents(this, Main.getInstance());
ignoreDelay = Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG).getBoolean("Portals.IgnoreDelay");
ignoreCooldown = Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG).getBoolean("Portals.IgnoreCooldown");
}

View File

@@ -0,0 +1,93 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.rtpmenu;
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;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import java.util.HashMap;
import java.util.Objects;
public class AddonRTPMenu implements Addon, Listener {
private static String name = "RTPMenu";
private final HashMap<Player, MenuData> playerData = new HashMap<>();
public MenuData getData(Player p) {
return playerData.getOrDefault(p, null);
}
@Override
public boolean isEnabled() {
return getFile(Files.FILETYPE.CONFIG).getBoolean(name + ".Enabled");
}
@Override
public void load() {
for (Player p : playerData.keySet())
p.closeInventory();
playerData.clear();
HandlerList.unregisterAll(this);
Bukkit.getServer().getPluginManager().registerEvents(this, Main.getInstance());
}
@Override
public void unload() {
}
@Override
public RTPCommand getCmd() {
return null;
}
@EventHandler
private void onClick(InventoryClickEvent e) {
if (validClick(e)) {
e.getWhoClicked().sendMessage("Menu Inventory!");
}
}
@EventHandler
private void onClick(RTP_CommandEvent e) {
if (e.getCmd() instanceof CmdTeleport && e.getCmd() instanceof Player) {
e.setCancelled(true);
RTPMenu_CreateInventory.createInv((Player) e.getSendi());
}
}
private boolean validClick(InventoryClickEvent e) {
//Not a player, or Not our inventory
if (!(e.getWhoClicked() instanceof Player) || e.isCancelled())
return false;
// Item is clicked
else if (e.getCurrentItem() == null || e.getCurrentItem().getType().equals(Material.AIR))
return false;
else if (e.getWhoClicked() instanceof Player) {
// Clicks the inventory
MenuData data = playerData.getOrDefault((Player) e.getWhoClicked(), null);
if (data != null) {
if (!e.getInventory().equals(data.getMenuInv()))
return false;
// Clicks their own inventory
else if (!Objects.equals(e.getClickedInventory(), data.getMenuInv())) {
e.setCancelled(true);
return false;
}
} else
return false;
}
return true;
}
}

View File

@@ -0,0 +1,11 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.rtpmenu;
import lombok.Getter;
import lombok.Setter;
import org.bukkit.inventory.Inventory;
public class MenuData {
@Getter @Setter Inventory menuInv;
}

View File

@@ -0,0 +1,11 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.rtpmenu;
import org.bukkit.entity.Player;
public class RTPMenu_CreateInventory {
public static void createInv(Player p) {
}
}

View File

@@ -44,6 +44,7 @@ MagicStick:
- '&7a brand new adventure!'
Take: true
#Addon Commands
Commands:
Enabled: false
Events:
@@ -56,5 +57,13 @@ Commands:
Commands:
- 'broadcast &e%player_name% moved while trying to rtp, chump!'
#Addon Parties
Parties:
Enabled: true
Enabled: true
#Addon RTPMenu (Enable `/rtp` world select menu)
RTPMenu:
Enabled: false
Worlds:
- world
- world_nether