Compare commits
47 Commits
Author | SHA1 | Date |
---|---|---|
Vlammar | 352774f677 | |
ely | 4f1ceddddd | |
Vlammar | 243cfc2402 | |
Vlammar | 2cb33b9bf6 | |
Vlammar | 0053c7bbc5 | |
Vlammar | 900cc7512b | |
Amaury Carrade | 9406c5be9e | |
Vlammar | 8092187b26 | |
Vlammar | 22a24336b0 | |
Vlammar | 1097ca69c0 | |
Vlammar | dcf4d208ff | |
Vlammar | 72a45af77e | |
Vlammar | f18bd12880 | |
Vlammar | 9c5758d654 | |
Namiu/うにたろう | fbfbcd73a2 | |
Namiu/うにたろう | ce2b6110a4 | |
Vlammar | d6a5709249 | |
Vlammar | 5191dca932 | |
Vlammar | 7729565a13 | |
Vlammar | 08cb90f560 | |
Vlammar | 7ef03a0eae | |
Vlammar | 52ba80ab70 | |
Vlammar | 0f05a05d84 | |
Vlammar | 6a2c531a4d | |
Vlammar | 17e1fd7a00 | |
Vlammar | 68f37d8247 | |
Vlammar | 548e4154a6 | |
Vlammar | a74734dfb7 | |
Vlammar | c1f793d50a | |
Vlammar | 094905324e | |
Vlammar | ac51032e1a | |
Vlammar | e1fd9ca2d8 | |
Vlammar | 468d3af7d5 | |
Vlammar | 78de6a4144 | |
Vlammar | 20d2a60d29 | |
Vlammar | fdcb028b20 | |
Vlammar | e0dc356f36 | |
Vlammar | 99f4263d66 | |
Santiago Forero | 5258de55df | |
Santiago Forero | 62117e90ec | |
Vlammar | 0662e6343e | |
Boy | 02f596fc3a | |
Boy | 5f2623d709 | |
Vlammar | 483a0a29f0 | |
Vlammar | a45638b86c | |
ArciducaZagaria | 8f6987abd3 | |
ArciducaZagaria | 24ded8d2f7 |
|
@ -15,7 +15,7 @@ jobs:
|
|||
|
||||
strategy:
|
||||
matrix:
|
||||
java: [8, 9, 10, 11, 12, 13, 14, 15]
|
||||
java: [8, 11, 16, 17]
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
|
|
34
README.md
34
README.md
|
@ -209,6 +209,40 @@ This version fixes some small console spam bugs and improves the performance of
|
|||
- Updates to [QuartzLib 0.0.4](https://github.com/zDevelopers/QuartzLib/blob/master/CHANGELOG.md#quartzlib-004),
|
||||
where all these improvements were made.
|
||||
|
||||
### 4.2.0 —The permission and cliffhanger part 1 Update
|
||||
Permission and cliffhanger Update finally allow a full official support of minecraft 1.17 and java 17. This comes with bugfixes and new features. We are working on the next big update that will be the 5.0. If you want to know more about this checkout our 5.0 milestone.
|
||||
|
||||
This version is only compatible with Minecraft 1.15+. We have no clue if this will work with minecraft 1.18 (it should, but we are not sure)
|
||||
This was tested on Paper 1.17, 1.16 and spigot 1.17, 1.15. If there are any errors on a 1.15+ version of spigot/paper please contact us on our discord or create a ticket on the issues page (better)
|
||||
|
||||
- 1.17 support
|
||||
|
||||
- Permissions to limit the number of map/image used/owned is now possible. (permissions imageonmap.mapLimit.XX and imageonmap.imageLimit.XX where XX is an integer and will define the limit allowed for the player)
|
||||
|
||||
- Added an allowlist for trusted image hosting website (Add this in config.yml allowlist_hostingsite: , you then have to put the url of trusted websites. There is also a permission to ignore the allow list imageonmap.bypasswhitelist)
|
||||
|
||||
- Images are now protected against non player based interaction. (Bye bye sneaky skeleton that used to grief art)
|
||||
|
||||
- Now by default when deploying a map the item frame turn invisible and returned to visible hen removing the map from the frame (there is a permission to allow this behaviour imageonmap.placeinvisiblesplattermap)
|
||||
|
||||
- Bug fixes & optimizations.
|
||||
- Dropped migrator (no more error when reloading or when sometimes loading the server)
|
||||
- Fixed an issue when resizing with resize 0 0
|
||||
- Fixed a map loading issue. (map did not render at all if they weren't in a player inventory
|
||||
- Added a fix for map loading on paper. (map did not render fully on paper)
|
||||
|
||||
### 4.2.1 — The permission and cliffhanger part 1 Update Two
|
||||
|
||||
- Fixed a lag issue caused by the map loading changes of 4.2.0
|
||||
|
||||
- 1.18 support
|
||||
|
||||
- Fixed an issue with map part not working properly
|
||||
|
||||
- Fixed an issue in survival where an incorrect amount of map were consumed
|
||||
|
||||
- Fixed an issue where image map folder was not created and cause issues
|
||||
|
||||
## Data collection
|
||||
|
||||
We use metrics to collect [basic information about the usage of this plugin](https://bstats.org/plugin/bukkit/ImageOnMap).
|
||||
|
|
|
@ -3,8 +3,8 @@ ${licenseFirst}
|
|||
</#if>
|
||||
${licensePrefix}Copyright or © or Copr. Moribus (2013)
|
||||
${licensePrefix}Copyright or © or Copr. ProkopyL <prokopylmc@gmail.com> (2015)
|
||||
${licensePrefix}Copyright or © or Copr. Amaury Carrade <amaury@carrade.eu> (2016 – 2020)
|
||||
${licensePrefix}Copyright or © or Copr. Vlammar <valentin.jabre@gmail.com> (2019 – 2020)
|
||||
${licensePrefix}Copyright or © or Copr. Amaury Carrade <amaury@carrade.eu> (2016 – 2021)
|
||||
${licensePrefix}Copyright or © or Copr. Vlammar <valentin.jabre@gmail.com> (2019 – 2021)
|
||||
${licensePrefix?replace(" +$", "", "r")}
|
||||
${licensePrefix}This software is a computer program whose purpose is to allow insertion of
|
||||
${licensePrefix}custom images in a Minecraft word.
|
||||
|
|
4
pom.xml
4
pom.xml
|
@ -39,7 +39,7 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>fr.moribus</groupId>
|
||||
<artifactId>ImageOnMap</artifactId>
|
||||
<version>4.1.2</version>
|
||||
<version>4.2.2</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<properties>
|
||||
|
@ -134,7 +134,7 @@
|
|||
<dependency>
|
||||
<groupId>fr.zcraft</groupId>
|
||||
<artifactId>quartzlib</artifactId>
|
||||
<version>0.0.4</version>
|
||||
<version>0.0.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.bstats</groupId>
|
||||
|
|
|
@ -43,7 +43,6 @@ import fr.moribus.imageonmap.commands.maptool.GetCommand;
|
|||
import fr.moribus.imageonmap.commands.maptool.GetRemainingCommand;
|
||||
import fr.moribus.imageonmap.commands.maptool.GiveCommand;
|
||||
import fr.moribus.imageonmap.commands.maptool.ListCommand;
|
||||
import fr.moribus.imageonmap.commands.maptool.MigrateCommand;
|
||||
import fr.moribus.imageonmap.commands.maptool.NewCommand;
|
||||
import fr.moribus.imageonmap.commands.maptool.RenameCommand;
|
||||
import fr.moribus.imageonmap.commands.maptool.UpdateCommand;
|
||||
|
@ -51,8 +50,6 @@ import fr.moribus.imageonmap.image.ImageIOExecutor;
|
|||
import fr.moribus.imageonmap.image.ImageRendererExecutor;
|
||||
import fr.moribus.imageonmap.image.MapInitEvent;
|
||||
import fr.moribus.imageonmap.map.MapManager;
|
||||
import fr.moribus.imageonmap.migration.MigratorExecutor;
|
||||
import fr.moribus.imageonmap.migration.V3Migrator;
|
||||
import fr.moribus.imageonmap.ui.MapItemManager;
|
||||
import fr.zcraft.quartzlib.components.commands.CommandWorkers;
|
||||
import fr.zcraft.quartzlib.components.commands.Commands;
|
||||
|
@ -104,8 +101,9 @@ public final class ImageOnMap extends QuartzPlugin {
|
|||
public void onEnable() {
|
||||
// Creating the images and maps directories if necessary
|
||||
try {
|
||||
imagesDirectory = checkPluginDirectory(imagesDirectory, V3Migrator.getOldImagesDirectory(this));
|
||||
//imagesDirectory = checkPluginDirectory(imagesDirectory, V3Migrator.getOldImagesDirectory(this));
|
||||
checkPluginDirectory(mapsDirectory);
|
||||
checkPluginDirectory(imagesDirectory);
|
||||
} catch (final IOException ex) {
|
||||
PluginLogger.error("FATAL: " + ex.getMessage());
|
||||
this.setEnabled(false);
|
||||
|
@ -136,7 +134,7 @@ public final class ImageOnMap extends QuartzPlugin {
|
|||
GiveCommand.class,
|
||||
GetRemainingCommand.class,
|
||||
ExploreCommand.class,
|
||||
MigrateCommand.class,
|
||||
//MigrateCommand.class,//Removed for now doesn't work nor is useful, maybe useful later on
|
||||
UpdateCommand.class
|
||||
);
|
||||
|
||||
|
@ -161,7 +159,7 @@ public final class ImageOnMap extends QuartzPlugin {
|
|||
public void onDisable() {
|
||||
MapManager.exit();
|
||||
MapItemManager.exit();
|
||||
MigratorExecutor.waitForMigration();
|
||||
//MigratorExecutor.waitForMigration();//Removed for now doesn't work nor is useful, maybe useful later on
|
||||
|
||||
super.onDisable();
|
||||
}
|
||||
|
|
|
@ -37,7 +37,11 @@
|
|||
package fr.moribus.imageonmap;
|
||||
|
||||
|
||||
import fr.zcraft.quartzlib.components.i18n.I;
|
||||
import fr.zcraft.quartzlib.tools.PluginLogger;
|
||||
import java.util.Set;
|
||||
import org.bukkit.permissions.Permissible;
|
||||
import org.bukkit.permissions.PermissionAttachmentInfo;
|
||||
|
||||
public enum Permissions {
|
||||
NEW("imageonmap.new", "imageonmap.userender"),
|
||||
|
@ -46,6 +50,8 @@ public enum Permissions {
|
|||
GET("imageonmap.get"),
|
||||
GETOTHER("imageonmap.getother"),
|
||||
RENAME("imageonmap.rename"),
|
||||
PLACE_SPLATTER_MAP("imageonmap.placesplattermap"),
|
||||
PLACE_INVISIBLE_SPLATTER_MAP("imageonmap.placeinvisiblesplattermap"),
|
||||
REMOVE_SPLATTER_MAP("imageonmap.removesplattermap"),
|
||||
DELETE("imageonmap.delete"),
|
||||
DELETEOTHER("imageonmap.deleteother"),
|
||||
|
@ -53,7 +59,10 @@ public enum Permissions {
|
|||
UPDATEOTHER("imageonmap.updateother"),
|
||||
ADMINISTRATIVE("imageonmap.administrative"),
|
||||
BYPASS_SIZE("imageonmap.bypasssize"),
|
||||
GIVE("imageonmap.give");
|
||||
BYPASS_IMAGE_LIMIT("imageonmap.bypassimagelimit"),
|
||||
BYPASS_MAP_LIMIT("imageonmap.bypassmaplimit"),
|
||||
GIVE("imageonmap.give"),
|
||||
BYPASS_WHITELIST("imageonmap.bypasswhitelist");
|
||||
|
||||
private final String permission;
|
||||
private final String[] aliases;
|
||||
|
@ -82,4 +91,37 @@ public enum Permissions {
|
|||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the limit of map the user is allowed to make
|
||||
*
|
||||
* @param permissible The permissible to check.
|
||||
* @return the limit
|
||||
*/
|
||||
public int getLimitPermission(Permissible permissible, LimitType type) {
|
||||
Set<PermissionAttachmentInfo> perms = permissible.getEffectivePermissions();
|
||||
String prefix = String.format("imageonmap.%slimit.", type.name());
|
||||
for (PermissionAttachmentInfo pai : perms) {
|
||||
String permString = pai.getPermission().toLowerCase();
|
||||
if (permString.startsWith(prefix)) {
|
||||
if (pai.getValue()) {
|
||||
try {
|
||||
int limit = Integer.parseInt(permString.split(prefix)[1].trim());
|
||||
return limit;
|
||||
} catch (Exception e) {
|
||||
PluginLogger.warning(
|
||||
I.t("The correct syntax for setting map limit node is: ImageOnMap.mapLimit.X "
|
||||
+ "where you can replace X with the limit of map a player is allowed to have"));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return 2147483647; //Virtually no limit
|
||||
}
|
||||
|
||||
public enum LimitType {
|
||||
map,
|
||||
image
|
||||
}
|
||||
}
|
|
@ -37,9 +37,11 @@
|
|||
package fr.moribus.imageonmap;
|
||||
|
||||
import static fr.zcraft.quartzlib.components.configuration.ConfigurationItem.item;
|
||||
import static fr.zcraft.quartzlib.components.configuration.ConfigurationItem.list;
|
||||
|
||||
import fr.zcraft.quartzlib.components.configuration.Configuration;
|
||||
import fr.zcraft.quartzlib.components.configuration.ConfigurationItem;
|
||||
import fr.zcraft.quartzlib.components.configuration.ConfigurationList;
|
||||
import java.util.Locale;
|
||||
|
||||
|
||||
|
@ -59,4 +61,7 @@ public final class PluginConfiguration extends Configuration {
|
|||
public static ConfigurationItem<Integer> LIMIT_SIZE_X = item("limit-map-size-x", 0);
|
||||
public static ConfigurationItem<Integer> LIMIT_SIZE_Y = item("limit-map-size-y", 0);
|
||||
|
||||
public static ConfigurationList<String> IMAGES_HOSTNAMES_WHITELIST =
|
||||
list("images-hostnames-whitelist", String.class);
|
||||
|
||||
}
|
||||
|
|
|
@ -36,23 +36,52 @@
|
|||
|
||||
package fr.moribus.imageonmap.commands;
|
||||
|
||||
import fr.moribus.imageonmap.PluginConfiguration;
|
||||
import fr.moribus.imageonmap.map.ImageMap;
|
||||
import fr.moribus.imageonmap.map.MapManager;
|
||||
import fr.zcraft.quartzlib.components.commands.Command;
|
||||
import fr.zcraft.quartzlib.components.commands.CommandException;
|
||||
import fr.zcraft.quartzlib.components.i18n.I;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
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 boolean checkHostnameWhitelist(final URL url) {
|
||||
final List<String> hostnames = PluginConfiguration.IMAGES_HOSTNAMES_WHITELIST.get()
|
||||
.stream()
|
||||
.map(String::trim)
|
||||
.filter(h -> !h.isEmpty())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (hostnames.isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return hostnames
|
||||
.stream()
|
||||
.map(h -> h.replaceAll("https://", "").replaceAll("http://", ""))
|
||||
.anyMatch(h -> h.equalsIgnoreCase(url.getHost()));
|
||||
}
|
||||
|
||||
protected void retrieveUUID(final String arg, final Consumer<UUID> consumer) {
|
||||
// If it is being removed we may have to use Mojang services
|
||||
consumer.accept(Bukkit.getOfflinePlayer(arg).getUniqueId());
|
||||
}
|
||||
|
||||
protected ImageMap getMapFromArgs() throws CommandException {
|
||||
return getMapFromArgs(playerSender(), 0, true);
|
||||
}
|
||||
|
||||
protected ImageMap getMapFromArgs(Player player, int index, boolean expand) throws CommandException {
|
||||
protected ImageMap getMapFromArgs(final Player player, final int index, boolean expand) throws CommandException {
|
||||
if (args.length <= index) {
|
||||
throwInvalidArgument(I.t("You need to give a map name."));
|
||||
}
|
||||
|
|
|
@ -36,7 +36,6 @@
|
|||
|
||||
package fr.moribus.imageonmap.commands.maptool;
|
||||
|
||||
import fr.moribus.imageonmap.ImageOnMap;
|
||||
import fr.moribus.imageonmap.Permissions;
|
||||
import fr.moribus.imageonmap.commands.IoMCommand;
|
||||
import fr.moribus.imageonmap.map.ImageMap;
|
||||
|
@ -102,13 +101,7 @@ public class DeleteCommand extends IoMCommand {
|
|||
mapName = arguments.get(0);
|
||||
}
|
||||
|
||||
//TODO passer en static
|
||||
ImageOnMap.getPlugin().getCommandWorker().offlineNameFetch(playerName, uuid -> {
|
||||
if (uuid == null) {
|
||||
warning(sender, I.t("The player {0} does not exist.", playerName));
|
||||
return;
|
||||
}
|
||||
|
||||
retrieveUUID(playerName, uuid -> {
|
||||
ImageMap map = MapManager.getMap(uuid, mapName);
|
||||
|
||||
if (map == null) {
|
||||
|
|
|
@ -37,7 +37,6 @@
|
|||
package fr.moribus.imageonmap.commands.maptool;
|
||||
|
||||
|
||||
import fr.moribus.imageonmap.ImageOnMap;
|
||||
import fr.moribus.imageonmap.Permissions;
|
||||
import fr.moribus.imageonmap.commands.IoMCommand;
|
||||
import fr.moribus.imageonmap.gui.MapListGui;
|
||||
|
@ -45,6 +44,7 @@ import fr.zcraft.quartzlib.components.commands.CommandException;
|
|||
import fr.zcraft.quartzlib.components.commands.CommandInfo;
|
||||
import fr.zcraft.quartzlib.components.gui.Gui;
|
||||
import fr.zcraft.quartzlib.components.i18n.I;
|
||||
import fr.zcraft.quartzlib.tools.PluginLogger;
|
||||
import java.util.ArrayList;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
|
@ -52,7 +52,7 @@ import org.bukkit.command.CommandSender;
|
|||
import org.bukkit.entity.Player;
|
||||
|
||||
|
||||
@CommandInfo(name = "explore",usageParameters = "[player name]")
|
||||
@CommandInfo(name = "explore", usageParameters = "[player name]")
|
||||
public class ExploreCommand extends IoMCommand {
|
||||
@Override
|
||||
protected void run() throws CommandException {
|
||||
|
@ -74,15 +74,11 @@ public class ExploreCommand extends IoMCommand {
|
|||
playerName = sender.getName();
|
||||
}
|
||||
|
||||
//TODO passer en static
|
||||
ImageOnMap.getPlugin().getCommandWorker().offlineNameFetch(playerName, uuid -> {
|
||||
if (uuid == null) {
|
||||
warning(sender, I.t("The player {0} does not exist.", playerName));
|
||||
return;
|
||||
}
|
||||
retrieveUUID(playerName, uuid -> {
|
||||
|
||||
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(uuid);
|
||||
if (sender.isOnline()) {
|
||||
Gui.open(sender, new MapListGui(offlinePlayer,playerName));
|
||||
Gui.open(sender, new MapListGui(offlinePlayer, playerName));
|
||||
}
|
||||
|
||||
});
|
||||
|
|
|
@ -82,16 +82,13 @@ public class GetCommand extends IoMCommand {
|
|||
|
||||
|
||||
|
||||
//TODO passer en static
|
||||
ImageOnMap.getPlugin().getCommandWorker().offlineNameFetch(playerName, uuid -> {
|
||||
|
||||
retrieveUUID(playerName, uuid -> {
|
||||
|
||||
if (!sender.isOnline()) {
|
||||
return;
|
||||
}
|
||||
if (uuid == null) {
|
||||
warning(sender, I.t("The player {0} does not exist.", playerName));
|
||||
return;
|
||||
}
|
||||
|
||||
ImageMap map = MapManager.getMap(uuid, mapName);
|
||||
|
||||
if (map == null) {
|
||||
|
|
|
@ -36,7 +36,6 @@
|
|||
|
||||
package fr.moribus.imageonmap.commands.maptool;
|
||||
|
||||
import fr.moribus.imageonmap.ImageOnMap;
|
||||
import fr.moribus.imageonmap.Permissions;
|
||||
import fr.moribus.imageonmap.commands.IoMCommand;
|
||||
import fr.moribus.imageonmap.map.ImageMap;
|
||||
|
@ -44,10 +43,7 @@ import fr.moribus.imageonmap.map.MapManager;
|
|||
import fr.zcraft.quartzlib.components.commands.CommandException;
|
||||
import fr.zcraft.quartzlib.components.commands.CommandInfo;
|
||||
import fr.zcraft.quartzlib.components.i18n.I;
|
||||
import fr.zcraft.quartzlib.tools.mojang.UUIDFetcher;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.UUID;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
@ -106,42 +102,21 @@ public class GiveCommand extends IoMCommand {
|
|||
|
||||
final Player sender = playerSender();
|
||||
|
||||
//TODO passer en static
|
||||
ImageOnMap.getPlugin().getCommandWorker().offlineNameFetch(from, uuid -> {
|
||||
if (uuid == null) {
|
||||
warning(sender, I.t("The player {0} does not exist.", from));
|
||||
return;
|
||||
}
|
||||
retrieveUUID(from, uuid -> {
|
||||
final ImageMap map = MapManager.getMap(uuid, mapName);
|
||||
|
||||
if (map == null) {
|
||||
warning(sender, I.t("This map does not exist."));
|
||||
return;
|
||||
}
|
||||
try {
|
||||
UUID uuid2 = UUIDFetcher.fetch(playerName);
|
||||
if (uuid2 == null) {
|
||||
warning(sender, I.t("The player {0} does not exist.", playerName));
|
||||
return;
|
||||
}
|
||||
if (Bukkit.getPlayer((uuid2)) == null || !Bukkit.getPlayer((uuid2)).isOnline()) {
|
||||
warning(sender, I.t("The player {0} is not connected.", playerName));
|
||||
return;
|
||||
}
|
||||
|
||||
retrieveUUID(playerName, uuid2 -> {
|
||||
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) {
|
||||
try {
|
||||
throwInvalidArgument(I.t("The player {0} does not exist.", playerName));
|
||||
} catch (CommandException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
return;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
|
|
@ -36,7 +36,6 @@
|
|||
|
||||
package fr.moribus.imageonmap.commands.maptool;
|
||||
|
||||
import fr.moribus.imageonmap.ImageOnMap;
|
||||
import fr.moribus.imageonmap.Permissions;
|
||||
import fr.moribus.imageonmap.commands.IoMCommand;
|
||||
import fr.moribus.imageonmap.map.ImageMap;
|
||||
|
@ -78,17 +77,9 @@ public class ListCommand extends IoMCommand {
|
|||
|
||||
final Player sender = playerSender();
|
||||
|
||||
//TODO passer en static
|
||||
ImageOnMap.getPlugin().getCommandWorker().offlineNameFetch(playerName, uuid -> {
|
||||
|
||||
retrieveUUID(playerName, uuid -> {
|
||||
List<ImageMap> mapList = MapManager.getMapList(uuid);
|
||||
if (uuid == null) {
|
||||
try {
|
||||
throwInvalidArgument(I.t("Player {} not found.", playerName));
|
||||
} catch (CommandException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (mapList.isEmpty()) {
|
||||
info(sender, I.t("No map found."));
|
||||
return;
|
||||
|
|
|
@ -41,6 +41,7 @@ import fr.moribus.imageonmap.commands.IoMCommand;
|
|||
import fr.moribus.imageonmap.image.ImageRendererExecutor;
|
||||
import fr.moribus.imageonmap.image.ImageUtils;
|
||||
import fr.moribus.imageonmap.map.ImageMap;
|
||||
import fr.moribus.imageonmap.map.MapManager;
|
||||
import fr.moribus.imageonmap.map.PosterMap;
|
||||
import fr.zcraft.quartzlib.components.commands.CommandException;
|
||||
import fr.zcraft.quartzlib.components.commands.CommandInfo;
|
||||
|
@ -62,8 +63,12 @@ public class NewCommand extends IoMCommand {
|
|||
switch (args[1]) {
|
||||
case "resize":
|
||||
return ImageUtils.ScalingType.CONTAINED;
|
||||
case "stretch":
|
||||
case "stretched":
|
||||
case "resize-stretched":
|
||||
return ImageUtils.ScalingType.STRETCHED;
|
||||
case "cover":
|
||||
case "covered":
|
||||
case "resize-covered":
|
||||
return ImageUtils.ScalingType.COVERED;
|
||||
default:
|
||||
|
@ -83,21 +88,70 @@ public class NewCommand extends IoMCommand {
|
|||
if (args.length < 1) {
|
||||
throwInvalidArgument(I.t("You must give an URL to take the image from."));
|
||||
}
|
||||
|
||||
//Checking if the map limit and image limit
|
||||
if (!Permissions.BYPASS_IMAGE_LIMIT.grantedTo(player)) {
|
||||
int imageLimit = Permissions.NEW.getLimitPermission(player, Permissions.LimitType.image);
|
||||
int imageCount = MapManager.getPlayerMapStore(player.getUniqueId()).getImagesCount();
|
||||
if (imageLimit <= imageCount) {
|
||||
throwInvalidArgument(
|
||||
I.t("Your image limit is set to {0} and you currently have {1} loaded image(s)",
|
||||
imageLimit,
|
||||
imageCount));
|
||||
}
|
||||
}
|
||||
if (!Permissions.BYPASS_MAP_LIMIT.grantedTo(player)) {
|
||||
int mapLimit = Permissions.NEW.getLimitPermission(player, Permissions.LimitType.map);
|
||||
int mapCount = MapManager.getPlayerMapStore(player.getUniqueId()).getMapCount();
|
||||
if (mapLimit <= mapCount) {
|
||||
throwInvalidArgument(
|
||||
I.t("Your map limit is set to {0} and you currently have {1} loaded map(s)",
|
||||
mapLimit,
|
||||
mapCount));
|
||||
}
|
||||
}
|
||||
try {
|
||||
url = new URL(args[0]);
|
||||
if (!Permissions.BYPASS_WHITELIST.grantedTo(player) && !checkHostnameWhitelist(url)) {
|
||||
throwInvalidArgument(I.t("This hosting website is not trusted, if you think that this is an error "
|
||||
+ " contact your server administrator"));
|
||||
return;
|
||||
}
|
||||
|
||||
} catch (MalformedURLException ex) {
|
||||
throwInvalidArgument(I.t("Invalid URL."));
|
||||
return;
|
||||
}
|
||||
|
||||
if (args.length >= 2) {
|
||||
if (args.length >= 4) {
|
||||
width = Integer.parseInt(args[2]);
|
||||
height = Integer.parseInt(args[3]);
|
||||
if (args.length >= 3) {
|
||||
try {
|
||||
if (args.length >= 4) {
|
||||
width = Integer.parseInt(args[2]);
|
||||
height = Integer.parseInt(args[3]);
|
||||
} else {
|
||||
String[] size;
|
||||
if (args[2].contains("*") && !args[2].contains("x")) {
|
||||
size = args[2].split("\\*");
|
||||
width = Integer.parseInt(size[0]);
|
||||
height = Integer.parseInt(size[1]);
|
||||
}
|
||||
if (!args[2].contains("*") && args[2].contains("x")) {
|
||||
size = args[2].split("x");
|
||||
width = Integer.parseInt(size[0]);
|
||||
height = Integer.parseInt(size[1]);
|
||||
}
|
||||
}
|
||||
} catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {
|
||||
throwInvalidArgument(I.t("resize dimension as to be in format <n m> or <nxm> or <n*m>."));
|
||||
return;
|
||||
}
|
||||
}
|
||||
scaling = resizeMode();
|
||||
}
|
||||
if (width < 0 || height < 0) {
|
||||
throwInvalidArgument(I.t("You need to specify a valid size. e.g. resize 4 5"));
|
||||
return;
|
||||
}
|
||||
try {
|
||||
ActionBar.sendPermanentMessage(player, ChatColor.DARK_GREEN + I.t("Rendering..."));
|
||||
ImageRendererExecutor
|
||||
|
|
|
@ -36,7 +36,6 @@
|
|||
|
||||
package fr.moribus.imageonmap.commands.maptool;
|
||||
|
||||
import fr.moribus.imageonmap.ImageOnMap;
|
||||
import fr.moribus.imageonmap.Permissions;
|
||||
import fr.moribus.imageonmap.commands.IoMCommand;
|
||||
import fr.moribus.imageonmap.image.ImageRendererExecutor;
|
||||
|
@ -155,11 +154,9 @@ public class UpdateCommand extends IoMCommand {
|
|||
}
|
||||
|
||||
//TODO passer en static
|
||||
ImageOnMap.getPlugin().getCommandWorker().offlineNameFetch(playerName, uuid -> {
|
||||
if (uuid == null) {
|
||||
warning(sender, I.t("The player {0} does not exist.", playerName));
|
||||
return;
|
||||
}
|
||||
//ImageOnMap.getPlugin().getCommandWorker().offlineNameFetch(playerName, uuid -> {
|
||||
retrieveUUID(playerName, uuid -> {
|
||||
|
||||
ImageMap map = MapManager.getMap(uuid, mapName);
|
||||
|
||||
if (map == null) {
|
||||
|
@ -170,6 +167,12 @@ public class UpdateCommand extends IoMCommand {
|
|||
URL url1;
|
||||
try {
|
||||
url1 = new URL(url);
|
||||
if (!Permissions.BYPASS_WHITELIST.grantedTo(playerSender) && !checkHostnameWhitelist(url1)) {
|
||||
throwInvalidArgument(I.t("This hosting website is not trusted, if you think that this is an error "
|
||||
+ " contact your server administrator"));
|
||||
return;
|
||||
}
|
||||
|
||||
//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
|
||||
|
||||
|
@ -213,7 +216,7 @@ public class UpdateCommand extends IoMCommand {
|
|||
ActionBar.removeMessage(playerSender);
|
||||
}
|
||||
}
|
||||
} catch (MalformedURLException ex) {
|
||||
} catch (MalformedURLException | CommandException ex) {
|
||||
warning(sender, I.t("Invalid URL."));
|
||||
}
|
||||
});
|
||||
|
|
|
@ -46,6 +46,7 @@ import fr.zcraft.quartzlib.components.gui.Gui;
|
|||
import fr.zcraft.quartzlib.components.gui.GuiAction;
|
||||
import fr.zcraft.quartzlib.components.gui.PromptGui;
|
||||
import fr.zcraft.quartzlib.components.i18n.I;
|
||||
import fr.zcraft.quartzlib.tools.PluginLogger;
|
||||
import fr.zcraft.quartzlib.tools.items.ItemStackBuilder;
|
||||
import fr.zcraft.quartzlib.tools.runners.RunTask;
|
||||
import org.apache.commons.lang.ArrayUtils;
|
||||
|
@ -208,32 +209,35 @@ public class MapDetailGui extends ExplorerGui<Integer> {
|
|||
return;
|
||||
}
|
||||
|
||||
PromptGui.prompt(getPlayer(), newName -> {
|
||||
if (!Permissions.RENAME.grantedTo(getPlayer())) {
|
||||
I.sendT(getPlayer(), "{ce}You are no longer allowed to do that.");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
PromptGui.prompt(getPlayer(), newName -> {
|
||||
if (!Permissions.RENAME.grantedTo(getPlayer())) {
|
||||
I.sendT(getPlayer(), "{ce}You are no longer allowed to do that.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (newName == null || newName.isEmpty()) {
|
||||
I.sendT(getPlayer(), "{ce}Map names can't be empty.");
|
||||
return;
|
||||
}
|
||||
if (newName.equals(map.getName())) {
|
||||
return;
|
||||
}
|
||||
if (newName == null || newName.isEmpty()) {
|
||||
I.sendT(getPlayer(), "{ce}Map names can't be empty.");
|
||||
return;
|
||||
}
|
||||
if (newName.equals(map.getName())) {
|
||||
return;
|
||||
}
|
||||
|
||||
map.rename(newName);
|
||||
I.sendT(getPlayer(), "{cs}Map successfully renamed.");
|
||||
map.rename(newName);
|
||||
I.sendT(getPlayer(), "{cs}Map successfully renamed.");
|
||||
|
||||
if (getParent() != null) {
|
||||
RunTask.later(() -> Gui.open(getPlayer(), this), 1L);
|
||||
|
||||
} else {
|
||||
close();
|
||||
}
|
||||
}, map.getName(), this);
|
||||
if (getParent() != null) {
|
||||
RunTask.later(() -> Gui.open(getPlayer(), this), 1L);
|
||||
|
||||
} else {
|
||||
close();
|
||||
}
|
||||
}, map.getName(), this);
|
||||
|
||||
} catch (IllegalStateException e) {
|
||||
PluginLogger.error("Error while renaming map: ", e);
|
||||
}
|
||||
}
|
||||
|
||||
@GuiAction("delete")
|
||||
|
|
|
@ -98,6 +98,7 @@ public class ImageRendererExecutor extends Worker {
|
|||
public ImageMap run() throws Throwable {
|
||||
|
||||
BufferedImage image = null;
|
||||
|
||||
//If the link is an imgur one
|
||||
if (url.toString().toLowerCase().startsWith("https://imgur.com/")) {
|
||||
|
||||
|
@ -162,7 +163,6 @@ public class ImageRendererExecutor extends Worker {
|
|||
submitQuery(new WorkerRunnable<ImageMap>() {
|
||||
@Override
|
||||
public ImageMap run() throws Throwable {
|
||||
|
||||
final URLConnection connection = connecting(url);
|
||||
|
||||
final InputStream stream = connection.getInputStream();
|
||||
|
|
|
@ -38,8 +38,15 @@ package fr.moribus.imageonmap.image;
|
|||
|
||||
import fr.moribus.imageonmap.ImageOnMap;
|
||||
import fr.moribus.imageonmap.map.MapManager;
|
||||
import fr.zcraft.quartzlib.components.events.FutureEventHandler;
|
||||
import fr.zcraft.quartzlib.components.events.FutureEvents;
|
||||
import fr.zcraft.quartzlib.components.events.WrappedEvent;
|
||||
import fr.zcraft.quartzlib.core.QuartzLib;
|
||||
import fr.zcraft.quartzlib.tools.PluginLogger;
|
||||
import fr.zcraft.quartzlib.tools.reflection.Reflection;
|
||||
import fr.zcraft.quartzlib.tools.runners.RunTask;
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
|
@ -49,7 +56,10 @@ import org.bukkit.entity.ItemFrame;
|
|||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityDamageByBlockEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityPickupItemEvent;
|
||||
import org.bukkit.event.hanging.HangingBreakEvent;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.player.PlayerItemHeldEvent;
|
||||
import org.bukkit.event.world.ChunkLoadEvent;
|
||||
|
@ -57,8 +67,11 @@ import org.bukkit.inventory.ItemStack;
|
|||
import org.bukkit.map.MapView;
|
||||
|
||||
public class MapInitEvent implements Listener {
|
||||
|
||||
public static void init() {
|
||||
|
||||
QuartzLib.registerEvents(new MapInitEvent());
|
||||
FutureEvents.registerFutureEvents(new EntitiesLoadListener());
|
||||
|
||||
for (World world : Bukkit.getWorlds()) {
|
||||
for (ItemFrame frame : world.getEntitiesByClass(ItemFrame.class)) {
|
||||
|
@ -97,11 +110,13 @@ public class MapInitEvent implements Listener {
|
|||
|
||||
@EventHandler
|
||||
public void onChunkLoad(ChunkLoadEvent event) {
|
||||
for (Entity entity : event.getChunk().getEntities()) {
|
||||
if (entity instanceof ItemFrame) {
|
||||
initMap(((ItemFrame) entity).getItem());
|
||||
RunTask.later(() -> {
|
||||
for (Entity entity : event.getChunk().getEntities()) {
|
||||
if (entity instanceof ItemFrame) {
|
||||
initMap(((ItemFrame) entity).getItem());
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 5L);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
|
@ -131,4 +146,100 @@ public class MapInitEvent implements Listener {
|
|||
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEntityDamageByEntityEvent(EntityDamageByEntityEvent event) {
|
||||
//Negate entity interaction with item frame containing IoM maps.
|
||||
|
||||
Entity entity = event.getEntity();
|
||||
if (!(entity instanceof ItemFrame)) {
|
||||
return;
|
||||
}
|
||||
Entity damager = event.getDamager();
|
||||
if (damager instanceof Player) {
|
||||
//can solve the dup with the map here by doing a better handling
|
||||
return;
|
||||
}
|
||||
ItemStack item = ((ItemFrame) entity).getItem();
|
||||
if (item.getType() == Material.FILLED_MAP) {
|
||||
//if the map exist we canceled the event
|
||||
if (MapManager.getMap(item) != null) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEntityDamageByBlockEvent(EntityDamageByBlockEvent event) {
|
||||
//Negate damage done to IoM maps by some blocks
|
||||
|
||||
Entity entity = event.getEntity();
|
||||
if (!(entity instanceof ItemFrame)) {
|
||||
return;
|
||||
}
|
||||
ItemStack item = ((ItemFrame) entity).getItem();
|
||||
if (item.getType() == Material.FILLED_MAP) {
|
||||
//if the map exist we canceled the event
|
||||
if (MapManager.getMap(item) != null) {
|
||||
switch (event.getCause()) {
|
||||
case MAGIC:
|
||||
case ENTITY_EXPLOSION:
|
||||
case FIRE_TICK:
|
||||
case LIGHTNING:
|
||||
case CRAMMING:
|
||||
case WITHER:
|
||||
case SUFFOCATION:
|
||||
case DROWNING:
|
||||
case BLOCK_EXPLOSION:
|
||||
event.setCancelled(true);
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@EventHandler
|
||||
public void onHangingBreakEvent(HangingBreakEvent event) {
|
||||
Entity entity = event.getEntity();
|
||||
if (!(entity instanceof ItemFrame)) {
|
||||
return;
|
||||
}
|
||||
|
||||
ItemStack item = ((ItemFrame) entity).getItem();
|
||||
if (item.getType() == Material.FILLED_MAP) {
|
||||
//if the map exist we canceled the event
|
||||
if (MapManager.getMap(item) != null) {
|
||||
if (event.getCause() == HangingBreakEvent.RemoveCause.EXPLOSION) {
|
||||
//creeper goes boom
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected static final class EntitiesLoadListener implements Listener {
|
||||
@FutureEventHandler(event = "world.EntitiesLoadEvent")
|
||||
public void onEntitiesLoad(WrappedEvent event) {
|
||||
//New in 1.17
|
||||
//Used to make sure map are really loaded in 1.17 on Paper (else some won't render or update properly)
|
||||
RunTask.later(() -> {
|
||||
try {
|
||||
List<Entity> entities = (List) Reflection.call(event.getEvent(), "getEntities");
|
||||
for (Entity entity : entities) {
|
||||
if (entity instanceof ItemFrame) {
|
||||
initMap(((ItemFrame) entity).getItem());
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
PluginLogger.error(e.toString());
|
||||
return;
|
||||
}
|
||||
|
||||
}, 5L);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,6 +43,7 @@ import fr.moribus.imageonmap.map.PosterMap;
|
|||
import fr.moribus.imageonmap.map.SingleMap;
|
||||
import fr.zcraft.quartzlib.components.i18n.I;
|
||||
import fr.zcraft.quartzlib.core.QuartzLib;
|
||||
import fr.zcraft.quartzlib.tools.PluginLogger;
|
||||
import fr.zcraft.quartzlib.tools.items.ItemStackBuilder;
|
||||
import fr.zcraft.quartzlib.tools.items.ItemUtils;
|
||||
import fr.zcraft.quartzlib.tools.runners.RunTask;
|
||||
|
@ -251,10 +252,17 @@ public class MapItemManager implements Listener {
|
|||
if (!MapManager.managesMap(mapItem)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Permissions.PLACE_SPLATTER_MAP.grantedTo(player)) {
|
||||
player.sendMessage(I.t(ChatColor.RED + "You do not have permission to place splatter maps."));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
frame.setItem(new ItemStack(Material.AIR));
|
||||
if (SplatterMapManager.hasSplatterAttributes(mapItem)) {
|
||||
|
||||
if (!SplatterMapManager.placeSplatterMap(frame, player, event)) {
|
||||
|
||||
event.setCancelled(true); //In case of an error allow to cancel map placement
|
||||
return;
|
||||
}
|
||||
|
@ -267,33 +275,20 @@ public class MapItemManager implements Listener {
|
|||
if (frame.getFacing() != BlockFace.UP && frame.getFacing() != BlockFace.DOWN) {
|
||||
frame.setRotation(Rotation.NONE);
|
||||
}
|
||||
// If the item has a display name, bot not one from an anvil by the player, we remove it
|
||||
// If it is not displayed on hover on the wall.
|
||||
if (mapItem.hasItemMeta() && mapItem.getItemMeta().hasDisplayName()
|
||||
&& mapItem.getItemMeta().getDisplayName().startsWith("§6")) {
|
||||
//runtask
|
||||
//TODO utiliser run task.later pour essayer de regler le pb d'itemframe bas gauche sans carte
|
||||
final ItemStack frameItem = mapItem.clone();
|
||||
final ItemMeta meta = frameItem.getItemMeta();
|
||||
|
||||
meta.setDisplayName(null);
|
||||
frameItem.setItemMeta(meta);
|
||||
RunTask.later(() -> {
|
||||
frame.setItem(frameItem);
|
||||
frame.setRotation(Rotation.NONE);
|
||||
}, 5L);
|
||||
|
||||
} else {
|
||||
final ItemStack frameItem = mapItem.clone();
|
||||
final ItemMeta meta = frameItem.getItemMeta();
|
||||
|
||||
meta.setDisplayName(null);
|
||||
frameItem.setItemMeta(meta);
|
||||
RunTask.later(() -> {
|
||||
frame.setItem(frameItem);
|
||||
frame.setRotation(Rotation.NONE);
|
||||
RunTask.later(() -> {
|
||||
frame.setItem(mapItem);
|
||||
}, 5L);
|
||||
|
||||
}
|
||||
}, 5L);
|
||||
|
||||
}
|
||||
|
||||
ItemUtils.consumeItem(player, mapItem);
|
||||
//ItemUtils.consumeItem(player, mapItem); //useless no?
|
||||
}
|
||||
|
||||
private static void onItemFrameRemove(ItemFrame frame, Player player, EntityDamageByEntityEvent event) {
|
||||
|
@ -312,7 +307,6 @@ public class MapItemManager implements Listener {
|
|||
|| !SplatterMapManager.hasSplatterMap(player, poster)) {
|
||||
poster.give(player);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -321,7 +315,7 @@ public class MapItemManager implements Listener {
|
|||
if (!MapManager.managesMap(frame.getItem())) {
|
||||
return;
|
||||
}
|
||||
|
||||
SplatterMapManager.removePropertiesFromFrames(player, frame);
|
||||
frame.setItem(new ItemStackBuilder(item)
|
||||
.title(getMapTitle(item))
|
||||
.hideAllAttributes()
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
package fr.moribus.imageonmap.ui;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import fr.moribus.imageonmap.Permissions;
|
||||
import fr.moribus.imageonmap.image.MapInitEvent;
|
||||
import fr.moribus.imageonmap.map.ImageMap;
|
||||
import fr.moribus.imageonmap.map.MapManager;
|
||||
|
@ -44,15 +45,16 @@ import fr.moribus.imageonmap.map.PosterMap;
|
|||
import fr.zcraft.quartzlib.components.i18n.I;
|
||||
import fr.zcraft.quartzlib.components.nbt.NBT;
|
||||
import fr.zcraft.quartzlib.components.nbt.NBTCompound;
|
||||
import fr.zcraft.quartzlib.components.nbt.NBTException;
|
||||
import fr.zcraft.quartzlib.components.nbt.NBTList;
|
||||
import fr.zcraft.quartzlib.tools.PluginLogger;
|
||||
import fr.zcraft.quartzlib.tools.items.GlowEffect;
|
||||
import fr.zcraft.quartzlib.tools.items.ItemStackBuilder;
|
||||
import fr.zcraft.quartzlib.tools.reflection.NMSException;
|
||||
import fr.zcraft.quartzlib.tools.runners.RunTask;
|
||||
import fr.zcraft.quartzlib.tools.text.MessageSender;
|
||||
import fr.zcraft.quartzlib.tools.world.FlatLocation;
|
||||
import fr.zcraft.quartzlib.tools.world.WorldUtils;
|
||||
import java.lang.reflect.Method;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.Material;
|
||||
|
@ -65,7 +67,8 @@ import org.bukkit.inventory.Inventory;
|
|||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.MapMeta;
|
||||
|
||||
|
||||
//TODO rework splatter effect, using ID is far more stable than nbt tags.
|
||||
// To update when adding small picture previsualization.
|
||||
public abstract class SplatterMapManager {
|
||||
private SplatterMapManager() {
|
||||
}
|
||||
|
@ -125,22 +128,8 @@ public abstract class SplatterMapManager {
|
|||
* @return The modified item stack. The instance may be different if the passed item stack is not a craft itemstack.
|
||||
*/
|
||||
public static ItemStack addSplatterAttribute(final ItemStack itemStack) {
|
||||
try {
|
||||
final NBTCompound nbt = NBT.fromItemStack(itemStack);
|
||||
final NBTList enchantments = new NBTList();
|
||||
final NBTCompound protection = new NBTCompound();
|
||||
|
||||
protection.put("id", "minecraft:mending");
|
||||
protection.put("lvl", 1);
|
||||
enchantments.add(protection);
|
||||
|
||||
nbt.put("Enchantments", enchantments);
|
||||
|
||||
return NBT.addToItemStack(itemStack, nbt, false);
|
||||
} catch (NBTException | NMSException e) {
|
||||
PluginLogger.error("Unable to set Splatter Map attribute on item", e);
|
||||
return itemStack;
|
||||
}
|
||||
GlowEffect.addGlow(itemStack);
|
||||
return itemStack;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -151,6 +140,7 @@ public abstract class SplatterMapManager {
|
|||
* @return True if the attribute was detected.
|
||||
*/
|
||||
public static boolean hasSplatterAttributes(ItemStack itemStack) {
|
||||
|
||||
try {
|
||||
final NBTCompound nbt = NBT.fromItemStack(itemStack);
|
||||
if (!nbt.containsKey("Enchantments")) {
|
||||
|
@ -185,7 +175,7 @@ public abstract class SplatterMapManager {
|
|||
* Return true if it has a specified splatter map
|
||||
*
|
||||
* @param player The player to check.
|
||||
* @param map The map to check.
|
||||
* @param map The map to check.
|
||||
* @return True if the player has this map
|
||||
*/
|
||||
public static boolean hasSplatterMap(Player player, PosterMap map) {
|
||||
|
@ -254,6 +244,7 @@ public abstract class SplatterMapManager {
|
|||
//Rotation management relative to player rotation the default position is North,
|
||||
// when on ceiling we flipped the rotation
|
||||
RunTask.later(() -> {
|
||||
addPropertiesToFrames(player, frame);
|
||||
frame.setItem(
|
||||
new ItemStackBuilder(Material.FILLED_MAP).nbt(ImmutableMap.of("map", id)).craftItem());
|
||||
}, 5L);
|
||||
|
@ -315,6 +306,7 @@ public abstract class SplatterMapManager {
|
|||
int id = poster.getMapIdAtReverseY(i);
|
||||
|
||||
RunTask.later(() -> {
|
||||
addPropertiesToFrames(player, frame);
|
||||
frame.setItem(
|
||||
new ItemStackBuilder(Material.FILLED_MAP).nbt(ImmutableMap.of("map", id)).craftItem());
|
||||
}, 5L);
|
||||
|
@ -373,10 +365,31 @@ public abstract class SplatterMapManager {
|
|||
|
||||
for (ItemFrame frame : matchingFrames) {
|
||||
if (frame != null) {
|
||||
removePropertiesFromFrames(player, frame);
|
||||
frame.setItem(null);
|
||||
}
|
||||
}
|
||||
|
||||
return poster;
|
||||
}
|
||||
|
||||
public static void addPropertiesToFrames(Player player, ItemFrame frame) {
|
||||
if (Permissions.PLACE_INVISIBLE_SPLATTER_MAP.grantedTo(player)) {
|
||||
try {
|
||||
Method setVisible = frame.getClass().getMethod("setVisible", boolean.class);
|
||||
setVisible.invoke(frame, false);
|
||||
} catch (Exception e) {
|
||||
//1.16-
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void removePropertiesFromFrames(Player player, ItemFrame frame) {
|
||||
try {
|
||||
Method setVisible = frame.getClass().getMethod("setVisible", boolean.class);
|
||||
setVisible.invoke(frame, true);
|
||||
} catch (Exception e) {
|
||||
//1.16-
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
|
||||
# Plugin language. Empty: system language.
|
||||
# Available: en-US (default, fallback), fr-FR, ru-RU, de-DE, zh-CN, ja-JP.
|
||||
# Available: en-US (default, fallback), fr-FR, ru-RU, de-DE, zh-CN, ja-JP, es-ES.
|
||||
lang:
|
||||
|
||||
|
||||
|
@ -10,8 +10,11 @@ lang:
|
|||
# The statistics are publicly visible here: http://mcstats.org/plugin/ImageOnMap
|
||||
collect-data: true
|
||||
|
||||
# Displays a message to administrators (ops and console) when a new version is available.
|
||||
check-for-updates: true
|
||||
|
||||
# Images rendered on maps consume Minecraft maps ID, and there are only 32 767 of them.
|
||||
|
||||
# Images rendered on maps consume Minecraft maps ID, and there are only 2 147 483 647 of them.
|
||||
# You can limit the maximum number of maps a player, or the whole server, can use with ImageOnMap.
|
||||
# 0 means unlimited.
|
||||
map-global-limit: 0
|
||||
|
@ -26,3 +29,14 @@ limit-map-size-y: 0
|
|||
# Should the full image be saved when a map is rendered?
|
||||
save-full-image: false
|
||||
|
||||
|
||||
# If you want to restrict what domains can be used to download images from, list them below.
|
||||
# If you don't, leave the list empty.
|
||||
# Example:
|
||||
#
|
||||
# images-hostnames-whitelist:
|
||||
# - imgur.com
|
||||
# - i.imgur.com
|
||||
# - cdn.discordapp.com
|
||||
images-hostnames-whitelist:
|
||||
|
||||
|
|
|
@ -0,0 +1,601 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-10 10:23+0200\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Santiago Forero\n"
|
||||
"Language-Team: \n"
|
||||
"Language: es_ES\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n < 1 || n > 1);\n"
|
||||
"X-Generator: Poedit 1.8.7.1\n"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/IoMCommand.java:40
|
||||
msgid "You need to give a map name."
|
||||
msgstr "Tienes que nombrar un mapa."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/IoMCommand.java:57
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteNoConfirmCommand.java:51
|
||||
msgid "This map does not exist."
|
||||
msgstr "Este mapa no existe."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteConfirmCommand.java:39
|
||||
msgid "You are going to delete"
|
||||
msgstr "Vas a borrar"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteConfirmCommand.java:42
|
||||
msgid "Are you sure ? "
|
||||
msgstr "¿Estás seguro? "
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteConfirmCommand.java:44
|
||||
msgid "[Confirm]"
|
||||
msgstr "[Confirmar]"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteConfirmCommand.java:46
|
||||
msgid "{red}This map will be deleted {bold}forever{red}!"
|
||||
msgstr "{red}¡Este mapa será borrado {bold}para siempre{red}!"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteNoConfirmCommand.java:46
|
||||
msgid "Map successfully deleted."
|
||||
msgstr "Mapa borrado exitosamente."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/GetCommand.java:38
|
||||
msgid "The requested map was too big to fit in your inventory."
|
||||
msgstr "El mapa solicitado era muy grande para caber en tu inventario."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/GetCommand.java:39
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:71
|
||||
msgid "Use '/maptool getremaining' to get the remaining maps."
|
||||
msgstr "Usa '/maptool getremaining' para obtener los mapas restantes."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/GetRemainingCommand.java:38
|
||||
msgid "You have no remaining map."
|
||||
msgstr "No te quedan mapas."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/GetRemainingCommand.java:46
|
||||
msgid ""
|
||||
"Your inventory is full! Make some space before requesting the remaining maps."
|
||||
msgstr ""
|
||||
"¡Tu inventario está lleno! Haz un espacio antes de solicitar mapas."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/GetRemainingCommand.java:50
|
||||
#, java-format
|
||||
msgid "There is {0} map remaining."
|
||||
msgid_plural "There are {0} maps remaining."
|
||||
msgstr[0] "Queda {0} mapa restante."
|
||||
msgstr[1] "Quedan {0} mapas restantes."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/ListCommand.java:49
|
||||
msgid "No map found."
|
||||
msgstr "No se encontró ningún mapa."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/ListCommand.java:53
|
||||
msgid "{white}{bold}{0} map found."
|
||||
msgid_plural "{white}{bold}{0} maps found."
|
||||
msgstr[0] "{white}{bold}{0} mapa encontrado."
|
||||
msgstr[1] "{white}{bold}{0} mapas encontrados."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/ListCommand.java:79
|
||||
msgid "{white}Click{gray} to get this map"
|
||||
msgstr "{white}Click aquí{gray} para obtener este mapa"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/MigrateCommand.java:36
|
||||
msgid "A migration process is already running. Check console for details."
|
||||
msgstr "Un proceso de migración ya está ejecutándose. Revisa la consola para obtener detalles."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/MigrateCommand.java:40
|
||||
msgid "Migration started. See console for details."
|
||||
msgstr "Migración comenzada. Revisa la consola para obtener detalles."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:44
|
||||
msgid "You must give an URL to take the image from."
|
||||
msgstr "Tienes que dar un URL para obtener la imágen."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:52
|
||||
msgid "Invalid URL."
|
||||
msgstr "URL inválido."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:61
|
||||
msgid "Rendering..."
|
||||
msgstr "Renderizando..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:67
|
||||
msgid "Rendering finished!"
|
||||
msgstr "¡Renderización terminada!"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:70
|
||||
msgid "The rendered map was too big to fit in your inventory."
|
||||
msgstr "El mapa renderizado era muy grande para caber en tu inventario."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:78
|
||||
msgid "{ce}Map rendering failed: {0}"
|
||||
msgstr "{ce}Renderización del mapa fallida: {0}"
|
||||
|
||||
#. The title of the map deletion GUI. {0}: map name.
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/ConfirmDeleteMapGui.java:102
|
||||
msgid "{0} » {black}Confirm deletion"
|
||||
msgstr "{0} » {black}Confirmar"
|
||||
|
||||
#. The title of the map deletion item
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/ConfirmDeleteMapGui.java:110
|
||||
msgid "{red}You're about to destroy this map..."
|
||||
msgstr "{red}Estás a punto de destruir este mapa..."
|
||||
|
||||
#. The end, in the lore, of a title starting with “You're about to destroy this map...”.
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/ConfirmDeleteMapGui.java:112
|
||||
msgid "{red}...{italic}forever{red}."
|
||||
msgstr "{red}...{italic}para siempre{red}."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/ConfirmDeleteMapGui.java:114
|
||||
msgid "{gray}Name: {white}{0}"
|
||||
msgstr "{gray}Nombre: {white}{0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/ConfirmDeleteMapGui.java:115
|
||||
msgid "{gray}Map ID: {white}{0}"
|
||||
msgstr "{gray}ID: {white}{0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/ConfirmDeleteMapGui.java:116
|
||||
msgid "{gray}Maps inside: {white}{0}"
|
||||
msgstr "{gray}Mapas dentro: {white}{0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/ConfirmDeleteMapGui.java:178
|
||||
msgid "{gray}Map successfully deleted."
|
||||
msgstr "{gray}Mapa borrado satisfactoriamente."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:54
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:71
|
||||
msgid "{green}Map part"
|
||||
msgstr "{green}Parte de mapa"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:55
|
||||
msgid "{gray}Column: {white}{0}"
|
||||
msgstr "{gray}Columna: {white}{0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:56
|
||||
msgid "{gray}Row: {white}{0}"
|
||||
msgstr "{gray}Fila: {white}{0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:58
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:74
|
||||
msgid "{gray}» {white}Click{gray} to get only this part"
|
||||
msgstr "{gray}» {white}Click{gray} para obtener solo esta parte"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:72
|
||||
msgid "{gray}Part: {white}{0}"
|
||||
msgstr "{gray}Parte: {white}{0}"
|
||||
|
||||
#. Title of the map details GUI
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:114
|
||||
msgid "Your maps » {black}{0}"
|
||||
msgstr "Tus mapas » {black}{0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:136
|
||||
msgid "{blue}Rename this image"
|
||||
msgstr "{blue}Renombrar esta imágen"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:137
|
||||
msgid ""
|
||||
"{gray}Click here to rename this image; this is used for your own "
|
||||
"organization."
|
||||
msgstr ""
|
||||
"{gray}Click aquí para renombrar esta imágen; para tu propia "
|
||||
"organización."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:141
|
||||
msgid "{red}Delete this image"
|
||||
msgstr "{red}Borrar esta imágen"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:142
|
||||
msgid ""
|
||||
"{gray}Deletes this map {white}forever{gray}. This action cannot be undone!"
|
||||
msgstr ""
|
||||
"{gray}Borrar este mapa {white}para siempre{gray}. ¡Esta acción no se puede deshacer!"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:144
|
||||
msgid "{gray}You will be asked to confirm your choice if you click here."
|
||||
msgstr "{gray}Se te pedirá que confirmes tu elección si haces click aquí.."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:156
|
||||
msgid "{green}« Back"
|
||||
msgstr "{green}« Atrás"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:157
|
||||
msgid "{gray}Go back to the list."
|
||||
msgstr "{gray}Volver a la lista."
|
||||
|
||||
#. Displayed subtitle description of a single map on the list GUI
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:44
|
||||
msgid "{white}Single map"
|
||||
msgstr "{white}Mapa individual"
|
||||
|
||||
#. Displayed subtitle description of a poster map on the list GUI (columns × rows in english)
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:52
|
||||
msgid "{white}Poster map ({0} × {1})"
|
||||
msgstr "{white}Mapa Póster ({0} × {1})"
|
||||
|
||||
#. Displayed subtitle description of a poster map without column data on the list GUI
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:57
|
||||
msgid "{white}Poster map ({0} parts)"
|
||||
msgstr "{white}Mapa Póster ({0} partes)"
|
||||
|
||||
#. Displayed title of a map on the list GUI
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:62
|
||||
msgid "{green}{bold}{0}"
|
||||
msgstr "{green}{bold}{0}"
|
||||
|
||||
#. Map ID displayed in the tooltip of a map on the list GUI
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:67
|
||||
msgid "{gray}Map ID: {0}"
|
||||
msgstr "{gray}ID: {0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:69
|
||||
msgid "{gray}» {white}Left-click{gray} to get this map"
|
||||
msgstr "{gray}» {white}Click izquierdo{gray} para obtener este mapa"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:70
|
||||
msgid "{gray}» {white}Right-click{gray} for details and options"
|
||||
msgstr "{gray}» {white}Click derecho{gray} para obtener detalles y opciones"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:79
|
||||
msgid "{red}You don't have any map."
|
||||
msgstr "{red}No tienes ningún mapa."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:80
|
||||
msgid ""
|
||||
"{gray}Get started by creating a new one using {white}/tomap <URL> [resize]"
|
||||
"{gray}!"
|
||||
msgstr ""
|
||||
"{gray}Empieza creando un nuevo mapa con {white}/tomap <URL> [resize]"
|
||||
"{gray}!"
|
||||
|
||||
#. The maps list GUI title
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:119
|
||||
msgid "{black}Your maps {reset}({0})"
|
||||
msgstr "{black}Tus mapas {reset}({0})"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:148
|
||||
msgid "{blue}Usage statistics"
|
||||
msgstr "{blue}Estadísticas de uso"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:150
|
||||
msgid "{white}{0}{gray} image rendered"
|
||||
msgid_plural "{white}{0}{gray} images rendered"
|
||||
msgstr[0] "{white}{0}{gray} imáge renderizada"
|
||||
msgstr[1] "{white}{0}{gray} imágenes renderizadas"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:151
|
||||
msgid "{white}{0}{gray} Minecraft map used"
|
||||
msgid_plural "{white}{0}{gray} Minecraft maps used"
|
||||
msgstr[0] "{white}{0}{gray} Mapa usado"
|
||||
msgstr[1] "{white}{0}{gray} Mapas usados"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:156
|
||||
msgid "{blue}Minecraft maps limits"
|
||||
msgstr "{blue}Mapas limite"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:158
|
||||
msgid "{gray}Server-wide limit: {white}unlimited"
|
||||
msgstr "{gray}Límite del servidor: {white}ilimitado"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:159
|
||||
msgid "{gray}Server-wide limit: {white}{0}"
|
||||
msgstr "{gray}Límite del servidor: {white}{0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:161
|
||||
msgid "{gray}Per-player limit: {white}unlimited"
|
||||
msgstr "{gray}Límite por jugador: {white}ilimitado"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:162
|
||||
msgid "{gray}Per-player limit: {white}{0}"
|
||||
msgstr "{gray}Límite por jugador: {white}{0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:164
|
||||
msgid "{white}{0} %{gray} of your quota used"
|
||||
msgstr "{white}{0} %{gray} de tus mapas usado"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:165
|
||||
msgid "{white}{0}{gray} map left"
|
||||
msgid_plural "{white}{0}{gray} maps left"
|
||||
msgstr[0] "{white}{0}{gray} mapa restante"
|
||||
msgstr[1] "{white}{0}{gray} mapas restantes"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/image/ImageRendererExecutor.java:73
|
||||
#, java-format
|
||||
msgid "HTTP error : {0} {1}"
|
||||
msgstr "HTTP error : {0} {1}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/image/ImageRendererExecutor.java:79
|
||||
msgid "The given URL is not a valid image"
|
||||
msgstr "El URL no es una imágen válida."
|
||||
|
||||
#. The default display name of a map
|
||||
#: src/main/java/fr/moribus/imageonmap/map/ImageMap.java:44
|
||||
msgid "Map"
|
||||
msgstr "Mapa"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/map/MapManagerException.java:29
|
||||
#, java-format
|
||||
msgid "You have too many maps (maximum : {0})."
|
||||
msgstr "Tienes muchos mapas (máximo : {0})."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/map/MapManagerException.java:30
|
||||
msgid "The server ImageOnMap limit has been reached."
|
||||
msgstr "El límite del servidor ImageOnMap ha sido alcanzado."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/map/MapManagerException.java:31
|
||||
msgid "The given map does not exist."
|
||||
msgstr "El mapa no existe."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/MigratorExecutor.java:34
|
||||
msgid "Migration is already running."
|
||||
msgstr "La migración ya está ejecutándose."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/MigratorExecutor.java:50
|
||||
msgid "Waiting for migration to finish..."
|
||||
msgstr "Esperando a que la migración termine..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/MigratorExecutor.java:58
|
||||
msgid ""
|
||||
"Migration thread has been interrupted while waiting to finish. It may not "
|
||||
"have ended correctly."
|
||||
msgstr ""
|
||||
"El hilo de migración se ha interrumpido mientras se esperaba para finalizar. Es posible que no haya sido terminado."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:176
|
||||
msgid "Error while preparing migration"
|
||||
msgstr "Error preparando la migración"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:177
|
||||
msgid "Aborting migration. No change has been made."
|
||||
msgstr "Abortando migración. Ningún cambio ha sido efectuado."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:189
|
||||
msgid "Error while migrating"
|
||||
msgstr "Error migrando"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:190
|
||||
msgid "Aborting migration. Some changes may already have been made."
|
||||
msgstr "Abortando migración. Es posible que algunos cambios ya se hayan efectuado."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:191
|
||||
msgid ""
|
||||
"Before trying to migrate again, you must recover player files from the "
|
||||
"backups, and then move the backups away from the plugin directory to avoid "
|
||||
"overwriting them."
|
||||
msgstr ""
|
||||
"Antes de intentar migrar otra vez, debes recuperar los archivos de los jugadores de "
|
||||
"la copia de seguridad, y moverlo a otro lugar "
|
||||
"para evitar sobreescribirlos."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:203
|
||||
msgid "Looking for configuration files to migrate..."
|
||||
msgstr "Buscando archivos de configuración para migrar..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:206
|
||||
#, java-format
|
||||
msgid "Detected former posters file {0}"
|
||||
msgstr "Archivo de pósters detectado {0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:209
|
||||
#, java-format
|
||||
msgid "Detected former maps file {0}"
|
||||
msgstr "Archivo de mapas encontrado {0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:213
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:416
|
||||
msgid "There is nothing to migrate. Stopping."
|
||||
msgstr "No hay nada que migrar. Deteniendo."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:218
|
||||
msgid "Done."
|
||||
msgstr "Terminado."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:232
|
||||
msgid "Backup directories already exists."
|
||||
msgstr "La carpeta de backup ya existe."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:233
|
||||
msgid ""
|
||||
"This means that a migration has already been done, or may not have ended "
|
||||
"well."
|
||||
msgstr ""
|
||||
"Esto significa que la migración ya se ha ejecutado, o puede que no haya terminado bien."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:234
|
||||
msgid ""
|
||||
"To start a new migration, you must move away the backup directories so they "
|
||||
"are not overwritten."
|
||||
msgstr ""
|
||||
"Para comenzar una nueva migración, debes mover el directorio de backup para que no sea sobreescrito."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:247
|
||||
msgid "Backing up map data before migrating..."
|
||||
msgstr "Creando copia de seguridad antes de migrar..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:271
|
||||
msgid "Backup complete."
|
||||
msgstr "Backup completado."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:352
|
||||
msgid "Fetching UUIDs from Mojang..."
|
||||
msgstr "Extrayendo UUIDs de Mojang..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:359
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:387
|
||||
msgid "An error occurred while fetching the UUIDs from Mojang"
|
||||
msgstr "Un error ocurrió extrayendo los UUIDs de Mojang"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:364
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:392
|
||||
msgid "The migration worker has been interrupted"
|
||||
msgstr "El proceso de migración ha sido interrumpido"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:367
|
||||
#, java-format
|
||||
msgid "Fetching done. {0} UUID have been retrieved."
|
||||
msgid_plural "Fetching done. {0} UUIDs have been retrieved."
|
||||
msgstr[0] "Extracción finalizada. {0} UUID fue extraído."
|
||||
msgstr[1] "Extracción finalizada. {0} UUIDs fueron extraídos."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:378
|
||||
#, java-format
|
||||
msgid "Mojang did not find UUIDs for {0} player at the current time."
|
||||
msgid_plural "Mojang did not find UUIDs for {0} players at the current time."
|
||||
msgstr[0] "Mojang no encontró UUIDs para {0}."
|
||||
msgstr[1] "Mojang no encontró UUIDs para {0}."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:379
|
||||
msgid ""
|
||||
"The Mojang servers limit requests rate at one per second, this may take some "
|
||||
"time..."
|
||||
msgstr ""
|
||||
"Los servidores de Mojang límitan a una solicitud por segundo, puede que esto "
|
||||
"demore..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:398
|
||||
#, java-format
|
||||
msgid "Mojang did not find player data for {0} player"
|
||||
msgid_plural "Mojang did not find player data for {0} players"
|
||||
msgstr[0] "Mojang no encontró información de {0} jugandor"
|
||||
msgstr[1] "Mojang no encontró información de {0} jugadores"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:400
|
||||
msgid "The following players do not exist or do not have paid accounts :"
|
||||
msgstr "Los siguientes jugadores no existen o no tienen cuentas pagas :"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:415
|
||||
msgid "Mojang could not find any of the registered players."
|
||||
msgstr "Mojang no pudo encontrar ninguno de los jugadores registrados."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:425
|
||||
msgid "Merging map data..."
|
||||
msgstr "Uniendo datos de map..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:475
|
||||
#, java-format
|
||||
msgid "{0} registered minecraft map is missing from the save."
|
||||
msgid_plural "{0} registered minecraft maps are missing from the save."
|
||||
msgstr[0] "{0} mapa registrado falta del guardado."
|
||||
msgstr[1] "{0} mapas registrados faltan del guardado."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:476
|
||||
msgid ""
|
||||
"These maps will not be migrated, but this could mean the save has been "
|
||||
"altered or corrupted."
|
||||
msgstr ""
|
||||
"Estos mapas no serán migrados, pero esto podría significar que el guardado "
|
||||
"ha sido alterado o corrupto."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:477
|
||||
#, java-format
|
||||
msgid "The following maps are missing : {0} "
|
||||
msgstr "Los siguientes mapas faltan : {0} "
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:483
|
||||
msgid "Saving changes..."
|
||||
msgstr "Guardando cambios..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:489
|
||||
msgid "Cleaning up old data files..."
|
||||
msgstr "Limpiando archivos viejos..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:496
|
||||
msgid "Deleting old map data file..."
|
||||
msgstr "Borrando archivo de datos viejos..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:501
|
||||
#, java-format
|
||||
msgid "{0} map could not be migrated."
|
||||
msgid_plural "{0} maps could not be migrated."
|
||||
msgstr[0] "{0} mapa no pudo ser migrado."
|
||||
msgstr[1] "{0} mapss no pudieron ser migrados."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:519
|
||||
msgid "Deleting old poster data file..."
|
||||
msgstr "Eliminando archivo de datos de póster viejo ..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:524
|
||||
#, java-format
|
||||
msgid "{0} poster could not be migrated."
|
||||
msgid_plural "{0} posters could not be migrated."
|
||||
msgstr[0] "{0} póster no pudo ser migrado."
|
||||
msgstr[1] "{0} pósters no pudieron ser migrados."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:537
|
||||
msgid "Data that has not been migrated will be kept in the old data files."
|
||||
msgstr "Los datos que no han sido migrados serán conservados en los archivos de datos antiguos."
|
||||
|
||||
#. The name of a map item given to a player, if splatter maps are not used. 0 = map name; 1 = index.
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/MapItemManager.java:139
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/MapItemManager.java:215
|
||||
#, java-format
|
||||
msgid "{0} (part {1})"
|
||||
msgstr "{0} (parte {1})"
|
||||
|
||||
#. The name of a map item given to a player, if splatter maps are not used. 0 = map name; 1 = row; 2 = column.
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/MapItemManager.java:145
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/MapItemManager.java:213
|
||||
#, java-format
|
||||
msgid "{0} (row {1}, column {2})"
|
||||
msgstr "{0} (fila {1}, columna {2})"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/SplatterMapManager.java:44
|
||||
msgid "Splatter Map"
|
||||
msgstr "Mapa Splatter"
|
||||
|
||||
#. Title in a splatter map tooltip
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/SplatterMapManager.java:48
|
||||
msgid "Item frames needed"
|
||||
msgstr "Se necesitan marcos"
|
||||
|
||||
#. Size of a map stored in a splatter map
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/SplatterMapManager.java:56
|
||||
#, java-format
|
||||
msgid "{0} × {1}"
|
||||
msgstr "{0} × {1}"
|
||||
|
||||
#. Size of a map stored in a splatter map, including the total frames count
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/SplatterMapManager.java:62
|
||||
#, java-format
|
||||
msgid "{0} × {1} (total {2} frames)"
|
||||
msgstr "{0} × {1} (total {2} marcos)"
|
||||
|
||||
#. Title in a splatter map tooltip
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/SplatterMapManager.java:53
|
||||
msgid "How to use this?"
|
||||
msgstr "¿Cómo usar esto?"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/SplatterMapManager.java:54
|
||||
msgid ""
|
||||
"Place empty item frames on a wall, enough to host the whole map. Then, right-"
|
||||
"click on the bottom-left frame with this map."
|
||||
msgstr ""
|
||||
"Poner marcos vacios en una pared, los necesarios para albergar todo el mapa. "
|
||||
"Luego, click derecho en el marco en la esquina inferior izquierda con este mapa."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/SplatterMapManager.java:56
|
||||
msgid ""
|
||||
"Shift-click one of the placed maps to remove the whole poster in one shot."
|
||||
msgstr ""
|
||||
"Shift-click en una de los mapas para remover el póster entero de una vez."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/SplatterMapManager.java:101
|
||||
msgid "{ce}There is not enough space to place this map ({0} × {1})."
|
||||
msgstr "{ce}No hay suficiente espacio para poner este mapa ({0} × {1})."
|
||||
|
||||
#New part, added for update (TODO add to other .po file
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/UpdateCommand.java:71
|
||||
msgid "{ce}You must give an URL and a map name to update."
|
||||
msgstr "{ce}Tienes que dar un URL y un nombre para actualizar el mapa."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/UpdateCommand.java:72
|
||||
msgid "{ce}You must give a map name to update.."
|
||||
msgstr "{ce}Debes nombrar el mapa para actualizar.."
|
|
@ -0,0 +1,604 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-05-27 03:07-0300\n"
|
||||
"PO-Revision-Date: 2022-05-27 03:08-0300\n"
|
||||
"Last-Translator: elyrodso\n"
|
||||
"Language-Team: \n"
|
||||
"Language: pt_BR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n < 1 || n > 1);\n"
|
||||
"X-Generator: Poedit 1.8.7.1\n"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/IoMCommand.java:40
|
||||
msgid "You need to give a map name."
|
||||
msgstr "Você precisa dar um nome de mapa."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/IoMCommand.java:57
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteNoConfirmCommand.java:51
|
||||
msgid "This map does not exist."
|
||||
msgstr "Este mapa não existe."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteConfirmCommand.java:39
|
||||
msgid "You are going to delete"
|
||||
msgstr "Você vai deletar"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteConfirmCommand.java:42
|
||||
msgid "Are you sure ? "
|
||||
msgstr "Você tem certeza ? "
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteConfirmCommand.java:44
|
||||
msgid "[Confirm]"
|
||||
msgstr "[Confirmar]"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteConfirmCommand.java:46
|
||||
msgid "{red}This map will be deleted {bold}forever{red}!"
|
||||
msgstr "{red}Este mapa vai ser deletado {bold}para sempre{red}!"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteNoConfirmCommand.java:46
|
||||
msgid "Map successfully deleted."
|
||||
msgstr "Mapa apagado com sucesso."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/GetCommand.java:38
|
||||
msgid "The requested map was too big to fit in your inventory."
|
||||
msgstr "O mapa solicitado era muito grande para caber no seu inventário."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/GetCommand.java:39
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:71
|
||||
msgid "Use '/maptool getremaining' to get the remaining maps."
|
||||
msgstr "Use '/maptool getremaining' para obter os mapas restantes."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/GetRemainingCommand.java:38
|
||||
msgid "You have no remaining map."
|
||||
msgstr "Você não tem mapa restante."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/GetRemainingCommand.java:46
|
||||
msgid ""
|
||||
"Your inventory is full! Make some space before requesting the remaining maps."
|
||||
msgstr ""
|
||||
"Seu inventário está lotado! Limpe um espaço antes de solicitar os mapas restantes."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/GetRemainingCommand.java:50
|
||||
#, java-format
|
||||
msgid "There is {0} map remaining."
|
||||
msgid_plural "There are {0} maps remaining."
|
||||
msgstr[0] "Tem {0} mapa restante."
|
||||
msgstr[1] "Tem {0} mapas restantes."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/ListCommand.java:49
|
||||
msgid "No map found."
|
||||
msgstr "Nenhum mapa encontrado."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/ListCommand.java:53
|
||||
msgid "{white}{bold}{0} map found."
|
||||
msgid_plural "{white}{bold}{0} maps found."
|
||||
msgstr[0] "{white}{bold}{0} mapa encontrado."
|
||||
msgstr[1] "{white}{bold}{0} mapas encontrados."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/ListCommand.java:79
|
||||
msgid "{white}Click{gray} to get this map"
|
||||
msgstr "{white}Clique{gray} para ter este mapa"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/MigrateCommand.java:36
|
||||
msgid "A migration process is already running. Check console for details."
|
||||
msgstr "Um processo de migração já está rodando. Cheque o console para detalhes."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/MigrateCommand.java:40
|
||||
msgid "Migration started. See console for details."
|
||||
msgstr "Migração iniciada. Veja o console para detalhes."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:44
|
||||
msgid "You must give an URL to take the image from."
|
||||
msgstr "Você deve usar uma URL para tirar a imagem."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:52
|
||||
msgid "Invalid URL."
|
||||
msgstr "URL inválida."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:61
|
||||
msgid "Rendering..."
|
||||
msgstr "Renderizando..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:67
|
||||
msgid "Rendering finished!"
|
||||
msgstr "Renderizamento terminado!"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:70
|
||||
msgid "The rendered map was too big to fit in your inventory."
|
||||
msgstr "O mapa renderizado era muito grande para caber no seu inventário."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:78
|
||||
msgid "{ce}Map rendering failed: {0}"
|
||||
msgstr "{ce}Renderizamento de mapa falhou: {0}"
|
||||
|
||||
#. The title of the map deletion GUI. {0}: map name.
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/ConfirmDeleteMapGui.java:102
|
||||
msgid "{0} » {black}Confirm deletion"
|
||||
msgstr "{0} » {black}Confirmar apagamento"
|
||||
|
||||
#. The title of the map deletion item
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/ConfirmDeleteMapGui.java:110
|
||||
msgid "{red}You're about to destroy this map..."
|
||||
msgstr "{red}Você está prestes a destruir este mapa..."
|
||||
|
||||
#. The end, in the lore, of a title starting with “You're about to destroy this map...”.
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/ConfirmDeleteMapGui.java:112
|
||||
msgid "{red}...{italic}forever{red}."
|
||||
msgstr "{red}...{italic}para sempre{red}."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/ConfirmDeleteMapGui.java:114
|
||||
msgid "{gray}Name: {white}{0}"
|
||||
msgstr "{gray}Nome: {white}{0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/ConfirmDeleteMapGui.java:115
|
||||
msgid "{gray}Map ID: {white}{0}"
|
||||
msgstr "{gray}ID do mapa: {white}{0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/ConfirmDeleteMapGui.java:116
|
||||
msgid "{gray}Maps inside: {white}{0}"
|
||||
msgstr "{gray}Interior do Mapa: {white}{0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/ConfirmDeleteMapGui.java:178
|
||||
msgid "{gray}Map successfully deleted."
|
||||
msgstr "{gray}Mapa deletado com sucesso."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:54
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:71
|
||||
msgid "{green}Map part"
|
||||
msgstr "{green}Parte do mapa"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:55
|
||||
msgid "{gray}Column: {white}{0}"
|
||||
msgstr "{gray}Coluna: {white}{0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:56
|
||||
msgid "{gray}Row: {white}{0}"
|
||||
msgstr "{gray}Linha: {white}{0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:58
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:74
|
||||
msgid "{gray}» {white}Click{gray} to get only this part"
|
||||
msgstr "{gray}» {white}Clique{gray} para pegar apenas esta parte"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:72
|
||||
msgid "{gray}Part: {white}{0}"
|
||||
msgstr "{gray}Parte: {white}{0}"
|
||||
|
||||
#. Title of the map details GUI
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:114
|
||||
msgid "Your maps » {black}{0}"
|
||||
msgstr "Seus mapas » {black}{0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:136
|
||||
msgid "{blue}Rename this image"
|
||||
msgstr "{blue}Renomeie esta imagem"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:137
|
||||
msgid ""
|
||||
"{gray}Click here to rename this image; this is used for your own "
|
||||
"organization."
|
||||
msgstr ""
|
||||
"{gray}Clique aqui para renomar esta imagem; isto é usado para sua própria "
|
||||
"organização."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:141
|
||||
msgid "{red}Delete this image"
|
||||
msgstr "{red}Delete esta imagem"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:142
|
||||
msgid ""
|
||||
"{gray}Deletes this map {white}forever{gray}. This action cannot be undone!"
|
||||
msgstr ""
|
||||
"{gray}Delete este mapa {white}forever{gray}. Esta ação não pode ser desfeita!"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:144
|
||||
msgid "{gray}You will be asked to confirm your choice if you click here."
|
||||
msgstr "{gray}Você vai ser solicitado para confirmar sua decisão se clicar aqui."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:156
|
||||
msgid "{green}« Back"
|
||||
msgstr "{green}« Voltar"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:157
|
||||
msgid "{gray}Go back to the list."
|
||||
msgstr "{gray}Volte para a lista."
|
||||
|
||||
#. Displayed subtitle description of a single map on the list GUI
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:44
|
||||
msgid "{white}Single map"
|
||||
msgstr "{white}Único mapa"
|
||||
|
||||
#. Displayed subtitle description of a poster map on the list GUI (columns × rows in english)
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:52
|
||||
msgid "{white}Poster map ({0} × {1})"
|
||||
msgstr "{white}Mapa de cartaz ({0} × {1})"
|
||||
|
||||
#. Displayed subtitle description of a poster map without column data on the list GUI
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:57
|
||||
msgid "{white}Poster map ({0} parts)"
|
||||
msgstr "{white}Mapa de cartaz ({0} parts)"
|
||||
|
||||
#. Displayed title of a map on the list GUI
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:62
|
||||
msgid "{green}{bold}{0}"
|
||||
msgstr "{green}{bold}{0}"
|
||||
|
||||
#. Map ID displayed in the tooltip of a map on the list GUI
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:67
|
||||
msgid "{gray}Map ID: {0}"
|
||||
msgstr "{gray}ID do mapa: {0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:69
|
||||
msgid "{gray}» {white}Left-click{gray} to get this map"
|
||||
msgstr "{gray}» {white}Clique-esquerdo{gray} para pegar este mapa"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:70
|
||||
msgid "{gray}» {white}Right-click{gray} for details and options"
|
||||
msgstr "{gray}» {white}Botão-direito{gray} para detalhes e opções"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:79
|
||||
msgid "{red}You don't have any map."
|
||||
msgstr "{red}Você não tem nenhum mapa."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:80
|
||||
msgid ""
|
||||
"{gray}Get started by creating a new one using {white}/tomap <URL> [resize]"
|
||||
"{gray}!"
|
||||
msgstr ""
|
||||
"{gray}Comece por criar um novo usando {white}/tomap <URL> [resize]"
|
||||
"{gray}!"
|
||||
|
||||
#. The maps list GUI title
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:119
|
||||
msgid "{black}Your maps {reset}({0})"
|
||||
msgstr "{black}Seus mapas {reset}({0})"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:148
|
||||
msgid "{blue}Usage statistics"
|
||||
msgstr "{blue}Estatísticas de uso"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:150
|
||||
msgid "{white}{0}{gray} image rendered"
|
||||
msgid_plural "{white}{0}{gray} images rendered"
|
||||
msgstr[0] "{white}{0}{gray} imagem renderizada"
|
||||
msgstr[1] "{white}{0}{gray} imagens renderizadas"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:151
|
||||
msgid "{white}{0}{gray} Minecraft map used"
|
||||
msgid_plural "{white}{0}{gray} Minecraft maps used"
|
||||
msgstr[0] "{white}{0}{gray} Mapa do Minecraft usado"
|
||||
msgstr[1] "{white}{0}{gray} Mapas do Minecraft usados"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:156
|
||||
msgid "{blue}Minecraft maps limits"
|
||||
msgstr "{blue}Limites dos mapas do Minecraft"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:158
|
||||
msgid "{gray}Server-wide limit: {white}unlimited"
|
||||
msgstr "{gray}Limite Server-wide: {white}ilimitado"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:159
|
||||
msgid "{gray}Server-wide limit: {white}{0}"
|
||||
msgstr "{gray}Limite Server-wide: {white}{0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:161
|
||||
msgid "{gray}Per-player limit: {white}unlimited"
|
||||
msgstr "{gray}Limite por jogador: {white}ilimitado"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:162
|
||||
msgid "{gray}Per-player limit: {white}{0}"
|
||||
msgstr "{gray}Limite por jogador: {white}{0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:164
|
||||
msgid "{white}{0} %{gray} of your quota used"
|
||||
msgstr "{white}{0} %{gray} de sua cota utilizada"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:165
|
||||
msgid "{white}{0}{gray} map left"
|
||||
msgid_plural "{white}{0}{gray} maps left"
|
||||
msgstr[0] "{white}{0}{gray} mapa restante"
|
||||
msgstr[1] "{white}{0}{gray} mapas restantes"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/image/ImageRendererExecutor.java:73
|
||||
#, java-format
|
||||
msgid "HTTP error : {0} {1}"
|
||||
msgstr "Erro HTTP : {0} {1}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/image/ImageRendererExecutor.java:79
|
||||
msgid "The given URL is not a valid image"
|
||||
msgstr "O URL entregue não é uma imagem válida"
|
||||
|
||||
#. The default display name of a map
|
||||
#: src/main/java/fr/moribus/imageonmap/map/ImageMap.java:44
|
||||
msgid "Map"
|
||||
msgstr "Mapa"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/map/MapManagerException.java:29
|
||||
#, java-format
|
||||
msgid "You have too many maps (maximum : {0})."
|
||||
msgstr "Você tem muitos mapas (máximo : {0})."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/map/MapManagerException.java:30
|
||||
msgid "The server ImageOnMap limit has been reached."
|
||||
msgstr "O limite do servidor ImageOnMap foi atingido."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/map/MapManagerException.java:31
|
||||
msgid "The given map does not exist."
|
||||
msgstr "O mapa solicitado não existe."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/MigratorExecutor.java:34
|
||||
msgid "Migration is already running."
|
||||
msgstr "A migração já está rodando."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/MigratorExecutor.java:50
|
||||
msgid "Waiting for migration to finish..."
|
||||
msgstr "Esperando pela migração terminar..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/MigratorExecutor.java:58
|
||||
msgid ""
|
||||
"Migration thread has been interrupted while waiting to finish. It may not "
|
||||
"have ended correctly."
|
||||
msgstr ""
|
||||
"A thread da migração foi interrompido enquanto esperava terminar. Talvez não "
|
||||
"conseguiu terminar corretamente."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:176
|
||||
msgid "Error while preparing migration"
|
||||
msgstr "Erro enquanto migração foi preparada"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:177
|
||||
msgid "Aborting migration. No change has been made."
|
||||
msgstr "Abortando migração. Nenhuma mudança foi realizada."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:189
|
||||
msgid "Error while migrating"
|
||||
msgstr "Erro enquanto migrava"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:190
|
||||
msgid "Aborting migration. Some changes may already have been made."
|
||||
msgstr "Abortando migração. Algumas mudanças talvez já possam ter sido feitas."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:191
|
||||
msgid ""
|
||||
"Before trying to migrate again, you must recover player files from the "
|
||||
"backups, and then move the backups away from the plugin directory to avoid "
|
||||
"overwriting them."
|
||||
msgstr ""
|
||||
"Antes de tentar migrar novamente, você deve recuperar os arquivos de jogadores dos "
|
||||
"backups, e então mover os backups para fora do diretório do plugin para evitar "
|
||||
"sobrepor eles."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:203
|
||||
msgid "Looking for configuration files to migrate..."
|
||||
msgstr "Procurando por arquivos de configuração para migrar..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:206
|
||||
#, java-format
|
||||
msgid "Detected former posters file {0}"
|
||||
msgstr "Detectado arquivo de cartazes anteriores {0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:209
|
||||
#, java-format
|
||||
msgid "Detected former maps file {0}"
|
||||
msgstr "Detectado arquivo de mapas anteriores {0}"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:213
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:416
|
||||
msgid "There is nothing to migrate. Stopping."
|
||||
msgstr "Não há nada para migrar. Parando."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:218
|
||||
msgid "Done."
|
||||
msgstr "Feito."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:232
|
||||
msgid "Backup directories already exists."
|
||||
msgstr "Diretórios de backup já existem."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:233
|
||||
msgid ""
|
||||
"This means that a migration has already been done, or may not have ended "
|
||||
"well."
|
||||
msgstr ""
|
||||
"Isto significa que uma migração já foi feita, ou talvez não tenha terminado "
|
||||
"bem."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:234
|
||||
msgid ""
|
||||
"To start a new migration, you must move away the backup directories so they "
|
||||
"are not overwritten."
|
||||
msgstr ""
|
||||
"Para iniciar uma nova migração, mover os diretórios de backups para fora para eles "
|
||||
"não serem sobrepostos."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:247
|
||||
msgid "Backing up map data before migrating..."
|
||||
msgstr "Criando backup de segurança dos dados do mapa antes de migrar..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:271
|
||||
msgid "Backup complete."
|
||||
msgstr "Backup completo."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:352
|
||||
msgid "Fetching UUIDs from Mojang..."
|
||||
msgstr "Obtendo UUIDs da Mojang..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:359
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:387
|
||||
msgid "An error occurred while fetching the UUIDs from Mojang"
|
||||
msgstr "Um erro ocorreu enquanto obtinha os UUIDs da Mojang"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:364
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:392
|
||||
msgid "The migration worker has been interrupted"
|
||||
msgstr "O trabalho de migração foi interrompido"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:367
|
||||
#, java-format
|
||||
msgid "Fetching done. {0} UUID have been retrieved."
|
||||
msgid_plural "Fetching done. {0} UUIDs have been retrieved."
|
||||
msgstr[0] "Obtenção completa. {0} UUID foi recuperado."
|
||||
msgstr[1] "Obtenção completa. {0} UUIDs foram recuperados."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:378
|
||||
#, java-format
|
||||
msgid "Mojang did not find UUIDs for {0} player at the current time."
|
||||
msgid_plural "Mojang did not find UUIDs for {0} players at the current time."
|
||||
msgstr[0] "Mojang não encontrou UUIDs para {0} jogador no momento."
|
||||
msgstr[1] "Mojang não encontrou UUIDs para {0} jogadores no momento."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:379
|
||||
msgid ""
|
||||
"The Mojang servers limit requests rate at one per second, this may take some "
|
||||
"time..."
|
||||
msgstr ""
|
||||
"Os servidores da Mojang limita os pedidos para um por segundo, isto pode levar um "
|
||||
"tempo..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:398
|
||||
#, java-format
|
||||
msgid "Mojang did not find player data for {0} player"
|
||||
msgid_plural "Mojang did not find player data for {0} players"
|
||||
msgstr[0] "Mojang não encontrou dado de jogador para {0} jogador"
|
||||
msgstr[1] "Mojang não encontrou dados de jogadores para {0} jogadores"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:400
|
||||
msgid "The following players do not exist or do not have paid accounts :"
|
||||
msgstr "Os jogadores seguintes não existem ou não tem contas originais :"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:415
|
||||
msgid "Mojang could not find any of the registered players."
|
||||
msgstr "Mojang não pôde encontrar nenhum dos jogadores registados."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:425
|
||||
msgid "Merging map data..."
|
||||
msgstr "Fundindo dados de mapa..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:475
|
||||
#, java-format
|
||||
msgid "{0} registered minecraft map is missing from the save."
|
||||
msgid_plural "{0} registered minecraft maps are missing from the save."
|
||||
msgstr[0] "{0} mapa minecraft registrado está faltando do save."
|
||||
msgstr[1] "{0} mapas minecraft registrados estão faltando do save."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:476
|
||||
msgid ""
|
||||
"These maps will not be migrated, but this could mean the save has been "
|
||||
"altered or corrupted."
|
||||
msgstr ""
|
||||
"Estes mapas não serão migrados, mas isto pode significar que o save foi "
|
||||
"alterado ou corrompido."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:477
|
||||
#, java-format
|
||||
msgid "The following maps are missing : {0} "
|
||||
msgstr "Os mapas seguintes estão faltando : {0} "
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:483
|
||||
msgid "Saving changes..."
|
||||
msgstr "Salvando mudanças..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:489
|
||||
msgid "Cleaning up old data files..."
|
||||
msgstr "Limpando arquivos de dados antigos..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:496
|
||||
msgid "Deleting old map data file..."
|
||||
msgstr "Deletando arquivo de dados de mapa..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:501
|
||||
#, java-format
|
||||
msgid "{0} map could not be migrated."
|
||||
msgid_plural "{0} maps could not be migrated."
|
||||
msgstr[0] "{0} mapa não pôde ser migrado."
|
||||
msgstr[1] "{0} mapas não puderam ser migrados."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:519
|
||||
msgid "Deleting old poster data file..."
|
||||
msgstr "Deletando arquivo de dados antigos de cartazes..."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:524
|
||||
#, java-format
|
||||
msgid "{0} poster could not be migrated."
|
||||
msgid_plural "{0} posters could not be migrated."
|
||||
msgstr[0] "{0} cartaz não pôde ser migrado."
|
||||
msgstr[1] "{0} cartazes não puderam ser migrados."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:537
|
||||
msgid "Data that has not been migrated will be kept in the old data files."
|
||||
msgstr "Dados que não foram migrados permanecerão nos arquivos antigos de dados."
|
||||
|
||||
#. The name of a map item given to a player, if splatter maps are not used. 0 = map name; 1 = index.
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/MapItemManager.java:139
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/MapItemManager.java:215
|
||||
#, java-format
|
||||
msgid "{0} (part {1})"
|
||||
msgstr "{0} (parte {1})"
|
||||
|
||||
#. The name of a map item given to a player, if splatter maps are not used. 0 = map name; 1 = row; 2 = column.
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/MapItemManager.java:145
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/MapItemManager.java:213
|
||||
#, java-format
|
||||
msgid "{0} (row {1}, column {2})"
|
||||
msgstr "{0} (linha {1}, coluna {2})"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/SplatterMapManager.java:44
|
||||
msgid "Splatter Map"
|
||||
msgstr "Mapa Cortado"
|
||||
|
||||
#. Title in a splatter map tooltip
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/SplatterMapManager.java:48
|
||||
msgid "Item frames needed"
|
||||
msgstr "Molduras necessário"
|
||||
|
||||
#. Size of a map stored in a splatter map
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/SplatterMapManager.java:56
|
||||
#, java-format
|
||||
msgid "{0} × {1}"
|
||||
msgstr "{0} × {1}"
|
||||
|
||||
#. Size of a map stored in a splatter map, including the total frames count
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/SplatterMapManager.java:62
|
||||
#, java-format
|
||||
msgid "{0} × {1} (total {2} frames)"
|
||||
msgstr "{0} × {1} (total {2} frames)"
|
||||
|
||||
#. Title in a splatter map tooltip
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/SplatterMapManager.java:53
|
||||
msgid "How to use this?"
|
||||
msgstr "Como usar isto?"
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/SplatterMapManager.java:54
|
||||
msgid ""
|
||||
"Place empty item frames on a wall, enough to host the whole map. Then, right-"
|
||||
"click on the bottom-left frame with this map."
|
||||
msgstr ""
|
||||
"Posicione molduras vazias na parede, suficiente para hospedar todo o mapa. Então, use botão-"
|
||||
"direito no mapa inferior esquerdo com este mapa."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/SplatterMapManager.java:56
|
||||
msgid ""
|
||||
"Shift-click one of the placed maps to remove the whole poster in one shot."
|
||||
msgstr ""
|
||||
"Shift-clique um dos mapas colocados para remover todo o cartaz de uma vez."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/ui/SplatterMapManager.java:101
|
||||
msgid "{ce}There is not enough space to place this map ({0} × {1})."
|
||||
msgstr "{ce}Não tem espaço suficiente para colocar este mapa ({0} × {1})."
|
||||
|
||||
#New part, added for update (TODO add to other .po file
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/UpdateCommand.java:71
|
||||
msgid "{ce}You must give an URL and a map name to update."
|
||||
msgstr "{ce}Você deve usar uma URL e um nome de mapa para atualizar."
|
||||
|
||||
#: src/main/java/fr/moribus/imageonmap/commands/maptool/UpdateCommand.java:72
|
||||
msgid "{ce}You must give a map name to update.."
|
||||
msgstr "{ce}Você deve usar um nome de mapa para atualizar.."
|
|
@ -1,6 +1,6 @@
|
|||
name: ImageOnMap
|
||||
main: fr.moribus.imageonmap.ImageOnMap
|
||||
version: "4.1.2"
|
||||
version: "4.2.2"
|
||||
api-version: "1.13"
|
||||
|
||||
|
||||
|
@ -30,6 +30,7 @@ permissions:
|
|||
imageonmap.explore: true
|
||||
imageonmap.exploreother: false
|
||||
imageonmap.rename: true
|
||||
imageonmap.placesplattermap: true
|
||||
imageonmap.removesplattermap: true
|
||||
imageonmap.delete: true
|
||||
imageonmap.deleteother: false
|
||||
|
@ -37,6 +38,10 @@ permissions:
|
|||
imageonmap.give: false
|
||||
imageonmap.update: true
|
||||
imageonmap.updateother: false
|
||||
imageonmap.bypassmaplimit: false
|
||||
imageonmap.bypassimagelimit: false
|
||||
imageonmap.bypasswhitelist: true
|
||||
imageonmap.placeinvisiblesplattermap: true
|
||||
|
||||
imageonmap.userender:
|
||||
description: "Allows you to use /tomap and related commands (/maptool getremaining). Alias of imageonmap.new."
|
||||
|
@ -86,6 +91,10 @@ permissions:
|
|||
description: "Allows you to delete a map a player rendered in the past."
|
||||
default: op
|
||||
|
||||
imageonmap.placesplattermap:
|
||||
description: "Allows you to place a splatter map."
|
||||
default: true
|
||||
|
||||
imageonmap.removesplattermap:
|
||||
description: "Allows you to remove a splatter map from a wall by sneaking and breaking a map."
|
||||
default: true
|
||||
|
@ -105,3 +114,19 @@ permissions:
|
|||
imageonmap.updateother:
|
||||
description: "Allows you to update an existing map of an other player with a new image."
|
||||
default: op
|
||||
|
||||
imageonmap.bypassmaplimit:
|
||||
description: "Allows you to bypass permission node check for the number of used map (by default users have an unlimited amount of maps)."
|
||||
default: op
|
||||
|
||||
imageonmap.bypassimagelimit:
|
||||
description: "Allows you to bypass permission node check for the number of images in the playerMapStore (by default users have an unlimited amount of images)."
|
||||
default: op
|
||||
|
||||
imageonmap.bypasswhitelist:
|
||||
description: "Allows you to ignore the restriction on the allow list for image hosting website."
|
||||
default: true
|
||||
|
||||
imageonmap.placeinvisiblesplattermap:
|
||||
description: "Allows you to make the item frame on which you placed your splatter map invisible."
|
||||
default: true
|
||||
|
|
Loading…
Reference in New Issue