mirror of
https://github.com/DRE2N/DungeonsXL.git
synced 2024-11-24 19:45:43 +01:00
Added delete command; resolves #41
This commit is contained in:
parent
28506adc88
commit
4be232b5b9
@ -33,6 +33,7 @@ public class DCommands extends BRCommands {
|
||||
public static EditCommand EDIT = new EditCommand();
|
||||
public static EnterCommand ENTER = new EnterCommand();
|
||||
public static EscapeCommand ESCAPE = new EscapeCommand();
|
||||
public static DeleteCommand DELETE = new DeleteCommand();
|
||||
public static GameCommand GAME = new GameCommand();
|
||||
public static GroupCommand GROUP = new GroupCommand();
|
||||
public static HelpCommand HELP = new HelpCommand();
|
||||
@ -62,6 +63,7 @@ public class DCommands extends BRCommands {
|
||||
CHAT,
|
||||
CHAT_SPY,
|
||||
CREATE,
|
||||
DELETE,
|
||||
EDIT,
|
||||
ENTER,
|
||||
ESCAPE,
|
||||
|
@ -0,0 +1,97 @@
|
||||
/*
|
||||
* Copyright (C) 2012-2016 Frank Baumann
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU 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 General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package io.github.dre2n.dungeonsxl.command;
|
||||
|
||||
import io.github.dre2n.commons.command.BRCommand;
|
||||
import io.github.dre2n.commons.compatibility.CompatibilityHandler;
|
||||
import io.github.dre2n.commons.util.FileUtil;
|
||||
import io.github.dre2n.commons.util.messageutil.MessageUtil;
|
||||
import io.github.dre2n.dungeonsxl.DungeonsXL;
|
||||
import io.github.dre2n.dungeonsxl.config.DMessages;
|
||||
import io.github.dre2n.dungeonsxl.player.DPermissions;
|
||||
import io.github.dre2n.dungeonsxl.world.DEditWorld;
|
||||
import io.github.dre2n.dungeonsxl.world.DResourceWorld;
|
||||
import io.github.dre2n.dungeonsxl.world.DWorlds;
|
||||
import java.io.File;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* @author Daniel Saukel
|
||||
*/
|
||||
public class DeleteCommand extends BRCommand {
|
||||
|
||||
DungeonsXL plugin = DungeonsXL.getInstance();
|
||||
|
||||
public DeleteCommand() {
|
||||
setCommand("delete");
|
||||
setMinArgs(1);
|
||||
setMaxArgs(2);
|
||||
setHelp(DMessages.HELP_CMD_DELETE.getMessage());
|
||||
setPermission(DPermissions.DELETE.getNode());
|
||||
setPlayerCommand(true);
|
||||
setConsoleCommand(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExecute(String[] args, CommandSender sender) {
|
||||
DWorlds dWorlds = plugin.getDWorlds();
|
||||
|
||||
DResourceWorld resource = dWorlds.getResourceByName(args[1]);
|
||||
if (resource == null) {
|
||||
MessageUtil.sendMessage(sender, DMessages.ERROR_NO_SUCH_MAP.getMessage(args[1]));
|
||||
return;
|
||||
}
|
||||
|
||||
if (args.length == 2 && CompatibilityHandler.getInstance().isSpigot() && sender instanceof Player) {
|
||||
ClickEvent onClickConfirm = new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/dungeonsxl delete " + args[1] + " true");
|
||||
TextComponent confirm = new TextComponent(ChatColor.GREEN + "[ YES ]");
|
||||
confirm.setClickEvent(onClickConfirm);
|
||||
|
||||
ClickEvent onClickDeny = new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/dungeonsxl delete " + args[1] + " false");
|
||||
TextComponent deny = new TextComponent(ChatColor.DARK_RED + "[ NO ]");
|
||||
deny.setClickEvent(onClickDeny);
|
||||
|
||||
MessageUtil.sendMessage(sender, DMessages.CMD_DELETE_BACKUPS.getMessage());
|
||||
((Player) sender).spigot().sendMessage(confirm, new TextComponent(" "), deny);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
for (DEditWorld editWorld : dWorlds.getEditWorlds()) {
|
||||
if (editWorld.getResource().equals(resource)) {
|
||||
editWorld.delete(false);
|
||||
}
|
||||
}
|
||||
dWorlds.removeResource(resource);
|
||||
FileUtil.removeDirectory(resource.getFolder());
|
||||
|
||||
if (args[2].equalsIgnoreCase("true")) {
|
||||
for (File file : DungeonsXL.BACKUPS.listFiles()) {
|
||||
if (file.getName().startsWith(resource.getName() + "-")) {
|
||||
FileUtil.removeDirectory(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MessageUtil.sendMessage(sender, DMessages.CMD_DELETE_SUCCESS.getMessage(args[1]));
|
||||
}
|
||||
|
||||
}
|
@ -39,6 +39,8 @@ public enum DMessages implements Messages {
|
||||
CMD_CHAT_NORMAL_CHAT("Cmd_Chat_NormalChat", "&6You are now in the public chat"),
|
||||
CMD_CHATSPY_STOPPED("Cmd_Chatspy_Stopped", "&6You stopped to spy the dungeon chat."),
|
||||
CMD_CHATSPY_START("Cmd_Chatspy_Start", "&6You started to spy the dungeon chat."),
|
||||
CMD_DELETE_BACKUPS("Cmd_Delete_Backups", "&6Do you wish to delete all saved backups as well?"),
|
||||
CMD_DELETE_SUCCESS("Cmd_Delete_Success", "&6Successfully deleted the map &4&v1&6."),
|
||||
CMD_ENTER_SUCCESS("Cmd_Enter", "&6The group &4&v1 &6successfully entered the game of the group &4&v2&6."),
|
||||
CMD_IMPORT_SUCCESS("Cmd_Import", "&6Successfully imported the world &4&v1&6."),
|
||||
CMD_INVITE_SUCCESS("Cmd_Invite_Success", "&6Player &4&v1&6 was successfully invited to edit the map &4&v2&6."),
|
||||
@ -106,6 +108,7 @@ public enum DMessages implements Messages {
|
||||
HELP_CMD_CHAT("Help_Cmd_Chat", "/dxl chat - Change the chat mode"),
|
||||
HELP_CMD_CHATSPY("Help_Cmd_Chatspy", "/dxl chatspy - Dis/enables the spymode"),
|
||||
HELP_CMD_CREATE("Help_Cmd_Create", "/dxl create [name] - Creates a new dungeon map"),
|
||||
HELP_CMD_DELETE("Help_Cmd_Delete", "/dxl delete [name] - Deletes a dungeon map"),
|
||||
HELP_CMD_EDIT("Help_Cmd_Edit", "/dxl edit [map] - Edit an existing dungeon map"),
|
||||
HELP_CMD_ENTER("Help_Cmd_Enter", "/dxl enter ([joining group]) [target group] - Let the joining group enter the game of the target group"),
|
||||
HELP_CMD_ESCAPE("Help_Cmd_Escape", "/dxl escape - Leaves the current edit world without saving"),
|
||||
|
@ -38,6 +38,7 @@ public enum DPermissions {
|
||||
CHAT_SPY("chatspy", OP),
|
||||
CMD_EDIT("cmdedit", OP),
|
||||
CREATE("create", OP),
|
||||
DELETE("delete", OP),
|
||||
EDIT("edit", OP),
|
||||
ENTER("enter", OP),
|
||||
ESCAPE("escape", TRUE),
|
||||
@ -86,7 +87,7 @@ public enum DPermissions {
|
||||
// Kits
|
||||
ADMINISTRATOR("*", OP),
|
||||
HALF_EDITOR("halfeditor", OP, ESCAPE, LIST, MESSAGE, SAVE),
|
||||
FULL_EDITOR("fulleditor", OP, HALF_EDITOR, EDIT, PLAY, RENAME, SIGN, TEST),
|
||||
FULL_EDITOR("fulleditor", OP, HALF_EDITOR, DELETE, EDIT, PLAY, RENAME, SIGN, TEST),
|
||||
HALF_PLAYER("halfplayer", TRUE, CHAT, ESCAPE, GAME, HELP, JOIN, LEAVE, LIVES, MAIN, SETTINGS, SETTINGS_PLAYER),
|
||||
FULL_PLAYER("fullplayer", OP, HALF_PLAYER, GROUP);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user