mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2025-08-17 09:05:47 +00:00
converted base /rtp
to be an RTPCommand + commands can now be cancelled
This commit is contained in:
parent
c5d4997cf4
commit
bdece2c552
@ -50,7 +50,7 @@ public class AddonsHandler {
|
||||
PARTY_RTP(new AddonParty()), //Adds parties!
|
||||
;
|
||||
|
||||
Addon addon;
|
||||
final Addon addon;
|
||||
|
||||
Addons(Addon addon) {
|
||||
this.addon = addon;
|
||||
|
@ -28,6 +28,7 @@ public class CommandsLoader implements Listener {
|
||||
commands.put(type, cmds);
|
||||
}
|
||||
}
|
||||
HandlerList.unregisterAll(this);
|
||||
Bukkit.getPluginManager().registerEvents(this, Main.getInstance());
|
||||
}
|
||||
|
||||
|
@ -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");
|
||||
|
@ -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");
|
||||
|
@ -1,4 +0,0 @@
|
||||
package me.SuperRonanCraft.BetterRTPAddons.addons.menus;
|
||||
|
||||
public class AddonMenus {
|
||||
}
|
@ -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");
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -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) {
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -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
|
@ -1,6 +1,7 @@
|
||||
package me.SuperRonanCraft.BetterRTP.player.commands;
|
||||
|
||||
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||
import me.SuperRonanCraft.BetterRTP.player.commands.types.CmdTeleport;
|
||||
import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP;
|
||||
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData;
|
||||
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownHandler;
|
||||
@ -13,6 +14,7 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Event;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -27,7 +29,6 @@ public class Commands {
|
||||
}
|
||||
|
||||
public void load() {
|
||||
FileBasics.FILETYPE config = FileBasics.FILETYPE.CONFIG;
|
||||
commands.clear();
|
||||
for (RTPCommandType cmd : RTPCommandType.values())
|
||||
registerCommand(cmd.getCmd(), false);
|
||||
@ -44,17 +45,22 @@ public class Commands {
|
||||
for (RTPCommand cmd : commands) {
|
||||
if (cmd.getName().equalsIgnoreCase(args[0])) {
|
||||
if (cmd.permission(sendi)) {
|
||||
cmd.execute(sendi, label, args);
|
||||
RTP_CommandEvent event = new RTP_CommandEvent(sendi, cmd);
|
||||
//Command Event
|
||||
Bukkit.getServer().getPluginManager().callEvent(new RTP_CommandEvent(sendi, cmd));
|
||||
Bukkit.getServer().getPluginManager().callEvent(event);
|
||||
if (!event.isCancelled())
|
||||
cmd.execute(sendi, label, args);
|
||||
} else
|
||||
pl.getText().getNoPermission(sendi);
|
||||
return;
|
||||
}
|
||||
}
|
||||
pl.getText().getInvalid(sendi, label);
|
||||
} else
|
||||
HelperRTP.rtp(sendi, label, null, null);
|
||||
} else {
|
||||
RTP_CommandEvent event = new RTP_CommandEvent(sendi, new CmdTeleport());
|
||||
Bukkit.getServer().getPluginManager().callEvent(event);
|
||||
event.getCmd().execute(sendi, label, args);
|
||||
}
|
||||
} else
|
||||
pl.getText().getNoPermission(sendi);
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ public class CmdBiome implements RTPCommand, RTPCommandHelpable {
|
||||
//rtp biome <biome1, biome2...>
|
||||
public void execute(CommandSender sendi, String label, String[] args) {
|
||||
if (args.length >= 2)
|
||||
HelperRTP.rtp(sendi, label, null, HelperRTP_Info.getBiomes(args, 1, sendi));
|
||||
CmdTeleport.teleport(sendi, label, null, HelperRTP_Info.getBiomes(args, 1, sendi));
|
||||
else
|
||||
usage(sendi, label);
|
||||
}
|
||||
|
@ -0,0 +1,43 @@
|
||||
package me.SuperRonanCraft.BetterRTP.player.commands.types;
|
||||
|
||||
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
|
||||
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE;
|
||||
import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CmdTeleport implements RTPCommand {
|
||||
|
||||
//Label is the %command% placeholder in messages
|
||||
public static void teleport(CommandSender sendi, String label, String world, List<String> biomes) {
|
||||
if (sendi instanceof Player)
|
||||
HelperRTP.tp((Player) sendi, sendi, world, biomes, RTP_TYPE.COMMAND);
|
||||
else
|
||||
BetterRTP.getInstance().getText().getNotPlayer(sendi, label);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(CommandSender sendi, String label, String[] args) {
|
||||
teleport(sendi, label, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> tabComplete(CommandSender sendi, String[] args) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean permission(CommandSender sendi) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
@ -9,6 +9,7 @@ import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP_Info;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.kingdoms.commands.general.misc.CommandTeleport;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -22,7 +23,7 @@ public class CmdWorld implements RTPCommand, RTPCommandHelpable {
|
||||
//rtp world <world> <biome1, biome2...>
|
||||
public void execute(CommandSender sendi, String label, String[] args) {
|
||||
if (args.length >= 2)
|
||||
HelperRTP.rtp(sendi, label, args[1], HelperRTP_Info.getBiomes(args, 2, sendi));
|
||||
CmdTeleport.teleport(sendi, label, args[1], HelperRTP_Info.getBiomes(args, 2, sendi));
|
||||
else
|
||||
usage(sendi, label);
|
||||
}
|
||||
|
@ -2,10 +2,12 @@ package me.SuperRonanCraft.BetterRTP.references.customEvents;
|
||||
|
||||
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
public class RTP_CommandEvent extends RTPEvent {
|
||||
public class RTP_CommandEvent extends RTPEvent implements Cancellable {
|
||||
|
||||
boolean cancelled;
|
||||
CommandSender sendi;
|
||||
RTPCommand cmd;
|
||||
private static final HandlerList handler = new HandlerList();
|
||||
@ -22,4 +24,14 @@ public class RTP_CommandEvent extends RTPEvent {
|
||||
public RTPCommand getCmd() {
|
||||
return cmd;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCancelled() {
|
||||
return cancelled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCancelled(boolean b) {
|
||||
cancelled = b;
|
||||
}
|
||||
}
|
||||
|
@ -13,13 +13,6 @@ import java.util.List;
|
||||
|
||||
public class HelperRTP {
|
||||
|
||||
public static void rtp(CommandSender sendi, String cmd, String world, List<String> biomes) {
|
||||
if (sendi instanceof Player)
|
||||
HelperRTP.tp((Player) sendi, sendi, world, biomes, RTP_TYPE.COMMAND);
|
||||
else
|
||||
BetterRTP.getInstance().getText().getNotPlayer(sendi, cmd);
|
||||
}
|
||||
|
||||
//Teleporter and sender are the same
|
||||
public static void tp(Player player, String world, List<String> biomes, RTP_TYPE rtpType) {
|
||||
tp(player, player, world, biomes, rtpType, false, false);
|
||||
@ -38,8 +31,8 @@ public class HelperRTP {
|
||||
|
||||
public static void tp(Player player, CommandSender sendi, String world, List<String> biomes, RTP_TYPE rtpType,
|
||||
boolean ignoreCooldown, boolean ignoreDelay, WorldLocations locations) {
|
||||
if (checkRTPing(player, sendi)) { //Is RTP'ing
|
||||
if (ignoreCooldown || checkCooldown(sendi, player)) { //Is Cooling down
|
||||
if (isRTPing(player, sendi)) { //Is RTP'ing
|
||||
if (ignoreCooldown || isCoolingDown(sendi, player)) { //Is Cooling down
|
||||
boolean delay = false;
|
||||
if (!ignoreDelay && sendi == player) //Forced?
|
||||
if (getPl().getSettings().delayEnabled && getPl().getSettings().delayTime > 0) //Delay enabled?
|
||||
@ -53,7 +46,7 @@ public class HelperRTP {
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean checkRTPing(Player player, CommandSender sendi) {
|
||||
private static boolean isRTPing(Player player, CommandSender sendi) {
|
||||
if (getPl().getpInfo().getRtping().containsKey(player) && getPl().getpInfo().getRtping().get(player)) {
|
||||
getPl().getText().getAlready(sendi);
|
||||
return false;
|
||||
@ -61,7 +54,7 @@ public class HelperRTP {
|
||||
return true;
|
||||
}
|
||||
|
||||
private static boolean checkCooldown(CommandSender sendi, Player player) {
|
||||
private static boolean isCoolingDown(CommandSender sendi, Player player) {
|
||||
if (cooldownApplies(sendi, player)) { //Bypassing/Forced?
|
||||
CooldownHandler cooldownHandler = getPl().getCooldowns();
|
||||
if (!cooldownHandler.isLoaded() || !cooldownHandler.loadedPlayer(player)) { //Cooldowns have yet to download
|
||||
|
Loading…
x
Reference in New Issue
Block a user