rebased on branch command_rewrite
This commit is contained in:
commit
a2be7dc1e4
2
pom.xml
2
pom.xml
|
@ -93,7 +93,7 @@
|
|||
<dependency>
|
||||
<groupId>fr.zcraft</groupId>
|
||||
<artifactId>quartzlib</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<version>0.0.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.bstats</groupId>
|
||||
|
|
|
@ -83,32 +83,49 @@ public abstract class IoMCommand extends Command {
|
|||
//name_here; "name here"
|
||||
int state = 0;
|
||||
StringBuilder s = new StringBuilder();
|
||||
for (String arg : args) {
|
||||
switch (state) {
|
||||
case 0:
|
||||
if (arg.startsWith("\"")) {
|
||||
state = 1;
|
||||
arg = arg.substring(1);
|
||||
|
||||
s = s.append(arg);
|
||||
} else {
|
||||
arguments.add(arg.toString());
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (arg.endsWith("\"")) {
|
||||
arg = arg.substring(0, arg.length() - 1);
|
||||
s = s.append(" " + arg);
|
||||
arguments.add(s.toString());
|
||||
s = new StringBuilder();
|
||||
state = 0;
|
||||
} else {
|
||||
s = s.append(" " + arg);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new IllegalStateException("Unexpected value: " + state);
|
||||
for (String arg : args) {
|
||||
if (arg.startsWith("http:") || arg.startsWith("https:")) {
|
||||
arguments.add(arg);
|
||||
continue;
|
||||
}
|
||||
if (state == 0) {
|
||||
s = new StringBuilder();
|
||||
} else {
|
||||
s.append(" ");
|
||||
}
|
||||
for (char c : arg.toCharArray()) {
|
||||
switch (state) {
|
||||
case 0:
|
||||
if (c == '\"') {
|
||||
state = 1;
|
||||
} else {
|
||||
//If we read a : that means that we are on a new argument example:"hello"
|
||||
if (c == ':') {
|
||||
arguments.add(s.toString());
|
||||
s = new StringBuilder();
|
||||
} else {
|
||||
s = s.append(c);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (c == '\"') {
|
||||
arguments.add(s.toString());
|
||||
s = new StringBuilder();
|
||||
state = 0;
|
||||
} else {
|
||||
s = s.append(c);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new IllegalStateException("Unexpected value: " + state);
|
||||
}
|
||||
}
|
||||
if (s.length() > 0 && state != 1) {
|
||||
arguments.add(s.toString());
|
||||
}
|
||||
|
||||
}
|
||||
return arguments;
|
||||
}
|
||||
|
|
|
@ -55,11 +55,11 @@ import org.bukkit.ChatColor;
|
|||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandInfo(name = "delete", usageParameters = "<map name> [--confirm]")
|
||||
@CommandInfo(name = "delete", usageParameters = "[player name]:<map name> [--confirm]")
|
||||
@WithFlags({"confirm"})
|
||||
public class DeleteCommand extends IoMCommand {
|
||||
|
||||
private static RawText deleteMsg(Class klass, Player sender, ImageMap map) {
|
||||
private static RawText deleteMsg(Class klass, String playerName, ImageMap map) {
|
||||
return new RawText(I.t("You are going to delete") + " ")
|
||||
.then(map.getId())
|
||||
.color(ChatColor.GOLD)
|
||||
|
@ -68,7 +68,7 @@ public class DeleteCommand extends IoMCommand {
|
|||
.then(I.t("[Confirm]"))
|
||||
.color(ChatColor.GREEN)
|
||||
.hover(new RawText(I.t("{red}This map will be deleted {bold}forever{red}!")))
|
||||
.command(klass, sender.getName(), map.getId(), "--confirm")
|
||||
.command(klass, playerName + ":" + "\"" + map.getId() + "\"", "--confirm")
|
||||
.build();
|
||||
}
|
||||
|
||||
|
@ -78,21 +78,20 @@ public class DeleteCommand extends IoMCommand {
|
|||
final boolean confirm = hasFlag("confirm");
|
||||
|
||||
if (arguments.size() > 3 || (arguments.size() > 2 && !confirm)) {
|
||||
warning(I.t("Too many parameters! Usage: /maptool delete [playername] <mapname>"));
|
||||
throwInvalidArgument(I.t("Too many parameters!"));
|
||||
return;
|
||||
}
|
||||
if (arguments.size() < 1) {
|
||||
warning(I.t("Too few parameters! Usage: /maptool delete [playername] <mapname>"));
|
||||
throwInvalidArgument(I.t("Too few parameters!"));
|
||||
return;
|
||||
}
|
||||
|
||||
final String playerName;
|
||||
final String mapName;
|
||||
final Player sender = playerSender();
|
||||
info(sender, "" + arguments.size());
|
||||
if (arguments.size() == 2 || arguments.size() == 3) {
|
||||
if (!Permissions.DELETEOTHER.grantedTo(sender)) {
|
||||
info(sender, I.t("You can't use this command"));
|
||||
throwNotAuthorized();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -106,33 +105,33 @@ public class DeleteCommand extends IoMCommand {
|
|||
//TODO passer en static
|
||||
ImageOnMap.getPlugin().getCommandWorker().offlineNameFetch(playerName, uuid -> {
|
||||
if (uuid == null) {
|
||||
info(sender, I.t("The player {0} does not exist.", playerName));
|
||||
warning(sender, I.t("The player {0} does not exist.", playerName));
|
||||
return;
|
||||
}
|
||||
|
||||
ImageMap map = MapManager.getMap(uuid, mapName);
|
||||
|
||||
if (map == null) {
|
||||
info(sender, I.t("This map does not exist."));
|
||||
warning(sender, I.t("This map does not exist."));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!confirm) {
|
||||
RawText msg = deleteMsg(getClass(), sender, map);
|
||||
RawText msg = deleteMsg(getClass(), playerName, map);
|
||||
RawMessage.send(sender, msg);
|
||||
} else {
|
||||
|
||||
MapManager.clear(sender.getInventory(), map);
|
||||
if (sender != null && sender.isOnline() && sender.getInventory() != null) {
|
||||
MapManager.clear(sender.getInventory(), map);
|
||||
}
|
||||
|
||||
try {
|
||||
MapManager.deleteMap(map);
|
||||
info(sender, I.t("Map successfully deleted."));
|
||||
success(sender, I.t("Map successfully deleted."));
|
||||
} catch (MapManagerException ex) {
|
||||
PluginLogger.warning(I.t("A non-existent map was requested to be deleted", ex));
|
||||
warning(sender, I.t("This map does not exist."));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
|
|
@ -52,13 +52,13 @@ import org.bukkit.command.CommandSender;
|
|||
import org.bukkit.entity.Player;
|
||||
|
||||
|
||||
@CommandInfo(name = "explore")
|
||||
@CommandInfo(name = "explore",usageParameters = "[player name]")
|
||||
public class ExploreCommand extends IoMCommand {
|
||||
@Override
|
||||
protected void run() throws CommandException {
|
||||
ArrayList<String> arguments = getArgs();
|
||||
if (arguments.size() > 1) {
|
||||
warning(I.t("Too many parameters! Usage: /maptool explore [playername]"));
|
||||
throwInvalidArgument(I.t("Too many parameters!"));
|
||||
return;
|
||||
}
|
||||
final String playerName;
|
||||
|
@ -66,7 +66,7 @@ public class ExploreCommand extends IoMCommand {
|
|||
final Player sender = playerSender();
|
||||
if (arguments.size() == 1) {
|
||||
if (!Permissions.LISTOTHER.grantedTo(sender)) {
|
||||
info(sender, I.t("You can't use this command"));
|
||||
throwNotAuthorized();
|
||||
return;
|
||||
}
|
||||
playerName = arguments.get(0);
|
||||
|
@ -77,11 +77,13 @@ public class ExploreCommand extends IoMCommand {
|
|||
//TODO passer en static
|
||||
ImageOnMap.getPlugin().getCommandWorker().offlineNameFetch(playerName, uuid -> {
|
||||
if (uuid == null) {
|
||||
info(sender, I.t("The player {0} does not exist.", playerName));
|
||||
warning(sender, I.t("The player {0} does not exist.", playerName));
|
||||
return;
|
||||
}
|
||||
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(uuid);
|
||||
Gui.open(sender, new MapListGui(offlinePlayer));
|
||||
if (sender.isOnline()) {
|
||||
Gui.open(sender, new MapListGui(offlinePlayer,playerName));
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
|
|
@ -49,66 +49,53 @@ import java.util.List;
|
|||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandInfo(name = "get")
|
||||
@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() > 1) {
|
||||
warning(I.t("Too many parameters! Usage: /maptool get [playername]:<mapname>"));
|
||||
if (arguments.size() > 2) {
|
||||
throwInvalidArgument(I.t("Too many parameters!"));
|
||||
return;
|
||||
}
|
||||
if (arguments.size() < 1) {
|
||||
warning(I.t("Too few parameters! Usage: /maptool get [playername]:<mapname>"));
|
||||
throwInvalidArgument(I.t("Too few parameters!"));
|
||||
return;
|
||||
}
|
||||
final String playerName;
|
||||
final String mapName;
|
||||
final Player sender = playerSender();
|
||||
String[] prefixes = arguments.get(0).split(":");
|
||||
|
||||
switch (prefixes.length) {
|
||||
case 1:
|
||||
playerName = sender.getName();
|
||||
mapName = prefixes[0];
|
||||
break;
|
||||
case 2:
|
||||
if (!Permissions.GETOTHER.grantedTo(sender)) {
|
||||
info(sender, I.t("You can't use this command"));
|
||||
return;
|
||||
}
|
||||
playerName = prefixes[0];
|
||||
mapName = prefixes[1];
|
||||
break;
|
||||
case 3:
|
||||
if (prefixes[0].equals("p")) {
|
||||
if (!Permissions.GETOTHER.grantedTo(sender)) {
|
||||
info(sender, I.t("You can't use this command"));
|
||||
return;
|
||||
}
|
||||
playerName = prefixes[1];
|
||||
mapName = prefixes[2];
|
||||
}
|
||||
//insert bank support after
|
||||
info(sender, I.t("Error in the prefix used, valid ones are ['p:']"));
|
||||
if (arguments.size() == 1) {
|
||||
playerName = sender.getName();
|
||||
mapName = arguments.get(0);
|
||||
} else {
|
||||
if (!Permissions.GETOTHER.grantedTo(sender)) {
|
||||
throwNotAuthorized();
|
||||
return;
|
||||
//break;
|
||||
default:
|
||||
playerName = "Error found";
|
||||
mapName = "Error found";
|
||||
}
|
||||
playerName = arguments.get(0);
|
||||
mapName = arguments.get(1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//TODO passer en static
|
||||
ImageOnMap.getPlugin().getCommandWorker().offlineNameFetch(playerName, uuid -> {
|
||||
|
||||
if (!sender.isOnline()) {
|
||||
return;
|
||||
}
|
||||
if (uuid == null) {
|
||||
info(sender, I.t("The player {0} does not exist.", playerName));
|
||||
warning(sender, I.t("The player {0} does not exist.", playerName));
|
||||
return;
|
||||
}
|
||||
ImageMap map = MapManager.getMap(uuid, mapName);
|
||||
|
||||
if (map == null) {
|
||||
info(sender, I.t("This map does not exist."));
|
||||
warning(sender, I.t("This map does not exist."));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ import org.bukkit.command.CommandSender;
|
|||
import org.bukkit.entity.Player;
|
||||
|
||||
|
||||
@CommandInfo(name = "give", usageParameters = "[playerFrom] <playername> <mapname>")
|
||||
@CommandInfo(name = "give", usageParameters = "<player name> [playerFrom]:<map name>")
|
||||
public class GiveCommand extends IoMCommand {
|
||||
|
||||
@Override
|
||||
|
@ -61,29 +61,41 @@ public class GiveCommand extends IoMCommand {
|
|||
|
||||
if (args.length < 2) {
|
||||
throwInvalidArgument(I.t("You must give a valid player name and a map name."));
|
||||
return;
|
||||
}
|
||||
|
||||
ArrayList<String> arguments = getArgs();
|
||||
|
||||
if (arguments.size() > 3) {
|
||||
warning(I.t("Too many parameters! Usage: /maptool give [playerFrom] <playername> <mapname>"));
|
||||
throwInvalidArgument(I.t("Too many parameters!"));
|
||||
return;
|
||||
}
|
||||
if (arguments.size() < 1) {
|
||||
warning(I.t("Too few parameters! Usage: /maptool give [playerFrom] <playername> <mapname>"));
|
||||
throwInvalidArgument(I.t("Too few parameters!"));
|
||||
return;
|
||||
}
|
||||
final String mapName;
|
||||
final String from;
|
||||
final String playerName;
|
||||
final Player sender = playerSender();
|
||||
final Player playerSender;
|
||||
Player playerSender1;
|
||||
try {
|
||||
playerSender1 = playerSender();
|
||||
} catch (CommandException ignored) {
|
||||
if (arguments.size() == 2) {
|
||||
throwInvalidArgument(I.t("Player name is required from the console"));
|
||||
}
|
||||
playerSender1 = null;
|
||||
}
|
||||
playerSender = playerSender1;
|
||||
if (arguments.size() == 2) {
|
||||
from = sender.getName();
|
||||
from = playerSender.getName();
|
||||
playerName = arguments.get(0);
|
||||
mapName = arguments.get(1);
|
||||
} else {
|
||||
if (arguments.size() == 3) {
|
||||
from = arguments.get(0);
|
||||
playerName = arguments.get(1);
|
||||
from = arguments.get(1);
|
||||
playerName = arguments.get(0);
|
||||
mapName = arguments.get(2);
|
||||
} else {
|
||||
from = "";
|
||||
|
@ -92,31 +104,42 @@ public class GiveCommand extends IoMCommand {
|
|||
}
|
||||
}
|
||||
|
||||
final Player sender = playerSender();
|
||||
|
||||
//TODO passer en static
|
||||
ImageOnMap.getPlugin().getCommandWorker().offlineNameFetch(from, uuid -> {
|
||||
if (uuid == null) {
|
||||
info(sender, I.t("The player {0} does not exist.", from));
|
||||
warning(sender, I.t("The player {0} does not exist.", from));
|
||||
return;
|
||||
}
|
||||
final ImageMap map = MapManager.getMap(uuid, mapName);
|
||||
|
||||
if (map == null) {
|
||||
info(sender, I.t("This map does not exist."));
|
||||
warning(sender, I.t("This map does not exist."));
|
||||
return;
|
||||
}
|
||||
try {
|
||||
UUID uuid2 = UUIDFetcher.fetch(playerName);
|
||||
if (uuid2 == null) {
|
||||
info(sender, I.t("The player {0} does not exist.", playerName));
|
||||
warning(sender, I.t("The player {0} does not exist.", playerName));
|
||||
return;
|
||||
}
|
||||
if (map.give(Bukkit.getPlayer(uuid2))) {
|
||||
if (Bukkit.getPlayer((uuid2)) == null || !Bukkit.getPlayer((uuid2)).isOnline()) {
|
||||
warning(sender, I.t("The player {0} is not connected.", playerName));
|
||||
return;
|
||||
}
|
||||
if (Bukkit.getPlayer((uuid2)) != null && Bukkit.getPlayer((uuid2)).isOnline()
|
||||
&& map.give(Bukkit.getPlayer(uuid2))) {
|
||||
info(I.t("The requested map was too big to fit in your inventory."));
|
||||
info(I.t("Use '/maptool getremaining' to get the remaining maps."));
|
||||
}
|
||||
|
||||
} catch (IOException | InterruptedException e) {
|
||||
info(sender, I.t("The player {0} does not exist.", playerName));
|
||||
try {
|
||||
throwInvalidArgument(I.t("The player {0} does not exist.", playerName));
|
||||
} catch (CommandException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
|
|
@ -54,20 +54,20 @@ import org.bukkit.ChatColor;
|
|||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandInfo(name = "list")
|
||||
@CommandInfo(name = "list", usageParameters = "[player name]")
|
||||
public class ListCommand extends IoMCommand {
|
||||
@Override
|
||||
protected void run() throws CommandException {
|
||||
ArrayList<String> arguments = getArgs();
|
||||
if (arguments.size() > 1) {
|
||||
warning(I.t("Too many parameters! Usage: /maptool list [playername]"));
|
||||
throwInvalidArgument(I.t("Too many parameters!"));
|
||||
return;
|
||||
}
|
||||
|
||||
String playerName;
|
||||
if (arguments.size() == 1) {
|
||||
if (!Permissions.LISTOTHER.grantedTo(sender)) {
|
||||
info(sender, I.t("You can't use this command"));
|
||||
throwNotAuthorized();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -82,7 +82,11 @@ public class ListCommand extends IoMCommand {
|
|||
ImageOnMap.getPlugin().getCommandWorker().offlineNameFetch(playerName, uuid -> {
|
||||
List<ImageMap> mapList = MapManager.getMapList(uuid);
|
||||
if (uuid == null) {
|
||||
info(sender, I.t("Player {} not found.", playerName));
|
||||
try {
|
||||
throwInvalidArgument(I.t("Player {} not found.", playerName));
|
||||
} catch (CommandException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (mapList.isEmpty()) {
|
||||
|
@ -98,6 +102,7 @@ public class ListCommand extends IoMCommand {
|
|||
RawTextPart rawText = new RawText("");
|
||||
rawText = addMap(rawText, mapList.get(0));
|
||||
|
||||
//TODO pagination chat
|
||||
for (int i = 1, c = mapList.size(); i < c; i++) {
|
||||
rawText = rawText.then(", ").color(ChatColor.GRAY);
|
||||
rawText = addMap(rawText, mapList.get(i));
|
||||
|
|
|
@ -48,7 +48,6 @@ public class RenameCommand extends IoMCommand {
|
|||
return;
|
||||
}
|
||||
map.rename(argList.get(1));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -53,27 +53,26 @@ import fr.zcraft.quartzlib.tools.text.MessageSender;
|
|||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandInfo(name = "update", usageParameters = "[playername] <new url> [stretched|covered] <map name to update>")
|
||||
@CommandInfo(name = "update", usageParameters = "[player name]:<map name> <new url> [stretched|covered] ")
|
||||
public class UpdateCommand extends IoMCommand {
|
||||
@Override
|
||||
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 [playername] <new url> [stretched|covered] <mapname>";
|
||||
+ " 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 [playername] <new url> [stretched|covered] <mapname>";
|
||||
"Too few parameters! Usage: /maptool update [player name]:<map name> <new url> [stretched|covered]";
|
||||
warning(I.t(warningMsg));
|
||||
return;
|
||||
}
|
||||
|
@ -81,43 +80,56 @@ public class UpdateCommand extends IoMCommand {
|
|||
final String mapName;
|
||||
final String url;
|
||||
final String resize;
|
||||
final Player sender = playerSender();
|
||||
final Player playerSender;
|
||||
Player playerSender1;
|
||||
try {
|
||||
playerSender1 = playerSender();
|
||||
} catch (CommandException ignored) {
|
||||
if (arguments.size() == 2) {
|
||||
throwInvalidArgument(
|
||||
I.t("Usage: /maptool update [player name]:<map name> <new url> [stretched|covered]"));
|
||||
}
|
||||
playerSender1 = null;
|
||||
}
|
||||
playerSender = playerSender1;
|
||||
|
||||
//Sent by a non player and not enough arguments
|
||||
if (arguments.size() == 2 && playerSender == null) {
|
||||
throwInvalidArgument("Usage: /maptool update [player name]:<map name> <new url> [stretched|covered]");
|
||||
return;
|
||||
}
|
||||
|
||||
if (arguments.size() == 2) {
|
||||
resize = "";
|
||||
playerName = sender.getName();
|
||||
mapName = arguments.get(1);
|
||||
url = arguments.get(0);
|
||||
playerName = playerSender.getName();
|
||||
mapName = arguments.get(0);
|
||||
url = arguments.get(1);
|
||||
} else {
|
||||
if (arguments.size() == 4) {
|
||||
if (!Permissions.UPDATEOTHER.grantedTo(sender)) {
|
||||
info(sender, I.t("You can't use this command"));
|
||||
throwNotAuthorized();
|
||||
return;
|
||||
}
|
||||
|
||||
playerName = arguments.get(0);
|
||||
url = arguments.get(1);
|
||||
resize = arguments.get(2);
|
||||
mapName = arguments.get(3);
|
||||
mapName = arguments.get(1);
|
||||
url = arguments.get(2);
|
||||
resize = arguments.get(3);
|
||||
} else {
|
||||
if (arguments.size() == 3) {
|
||||
if (arguments.get(1).equals("covered") || arguments.get(1).equals("stretched")) {
|
||||
|
||||
playerName = sender.getName();
|
||||
url = arguments.get(0);
|
||||
resize = arguments.get(1);
|
||||
mapName = arguments.get(2);
|
||||
|
||||
if (arguments.get(2).equals("covered") || arguments.get(2).equals("stretched")) {
|
||||
playerName = playerSender.getName();
|
||||
mapName = arguments.get(0);
|
||||
url = arguments.get(1);
|
||||
resize = arguments.get(2);
|
||||
} else {
|
||||
if (!Permissions.UPDATEOTHER.grantedTo(sender)) {
|
||||
info(sender, I.t("You can't use this command"));
|
||||
throwNotAuthorized();
|
||||
return;
|
||||
}
|
||||
playerName = arguments.get(0);
|
||||
url = arguments.get(1);
|
||||
mapName = arguments.get(1);
|
||||
url = arguments.get(2);
|
||||
resize = "";
|
||||
mapName = arguments.get(2);
|
||||
}
|
||||
} else {
|
||||
resize = "";
|
||||
|
@ -128,10 +140,8 @@ public class UpdateCommand extends IoMCommand {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
final ImageUtils.ScalingType scaling;
|
||||
|
||||
|
||||
switch (resize) {
|
||||
|
||||
case "stretched":
|
||||
|
@ -144,61 +154,68 @@ public class UpdateCommand extends IoMCommand {
|
|||
scaling = ImageUtils.ScalingType.CONTAINED;
|
||||
}
|
||||
|
||||
|
||||
//TODO passer en static
|
||||
ImageOnMap.getPlugin().getCommandWorker().offlineNameFetch(playerName, uuid -> {
|
||||
if (uuid == null) {
|
||||
info(sender, I.t("The player {0} does not exist.", playerName));
|
||||
warning(sender, I.t("The player {0} does not exist.", playerName));
|
||||
return;
|
||||
}
|
||||
ImageMap map = MapManager.getMap(uuid, mapName);
|
||||
|
||||
if (map == null) {
|
||||
info(sender, I.t("This map does not exist."));
|
||||
warning(sender, I.t("This map does not exist."));
|
||||
return;
|
||||
}
|
||||
|
||||
URL url1;
|
||||
try {
|
||||
url1 = new URL(url);
|
||||
MapManager.load();
|
||||
//TODO replace by a check of the load status.(if not loaded load the mapmanager)
|
||||
MapManager.load(false);//we don't want to spam the console each time we reload the mapManager
|
||||
|
||||
Integer[] size = {1, 1};
|
||||
if (map.getType() == ImageMap.Type.POSTER) {
|
||||
size = map.getSize(new HashMap<String, Object>(), map.getUserUUID(), map.getId());
|
||||
size = map.getSize(map.getUserUUID(), map.getId());
|
||||
}
|
||||
//assert size != null;
|
||||
|
||||
int width = size[0];
|
||||
int height = size[1];
|
||||
try {
|
||||
ActionBar.sendPermanentMessage(sender, ChatColor.DARK_GREEN + I.t("Updating..."));
|
||||
if (playerSender != null) {
|
||||
ActionBar.sendPermanentMessage(playerSender, ChatColor.DARK_GREEN + I.t("Updating..."));
|
||||
}
|
||||
ImageRendererExecutor
|
||||
.update(url1, scaling, uuid, map, width, height, new WorkerCallback<ImageMap>() {
|
||||
@Override
|
||||
public void finished(ImageMap result) {
|
||||
ActionBar.removeMessage(sender);
|
||||
MessageSender.sendActionBarMessage(sender,
|
||||
ChatColor.DARK_GREEN + I.t("The map was updated using the new image!"));
|
||||
if (playerSender != null) {
|
||||
ActionBar.removeMessage(playerSender);
|
||||
MessageSender.sendActionBarMessage(playerSender,
|
||||
ChatColor.DARK_GREEN + I.t("The map was updated using the new image!"));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void errored(Throwable exception) {
|
||||
sender.sendMessage(I.t("{ce}Map rendering failed: {0}", exception.getMessage()));
|
||||
|
||||
if (playerSender != null) {
|
||||
playerSender
|
||||
.sendMessage(
|
||||
I.t("{ce}Map rendering failed: {0}", exception.getMessage()));
|
||||
}
|
||||
PluginLogger.warning("Rendering from {0} failed: {1}: {2}",
|
||||
sender.getName(),
|
||||
playerSender.getName(),
|
||||
exception.getClass().getCanonicalName(),
|
||||
exception.getMessage());
|
||||
}
|
||||
});
|
||||
} finally {
|
||||
ActionBar.removeMessage(sender);
|
||||
if (playerSender != null) {
|
||||
ActionBar.removeMessage(playerSender);
|
||||
}
|
||||
}
|
||||
} catch (MalformedURLException ex) {
|
||||
warning(sender, I.t("Invalid URL."));
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
|
|
@ -123,9 +123,8 @@ public class ConfirmDeleteMapGui extends ActionGui {
|
|||
.lore(I.t(getPlayerLocale(), "{gray}Name: {white}{0}", mapToDelete.getName()))
|
||||
.lore(I.t(getPlayerLocale(), "{gray}Map ID: {white}{0}", mapToDelete.getId()))
|
||||
.lore(I.t(getPlayerLocale(), "{gray}Maps inside: {white}{0}", mapToDelete.getMapsIDs().length))
|
||||
|
||||
.hideAllAttributes()
|
||||
);
|
||||
//.hideAllAttributes()
|
||||
|
||||
/* ** Buttons ** */
|
||||
|
||||
|
|
|
@ -227,7 +227,7 @@ public class MapListGui extends ExplorerGui<ImageMap> {
|
|||
mapPartLeft));
|
||||
}
|
||||
|
||||
//statistics.hideAllAttributes();
|
||||
statistics.hideAllAttributes();
|
||||
|
||||
action("", getSize() - 5, statistics);
|
||||
}
|
||||
|
|
|
@ -108,7 +108,7 @@ public abstract class ImageMap implements ConfigurationSerializable {
|
|||
}
|
||||
}
|
||||
|
||||
public static Integer[] getSize(Map<String, Object> map, UUID playerUUID, String id) {
|
||||
public static Integer[] getSize(UUID playerUUID, String id) {
|
||||
|
||||
ConfigurationSection section =
|
||||
MapManager.getPlayerMapStore(playerUUID).getToolConfig().getConfigurationSection("PlayerMapStore");
|
||||
|
|
|
@ -260,7 +260,13 @@ public abstract class MapManager {
|
|||
}
|
||||
}
|
||||
|
||||
//Silent load
|
||||
public static void load() {
|
||||
load(true);
|
||||
}
|
||||
|
||||
//Loading
|
||||
public static void load(boolean verbose) {
|
||||
int loadedFilesCount = 0;
|
||||
for (File file : ImageOnMap.getPlugin().getMapsDirectory().listFiles()) {
|
||||
UUID uuid = getUUIDFromFile(file);
|
||||
|
@ -271,7 +277,9 @@ public abstract class MapManager {
|
|||
++loadedFilesCount;
|
||||
}
|
||||
|
||||
PluginLogger.info("Loaded {0} player map files.", loadedFilesCount);
|
||||
if (verbose) {
|
||||
PluginLogger.info("Loaded {0} player map files.", loadedFilesCount);
|
||||
}
|
||||
}
|
||||
|
||||
public static void save() {
|
||||
|
|
|
@ -166,12 +166,12 @@ public class MapItemManager implements Listener {
|
|||
if (goldTitle) {
|
||||
mapItem = new ItemStackBuilder(Material.FILLED_MAP)
|
||||
.title(ChatColor.GOLD, text)
|
||||
//.hideAllAttributes()
|
||||
.hideAllAttributes()
|
||||
.item();
|
||||
} else {
|
||||
mapItem = new ItemStackBuilder(Material.FILLED_MAP)
|
||||
.title(text)
|
||||
//.hideAllAttributes()
|
||||
.hideAllAttributes()
|
||||
.item();
|
||||
}
|
||||
final MapMeta meta = (MapMeta) mapItem.getItemMeta();
|
||||
|
@ -325,7 +325,7 @@ public class MapItemManager implements Listener {
|
|||
|
||||
frame.setItem(new ItemStackBuilder(item)
|
||||
.title(getMapTitle(item))
|
||||
//.hideAllAttributes()
|
||||
.hideAllAttributes()
|
||||
.item());
|
||||
|
||||
}
|
||||
|
|
|
@ -96,7 +96,7 @@ public abstract class SplatterMapManager {
|
|||
.loreLine()
|
||||
.longLore(ChatColor.GRAY
|
||||
+ I.t("Shift-click one of the placed maps to remove the whole poster in one shot."), 40)
|
||||
//.hideAllAttributes()
|
||||
.hideAllAttributes()
|
||||
.craftItem();
|
||||
|
||||
final MapMeta meta = (MapMeta) splatter.getItemMeta();
|
||||
|
@ -168,7 +168,7 @@ public abstract class SplatterMapManager {
|
|||
}
|
||||
|
||||
/**
|
||||
* Return true if it is a platter map
|
||||
* Return true if it is a splatter map
|
||||
*
|
||||
* @param itemStack The item to check.
|
||||
* @return True if is a splatter map
|
||||
|
@ -181,7 +181,13 @@ public abstract class SplatterMapManager {
|
|||
}
|
||||
|
||||
|
||||
//TODO doc a faire
|
||||
/**
|
||||
* Return true if it has a specified splatter map
|
||||
*
|
||||
* @param player The player to check.
|
||||
* @param map The map to check.
|
||||
* @return True if the player has this map
|
||||
*/
|
||||
public static boolean hasSplatterMap(Player player, PosterMap map) {
|
||||
Inventory playerInventory = player.getInventory();
|
||||
|
||||
|
|
|
@ -10,5 +10,8 @@ list: Lists all the map you currently have.
|
|||
listother: list all the map of another player.
|
||||
explore: Opens a GUI to see and manage your maps.
|
||||
exploreother: Opens a GUI to see and manage another player maps.
|
||||
give: Give a specified player a map
|
||||
rename: Rename an ImageOnMap
|
||||
update: Update a specified ImageOnMap
|
||||
migrate: Lauches the migration process from V2.7 to V3.x.
|
||||
help : Use help for more information about a command.
|
||||
|
|
|
@ -24,19 +24,19 @@ permissions:
|
|||
imageonmap.userender: true
|
||||
imageonmap.new: true
|
||||
imageonmap.list: true
|
||||
imageonmap.listother: true
|
||||
imageonmap.listother: false
|
||||
imageonmap.get: true
|
||||
imageonmap.getother: true
|
||||
imageonmap.getother: false
|
||||
imageonmap.explore: true
|
||||
imageonmap.exploreother: true
|
||||
imageonmap.exploreother: false
|
||||
imageonmap.rename: true
|
||||
imageonmap.removesplattermap: true
|
||||
imageonmap.delete: true
|
||||
imageonmap.deleteother: true
|
||||
imageonmap.deleteother: false
|
||||
imageonmap.bypasssize: false
|
||||
imageonmap.give: false
|
||||
imageonmap.update: true
|
||||
imageonmap.updateother: true
|
||||
imageonmap.updateother: false
|
||||
|
||||
imageonmap.userender:
|
||||
description: "Allows you to use /tomap and related commands (/maptool getremaining). Alias of imageonmap.new."
|
||||
|
@ -52,7 +52,7 @@ permissions:
|
|||
|
||||
imageonmap.listother:
|
||||
description: "Allows you to list the images a player have rendered."
|
||||
default: false
|
||||
default: op
|
||||
|
||||
imageonmap.get:
|
||||
description: "Allows you to get a new map among the ones you already rendered, and related commands (/maptool getremaining)."
|
||||
|
@ -60,7 +60,7 @@ permissions:
|
|||
|
||||
imageonmap.getother:
|
||||
description: "Allows you to get a new map among the ones a player have already rendered."
|
||||
default: false
|
||||
default: op
|
||||
|
||||
imageonmap.explore:
|
||||
description: "Allows you to open a GUI with all your maps."
|
||||
|
@ -68,7 +68,7 @@ permissions:
|
|||
|
||||
imageonmap.exploreother:
|
||||
description: "Allows you to open a GUI with all of the player maps."
|
||||
default: false
|
||||
default: op
|
||||
|
||||
imageonmap.rename:
|
||||
description: "Allows you to rename a map you rendered in the past."
|
||||
|
@ -84,7 +84,7 @@ permissions:
|
|||
|
||||
imageonmap.deleteother:
|
||||
description: "Allows you to delete a map a player rendered in the past."
|
||||
default: false
|
||||
default: op
|
||||
|
||||
imageonmap.removesplattermap:
|
||||
description: "Allows you to remove a splatter map from a wall by sneaking and breaking a map."
|
||||
|
|
Loading…
Reference in New Issue