diff --git a/BauSystem_Main/src/de/steamwar/bausystem/BauSystem.java b/BauSystem_Main/src/de/steamwar/bausystem/BauSystem.java index 1281ae1..589e233 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/BauSystem.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/BauSystem.java @@ -66,9 +66,8 @@ public class BauSystem extends JavaPlugin implements Listener { Mapper.init(); try { - CommandRemover.removeAll("tp", "gamemode", "time", "clear"); + CommandRemover.removeAll("tp", "time", "clear"); CommandInjector.injectCommand(new CommandTeleport()); - CommandInjector.injectCommand(new CommandGamemode()); CommandInjector.injectCommand(new CommandTime()); CommandInjector.injectCommand(new CommandClear()); } catch (Exception e) { @@ -84,6 +83,7 @@ public class BauSystem extends JavaPlugin implements Listener { new CommandSpeed(); new CommandTNT(); new CommandBau(); + new CommandGamemode(); getCommand("fire").setExecutor(new CommandFire()); getCommand("freeze").setExecutor(new CommandFreeze()); new CommandTestblock(); diff --git a/BauSystem_Main/src/de/steamwar/bausystem/commands/CommandGamemode.java b/BauSystem_Main/src/de/steamwar/bausystem/commands/CommandGamemode.java index 757f08d..5c2608b 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/commands/CommandGamemode.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/commands/CommandGamemode.java @@ -1,60 +1,51 @@ -/* - This file is a part of the SteamWar software. - - Copyright (C) 2020 SteamWar.de-Serverteam - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ - package de.steamwar.bausystem.commands; -import com.google.common.collect.ImmutableList; import de.steamwar.bausystem.BauSystem; +import de.steamwar.command.SWCommand; import de.steamwar.sql.BauweltMember; -import org.apache.commons.lang.Validate; import org.bukkit.GameMode; -import org.bukkit.command.CommandSender; -import org.bukkit.command.defaults.BukkitCommand; import org.bukkit.entity.Player; -import org.bukkit.util.StringUtil; -import java.util.ArrayList; -import java.util.List; -public class CommandGamemode extends BukkitCommand { - private static final List GAMEMODE_NAMES = ImmutableList.of("adventure", "creative", "survival", - "spectator"); +public class CommandGamemode extends SWCommand { public CommandGamemode() { - super("gamemode"); - List aliases = new ArrayList<>(); - aliases.add("gm"); - this.setAliases(aliases); - this.description = "Ändert den Spielmodus eines Spielers"; - this.usageMessage = "/gm [Spielmodus]"; + super("gamemode", "gm"); } - public boolean execute(CommandSender sender, String currentAlias, String[] args) { - if (!(sender instanceof Player)) { - return false; - } else if (args.length == 0) { - sender.sendMessage(BauSystem.PREFIX + this.usageMessage); - return false; + + @Register(help = true) + public void gamemodeHelp(Player p, String... args) { + p.sendMessage(BauSystem.PREFIX + "§cUnbekannter Spielmodus"); + } + + @Register + public void genericCommand(Player p) { + if (!permissionCheck(p)) { + //noinspection UnnecessaryReturnStatement + return; + } else { + if (p.getGameMode() == GameMode.CREATIVE) { + p.setGameMode(GameMode.SPECTATOR); + } else { + p.setGameMode(GameMode.CREATIVE); + } } + } - Player p = (Player) sender; + @Register + public void gamemodeCommand(Player p, GameMode gameMode) { + if (!permissionCheck(p)) { + //noinspection UnnecessaryReturnStatement + return; + } else { + p.setGameMode(gameMode); + } + } + + + private boolean permissionCheck(Player p) { if (!p.getUniqueId().equals(BauSystem.getOwner())) { BauweltMember member = BauweltMember.getBauMember(BauSystem.getOwner(), p.getUniqueId()); if (member == null || !member.isBuild()) { @@ -62,47 +53,6 @@ public class CommandGamemode extends BukkitCommand { return false; } } - - GameMode mode = createMode(args[0]); - - if (mode == null) { - p.sendMessage(BauSystem.PREFIX + "§cUnbekannter Spielmodus"); - return false; - } - - p.setGameMode(mode); return true; } - - @SuppressWarnings("deprecation") - private GameMode createMode(String modeArg) { - try { - return GameMode.getByValue(Integer.parseInt(modeArg)); - } catch (NumberFormatException ignored) { - if ((modeArg.equalsIgnoreCase("creative")) || (modeArg.equalsIgnoreCase("c"))) - return GameMode.CREATIVE; - else if ((modeArg.equalsIgnoreCase("adventure")) || (modeArg.equalsIgnoreCase("a"))) - return GameMode.ADVENTURE; - else if ((modeArg.equalsIgnoreCase("spectator")) || (modeArg.equalsIgnoreCase("sp"))) - return GameMode.SPECTATOR; - else if ((modeArg.equalsIgnoreCase("survival")) || (modeArg.equalsIgnoreCase("s"))) - return GameMode.SURVIVAL; - } - return null; - } - - @Override - public List tabComplete(CommandSender sender, String alias, String[] args) { - Validate.notNull(sender, "Sender cannot be null"); - Validate.notNull(args, "Arguments cannot be null"); - Validate.notNull(alias, "Alias cannot be null"); - - if (args.length == 1) - return StringUtil.copyPartialMatches(args[0], GAMEMODE_NAMES, - new ArrayList<>(GAMEMODE_NAMES.size())); - if (args.length == 2) { - return super.tabComplete(sender, alias, args); - } - return ImmutableList.of(); - } -} +} \ No newline at end of file