Merge branch 'master' of github.com:zDevelopers/ImageOnMap

Conflicts:
	src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteConfirmCommand.java
	src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java
	src/main/resources/i18n/fr_FR.po
This commit is contained in:
Amaury Carrade 2017-03-12 20:12:35 +01:00
commit 195f656f3c
No known key found for this signature in database
GPG Key ID: 73235214BDBB8752
19 changed files with 989 additions and 186 deletions

BIN
icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>fr.moribus</groupId>
<artifactId>ImageOnMap</artifactId>
<version>2.99</version>
<version>3.0</version>
<packaging>jar</packaging>
<properties>

View File

@ -99,7 +99,7 @@ public class ConfirmDeleteMapGui extends ActionGui
protected void onUpdate()
{
/// The title of the map deletion GUI. {0}: map name.
setTitle(I.t("{0} » {black}Confirm deletion", mapToDelete.getName()));
setTitle(I.t(getPlayerLocale(), "{0} » {black}Confirm deletion", mapToDelete.getName()));
setSize(6 * 9);
@ -107,13 +107,13 @@ public class ConfirmDeleteMapGui extends ActionGui
action("", 13, new ItemStackBuilder(Material.EMPTY_MAP)
/// The title of the map deletion item
.title(I.t("{red}You're about to destroy this map..."))
.title(I.t(getPlayerLocale(), "{red}You're about to destroy this map..."))
/// The end, in the lore, of a title starting with You're about to destroy this map....
.lore(I.t("{red}...{italic}forever{red}."))
.lore(I.t(getPlayerLocale(), "{red}...{italic}forever{red}."))
.loreLine()
.lore(I.t("{gray}Name: {white}{0}",mapToDelete.getName()))
.lore(I.t("{gray}Map ID: {white}{0}", mapToDelete.getId()))
.lore(I.t("{gray}Maps inside: {white}{0}", mapToDelete.getMapsIDs().length))
.lore(I.t(getPlayerLocale(), "{gray}Name: {white}{0}",mapToDelete.getName()))
.lore(I.t(getPlayerLocale(), "{gray}Map ID: {white}{0}", mapToDelete.getId()))
.lore(I.t(getPlayerLocale(), "{gray}Maps inside: {white}{0}", mapToDelete.getMapsIDs().length))
.hideAttributes()
);

View File

@ -29,11 +29,12 @@ import fr.zcraft.zlib.components.gui.PromptGui;
import fr.zcraft.zlib.components.i18n.I;
import fr.zcraft.zlib.tools.Callback;
import fr.zcraft.zlib.tools.items.ItemStackBuilder;
import org.apache.commons.lang.ArrayUtils;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
public class MapDetailGui extends ExplorerGui
public class MapDetailGui extends ExplorerGui<Short>
{
private final ImageMap map;
@ -50,11 +51,27 @@ public class MapDetailGui extends ExplorerGui
partMaterial = Material.EMPTY_MAP;
return new ItemStackBuilder(partMaterial)
.title(I.t("{green}Map part"))
.lore(I.t("{gray}Column: {white}{0}", y + 1))
.lore(I.t("{gray}Row: {white}{0}", x + 1))
.title(I.t(getPlayerLocale(), "{green}Map part"))
.lore(I.t(getPlayerLocale(), "{gray}Row: {white}{0}", y + 1))
.lore(I.t(getPlayerLocale(), "{gray}Column: {white}{0}", x + 1))
.loreLine()
.lore(I.t("{gray}» {white}Click{gray} to get only this part"))
.lore(I.t(getPlayerLocale(), "{gray}» {white}Click{gray} to get only this part"))
.item();
}
@Override
protected ItemStack getViewItem(Short mapId)
{
int index = ((PosterMap) map).getIndex(mapId);
Material partMaterial = Material.PAPER;
if(index % 2 == 0)
partMaterial = Material.EMPTY_MAP;
return new ItemStackBuilder(partMaterial)
.title(I.t(getPlayerLocale(), "{green}Map part"))
.lore(I.t(getPlayerLocale(), "{gray}Part: {white}{0}", index + 1))
.loreLine()
.lore(I.t(getPlayerLocale(), "{gray}» {white}Click{gray} to get only this part"))
.item();
}
@ -73,6 +90,13 @@ public class MapDetailGui extends ExplorerGui
throw new IllegalStateException("Unsupported map type: " + map.getType());
}
@Override
protected ItemStack getPickedUpItem(Short mapId)
{
PosterMap poster = (PosterMap) map;
return MapItemManager.createMapItem(poster, poster.getIndex(mapId));
}
@Override
protected ItemStack getEmptyViewItem()
{
@ -87,25 +111,37 @@ public class MapDetailGui extends ExplorerGui
protected void onUpdate()
{
/// Title of the map details GUI
setTitle(I.t("Your maps » {black}{0}", map.getName()));
setTitle(I.t(getPlayerLocale(), "Your maps » {black}{0}", map.getName()));
setKeepHorizontalScrollingSpace(true);
if(map instanceof PosterMap)
setDataShape(((PosterMap) map).getColumnCount(), ((PosterMap) map).getRowCount());
{
PosterMap poster = (PosterMap) map;
if(poster.hasColumnData())
{
setDataShape(poster.getColumnCount(), poster.getRowCount());
}
else
{
setData(ArrayUtils.toObject(poster.getMapsIDs()));
}
}
else
setData(null); // Fallback to the empty view item.
{
setDataShape(1,1);
}
action("rename", getSize() - 7, new ItemStackBuilder(Material.BOOK_AND_QUILL)
.title(I.t("{blue}Rename this image"))
.longLore(I.t("{gray}Click here to rename this image; this is used for your own organization."))
.title(I.t(getPlayerLocale(), "{blue}Rename this image"))
.longLore(I.t(getPlayerLocale(), "{gray}Click here to rename this image; this is used for your own organization."))
);
action("delete", getSize() - 6, new ItemStackBuilder(Material.BARRIER)
.title(I.t("{red}Delete this image"))
.longLore(I.t("{gray}Deletes this map {white}forever{gray}. This action cannot be undone!"))
.title(I.t(getPlayerLocale(), "{red}Delete this image"))
.longLore(I.t(getPlayerLocale(), "{gray}Deletes this map {white}forever{gray}. This action cannot be undone!"))
.loreLine()
.longLore(I.t("{gray}You will be asked to confirm your choice if you click here."))
.longLore(I.t(getPlayerLocale(), "{gray}You will be asked to confirm your choice if you click here."))
);
@ -117,8 +153,8 @@ public class MapDetailGui extends ExplorerGui
backSlot++;
action("back", backSlot, new ItemStackBuilder(Material.EMERALD)
.title(I.t("{green}« Back"))
.lore(I.t("{gray}Go back to the list."))
.title(I.t(getPlayerLocale(), "{green}« Back"))
.lore(I.t(getPlayerLocale(), "{gray}Go back to the list."))
);
}
@ -133,12 +169,12 @@ public class MapDetailGui extends ExplorerGui
{
if (newName == null || newName.isEmpty())
{
getPlayer().sendMessage(I.t("{ce}Map names can't be empty."));
I.sendT(getPlayer(), "{ce}Map names can't be empty.");
return;
}
map.rename(newName);
getPlayer().sendMessage(I.t("{cs}Map successfully renamed."));
I.sendT(getPlayer(), "{cs}Map successfully renamed.");
}
}, map.getName(), this);
}

View File

@ -39,23 +39,35 @@ public class MapListGui extends ExplorerGui<ImageMap>
{
String mapDescription;
if (map instanceof SingleMap)
{
/// Displayed subtitle description of a single map on the list GUI
mapDescription = I.t("{white}Single map");
mapDescription = I.t(getPlayerLocale(), "{white}Single map");
}
else
/// Displayed subtitle description of a poster map on the list GUI (columns × rows in english)
mapDescription = I.t("{white}Poster map ({0} × {1})", ((PosterMap) map).getColumnCount(), ((PosterMap) map).getRowCount());
{
PosterMap poster = (PosterMap) map;
if(poster.hasColumnData())
{
/// Displayed subtitle description of a poster map on the list GUI (columns × rows in english)
mapDescription = I.t(getPlayerLocale(), "{white}Poster map ({0} × {1})", poster.getColumnCount(), poster.getRowCount());
}
else
{
/// Displayed subtitle description of a poster map without column data on the list GUI
mapDescription = I.t(getPlayerLocale(), "{white}Poster map ({0} parts)", poster.getMapCount());
}
}
return new ItemStackBuilder(Material.MAP)
/// Displayed title of a map on the list GUI
.title(I.t("{green}{bold}{0}", map.getName()))
.title(I.t(getPlayerLocale(), "{green}{bold}{0}", map.getName()))
.lore(mapDescription)
.loreLine()
/// Map ID displayed in the tooltip of a map on the list GUI
.lore(I.t("{gray}Map ID: {0}", map.getId()))
.lore(I.t(getPlayerLocale(), "{gray}Map ID: {0}", map.getId()))
.loreLine()
.lore(I.t("{gray}» {white}Left-click{gray} to get this map"))
.lore(I.t("{gray}» {white}Right-click{gray} for details and options"))
.lore(I.t(getPlayerLocale(), "{gray}» {white}Left-click{gray} to get this map"))
.lore(I.t(getPlayerLocale(), "{gray}» {white}Right-click{gray} for details and options"))
.item();
}
@ -64,8 +76,8 @@ public class MapListGui extends ExplorerGui<ImageMap>
protected ItemStack getEmptyViewItem()
{
return new ItemStackBuilder(Material.BARRIER)
.title(I.t("{red}You don't have any map."))
.longLore(I.t("{gray}Get started by creating a new one using {white}/tomap <URL> [resize]{gray}!"))
.title(I.t(getPlayerLocale(), "{red}You don't have any map."))
.longLore(I.t(getPlayerLocale(), "{gray}Get started by creating a new one using {white}/tomap <URL> [resize]{gray}!"))
.item();
}
@ -84,7 +96,13 @@ public class MapListGui extends ExplorerGui<ImageMap>
}
else if (map instanceof PosterMap)
{
return SplatterMapManager.makeSplatterMap((PosterMap) map);
PosterMap poster = (PosterMap) map;
if(poster.hasColumnData())
return SplatterMapManager.makeSplatterMap((PosterMap) map);
MapItemManager.giveParts(getPlayer(), poster);
return null;
}
MapItemManager.give(getPlayer(), map);
@ -97,7 +115,7 @@ public class MapListGui extends ExplorerGui<ImageMap>
ImageMap[] maps = MapManager.getMaps(getPlayer().getUniqueId());
setData(maps);
/// The maps list GUI title
setTitle(I.t("{black}Your maps {reset}({0})", maps.length));
setTitle(I.t(getPlayerLocale(), "{black}Your maps {reset}({0})", maps.length));
setKeepHorizontalScrollingSpace(true);
@ -126,24 +144,24 @@ public class MapListGui extends ExplorerGui<ImageMap>
double percentageUsed = mapPartLeft < 0 ? 0 : ((double) mapPartCount) / ((double) (mapPartCount + mapPartLeft)) * 100;
ItemStackBuilder statistics = new ItemStackBuilder(Material.ENCHANTED_BOOK)
.title(I.t("{blue}Usage statistics"))
.title(I.t(getPlayerLocale(), "{blue}Usage statistics"))
.loreLine()
.lore(I.tn("{white}{0}{gray} image rendered", "{white}{0}{gray} images rendered", imagesCount))
.lore(I.tn("{white}{0}{gray} Minecraft map used", "{white}{0}{gray} Minecraft maps used", mapPartCount));
.lore(I.tn(getPlayerLocale(), "{white}{0}{gray} image rendered", "{white}{0}{gray} images rendered", imagesCount))
.lore(I.tn(getPlayerLocale(), "{white}{0}{gray} Minecraft map used", "{white}{0}{gray} Minecraft maps used", mapPartCount));
if(mapPartLeft >= 0)
{
statistics
.lore("", I.t("{blue}Minecraft maps limits"), "")
.lore("", I.t(getPlayerLocale(), "{blue}Minecraft maps limits"), "")
.lore(mapGlobalLimit == 0
? I.t("{gray}Server-wide limit: {white}unlimited")
: I.t("{gray}Server-wide limit: {white}{0}", mapGlobalLimit))
? I.t(getPlayerLocale(), "{gray}Server-wide limit: {white}unlimited")
: I.t(getPlayerLocale(), "{gray}Server-wide limit: {white}{0}", mapGlobalLimit))
.lore(mapPersonalLimit == 0
? I.t("{gray}Per-player limit: {white}unlimited")
: I.t("{gray}Per-player limit: {white}{0}", mapPersonalLimit))
? I.t(getPlayerLocale(), "{gray}Per-player limit: {white}unlimited")
: I.t(getPlayerLocale(), "{gray}Per-player limit: {white}{0}", mapPersonalLimit))
.loreLine()
.lore(I.t("{white}{0} %{gray} of your quota used", (int) Math.rint(percentageUsed)))
.lore(I.tn("{white}{0}{gray} map left", "{white}{0}{gray} maps left", mapPartLeft));
.lore(I.t(getPlayerLocale(), "{white}{0} %{gray} of your quota used", (int) Math.rint(percentageUsed)))
.lore(I.tn(getPlayerLocale(), "{white}{0}{gray} map left", "{white}{0}{gray} maps left", mapPartLeft));
}
statistics.hideAttributes();

View File

@ -28,8 +28,10 @@ import org.bukkit.entity.Entity;
import org.bukkit.entity.ItemFrame;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerItemHeldEvent;
import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.event.world.ChunkLoadEvent;
@ -95,17 +97,22 @@ public class MapInitEvent implements Listener
}
}
static protected void initMap(ItemStack item)
static public void initMap(ItemStack item)
{
if (item != null && item.getType() == Material.MAP)
{
MapView map = Bukkit.getMap(item.getDurability());
initMap(map);
initMap(item.getDurability());
}
}
static protected void initMap(MapView map)
static public void initMap(short id)
{
initMap(Bukkit.getMap(id));
}
static public void initMap(MapView map)
{
if(map == null) return;
if(Renderer.isHandled(map)) return;
File imageFile = ImageOnMap.getPlugin().getImageFile(map.getId());

View File

@ -18,6 +18,7 @@
package fr.moribus.imageonmap.image;
import fr.zcraft.zlib.tools.PluginLogger;
import java.awt.image.BufferedImage;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
@ -29,6 +30,7 @@ public class Renderer extends MapRenderer
{
static public boolean isHandled(MapView map)
{
if(map == null) return false;
for(MapRenderer renderer : map.getRenderers())
{
if(renderer instanceof Renderer) return true;
@ -46,7 +48,15 @@ public class Renderer extends MapRenderer
static public void installRenderer(BufferedImage image, short mapID)
{
installRenderer(Bukkit.getMap(mapID)).setImage(image);
MapView map = Bukkit.getMap(mapID);
if(map == null)
{
PluginLogger.warning("Could not install renderer for map {0} : the Minecraft map does not exist", mapID);
}
else
{
installRenderer(map).setImage(image);
}
}
static public Renderer installRenderer(MapView map)

View File

@ -307,6 +307,23 @@ abstract public class MapManager
return mapCount;
}
/**
* Returns if the given map ID is valid and exists in the current save.
* @param mapId the map ID.
* @return true if the given map ID is valid and exists in the current save, false otherwise.
*/
static public boolean mapIdExists(short mapId)
{
try
{
return Bukkit.getMap(mapId) != null;
}
catch(Throwable ex)
{
return false;
}
}
static private PlayerMapStore getPlayerMapStore(UUID playerUUID)
{
PlayerMapStore store;

View File

@ -223,7 +223,7 @@ public class PlayerMapStore implements ConfigurationSerializable
try { checkMapLimit(0); }
catch(MapManagerException ex)
{
PluginLogger.warning("Map limit exceeded for player '{0}' ({1} maps loaded)",
PluginLogger.warning("Map limit exceeded for player {0} ({1} maps loaded)",
playerUUID.toString(),mapList.size());
}
}

View File

@ -108,13 +108,13 @@ public class PosterMap extends ImageMap
public int getColumnAt(int i)
{
if(columnCount == 0) return 0;
return (i % columnCount) + 1;
return (i % columnCount);
}
public int getRowAt(int i)
{
if(columnCount == 0) return 0;
return (i / columnCount) + 1;
return (i / columnCount);
}
public int getIndexAt(int col, int row)
@ -140,7 +140,6 @@ public class PosterMap extends ImageMap
{
int x = index % (columnCount);
int y = index / (columnCount);
System.out.println(x + " : " + (rowCount - y - 1) + " (" + index);
return getMapIdAt(x, rowCount - y - 1);
}

View File

@ -19,6 +19,7 @@
package fr.moribus.imageonmap.migration;
import fr.moribus.imageonmap.map.ImageMap;
import fr.moribus.imageonmap.map.MapManager;
import fr.moribus.imageonmap.map.SingleMap;
import java.util.ArrayList;
import java.util.List;
@ -73,6 +74,11 @@ class OldSavedMap
configuration.set(mapName, data);
}
public boolean isMapValid()
{
return MapManager.mapIdExists(mapId);
}
public short getMapId() {return mapId;}
public String getUserName() {return userName;}
}

View File

@ -19,6 +19,7 @@
package fr.moribus.imageonmap.migration;
import fr.moribus.imageonmap.map.ImageMap;
import fr.moribus.imageonmap.map.MapManager;
import fr.moribus.imageonmap.map.PosterMap;
import java.util.ArrayList;
import java.util.List;
@ -94,5 +95,16 @@ class OldSavedPoster
}
public boolean isMapValid()
{
for(short mapId : mapsIds)
{
if(!MapManager.mapIdExists(mapId))
return false;
}
return true;
}
public String getUserName() {return userName;}
public short[] getMapsIds() {return mapsIds;}
}

View File

@ -39,9 +39,12 @@ import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Map;
import java.util.UUID;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
/**
* This class represents and executes the ImageOnMap v3.x migration process
@ -241,7 +244,7 @@ public class V3Migrator implements Runnable
*/
private void backupMapData() throws IOException
{
PluginLogger.info("Backing up map data before migrating...");
PluginLogger.info(I.t("Backing up map data before migrating..."));
if(!backupsPrev3Directory.exists()) backupsPrev3Directory.mkdirs();
if(!backupsPostv3Directory.exists()) backupsPostv3Directory.mkdirs();
@ -265,7 +268,7 @@ public class V3Migrator implements Runnable
verifiedBackupCopy(mapFile, backupFile);
}
PluginLogger.info("Backup complete.");
PluginLogger.info(I.t("Backup complete."));
}
/**
@ -301,12 +304,13 @@ public class V3Migrator implements Runnable
try
{
oldPoster = new OldSavedPoster(oldPosters.get(key), key);
userNamesToFetch.add(oldPoster.getUserName());
postersToMigrate.add(oldPoster);
if(!userNamesToFetch.contains(oldPoster.getUserName()))
userNamesToFetch.add(oldPoster.getUserName());
}
catch(InvalidConfigurationException ex)
{
PluginLogger.warning("Could not read poster data for key '{0}'", ex, key);
PluginLogger.warning("Could not read poster data for key {0}", ex, key);
}
}
}
@ -324,6 +328,9 @@ public class V3Migrator implements Runnable
oldMap = new OldSavedMap(oldMaps.get(key));
if(!posterContains(oldMap)) mapsToMigrate.add(oldMap);
if(!userNamesToFetch.contains(oldMap.getUserName()))
userNamesToFetch.add(oldMap.getUserName());
}
catch(InvalidConfigurationException ex)
{
@ -420,6 +427,8 @@ public class V3Migrator implements Runnable
ArrayDeque<OldSavedMap> remainingMaps = new ArrayDeque<>();
ArrayDeque<OldSavedPoster> remainingPosters = new ArrayDeque<>();
ArrayDeque<Short> missingMapIds = new ArrayDeque<>();
UUID playerUUID;
OldSavedMap map;
while(!mapsToMigrate.isEmpty())
@ -430,6 +439,10 @@ public class V3Migrator implements Runnable
{
remainingMaps.add(map);
}
else if(!map.isMapValid())
{
missingMapIds.add(map.getMapId());
}
else
{
MapManager.insertMap(map.toImageMap(playerUUID));
@ -446,12 +459,23 @@ public class V3Migrator implements Runnable
{
remainingPosters.add(poster);
}
else if(!poster.isMapValid())
{
missingMapIds.addAll(Arrays.asList(ArrayUtils.toObject(poster.getMapsIds())));
}
else
{
MapManager.insertMap(poster.toImageMap(playerUUID));
}
}
postersToMigrate.addAll(remainingPosters);
if(!missingMapIds.isEmpty())
{
PluginLogger.warning(I.tn("{0} registered minecraft map is missing from the save.", "{0} registered minecraft maps are missing from the save.", missingMapIds.size()));
PluginLogger.warning(I.t("These maps will not be migrated, but this could mean the save has been altered or corrupted."));
PluginLogger.warning(I.t("The following maps are missing : {0} ", StringUtils.join(missingMapIds, ',')));
}
}
private void saveChanges()

View File

@ -31,6 +31,7 @@ import org.bukkit.Material;
import org.bukkit.entity.ItemFrame;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
@ -72,9 +73,32 @@ public class MapItemManager implements Listener
static public boolean give(Player player, PosterMap map)
{
if(!map.hasColumnData())
return giveParts(player, map);
return give(player, SplatterMapManager.makeSplatterMap(map));
}
static public boolean giveParts(Player player, PosterMap map)
{
boolean inventoryFull = false;
ItemStack mapPartItem;
for(int i = 0, c = map.getMapCount(); i < c; i++)
{
if(map.hasColumnData())
{
mapPartItem = createMapItem(map, map.getColumnAt(i), map.getRowAt(i));
}
else
{
mapPartItem = createMapItem(map, i);
}
inventoryFull = give(player, mapPartItem) || inventoryFull;
}
return inventoryFull;
}
static public int giveCache(Player player)
{
Queue<ItemStack> cache = getCache(player);
@ -109,19 +133,26 @@ public class MapItemManager implements Listener
return createMapItem(map.getMapsIDs()[0], map.getName());
}
static public ItemStack createMapItem(PosterMap map, int index)
{
/// The name of a map item given to a player, if splatter maps are not used. 0 = map name; 1 = index.
return createMapItem(map.getMapIdAt(index), getMapTitle(map, index));
}
static public ItemStack createMapItem(PosterMap map, int x, int y)
{
String mapName;
if(map.hasColumnData())
{
/// The name of a map item given to a player, if splatter maps are not used. 0 = map name; 1 = row; 2 = column.
mapName = I.t("{0} (row {1}, column {2})", map.getName(), x, y);
}
else
{
mapName = map.getName();
}
return createMapItem(map.getMapIdAt(x, y), mapName);
/// The name of a map item given to a player, if splatter maps are not used. 0 = map name; 1 = row; 2 = column.
return createMapItem(map.getMapIdAt(x, y), getMapTitle(map, y, x));
}
static public String getMapTitle(PosterMap map, int row, int column)
{
return I.t("{0} (row {1}, column {2})", map.getName(), row + 1, column + 1);
}
static public String getMapTitle(PosterMap map, int index)
{
return I.t("{0} (part {1})", map.getName(), index + 1);
}
static public ItemStack createMapItem(short mapID, String text)
@ -148,10 +179,7 @@ public class MapItemManager implements Listener
{
if(map instanceof PosterMap && ((PosterMap) map).hasColumnData())
{
return MapItemManager.createMapItem(
((PosterMap) map).getMapIdAt(x, y),
I.t("{0} (row {1}, column {2})", map.getName(), y + 1, x + 1)
);
return MapItemManager.createMapItem((PosterMap) map, x, y);
}
else
{
@ -191,7 +219,10 @@ public class MapItemManager implements Listener
{
PosterMap poster = (PosterMap) map;
int index = poster.getIndex(item.getDurability());
return I.t("{0} (row {1}, column {2})", map.getName(), poster.getRowAt(index), poster.getColumnAt(index));
if(poster.hasColumnData())
return getMapTitle(poster, poster.getRowAt(index), poster.getColumnAt(index));
return getMapTitle(poster, index);
}
}
@ -199,10 +230,12 @@ public class MapItemManager implements Listener
{
if(frame.getItem().getType() != Material.AIR) return;
if(!MapManager.managesMap(player.getItemInHand())) return;
event.setCancelled(true);
if(SplatterMapManager.hasSplatterAttributes(player.getItemInHand()))
{
SplatterMapManager.placeSplatterMap(frame, player);
if(!SplatterMapManager.placeSplatterMap(frame, player))
return;
}
else
{
@ -210,7 +243,6 @@ public class MapItemManager implements Listener
frame.setItem(is);
}
event.setCancelled(true);
ItemUtils.consumeItem(player);
}
@ -225,32 +257,37 @@ public class MapItemManager implements Listener
if(poster != null)
{
event.setCancelled(true);
if(player.getGameMode() == GameMode.CREATIVE)
{
if(!SplatterMapManager.hasSplatterMap(player, poster))
poster.give(player);
}
if(player.getGameMode() != GameMode.CREATIVE || !SplatterMapManager.hasSplatterMap(player, poster))
poster.give(player);
return;
}
}
if(!MapManager.managesMap(frame.getItem())) return;
frame.setItem(ItemUtils.setDisplayName(item, getMapTitle(item)));
frame.setItem(new ItemStackBuilder(item)
.title(getMapTitle(item))
.hideAttributes()
.item());
}
@EventHandler
@EventHandler(priority = EventPriority.HIGHEST)
static public void onEntityDamage(EntityDamageByEntityEvent event)
{
if(event.isCancelled()) return;
if(!(event.getEntity() instanceof ItemFrame)) return;
if(!(event.getDamager() instanceof Player)) return;
onItemFrameRemove((ItemFrame)event.getEntity(), (Player)event.getDamager(), event);
}
@EventHandler
@EventHandler(priority = EventPriority.HIGHEST)
static public void onEntityInteract(PlayerInteractEntityEvent event)
{
if(event.isCancelled()) return;
if(!(event.getRightClicked() instanceof ItemFrame)) return;
onItemFramePlace((ItemFrame)event.getRightClicked(), event.getPlayer(), event);

View File

@ -75,7 +75,7 @@ public class PosterWall
int mapIndex = map.getIndex(mapId);
int x = map.getColumnAt(mapIndex), y = map.getRowAt(mapIndex);
return getMatchingMapFrames(map, location.clone().add(-x + 1, y - 1));
return getMatchingMapFrames(map, location.clone().add(-x, y));
}
static public ItemFrame[] getMatchingMapFrames(PosterMap map, FlatLocation location)
@ -87,8 +87,6 @@ public class PosterWall
{
for(int x = 0; x < map.getColumnCount(); ++x)
{
//Location newLocation = WorldUtils.addToLocation(topLeftLocation, x, -y, facing);
//System.out.println("Checking : " + loc);
int mapIndex = map.getIndexAt(x, y);
ItemFrame frame = getMapFrameAt(loc, map);
if(frame != null) frames[mapIndex] = frame;

View File

@ -18,6 +18,7 @@
package fr.moribus.imageonmap.ui;
import fr.moribus.imageonmap.image.MapInitEvent;
import fr.moribus.imageonmap.map.ImageMap;
import fr.moribus.imageonmap.map.MapManager;
import fr.moribus.imageonmap.map.PosterMap;
@ -105,7 +106,9 @@ abstract public class SplatterMapManager
int i = 0;
for(ItemFrame frame : wall.frames)
{
frame.setItem(new ItemStack(Material.MAP, 1, poster.getMapIdAtReverseY(i)));
short id = poster.getMapIdAtReverseY(i);
frame.setItem(new ItemStack(Material.MAP, 1, id));
MapInitEvent.initMap(id);
++i;
}
@ -117,6 +120,7 @@ abstract public class SplatterMapManager
ImageMap map = MapManager.getMap(startFrame.getItem());
if(map == null || !(map instanceof PosterMap)) return null;
PosterMap poster = (PosterMap) map;
if(!poster.hasColumnData()) return null;
FlatLocation loc = new FlatLocation(startFrame.getLocation(), startFrame.getFacing());
ItemFrame[] matchingFrames = PosterWall.getMatchingMapFrames(poster, loc, startFrame.getItem().getDurability());
if(matchingFrames == null) return null;

View File

@ -0,0 +1,589 @@
# 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: 2016-07-10 03:07+0200\n"
"PO-Revision-Date: 2016-07-10 03:08+0200\n"
"Last-Translator: Adrien Prokopowicz\n"
"Language-Team: \n"
"Language: en_US\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 "You need to give a map name."
#: 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 "This map does not exist."
#: src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteConfirmCommand.java:39
msgid "You are going to delete"
msgstr "You are going to delete"
#: src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteConfirmCommand.java:42
msgid "Are you sure ? "
msgstr "Are you sure ? "
#: src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteConfirmCommand.java:44
msgid "[Confirm]"
msgstr "[Confirm]"
#: src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteConfirmCommand.java:46
msgid "{red}This map will be deleted {bold}forever{red}!"
msgstr "{red}This map will be deleted {bold}forever{red}!"
#: src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteNoConfirmCommand.java:46
msgid "Map successfully deleted."
msgstr "Map successfully deleted."
#: src/main/java/fr/moribus/imageonmap/commands/maptool/GetCommand.java:38
msgid "The requested map was too big to fit in your inventory."
msgstr "The requested map was too big to fit in your inventory."
#: 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' to get the remaining maps."
#: src/main/java/fr/moribus/imageonmap/commands/maptool/GetRemainingCommand.java:38
msgid "You have no remaining map."
msgstr "You have no remaining map."
#: 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 ""
"Your inventory is full! Make some space before requesting the remaining maps."
#: 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] "There is {0} map remaining."
msgstr[1] "There are {0} maps remaining."
#: src/main/java/fr/moribus/imageonmap/commands/maptool/ListCommand.java:49
msgid "No map found."
msgstr "No map found."
#: 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} map found."
msgstr[1] "{white}{bold}{0} maps found."
#: src/main/java/fr/moribus/imageonmap/commands/maptool/ListCommand.java:79
msgid "{white}Click{gray} to get this map"
msgstr "{white}Click{gray} to get this map"
#: src/main/java/fr/moribus/imageonmap/commands/maptool/MigrateCommand.java:36
msgid "A migration process is already running. Check console for details."
msgstr "A migration process is already running. Check console for details."
#: src/main/java/fr/moribus/imageonmap/commands/maptool/MigrateCommand.java:40
msgid "Migration started. See console for details."
msgstr "Migration started. See console for details."
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:44
msgid "You must give an URL to take the image from."
msgstr "You must give an URL to take the image from."
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:52
msgid "Invalid URL."
msgstr "Invalid URL."
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:61
msgid "Rendering..."
msgstr "Rendering..."
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:67
msgid "{cst}Rendering finished!"
msgstr "{cst}Rendering finished!"
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:70
msgid "The rendered map was too big to fit in your inventory."
msgstr "The rendered map was too big to fit in your inventory."
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:78
msgid "{ce}Map rendering failed: {0}"
msgstr "{ce}Map rendering failed: {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}Confirm deletion"
#. 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}You're about to destroy this map..."
#. 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}forever{red}."
#: src/main/java/fr/moribus/imageonmap/gui/ConfirmDeleteMapGui.java:114
msgid "{gray}Name: {white}{0}"
msgstr "{gray}Name: {white}{0}"
#: src/main/java/fr/moribus/imageonmap/gui/ConfirmDeleteMapGui.java:115
msgid "{gray}Map ID: {white}{0}"
msgstr "{gray}Map ID: {white}{0}"
#: src/main/java/fr/moribus/imageonmap/gui/ConfirmDeleteMapGui.java:116
msgid "{gray}Maps inside: {white}{0}"
msgstr "{gray}Maps inside: {white}{0}"
#: src/main/java/fr/moribus/imageonmap/gui/ConfirmDeleteMapGui.java:178
msgid "{gray}Map successfully deleted."
msgstr "{gray}Map successfully deleted."
#: 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}Map part"
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:55
msgid "{gray}Column: {white}{0}"
msgstr "{gray}Column: {white}{0}"
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:56
msgid "{gray}Row: {white}{0}"
msgstr "{gray}Row: {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} to get only this part"
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:72
msgid "{gray}Part: {white}{0}"
msgstr "{gray}Part: {white}{0}"
#. Title of the map details GUI
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:114
msgid "Your maps » {black}{0}"
msgstr "Your maps » {black}{0}"
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:136
msgid "{blue}Rename this image"
msgstr "{blue}Rename this image"
#: 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 here to rename this image; this is used for your own "
"organization."
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:141
msgid "{red}Delete this image"
msgstr "{red}Delete this image"
#: 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}Deletes this map {white}forever{gray}. This action cannot be undone!"
#: 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}You will be asked to confirm your choice if you click here."
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:156
msgid "{green}« Back"
msgstr "{green}« Back"
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:157
msgid "{gray}Go back to the list."
msgstr "{gray}Go back to the list."
#. 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}Single map"
#. 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}Poster map ({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}Poster map ({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}Map 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}Left-click{gray} to get this map"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:70
msgid "{gray}» {white}Right-click{gray} for details and options"
msgstr "{gray}» {white}Right-click{gray} for details and options"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:79
msgid "{red}You don't have any map."
msgstr "{red}You don't have any map."
#: 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}Get started by creating a new one using {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}Your maps {reset}({0})"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:148
msgid "{blue}Usage statistics"
msgstr "{blue}Usage statistics"
#: 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} image rendered"
msgstr[1] "{white}{0}{gray} images rendered"
#: 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} Minecraft map used"
msgstr[1] "{white}{0}{gray} Minecraft maps used"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:156
msgid "{blue}Minecraft maps limits"
msgstr "{blue}Minecraft maps limits"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:158
msgid "{gray}Server-wide limit: {white}unlimited"
msgstr "{gray}Server-wide limit: {white}unlimited"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:159
msgid "{gray}Server-wide limit: {white}{0}"
msgstr "{gray}Server-wide limit: {white}{0}"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:161
msgid "{gray}Per-player limit: {white}unlimited"
msgstr "{gray}Per-player limit: {white}unlimited"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:162
msgid "{gray}Per-player limit: {white}{0}"
msgstr "{gray}Per-player limit: {white}{0}"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:164
msgid "{white}{0} %{gray} of your quota used"
msgstr "{white}{0} %{gray} of your quota used"
#: 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} map left"
msgstr[1] "{white}{0}{gray} maps left"
#: 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 "The given URL is not a valid image"
#. The default display name of a map
#: src/main/java/fr/moribus/imageonmap/map/ImageMap.java:44
msgid "Map"
msgstr "Map"
#: src/main/java/fr/moribus/imageonmap/map/MapManagerException.java:29
#, java-format
msgid "You have too many maps (maximum : {0})."
msgstr "You have too many maps (maximum : {0})."
#: src/main/java/fr/moribus/imageonmap/map/MapManagerException.java:30
msgid "The server ImageOnMap limit has been reached."
msgstr "The server ImageOnMap limit has been reached."
#: src/main/java/fr/moribus/imageonmap/map/MapManagerException.java:31
msgid "The given map does not exist."
msgstr "The given map does not exist."
#: src/main/java/fr/moribus/imageonmap/migration/MigratorExecutor.java:34
msgid "Migration is already running."
msgstr "Migration is already running."
#: src/main/java/fr/moribus/imageonmap/migration/MigratorExecutor.java:50
msgid "Waiting for migration to finish..."
msgstr "Waiting for migration to finish..."
#: 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 ""
"Migration thread has been interrupted while waiting to finish. It may not "
"have ended correctly."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:176
msgid "Error while preparing migration"
msgstr "Error while preparing migration"
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:177
msgid "Aborting migration. No change has been made."
msgstr "Aborting migration. No change has been made."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:189
msgid "Error while migrating"
msgstr "Error while migrating"
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:190
msgid "Aborting migration. Some changes may already have been made."
msgstr "Aborting migration. Some changes may already have been made."
#: 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 ""
"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."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:203
msgid "Looking for configuration files to migrate..."
msgstr "Looking for configuration files to migrate..."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:206
#, java-format
msgid "Detected former posters file {0}"
msgstr "Detected former posters file {0}"
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:209
#, java-format
msgid "Detected former maps file {0}"
msgstr "Detected former maps file {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 "There is nothing to migrate. Stopping."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:218
msgid "Done."
msgstr "Done."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:232
msgid "Backup directories already exists."
msgstr "Backup directories already exists."
#: 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 ""
"This means that a migration has already been done, or may not have ended "
"well."
#: 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 ""
"To start a new migration, you must move away the backup directories so they "
"are not overwritten."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:247
msgid "Backing up map data before migrating..."
msgstr "Backing up map data before migrating..."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:271
msgid "Backup complete."
msgstr "Backup complete."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:352
msgid "Fetching UUIDs from Mojang..."
msgstr "Fetching UUIDs from 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 "An error occurred while fetching the UUIDs from 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 "The migration worker has been interrupted"
#: 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] "Fetching done. {0} UUID have been retrieved."
msgstr[1] "Fetching done. {0} UUIDs have been retrieved."
#: 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 did not find UUIDs for {0} player at the current time."
msgstr[1] "Mojang did not find UUIDs for {0} players at the current time."
#: 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 ""
"The Mojang servers limit requests rate at one per second, this may take some "
"time..."
#: 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 did not find player data for {0} player"
msgstr[1] "Mojang did not find player data for {0} players"
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:400
msgid "The following players do not exist or do not have paid accounts :"
msgstr "The following players do not exist or do not have paid accounts :"
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:415
msgid "Mojang could not find any of the registered players."
msgstr "Mojang could not find any of the registered players."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:425
msgid "Merging map data..."
msgstr "Merging map data..."
#: 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} registered minecraft map is missing from the save."
msgstr[1] "{0} registered minecraft maps are missing from the 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 ""
"These maps will not be migrated, but this could mean the save has been "
"altered or corrupted."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:477
#, java-format
msgid "The following maps are missing : {0} "
msgstr "The following maps are missing : {0} "
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:483
msgid "Saving changes..."
msgstr "Saving changes..."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:489
msgid "Cleaning up old data files..."
msgstr "Cleaning up old data files..."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:496
msgid "Deleting old map data file..."
msgstr "Deleting old map data file..."
#: 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} map could not be migrated."
msgstr[1] "{0} maps could not be migrated."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:519
msgid "Deleting old poster data file..."
msgstr "Deleting old poster data file..."
#: 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} poster could not be migrated."
msgstr[1] "{0} posters could not be migrated."
#: 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 "Data that has not been migrated will be kept in the old data files."
#. 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} (part {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} (row {1}, column {2})"
#: src/main/java/fr/moribus/imageonmap/ui/SplatterMapManager.java:44
msgid "Splatter Map"
msgstr "Splatter Map"
#. Title in a splatter map tooltip
#: src/main/java/fr/moribus/imageonmap/ui/SplatterMapManager.java:48
msgid "Item frames needed"
msgstr "Item frames needed"
#. Size of a map stored in a splatter map
#: src/main/java/fr/moribus/imageonmap/ui/SplatterMapManager.java:50
#, java-format
msgid "{0} × {1}"
msgstr "{0} × {1}"
#. Title in a splatter map tooltip
#: src/main/java/fr/moribus/imageonmap/ui/SplatterMapManager.java:53
msgid "How to use this?"
msgstr "How to use this?"
#: 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 ""
"Place empty item frames on a wall, enough to host the whole map. Then, right-"
"click on the bottom-left frame with this map."
#: 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 one of the placed maps to remove the whole poster in one shot."
#: 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}There is not enough space to place this map ({0} × {1})."

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-05-21 20:34+0200\n"
"PO-Revision-Date: 2016-05-21 20:38+0100\n"
"POT-Creation-Date: 2016-07-10 00:59+0200\n"
"PO-Revision-Date: 2016-07-19 16:15+0200\n"
"Last-Translator: Amaury Carrade\n"
"Language-Team: \n"
"Language: fr_FR\n"
@ -16,11 +16,11 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 1.7.5\n"
"X-Generator: Poedit 1.8.8\n"
#: src/main/java/fr/moribus/imageonmap/commands/IoMCommand.java:40
msgid "You need to give a map name."
msgstr "Vous devez donner un nom à la carte."
msgstr "Vous devez donner le nom d'une carte."
#: src/main/java/fr/moribus/imageonmap/commands/IoMCommand.java:57
#: src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteNoConfirmCommand.java:51
@ -33,7 +33,7 @@ msgstr "Vous êtes sur le point de supprimer"
#: src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteConfirmCommand.java:42
msgid "Are you sure ? "
msgstr "Êtes-vous sûr ?"
msgstr "Êtes-vous sûr(e) ?"
#: src/main/java/fr/moribus/imageonmap/commands/maptool/DeleteConfirmCommand.java:44
msgid "[Confirm]"
@ -50,7 +50,7 @@ msgstr "Carte supprimée avec succès."
#: src/main/java/fr/moribus/imageonmap/commands/maptool/GetCommand.java:38
msgid "The requested map was too big to fit in your inventory."
msgstr ""
"La carte demandée est trop grosse et ne rentre pas dans votre inventaire."
"La carte demandée est trop grande et ne rentre pas dans votre inventaire."
#: src/main/java/fr/moribus/imageonmap/commands/maptool/GetCommand.java:39
#: src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java:71
@ -77,13 +77,13 @@ msgstr[1] "Il y a {0} cartes restantes."
#: src/main/java/fr/moribus/imageonmap/commands/maptool/ListCommand.java:49
msgid "No map found."
msgstr "Aucune carte."
msgstr "Aucune carte trouvée."
#: 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} carte."
msgstr[1] "{white}{bold}{0} cartes."
msgstr[0] "{white}{bold}{0} carte trouvée."
msgstr[1] "{white}{bold}{0} cartes trouvées."
#: src/main/java/fr/moribus/imageonmap/commands/maptool/ListCommand.java:79
msgid "{white}Click{gray} to get this map"
@ -127,7 +127,7 @@ msgstr "{ce}Impossible de faire le rendu de la carte : {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}Confirmation de suppression"
msgstr "{0} » {black}Confirmez la suppression"
#. The title of the map deletion item
#: src/main/java/fr/moribus/imageonmap/gui/ConfirmDeleteMapGui.java:110
@ -155,32 +155,38 @@ msgstr "{gray}Cartes : {white}{0}"
msgid "{gray}Map successfully deleted."
msgstr "{gray}Carte supprimée avec succès."
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:53
#: 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}Extrait de carte"
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:54
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:55
msgid "{gray}Column: {white}{0}"
msgstr "{gray}Colonne : {white}{0}"
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:55
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:56
msgid "{gray}Row: {white}{0}"
msgstr "{gray}Ligne : {white}{0}"
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:57
#: 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}Cliquez{gray} pour récupérer cette partie"
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:72
msgid "{gray}Part: {white}{0}"
msgstr "{gray}Partie : {white}{0}"
#. Title of the map details GUI
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:90
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:114
msgid "Your maps » {black}{0}"
msgstr "Vos cartes » {black}{0}"
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:100
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:136
msgid "{blue}Rename this image"
msgstr "{blue}Renommer cette image"
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:101
#: 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."
@ -199,59 +205,56 @@ msgstr ""
"{gray}Supprime cette carte {white}pour toujours{gray}. Cette action ne peut "
"être annulée !"
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:108
#: 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}Une confirmation sera demandée si vous cliquez ici."
msgstr "{gray}Une confirmation vous sera demandée si vous cliquez ici."
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:120
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:156
msgid "{green}« Back"
msgstr "{green}« Retour"
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:121
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:157
msgid "{gray}Go back to the list."
msgstr "{gray}Retourner à la liste."
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:136
msgid "{ce}Map names can't be empty."
msgstr "{ce}Les noms de cartes ne peuvent être vide."
#: src/main/java/fr/moribus/imageonmap/gui/MapDetailGui.java:141
msgid "{cs}Map successfully renamed."
msgstr "{cs}Carte renommée avec succès."
#. Displayed subtitle description of a single map on the list GUI
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:43
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:44
msgid "{white}Single map"
msgstr "{white}Carte unique"
#. Displayed subtitle description of a poster map on the list GUI (columns × rows in english)
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:46
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:52
msgid "{white}Poster map ({0} × {1})"
msgstr "{white}Poster ({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}Poster ({0} parties)"
#. Displayed title of a map on the list GUI
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:50
#: 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:55
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:67
msgid "{gray}Map ID: {0}"
msgstr "{gray}Identifiant : {white}{0}"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:57
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:69
msgid "{gray}» {white}Left-click{gray} to get this map"
msgstr "{gray}» {white}Cliquez droit{gray} pour récupérer cette carte"
msgstr "{gray}» {white}Cliquez gauche{gray} pour récupérer cette carte"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:58
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:70
msgid "{gray}» {white}Right-click{gray} for details and options"
msgstr "{gray}» {white}Cliquez droit{gray} pour détails et options"
msgstr "{gray}» {white}Cliquez droit{gray} pour des détails et options"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:67
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:79
msgid "{red}You don't have any map."
msgstr "{red}Vous n'avez aucune carte."
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:68
#: 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}!"
@ -260,51 +263,51 @@ msgstr ""
"{gray} !"
#. The maps list GUI title
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:100
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:119
msgid "{black}Your maps {reset}({0})"
msgstr "{black}Vos cartes {reset}({0})"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:129
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:148
msgid "{blue}Usage statistics"
msgstr "{blue}Statistiques d'utilisation"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:131
#: 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} image rendue"
msgstr[1] "{white}{0}{gray} images rendues"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:132
#: 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} carte Minecraft utilisée"
msgstr[1] "{white}{0}{gray} cartes Minecraft utilisées"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:137
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:156
msgid "{blue}Minecraft maps limits"
msgstr "{blue}Limites de cartes Minecraft"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:139
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:158
msgid "{gray}Server-wide limit: {white}unlimited"
msgstr "{gray}Limite du serveur : {white}illimité"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:140
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:159
msgid "{gray}Server-wide limit: {white}{0}"
msgstr "{gray}Limite du serveur : {white}{0}"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:142
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:161
msgid "{gray}Per-player limit: {white}unlimited"
msgstr "{gray}Limite individuelle : {white}illimité"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:143
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:162
msgid "{gray}Per-player limit: {white}{0}"
msgstr "{gray}Limite individuelle : {white}{0}"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:145
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:164
msgid "{white}{0} %{gray} of your quota used"
msgstr "{white}{0} %{gray} de votre quota utilisé"
#: src/main/java/fr/moribus/imageonmap/gui/MapListGui.java:146
#: 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} carte restante"
@ -350,66 +353,66 @@ msgid ""
"Migration thread has been interrupted while waiting to finish. It may not "
"have ended correctly."
msgstr ""
"Le thread a été interrompu durant l'attente de la fin de la migration. Cette "
"dernière pourrait s'être achevée anormalement."
"Le fil d'exécution (thread) a été interrompu durant l'attente de la fin de "
"la migration. Cette dernière pourrait ne pas s'être terminée correctement."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:173
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:176
msgid "Error while preparing migration"
msgstr "Une erreur est survenue lors de la préparation de la migration."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:174
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:177
msgid "Aborting migration. No change has been made."
msgstr "La migration est annulée. Aucun changement n'a été effectué."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:186
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:189
msgid "Error while migrating"
msgstr "Erreur lors de la migration"
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:187
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:190
msgid "Aborting migration. Some changes may already have been made."
msgstr ""
"La migration est annulée. Certains changements ont pu être effectués malgré "
"tout."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:188
#: 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 ""
"Avant de re-tenter la migration, vous devez récupérer les fichiers des "
"joueurs depuis la sauvegarde qu'a été effectuée automatiquement, puis "
"joueurs depuis la sauvegarde qui a été effectuée automatiquement, puis "
"déplacer les sauvegardes hors du dossier du plugin afin d'éviter de les "
"écraser."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:200
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:203
msgid "Looking for configuration files to migrate..."
msgstr "Recherche de fichiers de configuration à migrer..."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:203
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:206
#, java-format
msgid "Detected former posters file {0}"
msgstr "Vieux fichier de posters détecté : {0}"
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:206
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:209
#, java-format
msgid "Detected former maps file {0}"
msgstr "Vieux fichier de carte détecté : {0}"
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:210
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:409
#: 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 "Il n'y a rien à migrer. Le processus est arrêté."
msgstr "Il n'y a rien à migrer. Arrêt."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:215
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:218
msgid "Done."
msgstr "Terminé."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:229
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:232
msgid "Backup directories already exists."
msgstr "Les répertoires de sauvegarde existe déjà."
msgstr "Les répertoires de sauvegarde existent déjà."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:230
#: 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."
@ -417,7 +420,7 @@ msgstr ""
"Cela signifie qu'une migration a déjà été faite, ou qu'elle n'a possiblement "
"pas terminé correctement."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:231
#: 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."
@ -425,36 +428,44 @@ msgstr ""
"Pour démarrer une nouvelle migration, vous devez déplacer les répertoires de "
"sauvegarde afin qu'ils ne soit pas écrasés."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:345
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:247
msgid "Backing up map data before migrating..."
msgstr "Sauvegarde des données des cartes avant la migration…"
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:271
msgid "Backup complete."
msgstr "Sauvegarde terminée."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:352
msgid "Fetching UUIDs from Mojang..."
msgstr "Récupération des UUID depuis Mojang..."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:352
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:380
#: 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 ""
"Une erreur est survenue lors de la récupération des UUIDs depuis Mojang."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:357
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:385
#: 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 "Le processus de migration a été interrompu."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:360
#: 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] "Récupération achevée. {0} UUID a été retrouvé."
msgstr[1] "Récupération achevée. {0} UUID ont été retrouvé."
msgstr[1] "Récupération achevée. {0} UUIDs ont été retrouvés."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:371
#: 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'a pas trouvé d'UUID pour {0} joueur à l'heure actuelle."
msgstr[1] "Mojang n'a pas trouvé d'UUID pour {0} joueurs à l'heure actuelle."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:372
#: 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..."
@ -462,65 +473,94 @@ msgstr ""
"Les serveurs de Mojang limitent les requêtes à une par seconde, cette étape "
"risque de durer un petit moment..."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:391
#: 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'a pas trouvé de données pour {0} joueur."
msgstr[1] "Mojang n'a pas trouvé de données pour {0} joueurs."
msgstr[0] "Mojang did not find player data for {0} player"
msgstr[1] "Mojang did not find player data for {0} players"
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:393
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:400
msgid "The following players do not exist or do not have paid accounts :"
msgstr "Les joueurs suivant n'existent pas ou n'ont pas de compte payant :"
msgstr "Les joueurs suivants n'existent pas ou n'ont pas de compte payant :"
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:408
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:415
msgid "Mojang could not find any of the registered players."
msgstr "Mojang n'a pu trouver aucun des joueurs enregistrés."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:418
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:425
msgid "Merging map data..."
msgstr "Fusion des données des cartes..."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:459
#: 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} carte Minecraft enregistrée n'a pas été retrouvée dans la sauvegarde."
msgstr[1] ""
"{0} cartes Minecraft enregistrées n'ont pas été retrouvées dans la "
"sauvegarde."
#: 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 ""
"Ces cartes ne seront pas migrées, mais cela peut signifier que votre "
"sauvegarde a été modifiée ou corrompue."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:477
#, java-format
msgid "The following maps are missing : {0} "
msgstr "Les cartes suivantes sont manquantes : {0} "
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:483
msgid "Saving changes..."
msgstr "Sauvegarde des changements..."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:465
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:489
msgid "Cleaning up old data files..."
msgstr "Nettoyage des vieux fichiers de données..."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:472
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:496
msgid "Deleting old map data file..."
msgstr "Suppression du vieux fichier de données des cartes..."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:477
#: 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} carte n'a pas pu être migrée."
msgstr[1] "{0} cartes n'ont pas pu être migrées."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:495
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:519
msgid "Deleting old poster data file..."
msgstr "Suppression du vieux fichier de données des posters..."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:500
#: 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} poster n'a pas pu être migré."
msgstr[1] "{0} posters n'ont pas pu être migrés."
#: src/main/java/fr/moribus/imageonmap/migration/V3Migrator.java:513
#: 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 ""
"Les données qui n'ont pas été migrées seront conservées dans les vieux "
"fichiers de donnée."
"fichiers de données."
#. 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} (partie {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:118
#: src/main/java/fr/moribus/imageonmap/ui/MapItemManager.java:153
#: src/main/java/fr/moribus/imageonmap/ui/MapItemManager.java:194
#: 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} (ligne {1}, colonne {2})"
@ -562,3 +602,9 @@ msgstr "Cliquez accroupi l'une des cartes du poster pour le retirer d'un coup."
#: 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}Il n'y a pas assez d'espace pour accueillir ce poster ({0} × {1})."
#~ msgid "{ce}Map names can't be empty."
#~ msgstr "{ce}Les noms de cartes ne peuvent être vide."
#~ msgid "{cs}Map successfully renamed."
#~ msgstr "{cs}Carte renommée avec succès."

View File

@ -1,6 +1,6 @@
name: ImageOnMap
main: fr.moribus.imageonmap.ImageOnMap
version: 2.99
version: 3.0
commands:
tomap: