added a new command and refactored the other one
This commit is contained in:
parent
186ffc6c84
commit
b3411f89a8
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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.");
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue