added a new command and refactored the other one

This commit is contained in:
Vlammar 2022-07-26 04:27:37 +02:00
parent 186ffc6c84
commit b3411f89a8
10 changed files with 89 additions and 69 deletions

View File

@ -37,6 +37,7 @@
package fr.moribus.imageonmap.commands;
import fr.moribus.imageonmap.PluginConfiguration;
import fr.moribus.imageonmap.image.ImageUtils;
import fr.moribus.imageonmap.map.ImageMap;
import fr.moribus.imageonmap.map.MapManager;
import fr.zcraft.quartzlib.components.commands.Command;
@ -49,11 +50,32 @@ import java.util.UUID;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
public abstract class IoMCommand extends Command {
protected UUID getPlayerUUID(String playerName) {
return Bukkit.getOfflinePlayer(playerName).getUniqueId();
}
private boolean checkTooArguments(boolean bool, String msg) throws CommandException {
if (bool) {
throwInvalidArgument(msg);
}
return bool;
}
protected boolean checkTooManyArguments(boolean bool) throws CommandException {
return checkTooArguments(bool, I.t("Too many parameters!"));
}
protected boolean checkTooFewArguments(boolean bool) throws CommandException {
return checkTooArguments(bool, I.t("Too few parameters!"));
}
protected boolean checkArguments(boolean bool1, boolean bool2) throws CommandException {
return !(checkTooManyArguments(bool1) || checkTooFewArguments(bool2));
}
protected boolean checkHostnameWhitelist(final URL url) {
final List<String> hostnames = PluginConfiguration.IMAGES_HOSTNAMES_WHITELIST.get()
@ -175,4 +197,5 @@ public abstract class IoMCommand extends Command {
return matches;
}
}

View File

@ -51,7 +51,6 @@ import fr.zcraft.quartzlib.tools.text.RawMessage;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -78,12 +77,9 @@ public class DeleteCommand extends IoMCommand {
ArrayList<String> arguments = getArgs();
final boolean confirm = hasFlag("confirm");
if (arguments.size() > 3 || (arguments.size() > 2 && !confirm)) {
throwInvalidArgument(I.t("Too many parameters!"));
return;
}
if (arguments.size() < 1) {
throwInvalidArgument(I.t("Too few parameters!"));
boolean isTooMany = arguments.size() > 3 || (arguments.size() > 2 && !confirm);
boolean isTooFew = arguments.isEmpty();
if (!checkArguments(isTooMany, isTooFew)) {
return;
}
@ -113,8 +109,7 @@ public class DeleteCommand extends IoMCommand {
playerName = sender.getName();
mapName = arguments.get(0);
}
UUID uuid = Bukkit.getOfflinePlayer(playerName).getUniqueId();
PluginLogger.info("UUID " + uuid.toString());
UUID uuid = getPlayerUUID(playerName);
ImageMap map = MapManager.getMap(uuid, mapName);
if (map == null) {
final String msg = "This map does not exist.";
@ -136,7 +131,7 @@ public class DeleteCommand extends IoMCommand {
RawMessage.send(sender, msg);
}
} else {
if (sender != null && sender.isOnline() && sender.getInventory() != null) {
if (sender != null && sender.isOnline()) {
MapManager.clear(sender.getInventory(), map);
}
try {

View File

@ -56,13 +56,14 @@ public class ExploreCommand extends IoMCommand {
@Override
protected void run() throws CommandException {
ArrayList<String> arguments = getArgs();
if (arguments.size() > 1) {
throwInvalidArgument(I.t("Too many parameters!"));
boolean isTooMany = arguments.size() > 1;
boolean isTooFew = false;
if (!checkArguments(isTooMany, isTooFew)) {
return;
}
final String playerName;
final Player sender = playerSender();
if (arguments.size() == 1) {
if (!Permissions.LISTOTHER.grantedTo(sender)) {
throwNotAuthorized();

View File

@ -46,24 +46,21 @@ import fr.zcraft.quartzlib.components.i18n.I;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandInfo(name = "get",usageParameters = "[player name]:<map name>")
@CommandInfo(name = "get", usageParameters = "[player name]:<map name>")
public class GetCommand extends IoMCommand {
@Override
protected void run() throws CommandException {
ArrayList<String> arguments = getArgs();
if (arguments.size() > 2) {
throwInvalidArgument(I.t("Too many parameters!"));
return;
}
if (arguments.isEmpty()) {
throwInvalidArgument(I.t("Too few parameters!"));
boolean isTooMany = arguments.size() > 2;
boolean isTooFew = arguments.isEmpty();
if (!checkArguments(isTooMany, isTooFew)) {
return;
}
final String playerName;
final String mapName;
final Player sender = playerSender();
@ -80,7 +77,7 @@ public class GetCommand extends IoMCommand {
mapName = arguments.get(1);
}
UUID uuid = Bukkit.getOfflinePlayer(playerName).getUniqueId();
UUID uuid = getPlayerUUID(playerName);
if (!sender.isOnline()) {
return;
}

View File

@ -63,14 +63,13 @@ public class GiveCommand extends IoMCommand {
ArrayList<String> arguments = getArgs();
if (arguments.size() > 3) {
throwInvalidArgument(I.t("Too many parameters!"));
return;
}
if (arguments.isEmpty()) {
throwInvalidArgument(I.t("Too few parameters!"));
boolean isTooMany = arguments.size() > 3;
boolean isTooFew = arguments.isEmpty();
if (!checkArguments(isTooMany, isTooFew)) {
return;
}
final String mapName;
final String from;
final String playerName;
@ -102,8 +101,8 @@ public class GiveCommand extends IoMCommand {
}
final Player sender = playerSender();
UUID uuid = Bukkit.getOfflinePlayer(from).getUniqueId();
UUID uuid2 = Bukkit.getOfflinePlayer(playerName).getUniqueId();
UUID uuid = getPlayerUUID(from);
UUID uuid2 = getPlayerUUID(playerName);
final ImageMap map = MapManager.getMap(uuid, mapName);

View File

@ -51,7 +51,6 @@ import fr.zcraft.quartzlib.tools.text.RawMessage;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -61,8 +60,11 @@ public class ListCommand extends IoMCommand {
@Override
protected void run() throws CommandException {
ArrayList<String> arguments = getArgs();
if (arguments.size() > 1) {
throwInvalidArgument(I.t("Too many parameters!"));
boolean isTooMany = arguments.size() > 1;
boolean isTooFew = false;
if (!checkArguments(isTooMany, isTooFew)) {
return;
}
@ -89,7 +91,7 @@ public class ListCommand extends IoMCommand {
} else {
playerSender = null;
}
UUID uuid = Bukkit.getOfflinePlayer(playerName).getUniqueId();
UUID uuid = getPlayerUUID(playerName);
List<ImageMap> mapList = MapManager.getMapList(uuid);
if (mapList.isEmpty()) {
String msg = I.t("No map found.");

View File

@ -81,6 +81,7 @@ public class NewCommand extends IoMCommand {
@Override
protected void run() throws CommandException {
//TODO check if not too many args
final Player player = playerSender();
ImageUtils.ScalingType scaling = ImageUtils.ScalingType.NONE;
URL url;

View File

@ -0,0 +1,21 @@
package fr.moribus.imageonmap.commands.maptool;
import fr.moribus.imageonmap.Permissions;
import fr.moribus.imageonmap.commands.IoMCommand;
import fr.zcraft.quartzlib.components.commands.CommandException;
import fr.zcraft.quartzlib.components.commands.CommandInfo;
import org.bukkit.command.CommandSender;
@CommandInfo(name = "RemotePlacing", usageParameters = "[player name]:map name position rotation")
public class RemotePlacingCommand extends IoMCommand {
@Override
protected void run() throws CommandException {
//if wall => need position and direction N/S/E/W
//else if floor or ceiling => same + rotation
}
@Override
public boolean canExecute(CommandSender sender) {
return Permissions.REMOTE_PLACING.grantedTo(sender);
}
}

View File

@ -70,20 +70,21 @@ public class RenameCommand extends IoMCommand {
@Override
protected void run() throws CommandException {
ArrayList<String> arguments = getArgs();
ArrayList<String> argList = getArgs();
if (argList.size() != 2) {
warning(I.t("Not enough or too many arguments! Usage: /maptool rename <map name> <new map name>"));
boolean isTooMany = arguments.size() > 2;
boolean isTooFew = arguments.size() < 2;
if (!checkArguments(isTooMany, isTooFew)) {
return;
}
ImageMap map = MapManager.getMap(playerSender().getUniqueId(), argList.get(0));
String oldName = arguments.get(0);
ImageMap map = MapManager.getMap(playerSender().getUniqueId(), oldName);
if (map == null) {
error(I.t("This map does not exist."));
return;
}
map.rename(argList.get(1));
String newName = arguments.get(1);
map.rename(newName);
}
@Override

View File

@ -53,7 +53,6 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -64,17 +63,10 @@ public class UpdateCommand extends IoMCommand {
protected void run() throws CommandException {
//TODO fix the issue where to many quick usage of offlineNameFetch will return null
ArrayList<String> arguments = getArgs();
String warningMsg;
if (arguments.size() > 4) {
warningMsg = "Too many parameters!"
+ " Usage: /maptool update [player name]:<map name> <new url> [stretched|covered]";
warning(I.t(warningMsg));
return;
}
if (arguments.size() < 2) {
warningMsg =
"Too few parameters! Usage: /maptool update [player name]:<map name> <new url> [stretched|covered]";
warning(I.t(warningMsg));
boolean isTooMany = arguments.size() > 4;
boolean isTooFew = arguments.size() < 2;
if (!checkArguments(isTooMany, isTooFew)) {
return;
}
final String playerName;
@ -141,22 +133,10 @@ public class UpdateCommand extends IoMCommand {
}
}
final ImageUtils.ScalingType scaling;
final ImageUtils.ScalingType scaling = ImageUtils.scalingTypeFromName(resize);//TODO test if nothing broke
// because I went from 3 to 4 by adding the none as default instead of the contained one.
switch (resize) {
case "stretched":
scaling = ImageUtils.ScalingType.STRETCHED;
break;
case "covered":
scaling = ImageUtils.ScalingType.COVERED;
break;
default:
scaling = ImageUtils.ScalingType.CONTAINED;
}
UUID uuid = Bukkit.getOfflinePlayer(playerName).getUniqueId();
UUID uuid = getPlayerUUID(playerName);
ImageMap map = MapManager.getMap(uuid, mapName);
if (map == null) {