The plugin configuration now uses the zLib config mecanisms.

* NEW: now using the zLib configuration component to manage the configuration.
This commit is contained in:
Amaury Carrade 2016-05-21 13:37:04 +02:00
parent 578ea39479
commit 987efea203
No known key found for this signature in database
GPG Key ID: 73235214BDBB8752
8 changed files with 43 additions and 122 deletions

View File

@ -86,10 +86,11 @@ public final class ImageOnMap extends ZPlugin
return; return;
} }
loadComponents(Gui.class, Commands.class, ImageIOExecutor.class, ImageRendererExecutor.class); saveDefaultConfig();
loadComponents(Gui.class, Commands.class, PluginConfiguration.class, ImageIOExecutor.class, ImageRendererExecutor.class);
//Init all the things ! //Init all the things !
PluginConfiguration.init(this);
MetricsLite.startMetrics(); MetricsLite.startMetrics();
MapManager.init(); MapManager.init();
MapInitEvent.init(); MapInitEvent.init();

View File

@ -55,10 +55,10 @@ public class MetricsLite
/** /**
* Starts MetricsLite, unless disabled in config * Starts MetricsLite, unless disabled in config
*/ */
static public void startMetrics() static public void startMetrics()
{ {
if(!PluginConfiguration.COLLECT_DATA.getBoolean()) return; if(!PluginConfiguration.COLLECT_DATA.get()) return;
try try
{ {
MetricsLite metrics = new MetricsLite(ImageOnMap.getPlugin()); MetricsLite metrics = new MetricsLite(ImageOnMap.getPlugin());

View File

@ -18,108 +18,16 @@
package fr.moribus.imageonmap; package fr.moribus.imageonmap;
import org.bukkit.configuration.file.FileConfiguration; import fr.zcraft.zlib.components.configuration.Configuration;
import org.bukkit.plugin.Plugin; import fr.zcraft.zlib.components.configuration.ConfigurationItem;
public enum PluginConfiguration import static fr.zcraft.zlib.components.configuration.ConfigurationItem.item;
public final class PluginConfiguration extends Configuration
{ {
//Configuration field Names, with default values static public ConfigurationItem<Boolean> COLLECT_DATA = item("collect-data", true);
COLLECT_DATA("collect-data", true),
MAP_GLOBAL_LIMIT("map-global-limit", 0, "Limit-map-by-server"), static public ConfigurationItem<Integer> MAP_GLOBAL_LIMIT = item("map-global-limit", 0, "Limit-map-by-server");
MAP_PLAYER_LIMIT("map-player-limit", 0, "Limit-map-by-player"); static public ConfigurationItem<Integer> MAP_PLAYER_LIMIT = item("map-player-limit", 0, "Limit-map-by-player");
private final String fieldName;
private final Object defaultValue;
private final String[] deprecatedNames;
private PluginConfiguration(String fieldName, Object defaultValue, String ... deprecatedNames)
{
this.fieldName = fieldName;
this.defaultValue = defaultValue;
this.deprecatedNames = deprecatedNames;
}
public Object get()
{
return getConfig().get(fieldName, defaultValue);
}
public Object getDefaultValue()
{
return defaultValue;
}
public boolean isDefined()
{
return getConfig().contains(fieldName);
}
@Override
public String toString()
{
return get().toString();
}
public String getString()
{
return getConfig().getString(fieldName, (String)defaultValue);
}
public int getInteger()
{
return getConfig().getInt(fieldName, (Integer)defaultValue);
}
public boolean getBoolean()
{
return getConfig().getBoolean(fieldName, (Boolean)defaultValue);
}
private boolean init()
{
boolean affected = false;
if(!isDefined())
{
getConfig().set(fieldName, defaultValue);
affected = true;
}
for(String deprecatedName : deprecatedNames)
{
if(getConfig().contains(deprecatedName))
{
getConfig().set(fieldName, getConfig().get(deprecatedName));
getConfig().set(deprecatedName, null);
affected = true;
}
}
return affected;
}
/* ===== Static API ===== */
static private Plugin plugin;
static public FileConfiguration getConfig()
{
return plugin.getConfig();
}
static public void init(Plugin plugin)
{
PluginConfiguration.plugin = plugin;
loadDefaultValues();
}
static private void loadDefaultValues()
{
boolean affected = false;
for(PluginConfiguration configField : PluginConfiguration.values())
{
if(configField.init()) affected = true;
}
if(affected) plugin.saveConfig();
}
} }

View File

@ -38,7 +38,6 @@ import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols; import java.text.DecimalFormatSymbols;
import java.text.NumberFormat; import java.text.NumberFormat;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import java.util.Locale; import java.util.Locale;
@ -121,8 +120,8 @@ public class MapListGui extends ExplorerGui<ImageMap>
int imagesCount = MapManager.getMapList(getPlayer().getUniqueId()).size(); int imagesCount = MapManager.getMapList(getPlayer().getUniqueId()).size();
int mapPartCount = MapManager.getMapPartCount(getPlayer().getUniqueId()); int mapPartCount = MapManager.getMapPartCount(getPlayer().getUniqueId());
int mapGlobalLimit = PluginConfiguration.MAP_GLOBAL_LIMIT.getInteger(); int mapGlobalLimit = PluginConfiguration.MAP_GLOBAL_LIMIT.get();
int mapPersonalLimit = PluginConfiguration.MAP_PLAYER_LIMIT.getInteger(); int mapPersonalLimit = PluginConfiguration.MAP_PLAYER_LIMIT.get();
int mapPartGloballyLeft = mapGlobalLimit - MapManager.getMapCount(); int mapPartGloballyLeft = mapGlobalLimit - MapManager.getMapCount();
int mapPartPersonallyLeft = mapPersonalLimit - mapPartCount; int mapPartPersonallyLeft = mapPersonalLimit - mapPartCount;

View File

@ -113,7 +113,7 @@ public class ImageRendererExecutor extends Worker
return MapManager.createMap(playerUUID, mapID); return MapManager.createMap(playerUUID, mapID);
} }
static private ImageMap RenderPoster(final BufferedImage image, final UUID playerUUID) throws Throwable static private ImageMap RenderPoster(final BufferedImage image, final UUID playerUUID) throws Throwable
{ {
final PosterImage poster = new PosterImage(image); final PosterImage poster = new PosterImage(image);

View File

@ -24,16 +24,17 @@ import fr.moribus.imageonmap.image.ImageIOExecutor;
import fr.moribus.imageonmap.image.PosterImage; import fr.moribus.imageonmap.image.PosterImage;
import fr.moribus.imageonmap.map.MapManagerException.Reason; import fr.moribus.imageonmap.map.MapManagerException.Reason;
import fr.zcraft.zlib.tools.PluginLogger; import fr.zcraft.zlib.tools.PluginLogger;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitTask; import org.bukkit.scheduler.BukkitTask;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
abstract public class MapManager abstract public class MapManager
{ {
static private final long SAVE_DELAY = 200; static private final long SAVE_DELAY = 200;
@ -280,12 +281,11 @@ abstract public class MapManager
static public void checkMapLimit(int newMapsCount, UUID userUUID) throws MapManagerException static public void checkMapLimit(int newMapsCount, UUID userUUID) throws MapManagerException
{ {
int limit = PluginConfiguration.MAP_GLOBAL_LIMIT.getInteger(); int limit = PluginConfiguration.MAP_GLOBAL_LIMIT.get();
if(limit > 0)
{ if (limit > 0 && getMapCount() + newMapsCount > limit)
if(getMapCount() + newMapsCount > limit) throw new MapManagerException(Reason.MAXIMUM_SERVER_MAPS_EXCEEDED);
throw new MapManagerException(Reason.MAXIMUM_SERVER_MAPS_EXCEEDED);
}
getPlayerMapStore(userUUID).checkMapLimit(newMapsCount); getPlayerMapStore(userUUID).checkMapLimit(newMapsCount);
} }

View File

@ -22,6 +22,7 @@ import fr.moribus.imageonmap.ImageOnMap;
import fr.moribus.imageonmap.PluginConfiguration; import fr.moribus.imageonmap.PluginConfiguration;
import fr.moribus.imageonmap.map.MapManagerException.Reason; import fr.moribus.imageonmap.map.MapManagerException.Reason;
import fr.zcraft.zlib.tools.PluginLogger; import fr.zcraft.zlib.tools.PluginLogger;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
@ -36,7 +37,6 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
import org.bukkit.Material;
public class PlayerMapStore implements ConfigurationSerializable public class PlayerMapStore implements ConfigurationSerializable
{ {
@ -154,7 +154,7 @@ public class PlayerMapStore implements ConfigurationSerializable
public void checkMapLimit(int newMapsCount) throws MapManagerException public void checkMapLimit(int newMapsCount) throws MapManagerException
{ {
int limit = PluginConfiguration.MAP_PLAYER_LIMIT.getInteger(); int limit = PluginConfiguration.MAP_PLAYER_LIMIT.get();
if(limit <= 0) return; if(limit <= 0) return;
if(getMapCount() + newMapsCount > limit) if(getMapCount() + newMapsCount > limit)

View File

@ -0,0 +1,13 @@
### ImageOnMap configuration file
# Allows collection of anonymous statistics on plugin environment and usage
# The statistics are publicly visible here: http://mcstats.org/plugin/ImageOnMap
collect-data: true
# Images rendered on maps consume Minecraft maps ID, and there are only 32 767 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
map-player-limit: 0