package tv.mineinthebox.essentials.commands; import org.bukkit.ChatColor; import org.bukkit.GameMode; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import tv.mineinthebox.essentials.xEssentials; import tv.mineinthebox.essentials.enums.PermissionKey; import tv.mineinthebox.essentials.helpers.EnumHelper; import tv.mineinthebox.essentials.hook.Hooks; import tv.mineinthebox.essentials.hook.WorldEditHook; import tv.mineinthebox.essentials.interfaces.CommandTemplate; public class CmdGamemode extends CommandTemplate { private final xEssentials pl; public CmdGamemode(xEssentials pl, Command cmd, CommandSender sender) { super(pl, cmd, sender); this.pl = pl; } public boolean execute(CommandSender sender, Command cmd, String[] args) { if(cmd.getName().equalsIgnoreCase("gamemode")) { if(args.length == 0) { if(sender instanceof Player) { if(sender.hasPermission(PermissionKey.CMD_GAMEMODE.getPermission())) { showHelp(); } else { getWarning(WarningType.NO_PERMISSION); } } else { getWarning(WarningType.PLAYER_ONLY); } } else if(args.length == 1) { if(args[0].equalsIgnoreCase("help")) { if(sender instanceof Player) { if(sender.hasPermission(PermissionKey.CMD_GAMEMODE.getPermission())) { showHelp(); } else { getWarning(WarningType.NO_PERMISSION); } } else { getWarning(WarningType.PLAYER_ONLY); } } else if(args[0].equalsIgnoreCase("s") || args[0].equalsIgnoreCase("c") || args[0].equalsIgnoreCase("adventure") || args[0].equalsIgnoreCase("spectate") || args[0].equalsIgnoreCase("0") || args[0].equalsIgnoreCase("1") || args[0].equalsIgnoreCase("2") || args[0].equalsIgnoreCase("3")) { if(sender instanceof Player) { if(sender.hasPermission(PermissionKey.CMD_GAMEMODE.getPermission())) { Player p = (Player) sender; if(args[0].equalsIgnoreCase("s") || args[0].equalsIgnoreCase("0")) { if(p.getGameMode() != GameMode.SURVIVAL) { p.setGameMode(GameMode.SURVIVAL); if(Hooks.isWorldeditEnabled()) { WorldEditHook.turnOffWand(p); } sendMessage("you successfully set your gamemode to survival!"); } else { sendMessage("you are already set in this gamemode"); } } else if(args[0].equalsIgnoreCase("c") || args[0].equalsIgnoreCase("1")) { if(p.getGameMode() != GameMode.CREATIVE) { p.setGameMode(GameMode.CREATIVE); if(Hooks.isWorldeditEnabled()) { WorldEditHook.turnOffWand(p); } sendMessage("you successfully set your gamemode to creative!"); } else { sendMessage("you are already set in this gamemode"); } } else if(args[0].equalsIgnoreCase("adventure") || args[0].equalsIgnoreCase("2")) { if(EnumHelper.isDefined(GameMode.class, "ADVENTURE")) { if(p.getGameMode() != EnumHelper.getEnum(GameMode.class, "ADVENTURE")) { p.setGameMode(EnumHelper.getEnum(GameMode.class, "ADVENTURE")); sendMessage("you successfully set your gamemode to adventure!"); } else { sendMessage("you are already set in this gamemode"); } } else { sendMessage("adventure seems not to be existed in your server!"); } } else if(args[0].equalsIgnoreCase("spectate") || args[0].equalsIgnoreCase("3")) { if(EnumHelper.isDefined(GameMode.class, "SPECTATOR")) { if(p.getGameMode() != EnumHelper.getEnum(GameMode.class, "SPECTATOR")) { p.setGameMode(EnumHelper.getEnum(GameMode.class, "SPECTATOR")); sendMessage("you successfully set your gamemode to spectate!"); } else { sendMessage("you are already set in this gamemode"); } } else { sendMessage("spectate seems not be existed in your server!"); } } } else { getWarning(WarningType.NO_PERMISSION); } } else { getWarning(WarningType.PLAYER_ONLY); } } else { if(sender.hasPermission(PermissionKey.CMD_GAMEMODE.getPermission())) { sendMessage("warning a invalid gamemode argument!"); } else { getWarning(WarningType.NO_PERMISSION); } } } else if(args.length == 2) { if(sender.hasPermission(PermissionKey.CMD_GAMEMODE.getPermission())) { Player p = pl.getManagers().getPlayerManager().getOfflinePlayer(args[1]).getBukkitPlayer(); if(p instanceof Player) { if(args[0].equalsIgnoreCase("s") || args[0].equalsIgnoreCase("0")) { if(p.getGameMode() != GameMode.SURVIVAL) { p.setGameMode(GameMode.SURVIVAL); if(Hooks.isWorldeditEnabled()) { WorldEditHook.turnOffWand(p); } sendMessageTo(p, sender.getName() + " has set your gamemode to survival!"); sendMessage("you successfully set the gamemode to survival for player " + p.getName() + "!"); } else { sendMessage("the player is already set in this gamemode"); } } else if(args[0].equalsIgnoreCase("c") || args[0].equalsIgnoreCase("1")) { if(p.getGameMode() != GameMode.CREATIVE) { p.setGameMode(GameMode.CREATIVE); if(Hooks.isWorldeditEnabled()) { WorldEditHook.turnOffWand(p); } sendMessageTo(p, sender.getName() + " has set your gamemode to creative!"); sendMessage("you successfully set the gamemode to creative for player " + p.getName() + "!"); } else { sendMessage("the player is already set in this gamemode"); } } else if(args[0].equalsIgnoreCase("adventure") || args[0].equalsIgnoreCase("2")) { if(EnumHelper.isDefined(GameMode.class, "ADVENTURE")) { if(p.getGameMode() != EnumHelper.getEnum(GameMode.class, "ADVENTURE")) { p.setGameMode((GameMode) EnumHelper.getEnum(GameMode.class, "ADVENTURE")); sendMessageTo(p, sender.getName() + " has set your gamemode to adventure!"); sendMessage("you successfully set the gamemode to adventure for player " + p.getName() + "!"); } else { sendMessage("the player is already set in this gamemode"); } } else { sender.sendMessage("adventure seems not be existed in your server!"); } } else if(args[0].equalsIgnoreCase("spectate") || args[0].equalsIgnoreCase("3")) { if(EnumHelper.isDefined(GameMode.class, "SPECTATOR")) { if(p.getGameMode() != EnumHelper.getEnum(GameMode.class, "SPECTATOR")) { p.setGameMode((GameMode) EnumHelper.getEnum(GameMode.class, "SPECTATOR")); sendMessageTo(p, sender.getName() + " has set your gamemode to spectate!"); sendMessage("you successfully set the gamemode to spectate for player " + p.getName() + "!"); } else { sendMessage("the player is already set in this gamemode"); } } else { sendMessage("spectate seems not be existed in your server!"); } } } else { sendMessage("this player is not online"); } } else { getWarning(WarningType.NO_PERMISSION); } } } return false; } @Override public void showHelp() { sender.sendMessage(ChatColor.GOLD + ".oO___[gamemode help]___Oo."); sender.sendMessage(ChatColor.GREEN + "your gamemode is " + ((Player)sender).getGameMode().name().toLowerCase()); sender.sendMessage(ChatColor.GRAY + "a notice this plugin does not enables Adventure mode and we won't support it"); sender.sendMessage(ChatColor.RED + "Admin: " + ChatColor.GRAY + "/gamemode s " + ChatColor.WHITE + ": sets your gamemode to survival"); sender.sendMessage(ChatColor.RED + "Admin: " + ChatColor.GRAY + "/gamemode c " + ChatColor.WHITE + ": sets your gamemode to creative"); sender.sendMessage(ChatColor.RED + "Admin: " + ChatColor.GRAY + "/gamemode s <player> " + ChatColor.WHITE + ": sets players gamemode to survival"); sender.sendMessage(ChatColor.RED + "Admin: " + ChatColor.GRAY + "/gamemode c <player> " + ChatColor.WHITE + ": sets players gamemode to creative"); } }