Dateien nach "src/main/java/net/licks92/wirelessredstone/commands/Admin" hochladen
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
package net.licks92.wirelessredstone.commands.Admin;
|
||||
|
||||
import net.licks92.wirelessredstone.commands.CommandInfo;
|
||||
import net.licks92.wirelessredstone.commands.WirelessCommand;
|
||||
import net.licks92.wirelessredstone.commands.WirelessCommandTabCompletion;
|
||||
import net.licks92.wirelessredstone.signs.WirelessChannel;
|
||||
import net.licks92.wirelessredstone.Utils;
|
||||
import net.licks92.wirelessredstone.WirelessRedstone;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
@CommandInfo(description = "Add owner to WirlessChannel", usage = "<channel> <playername>", aliases = {"addowner"},
|
||||
tabCompletion = {WirelessCommandTabCompletion.CHANNEL, WirelessCommandTabCompletion.PLAYER},
|
||||
permission = "addOwner", canUseInConsole = true, canUseInCommandBlock = false)
|
||||
public class AdminAddOwner extends WirelessCommand {
|
||||
|
||||
@Override
|
||||
public void onCommand(CommandSender sender, String[] args) {
|
||||
if (args.length < 2) {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().commandTooFewArguments, sender, true);
|
||||
return;
|
||||
}
|
||||
|
||||
String channelName = args[0];
|
||||
String playerName = args[1];
|
||||
|
||||
if (!hasAccessToChannel(sender, channelName)) {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().permissionChannelAccess, sender, true);
|
||||
return;
|
||||
}
|
||||
|
||||
WirelessChannel channel = WirelessRedstone.getStorageManager().getChannel(channelName);
|
||||
if (channel == null) {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().channelNotFound, sender, true);
|
||||
return;
|
||||
}
|
||||
|
||||
if (channel.getOwners().contains(playerName)) {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().channelAlreadyOwner, sender, true);
|
||||
return;
|
||||
}
|
||||
|
||||
channel.addOwner(playerName);
|
||||
WirelessRedstone.getStorage().updateChannel(channelName, channel);
|
||||
|
||||
WirelessRedstone.getWRLogger().info("Channel " + channelName + " has been updated. Player " + playerName + " has been added to the owner list.");
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().channelOwnerAdded.replaceAll("%%PLAYERNAME", playerName), sender, false);
|
||||
}
|
||||
}
|
@@ -0,0 +1,21 @@
|
||||
package net.licks92.wirelessredstone.commands.Admin;
|
||||
|
||||
import net.licks92.wirelessredstone.commands.CommandInfo;
|
||||
import net.licks92.wirelessredstone.commands.WirelessCommand;
|
||||
import net.licks92.wirelessredstone.Utils;
|
||||
import net.licks92.wirelessredstone.WirelessRedstone;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
@CommandInfo(description = "Backup all wirelesschannels", usage = "", aliases = {"backup"},
|
||||
permission = "backupdata", canUseInConsole = true, canUseInCommandBlock = false)
|
||||
public class AdminBackup extends WirelessCommand {
|
||||
|
||||
@Override
|
||||
public void onCommand(CommandSender sender, String[] args) {
|
||||
if (WirelessRedstone.getStorage().backupData()) {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().dbBackupDone, sender, false);
|
||||
} else {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().dbBackupFailed, sender, true);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,26 @@
|
||||
package net.licks92.wirelessredstone.commands.Admin;
|
||||
|
||||
import net.licks92.wirelessredstone.commands.CommandInfo;
|
||||
import net.licks92.wirelessredstone.commands.WirelessCommand;
|
||||
import net.licks92.wirelessredstone.ConfigManager;
|
||||
import net.licks92.wirelessredstone.Utils;
|
||||
import net.licks92.wirelessredstone.WirelessRedstone;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
@CommandInfo(description = "Change response language", usage = "<language>", aliases = {"changelanguage", "changel"},
|
||||
permission = "changelanguage", canUseInConsole = true, canUseInCommandBlock = false)
|
||||
public class AdminChangeLanguage extends WirelessCommand {
|
||||
|
||||
@Override
|
||||
public void onCommand(CommandSender sender, String[] args) {
|
||||
if (args.length == 0) {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().commandTooFewArguments, sender, true);
|
||||
return;
|
||||
}
|
||||
|
||||
ConfigManager.getConfig().setValue(ConfigManager.ConfigPaths.LANGUAGE, args[0]);
|
||||
WirelessRedstone.getInstance().resetStrings();
|
||||
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().commandLanguageChanged, sender, false);
|
||||
}
|
||||
}
|
@@ -0,0 +1,216 @@
|
||||
package net.licks92.wirelessredstone.commands.Admin;
|
||||
|
||||
import net.licks92.wirelessredstone.commands.CommandInfo;
|
||||
import net.licks92.wirelessredstone.commands.WirelessCommand;
|
||||
import net.licks92.wirelessredstone.commands.WirelessCommandTabCompletion;
|
||||
import net.licks92.wirelessredstone.signs.SignType;
|
||||
import net.licks92.wirelessredstone.storage.StorageType;
|
||||
import net.licks92.wirelessredstone.Utils;
|
||||
import net.licks92.wirelessredstone.WirelessRedstone;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.ConsoleCommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
import org.bukkit.entity.HumanEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.StringUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Vector;
|
||||
import java.util.logging.Level;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class AdminCommandManager implements CommandExecutor, TabCompleter {
|
||||
|
||||
private final ArrayList<WirelessCommand> cmds;
|
||||
|
||||
public AdminCommandManager() {
|
||||
cmds = new ArrayList<>();
|
||||
cmds.add(new AdminHelp());
|
||||
cmds.add(new AdminList());
|
||||
cmds.add(new AdminAddOwner());
|
||||
cmds.add(new AdminRemoveOwner());
|
||||
cmds.add(new AdminChangeLanguage());
|
||||
// cmds.add(new AdminConvert());
|
||||
cmds.add(new AdminBackup());
|
||||
// cmds.add(new AdminRestore());
|
||||
cmds.add(new AdminPurge());
|
||||
cmds.add(new AdminWipeData());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
|
||||
if (cmd.getName().equalsIgnoreCase("wra") || cmd.getName().equalsIgnoreCase("wradmin")) {
|
||||
if (args.length == 0) {
|
||||
int timer = 0;
|
||||
for (WirelessCommand gcmd : cmds) {
|
||||
if (timer == 0)
|
||||
Utils.sendFeedback(ChatColor.WHITE + "WirelessRedstone Admin help menu", sender, false);
|
||||
if (timer >= 8) {
|
||||
Utils.sendFeedback("Use /wra help 2 for the next page.", sender, false); //TODO: Add this string to the stringloader
|
||||
break;
|
||||
}
|
||||
|
||||
CommandInfo info = gcmd.getClass().getAnnotation(CommandInfo.class);
|
||||
if (sender.hasPermission("wirelessredstone.Admin." + info.permission())) {
|
||||
Utils.sendCommandFeedback(ChatColor.GRAY + "- " + ChatColor.GREEN + "/wra "
|
||||
+ String.join("|", info.aliases()) + getCommandUsage(info) + ChatColor.WHITE + " - "
|
||||
+ ChatColor.GRAY + info.description(), sender, false);
|
||||
timer++;
|
||||
}
|
||||
}
|
||||
if (timer == 0) {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().permissionGeneral, sender, true, true);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
WirelessCommand wanted = null;
|
||||
|
||||
for (WirelessCommand gcmd : cmds) {
|
||||
CommandInfo info = gcmd.getClass().getAnnotation(CommandInfo.class);
|
||||
for (String alias : info.aliases()) {
|
||||
if (alias.equals(args[0])) {
|
||||
wanted = gcmd;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (wanted == null) {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().commandNotFound, sender, true, true);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!sender.hasPermission("wirelessredstone.Admin." + wanted.getClass().getAnnotation(CommandInfo.class).permission())) {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().permissionGeneral, sender, true, true);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!(sender instanceof Player || sender instanceof ConsoleCommandSender)
|
||||
&& !wanted.getClass().getAnnotation(CommandInfo.class).canUseInCommandBlock()) {
|
||||
WirelessRedstone.getWRLogger().info("Commandblocks are not allowed to run command: /wradmin " + args[0]);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!wanted.getClass().getAnnotation(CommandInfo.class).canUseInConsole() && sender instanceof ConsoleCommandSender) {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().commandOnlyInGame, sender, true);
|
||||
return true;
|
||||
}
|
||||
|
||||
Vector<String> a = new Vector<String>(Arrays.asList(args));
|
||||
a.remove(0);
|
||||
args = a.toArray(new String[0]);
|
||||
|
||||
try {
|
||||
wanted.onCommand(sender, args);
|
||||
} catch (RuntimeException ex) {
|
||||
sender.sendMessage(ChatColor.RED + "An internal error occurred while attempting to perform this command");
|
||||
|
||||
CommandException commandException = new CommandException(ex.getMessage(), ex);
|
||||
WirelessRedstone.getInstance().getLogger().log(Level.SEVERE, "An exception was raised", commandException);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
|
||||
if (sender.isOp() || sender.hasPermission("wirelessredstone.Admin." + args[0])) {
|
||||
List<String> completions = new ArrayList<>();
|
||||
|
||||
if (args.length == 1) {
|
||||
String partialCommand = args[0];
|
||||
List<String> commands = new ArrayList<>();
|
||||
|
||||
for (WirelessCommand cmd : cmds) {
|
||||
commands.add(cmd.getClass().getAnnotation(CommandInfo.class).aliases()[0]);
|
||||
}
|
||||
|
||||
StringUtil.copyPartialMatches(partialCommand, commands, completions);
|
||||
}
|
||||
|
||||
if (args.length >= 2) {
|
||||
WirelessCommand wanted = null;
|
||||
|
||||
for (WirelessCommand gcmd : cmds) {
|
||||
CommandInfo info = gcmd.getClass().getAnnotation(CommandInfo.class);
|
||||
for (String alias : info.aliases()) {
|
||||
if (alias.equals(args[0])) {
|
||||
wanted = gcmd;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (wanted != null) {
|
||||
if (args.length == 2) {
|
||||
String partial = args[1];
|
||||
List<String> availableCompletions = getPossibleTabCompletions(wanted, 0);
|
||||
StringUtil.copyPartialMatches(partial, availableCompletions, completions);
|
||||
} else if (args.length == 3) {
|
||||
String partial = args[2];
|
||||
List<String> availableCompletions = getPossibleTabCompletions(wanted, 1);
|
||||
StringUtil.copyPartialMatches(partial, availableCompletions, completions);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Collections.sort(completions);
|
||||
|
||||
return completions;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<WirelessCommand> getCommands() {
|
||||
return cmds;
|
||||
}
|
||||
|
||||
private String getCommandUsage(CommandInfo info) {
|
||||
if (info.usage().equalsIgnoreCase(""))
|
||||
return "";
|
||||
else
|
||||
return " " + info.usage();
|
||||
}
|
||||
|
||||
private List<String> getPossibleTabCompletions(WirelessCommand command, int index) {
|
||||
List<String> availableCompletions = new ArrayList<>();
|
||||
|
||||
WirelessCommandTabCompletion[] tabCompletion = command.getClass().getAnnotation(CommandInfo.class).tabCompletion();
|
||||
if (tabCompletion.length >= index + 1) {
|
||||
if (tabCompletion[index] == WirelessCommandTabCompletion.BOOL) {
|
||||
availableCompletions.add(Boolean.TRUE.toString());
|
||||
availableCompletions.add(Boolean.FALSE.toString());
|
||||
} else if (tabCompletion[index] == WirelessCommandTabCompletion.PLAYER) {
|
||||
availableCompletions.addAll(Bukkit.getOnlinePlayers().stream()
|
||||
.map(HumanEntity::getName)
|
||||
.collect(Collectors.toList()));
|
||||
} else if (tabCompletion[index] == WirelessCommandTabCompletion.CHANNEL) {
|
||||
WirelessRedstone.getStorageManager().getChannels()
|
||||
.forEach(c -> availableCompletions.add(c.getName()));
|
||||
} else if (tabCompletion[index] == WirelessCommandTabCompletion.SIGNTYPE) {
|
||||
for (SignType type : SignType.values()) {
|
||||
availableCompletions.add(type.name());
|
||||
}
|
||||
} else if (tabCompletion[index] == WirelessCommandTabCompletion.STORAGETYPE) {
|
||||
for (StorageType type : StorageType.values()) {
|
||||
availableCompletions.add(type.name());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return availableCompletions;
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,72 @@
|
||||
package net.licks92.wirelessredstone.commands.Admin;
|
||||
|
||||
import net.licks92.wirelessredstone.commands.CommandInfo;
|
||||
import net.licks92.wirelessredstone.commands.WirelessCommand;
|
||||
import net.licks92.wirelessredstone.Utils;
|
||||
import net.licks92.wirelessredstone.WirelessRedstone;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@CommandInfo(description = "Get admin help page", usage = "[page]", aliases = {"help", "h"},
|
||||
permission = "isAdmin", canUseInConsole = true, canUseInCommandBlock = false)
|
||||
public class AdminHelp extends WirelessCommand {
|
||||
|
||||
@Override
|
||||
public void onCommand(CommandSender sender, String[] args) {
|
||||
int page = 1;
|
||||
if (args.length > 0) {
|
||||
try {
|
||||
page = Integer.parseInt(args[0]);
|
||||
} catch (NumberFormatException ex) {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().commandInferiorZero, sender, true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
ArrayList<String> commandList = new ArrayList<>();
|
||||
for (WirelessCommand gcmd : WirelessRedstone.getAdminCommandManager().getCommands()) {
|
||||
CommandInfo info = gcmd.getClass().getAnnotation(CommandInfo.class);
|
||||
commandList.add(ChatColor.GRAY + "- " + ChatColor.GREEN + "/wra "
|
||||
+ String.join(":", info.aliases()) + " "
|
||||
+ info.usage() + ChatColor.WHITE + " - "
|
||||
+ ChatColor.GRAY + info.description());
|
||||
}
|
||||
|
||||
int commandListLength = WirelessRedstone.getAdminCommandManager().getCommands().size();
|
||||
int maxItemsPerPage = 8;
|
||||
int totalPages = 1;
|
||||
|
||||
for (int i = 0; i < commandListLength / maxItemsPerPage; i++) {
|
||||
totalPages++;
|
||||
}
|
||||
|
||||
if (commandListLength % maxItemsPerPage == 0) {
|
||||
totalPages--;
|
||||
}
|
||||
|
||||
if (page > totalPages) {
|
||||
if (totalPages > 1)
|
||||
Utils.sendFeedback("There are only " + totalPages + " pages.", sender, true);
|
||||
else
|
||||
Utils.sendFeedback("There is only 1 page.", sender, true);
|
||||
return;
|
||||
}
|
||||
|
||||
int currentItem = ((page * maxItemsPerPage) - maxItemsPerPage);
|
||||
// 2*3 = 6 ; 6 - 3 = 3
|
||||
|
||||
Utils.sendFeedback(ChatColor.WHITE + "WirelessRedstone admin help menu", sender, false);
|
||||
Utils.sendFeedback(ChatColor.WHITE + "Page " + page + " of " + totalPages, sender, false);
|
||||
|
||||
if (totalPages == 0) {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().commandNoData, sender, true);
|
||||
} else {
|
||||
for (int i = currentItem; i < (currentItem + maxItemsPerPage); i++) {
|
||||
if (!(i >= commandListLength))
|
||||
Utils.sendCommandFeedback(commandList.get(i), sender, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,69 @@
|
||||
package net.licks92.wirelessredstone.commands.Admin;
|
||||
|
||||
import net.licks92.wirelessredstone.commands.CommandInfo;
|
||||
import net.licks92.wirelessredstone.commands.WirelessCommand;
|
||||
import net.licks92.wirelessredstone.signs.WirelessChannel;
|
||||
import net.licks92.wirelessredstone.Utils;
|
||||
import net.licks92.wirelessredstone.WirelessRedstone;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@CommandInfo(description = "Get all channels", usage = "[page]", aliases = {"list", "l"},
|
||||
permission = "list", canUseInConsole = true, canUseInCommandBlock = false)
|
||||
public class AdminList extends WirelessCommand {
|
||||
|
||||
@Override
|
||||
public void onCommand(CommandSender sender, String[] args) {
|
||||
int page = 1;
|
||||
if (args.length > 0) {
|
||||
try {
|
||||
page = Integer.parseInt(args[0]);
|
||||
} catch (NumberFormatException ex) {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().commandInferiorZero, sender, true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
ArrayList<String> channelList = new ArrayList<>();
|
||||
for (WirelessChannel channel : WirelessRedstone.getStorageManager().getChannels()) {
|
||||
channelList.add(ChatColor.GRAY + "- " + ChatColor.GREEN + channel.getName());
|
||||
}
|
||||
|
||||
int channelListLength = WirelessRedstone.getStorageManager().getChannels().size();
|
||||
int maxItemsPerPage = 10;
|
||||
int totalPages = 1;
|
||||
|
||||
for (int i = 0; i < channelListLength / maxItemsPerPage; i++) {
|
||||
totalPages++;
|
||||
}
|
||||
|
||||
if (channelListLength % maxItemsPerPage == 0) {
|
||||
totalPages--;
|
||||
}
|
||||
|
||||
if (page > totalPages) {
|
||||
if (totalPages > 1)
|
||||
Utils.sendFeedback("There are only " + totalPages + " pages.", sender, true);
|
||||
else
|
||||
Utils.sendFeedback("There is only 1 page.", sender, true);
|
||||
return;
|
||||
}
|
||||
|
||||
int currentItem = ((page * maxItemsPerPage) - maxItemsPerPage);
|
||||
// 2*3 = 6 ; 6 - 3 = 3
|
||||
|
||||
Utils.sendFeedback(ChatColor.WHITE + "WirelessRedstone channels", sender, false);
|
||||
Utils.sendFeedback(ChatColor.WHITE + "Page " + page + " of " + totalPages, sender, false);
|
||||
|
||||
if (totalPages == 0) {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().commandNoData, sender, true);
|
||||
} else {
|
||||
for (int i = currentItem; i < (currentItem + maxItemsPerPage); i++) {
|
||||
if (!(i >= channelListLength))
|
||||
Utils.sendCommandFeedback(channelList.get(i), sender, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,21 @@
|
||||
package net.licks92.wirelessredstone.commands.Admin;
|
||||
|
||||
import net.licks92.wirelessredstone.commands.CommandInfo;
|
||||
import net.licks92.wirelessredstone.commands.WirelessCommand;
|
||||
import net.licks92.wirelessredstone.Utils;
|
||||
import net.licks92.wirelessredstone.WirelessRedstone;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
@CommandInfo(description = "Purge database", usage = "", aliases = {"purge"},
|
||||
permission = "purgedata", canUseInConsole = true, canUseInCommandBlock = false)
|
||||
public class AdminPurge extends WirelessCommand {
|
||||
|
||||
@Override
|
||||
public void onCommand(CommandSender sender, String[] args) {
|
||||
if (WirelessRedstone.getStorage().purgeData() >= 0) {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().dbPurgeDone, sender, false);
|
||||
} else {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().dbPurgeFailed, sender, true);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,48 @@
|
||||
package net.licks92.wirelessredstone.commands.Admin;
|
||||
|
||||
import net.licks92.wirelessredstone.commands.CommandInfo;
|
||||
import net.licks92.wirelessredstone.commands.WirelessCommand;
|
||||
import net.licks92.wirelessredstone.commands.WirelessCommandTabCompletion;
|
||||
import net.licks92.wirelessredstone.signs.WirelessChannel;
|
||||
import net.licks92.wirelessredstone.Utils;
|
||||
import net.licks92.wirelessredstone.WirelessRedstone;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
@CommandInfo(description = "Remove owner from WirelessChannel", usage = "<channel> <playername>", aliases = {"removeowner"},
|
||||
tabCompletion = {WirelessCommandTabCompletion.CHANNEL, WirelessCommandTabCompletion.PLAYER},
|
||||
permission = "removeOwner", canUseInConsole = true, canUseInCommandBlock = false)
|
||||
public class AdminRemoveOwner extends WirelessCommand {
|
||||
|
||||
@Override
|
||||
public void onCommand(CommandSender sender, String[] args) {
|
||||
if (args.length < 2) {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().commandTooFewArguments, sender, true);
|
||||
return;
|
||||
}
|
||||
|
||||
String channelName = args[0];
|
||||
String playerName = args[1];
|
||||
|
||||
if (!hasAccessToChannel(sender, channelName)) {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().permissionChannelAccess, sender, true);
|
||||
return;
|
||||
}
|
||||
|
||||
WirelessChannel channel = WirelessRedstone.getStorageManager().getChannel(channelName);
|
||||
if (channel == null) {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().channelNotFound, sender, true);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!channel.getOwners().contains(playerName)) {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().channelAlreadyOwner, sender, true);
|
||||
return;
|
||||
}
|
||||
|
||||
channel.removeOwner(playerName);
|
||||
WirelessRedstone.getStorage().updateChannel(channelName, channel);
|
||||
|
||||
WirelessRedstone.getWRLogger().info("Channel " + channelName + " has been updated. Player " + playerName + " has been removed to the owner list.");
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().channelOwnerRemoved.replaceAll("%%PLAYERNAME", playerName), sender, false);
|
||||
}
|
||||
}
|
@@ -0,0 +1,47 @@
|
||||
package net.licks92.wirelessredstone.commands.Admin;
|
||||
|
||||
import net.licks92.wirelessredstone.commands.CommandInfo;
|
||||
import net.licks92.wirelessredstone.commands.WirelessCommand;
|
||||
import net.licks92.wirelessredstone.Utils;
|
||||
import net.licks92.wirelessredstone.WirelessRedstone;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.UUID;
|
||||
|
||||
@CommandInfo(description = "Wipe all channels", usage = "", aliases = {"wipedata"},
|
||||
permission = "wipeData", canUseInConsole = true, canUseInCommandBlock = false)
|
||||
public class AdminWipeData extends WirelessCommand {
|
||||
|
||||
private final ArrayList<UUID> confirmation = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public void onCommand(final CommandSender sender, String[] args) {
|
||||
UUID uuid = UUID.fromString("00000000-0000-0000-0000-000000000000");
|
||||
|
||||
if (sender instanceof Player) {
|
||||
uuid = ((Player) sender).getUniqueId();
|
||||
}
|
||||
|
||||
if (!confirmation.contains(uuid)) {
|
||||
Utils.sendFeedback(ChatColor.BOLD + WirelessRedstone.getStrings().dbDeleteConfirm, sender, true);
|
||||
|
||||
confirmation.add(uuid);
|
||||
|
||||
final UUID finalUuid = uuid;
|
||||
Bukkit.getScheduler().runTaskLater(WirelessRedstone.getInstance(), () -> confirmation.remove(finalUuid), 20 * 15);
|
||||
return;
|
||||
}
|
||||
|
||||
confirmation.remove(uuid);
|
||||
|
||||
if (WirelessRedstone.getStorage().wipeData()) {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().dbDeleteDone, sender, false);
|
||||
} else {
|
||||
Utils.sendFeedback(WirelessRedstone.getStrings().dbDeleteFailed, sender, true);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user