diff --git a/src/main/java/dev/plex/command/PlexCommand.java b/src/main/java/dev/plex/command/PlexCommand.java index 1b1c876..8270acf 100644 --- a/src/main/java/dev/plex/command/PlexCommand.java +++ b/src/main/java/dev/plex/command/PlexCommand.java @@ -28,10 +28,13 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandMap; import org.bukkit.command.CommandSender; import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.command.PluginIdentifiableCommand; import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -public abstract class PlexCommand extends Command +public abstract class PlexCommand extends Command implements PluginIdentifiableCommand { protected static Plex plugin = Plex.get(); @@ -61,7 +64,7 @@ public abstract class PlexCommand extends Command getMap().register("plex", this); } - protected abstract Component execute(CommandSender sender, String[] args); + protected abstract Component execute(@NotNull CommandSender sender, @Nullable Player playerSender, @NotNull String[] args); @Override @@ -113,7 +116,7 @@ public abstract class PlexCommand extends Command } try { - Component component = this.execute(sender, args); + Component component = this.execute(sender, isConsole(sender) ? null : (Player)sender, args); if (component != null) { send(sender, component); @@ -237,6 +240,12 @@ public abstract class PlexCommand extends Command return player.getUniqueId(); } + @Override + public @NotNull Plugin getPlugin() + { + return plugin; + } + protected boolean isConsole(CommandSender sender) { diff --git a/src/main/java/dev/plex/command/impl/AdminCMD.java b/src/main/java/dev/plex/command/impl/AdminCMD.java index adff855..bdaf267 100644 --- a/src/main/java/dev/plex/command/impl/AdminCMD.java +++ b/src/main/java/dev/plex/command/impl/AdminCMD.java @@ -21,6 +21,7 @@ import net.kyori.adventure.text.Component; import org.apache.commons.lang.StringUtils; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; @CommandPermissions(level = Rank.SENIOR_ADMIN, source = RequiredCommandSource.ANY) @@ -30,7 +31,7 @@ public class AdminCMD extends PlexCommand //TODO: Better return messages @Override - public Component execute(CommandSender sender, String[] args) + public Component execute(CommandSender sender, Player playerSender, String[] args) { if (args.length == 0) { diff --git a/src/main/java/dev/plex/command/impl/AdminworldCMD.java b/src/main/java/dev/plex/command/impl/AdminworldCMD.java index 609466a..4fa2bae 100644 --- a/src/main/java/dev/plex/command/impl/AdminworldCMD.java +++ b/src/main/java/dev/plex/command/impl/AdminworldCMD.java @@ -16,13 +16,13 @@ import org.bukkit.entity.Player; public class AdminworldCMD extends PlexCommand { @Override - public Component execute(CommandSender sender, String[] args) + public Component execute(CommandSender sender, Player playerSender, String[] args) { // TODO: Add adminworld settings if (args.length == 0) { Location loc = new Location(Bukkit.getWorld("adminworld"), 0, 50, 0); - ((Player)sender).teleportAsync(loc); + playerSender.teleportAsync(loc); return tl("teleportedToWorld", "adminworld"); } return null; diff --git a/src/main/java/dev/plex/command/impl/AdventureCMD.java b/src/main/java/dev/plex/command/impl/AdventureCMD.java index d744449..d73fcb2 100644 --- a/src/main/java/dev/plex/command/impl/AdventureCMD.java +++ b/src/main/java/dev/plex/command/impl/AdventureCMD.java @@ -22,20 +22,19 @@ public class AdventureCMD extends PlexCommand { @Override - public Component execute(CommandSender sender, String[] args) + public Component execute(CommandSender sender, Player playerSender, String[] args) { - Player player = (Player)sender; if (args.length == 0) { if (isConsole(sender)) { throw new CommandFailException("You must define a player when using the console!"); } - player.setGameMode(GameMode.ADVENTURE); + playerSender.setGameMode(GameMode.ADVENTURE); return tl("gameModeSetTo", "adventure"); } - if (checkRank(player, Rank.ADMIN, "plex.gamemode.adventure.others")) + if (checkRank(playerSender, Rank.ADMIN, "plex.gamemode.adventure.others")) { if (args[0].equals("-a")) { diff --git a/src/main/java/dev/plex/command/impl/BanCMD.java b/src/main/java/dev/plex/command/impl/BanCMD.java index da5422f..aee5d88 100644 --- a/src/main/java/dev/plex/command/impl/BanCMD.java +++ b/src/main/java/dev/plex/command/impl/BanCMD.java @@ -30,7 +30,7 @@ import org.jetbrains.annotations.NotNull; public class BanCMD extends PlexCommand { @Override - public Component execute(CommandSender sender, String[] args) + public Component execute(CommandSender sender, Player playerSender, String[] args) { if (args.length == 0) { diff --git a/src/main/java/dev/plex/command/impl/CreativeCMD.java b/src/main/java/dev/plex/command/impl/CreativeCMD.java index 495bea3..124feba 100644 --- a/src/main/java/dev/plex/command/impl/CreativeCMD.java +++ b/src/main/java/dev/plex/command/impl/CreativeCMD.java @@ -21,20 +21,19 @@ import org.jetbrains.annotations.NotNull; public class CreativeCMD extends PlexCommand { @Override - public Component execute(CommandSender sender, String[] args) + public Component execute(CommandSender sender, Player playerSender, String[] args) { - Player player = (Player)sender; if (args.length == 0) { if (isConsole(sender)) { throw new CommandFailException("You must define a player when using the console!"); } - player.setGameMode(GameMode.CREATIVE); + playerSender.setGameMode(GameMode.CREATIVE); return tl("gameModeSetTo", "creative"); } - if (checkRank(player, Rank.ADMIN, "plex.gamemode.creative.others")) + if (checkRank(playerSender, Rank.ADMIN, "plex.gamemode.creative.others")) { if (args[0].equals("-a")) { diff --git a/src/main/java/dev/plex/command/impl/DeopAllCMD.java b/src/main/java/dev/plex/command/impl/DeopAllCMD.java index e6fd012..7c59839 100644 --- a/src/main/java/dev/plex/command/impl/DeopAllCMD.java +++ b/src/main/java/dev/plex/command/impl/DeopAllCMD.java @@ -15,7 +15,7 @@ import org.bukkit.entity.Player; public class DeopAllCMD extends PlexCommand { @Override - public Component execute(CommandSender sender, String[] args) + public Component execute(CommandSender sender, Player playerSender, String[] args) { for (Player player : Bukkit.getOnlinePlayers()) { diff --git a/src/main/java/dev/plex/command/impl/DeopCMD.java b/src/main/java/dev/plex/command/impl/DeopCMD.java index 7f486e3..57c91ba 100644 --- a/src/main/java/dev/plex/command/impl/DeopCMD.java +++ b/src/main/java/dev/plex/command/impl/DeopCMD.java @@ -18,7 +18,7 @@ import org.jetbrains.annotations.NotNull; public class DeopCMD extends PlexCommand { @Override - public Component execute(CommandSender sender, String[] args) + public Component execute(CommandSender sender, Player playerSender, String[] args) { if (args.length != 1) { diff --git a/src/main/java/dev/plex/command/impl/FlatlandsCMD.java b/src/main/java/dev/plex/command/impl/FlatlandsCMD.java index c4fdbc6..8202ab3 100644 --- a/src/main/java/dev/plex/command/impl/FlatlandsCMD.java +++ b/src/main/java/dev/plex/command/impl/FlatlandsCMD.java @@ -17,12 +17,12 @@ public class FlatlandsCMD extends PlexCommand { @Override - public Component execute(CommandSender sender, String[] args) + public Component execute(CommandSender sender, Player playerSender, String[] args) { if (args.length == 0) { Location loc = new Location(Bukkit.getWorld("flatlands"), 0, 50, 0); - ((Player)sender).teleportAsync(loc); + playerSender.teleportAsync(loc); return tl("teleportedToWorld", "flatlands"); } return null; diff --git a/src/main/java/dev/plex/command/impl/FreezeCMD.java b/src/main/java/dev/plex/command/impl/FreezeCMD.java index 346c9b8..78e52f4 100644 --- a/src/main/java/dev/plex/command/impl/FreezeCMD.java +++ b/src/main/java/dev/plex/command/impl/FreezeCMD.java @@ -25,7 +25,7 @@ import org.jetbrains.annotations.NotNull; public class FreezeCMD extends PlexCommand { @Override - public Component execute(CommandSender sender, String[] args) + public Component execute(CommandSender sender, Player playerSender, String[] args) { if (args.length != 1) { diff --git a/src/main/java/dev/plex/command/impl/ListCMD.java b/src/main/java/dev/plex/command/impl/ListCMD.java index 6bf2aed..34d5afa 100644 --- a/src/main/java/dev/plex/command/impl/ListCMD.java +++ b/src/main/java/dev/plex/command/impl/ListCMD.java @@ -12,23 +12,25 @@ import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CommandParameters(name = "list", description = "Show a list of all online players", usage = "/ ") +@CommandParameters(name = "list", description = "Show a list of all online players") @CommandPermissions(level = Rank.OP, permission = "plex.list") public class ListCMD extends PlexCommand { @Override - protected Component execute(CommandSender sender, String[] args) + protected Component execute(CommandSender sender, Player playerSender, String[] args) { List players = Lists.newArrayList(Bukkit.getOnlinePlayers()); - Component component = Component.text("There " + (players.size() > 1 ? "are" : "is") + " currently").color(NamedTextColor.GRAY) + Component component = Component.text("There " + (players.size() == 1 ? "is" : "are") + " currently").color(NamedTextColor.GRAY) .append(Component.space()) .append(Component.text(players.size()).color(NamedTextColor.YELLOW)) .append(Component.space()) - .append(Component.text(players.size() > 1 ? "players " : "player " + "online out of").color(NamedTextColor.GRAY)) + .append(Component.text(players.size() == 1 ? "player" : "players").color(NamedTextColor.GRAY)) + .append(Component.space()) + .append(Component.text("online out of").color(NamedTextColor.GRAY)) .append(Component.space()) .append(Component.text(Bukkit.getMaxPlayers()).color(NamedTextColor.YELLOW)) - .append(Component.newline()) - .append(Component.text("players").color(NamedTextColor.GRAY)) + .append(Component.space()) + .append(Component.text(Bukkit.getMaxPlayers() == 1 ? "player." : "players.").color(NamedTextColor.GRAY)) .append(Component.newline()); for (int i = 0; i < players.size(); i++) { diff --git a/src/main/java/dev/plex/command/impl/LocalSpawnCMD.java b/src/main/java/dev/plex/command/impl/LocalSpawnCMD.java new file mode 100644 index 0000000..3f85241 --- /dev/null +++ b/src/main/java/dev/plex/command/impl/LocalSpawnCMD.java @@ -0,0 +1,21 @@ +package dev.plex.command.impl; + +import dev.plex.command.PlexCommand; +import dev.plex.command.annotation.CommandParameters; +import dev.plex.command.annotation.CommandPermissions; +import dev.plex.rank.enums.Rank; +import net.kyori.adventure.text.Component; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandParameters(name = "localspawn", description = "Teleport to the spawnpoint of the world you are in") +@CommandPermissions(level = Rank.OP, permission = "plex.spawnpoint") +public class LocalSpawnCMD extends PlexCommand +{ + @Override + protected Component execute(CommandSender sender, Player playerSender, String[] args) + { + playerSender.teleportAsync(playerSender.getWorld().getSpawnLocation()); + return tl("teleportedToWorldSpawn"); + } +} \ No newline at end of file diff --git a/src/main/java/dev/plex/command/impl/MasterbuilderworldCMD.java b/src/main/java/dev/plex/command/impl/MasterbuilderworldCMD.java index 06dcd8e..ec98cf2 100644 --- a/src/main/java/dev/plex/command/impl/MasterbuilderworldCMD.java +++ b/src/main/java/dev/plex/command/impl/MasterbuilderworldCMD.java @@ -17,13 +17,13 @@ public class MasterbuilderworldCMD extends PlexCommand { @Override - public Component execute(CommandSender sender, String[] args) + public Component execute(CommandSender sender, Player playerSender, String[] args) { // TODO: Add adminworld settings if (args.length == 0) { Location loc = new Location(Bukkit.getWorld("masterbuilderworld"), 0, 50, 0); - ((Player)sender).teleportAsync(loc); + playerSender.teleportAsync(loc); return tl("teleportedToWorld", "Master Builder World"); } return null; diff --git a/src/main/java/dev/plex/command/impl/NameHistoryCMD.java b/src/main/java/dev/plex/command/impl/NameHistoryCMD.java index 1b860c8..42e54a9 100644 --- a/src/main/java/dev/plex/command/impl/NameHistoryCMD.java +++ b/src/main/java/dev/plex/command/impl/NameHistoryCMD.java @@ -21,6 +21,7 @@ import net.kyori.adventure.text.format.TextDecoration; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; @CommandParameters(name = "namehistory", description = "Get the name history of a player", usage = "/ ", aliases = "nh") @@ -30,7 +31,7 @@ public class NameHistoryCMD extends PlexCommand private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("MM/dd/yyyy 'at' HH:mm:ss"); @Override - public Component execute(CommandSender sender, String[] args) + public Component execute(CommandSender sender, Player playerSender, String[] args) { if (args.length != 1) { @@ -38,7 +39,6 @@ public class NameHistoryCMD extends PlexCommand } String username = args[0]; - UUID uuid; OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayerIfCached(username); if (offlinePlayer != null) diff --git a/src/main/java/dev/plex/command/impl/OpAllCMD.java b/src/main/java/dev/plex/command/impl/OpAllCMD.java index 9563562..a733737 100644 --- a/src/main/java/dev/plex/command/impl/OpAllCMD.java +++ b/src/main/java/dev/plex/command/impl/OpAllCMD.java @@ -15,7 +15,7 @@ import org.bukkit.entity.Player; public class OpAllCMD extends PlexCommand { @Override - public Component execute(CommandSender sender, String[] args) + public Component execute(CommandSender sender, Player playerSender, String[] args) { for (Player player : Bukkit.getOnlinePlayers()) { diff --git a/src/main/java/dev/plex/command/impl/OpCMD.java b/src/main/java/dev/plex/command/impl/OpCMD.java index 9b42e01..cd0814d 100644 --- a/src/main/java/dev/plex/command/impl/OpCMD.java +++ b/src/main/java/dev/plex/command/impl/OpCMD.java @@ -18,7 +18,7 @@ import org.jetbrains.annotations.NotNull; public class OpCMD extends PlexCommand { @Override - public Component execute(CommandSender sender, String[] args) + public Component execute(CommandSender sender, Player playerSender, String[] args) { if (args.length != 1) { diff --git a/src/main/java/dev/plex/command/impl/PlexCMD.java b/src/main/java/dev/plex/command/impl/PlexCMD.java index 28dd28b..78241a6 100644 --- a/src/main/java/dev/plex/command/impl/PlexCMD.java +++ b/src/main/java/dev/plex/command/impl/PlexCMD.java @@ -12,6 +12,7 @@ import java.util.List; import net.kyori.adventure.text.Component; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; @CommandPermissions(level = Rank.OP, permission = "plex.plex", source = RequiredCommandSource.ANY) @@ -20,7 +21,7 @@ public class PlexCMD extends PlexCommand { @Override - public Component execute(CommandSender sender, String[] args) + public Component execute(CommandSender sender, Player playerSender, String[] args) { if (args.length == 0) { diff --git a/src/main/java/dev/plex/command/impl/PunishmentsCMD.java b/src/main/java/dev/plex/command/impl/PunishmentsCMD.java index cb77934..dc31292 100644 --- a/src/main/java/dev/plex/command/impl/PunishmentsCMD.java +++ b/src/main/java/dev/plex/command/impl/PunishmentsCMD.java @@ -19,7 +19,7 @@ import org.jetbrains.annotations.NotNull; public class PunishmentsCMD extends PlexCommand { @Override - public Component execute(CommandSender sender, String[] args) + public Component execute(CommandSender sender, Player playerSender, String[] args) { new PunishmentMenu().openInv(((Player)sender), 0); return null; diff --git a/src/main/java/dev/plex/command/impl/RankCMD.java b/src/main/java/dev/plex/command/impl/RankCMD.java index d919b52..7239f53 100644 --- a/src/main/java/dev/plex/command/impl/RankCMD.java +++ b/src/main/java/dev/plex/command/impl/RankCMD.java @@ -16,8 +16,8 @@ import org.bukkit.entity.Player; public class RankCMD extends PlexCommand { @Override - public Component execute(CommandSender sender, String[] args) + public Component execute(CommandSender sender, Player playerSender, String[] args) { - return tl("yourRank", getPlexPlayer((Player)sender).getRank()); + return tl("yourRank", getPlexPlayer(playerSender).getLoginMSG()); } } \ No newline at end of file diff --git a/src/main/java/dev/plex/command/impl/SpectatorCMD.java b/src/main/java/dev/plex/command/impl/SpectatorCMD.java index 0b9493f..eb012dc 100644 --- a/src/main/java/dev/plex/command/impl/SpectatorCMD.java +++ b/src/main/java/dev/plex/command/impl/SpectatorCMD.java @@ -21,20 +21,19 @@ import org.jetbrains.annotations.NotNull; public class SpectatorCMD extends PlexCommand { @Override - public Component execute(CommandSender sender, String[] args) + public Component execute(CommandSender sender, Player playerSender, String[] args) { - Player player = (Player)sender; if (args.length == 0) { if (isConsole(sender)) { throw new CommandFailException("You must define a player when using the console!"); } - player.setGameMode(GameMode.SPECTATOR); + playerSender.setGameMode(GameMode.SPECTATOR); return tl("gameModeSetTo", "spectator"); } - if (checkRank(player, Rank.ADMIN, "plex.gamemode.spectator.others")) + if (checkRank(playerSender, Rank.ADMIN, "plex.gamemode.spectator.others")) { if (args[0].equals("-a")) { diff --git a/src/main/java/dev/plex/command/impl/SurvivalCMD.java b/src/main/java/dev/plex/command/impl/SurvivalCMD.java index 97ef5a9..5a6c83d 100644 --- a/src/main/java/dev/plex/command/impl/SurvivalCMD.java +++ b/src/main/java/dev/plex/command/impl/SurvivalCMD.java @@ -21,20 +21,19 @@ import org.jetbrains.annotations.NotNull; public class SurvivalCMD extends PlexCommand { @Override - public Component execute(CommandSender sender, String[] args) + public Component execute(CommandSender sender, Player playerSender, String[] args) { - Player player = (Player)sender; if (args.length == 0) { if (isConsole(sender)) { throw new CommandFailException("You must define a player when using the console!"); } - player.setGameMode(GameMode.SURVIVAL); + playerSender.setGameMode(GameMode.SURVIVAL); return tl("gameModeSetTo", "survival"); } - if (checkRank(player, Rank.ADMIN, "plex.gamemode.survival.others")) + if (checkRank(playerSender, Rank.ADMIN, "plex.gamemode.survival.others")) { if (args[0].equals("-a")) { diff --git a/src/main/java/dev/plex/command/impl/UnbanCMD.java b/src/main/java/dev/plex/command/impl/UnbanCMD.java index d9c6f39..71c11e6 100644 --- a/src/main/java/dev/plex/command/impl/UnbanCMD.java +++ b/src/main/java/dev/plex/command/impl/UnbanCMD.java @@ -15,6 +15,7 @@ import java.util.List; import java.util.UUID; import net.kyori.adventure.text.Component; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; @CommandParameters(name = "unban", usage = "/ ", description = "Unbans a player, offline or online") @@ -23,7 +24,7 @@ import org.jetbrains.annotations.NotNull; public class UnbanCMD extends PlexCommand { @Override - public Component execute(CommandSender sender, String[] args) + public Component execute(CommandSender sender, Player playerSender, String[] args) { if (args.length == 0) { diff --git a/src/main/java/dev/plex/command/impl/WorldCMD.java b/src/main/java/dev/plex/command/impl/WorldCMD.java index 72946d0..9c1c709 100644 --- a/src/main/java/dev/plex/command/impl/WorldCMD.java +++ b/src/main/java/dev/plex/command/impl/WorldCMD.java @@ -21,16 +21,15 @@ import org.jetbrains.annotations.NotNull; @CommandParameters(name = "world", description = "Teleport to a world.", usage = "/ ") public class WorldCMD extends PlexCommand { - @Override - public Component execute(CommandSender sender, String[] args) + public Component execute(CommandSender sender, Player playerSender, String[] args) { if (args.length != 1) { throw new CommandArgumentException(); } World world = getNonNullWorld(args[0]); - ((Player)sender).teleportAsync(new Location(world, 0, world.getHighestBlockYAt(0, 0) + 1, 0, 0, 0)); + playerSender.teleportAsync(new Location(world, 0, world.getHighestBlockYAt(0, 0) + 1, 0, 0, 0)); return tl("playerWorldTeleport", world.getName()); } @@ -43,5 +42,4 @@ public class WorldCMD extends PlexCommand } return ImmutableList.of(); } - } diff --git a/src/main/java/dev/plex/handlers/CommandHandler.java b/src/main/java/dev/plex/handlers/CommandHandler.java index 8e8341b..3e3761f 100644 --- a/src/main/java/dev/plex/handlers/CommandHandler.java +++ b/src/main/java/dev/plex/handlers/CommandHandler.java @@ -28,6 +28,7 @@ public class CommandHandler extends PlexBase commands.add(new FlatlandsCMD()); commands.add(new FreezeCMD()); commands.add(new ListCMD()); + commands.add(new LocalSpawnCMD()); commands.add(new MasterbuilderworldCMD()); commands.add(new NameHistoryCMD()); commands.add(new PlexCMD()); diff --git a/src/main/resources/messages.yml b/src/main/resources/messages.yml index b0654ac..5754abc 100644 --- a/src/main/resources/messages.yml +++ b/src/main/resources/messages.yml @@ -70,4 +70,5 @@ consoleOnly: "This command can only be executed by the console." yourRank: "Your rank is: " banningPlayer: " - Banning " unbanningPlayer: " - Unbanning " -playerNotBanned: "That player is not banned!" \ No newline at end of file +playerNotBanned: "That player is not banned!" +teleportedToWorldSpawn: "Teleporting to the local spawn" \ No newline at end of file