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

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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;
}
}

View File

@@ -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);
}

View File

@@ -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;
}
}

View File

@@ -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