diff --git a/src/fr/moribus/ImageOnMap/GetMapCommand.java b/src/fr/moribus/ImageOnMap/GetMapCommand.java new file mode 100644 index 0000000..f819314 --- /dev/null +++ b/src/fr/moribus/ImageOnMap/GetMapCommand.java @@ -0,0 +1,70 @@ +package fr.moribus.ImageOnMap; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.map.MapView; + +public class GetMapCommand implements CommandExecutor +{ + short id; + ImageOnMap plugin; + MapView map; + Player joueur; + Inventory inv; + + GetMapCommand(ImageOnMap p) + { + plugin = p; + } + + @SuppressWarnings("deprecation") + @Override + public boolean onCommand(CommandSender sender, Command command, String arg2, String[] arg3) + { + + if(!ImgUtility.VerifierIdentite(sender)) + return false; + + joueur = (Player) sender; + inv = (Inventory) joueur.getInventory(); + + try + { + id = Short.parseShort(arg3[0]); + } + catch(NumberFormatException err) + { + joueur.sendMessage("you must enter a number !"); + return false; + } + + if(!ImgUtility.EstDansFichier(plugin, id)) + { + joueur.sendMessage("The given id does not match any map !"); + return false; + } + + if(inv.firstEmpty() == -1) + { + joueur.sendMessage("Your inventory is full, you can't take the map !"); + return false; + } + + map = Bukkit.getMap(id); + if(map == null) + joueur.sendMessage("An eroor occured while getting map by ID !"); + + inv.addItem(new ItemStack(Material.MAP, 1, map.getId())); + joueur.sendMessage("Map "+ ChatColor.ITALIC+ id+ ChatColor.RESET+ " was added in your inventory."); + + return true; + } + +} diff --git a/src/fr/moribus/ImageOnMap/ImageOnMap.java b/src/fr/moribus/ImageOnMap/ImageOnMap.java index 5c78e61..f9839cb 100644 --- a/src/fr/moribus/ImageOnMap/ImageOnMap.java +++ b/src/fr/moribus/ImageOnMap/ImageOnMap.java @@ -2,8 +2,12 @@ package fr.moribus.ImageOnMap; import java.io.File; import java.io.IOException; +import java.io.InputStream; import java.util.Set; +import java.util.logging.Level; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.plugin.java.JavaPlugin; public final class ImageOnMap extends JavaPlugin @@ -11,6 +15,9 @@ public final class ImageOnMap extends JavaPlugin int test = 0; File dossier; boolean dossierCree; + private FileConfiguration customConfig = null; + private File customConfigFile = null; + @Override public void onEnable() { @@ -20,6 +27,9 @@ public final class ImageOnMap extends JavaPlugin // On ajoute si besoin les params par défaut du plugin ImgUtility.CreeSectionConfig(this); + if(getConfig().getBoolean("import-maps")) + ImgUtility.ImporterConfig(this); + if(this.getConfig().getBoolean("collect-data")) { try @@ -35,6 +45,7 @@ public final class ImageOnMap extends JavaPlugin if(dossierCree) { getCommand("tomap").setExecutor(new ImageRenduCommande(this)); + getCommand("getmap").setExecutor(new GetMapCommand(this)); //getCommand("rmmap").setExecutor(new ImageSupprCommande(this)); this.saveDefaultConfig(); ChargerMap(); @@ -44,6 +55,7 @@ public final class ImageOnMap extends JavaPlugin System.out.println("[ImageOnMap] An error occured ! Unable to create Image folder. Plugin will NOT work !"); this.setEnabled(false); } + } @Override @@ -54,13 +66,13 @@ public final class ImageOnMap extends JavaPlugin public void ChargerMap() { - Set cle = getConfig().getKeys(false); + Set cle = getCustomConfig().getKeys(false); int nbMap = 0, nbErr = 0; for (String s: cle) { - if(getConfig().getStringList(s).size() >= 3) + if(getCustomConfig().getStringList(s).size() >= 3) { - SavedMap map = new SavedMap(this, Short.valueOf(getConfig().getStringList(s).get(0))); + SavedMap map = new SavedMap(this, Short.valueOf(getCustomConfig().getStringList(s).get(0))); if(map.LoadMap()) nbMap++; @@ -73,5 +85,43 @@ public final class ImageOnMap extends JavaPlugin if(nbErr != 0) System.out.println(nbErr +" maps can't be loaded"); } + + public void reloadCustomConfig() + { + if (customConfigFile == null) + { + customConfigFile = new File(getDataFolder(), "map.yml"); + } + customConfig = YamlConfiguration.loadConfiguration(customConfigFile); + + // Look for defaults in the jar + InputStream defConfigStream = this.getResource("map.yml"); + if (defConfigStream != null) + { + YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(defConfigStream); + customConfig.setDefaults(defConfig); + } + } + + public FileConfiguration getCustomConfig() + { + if (customConfig == null) + { + reloadCustomConfig(); + } + return customConfig; + } + + public void saveCustomConfig() + { + if (customConfig == null || customConfigFile == null) { + return; + } + try { + getCustomConfig().save(customConfigFile); + } catch (IOException ex) { + getLogger().log(Level.SEVERE, "Could not save config to " + customConfigFile, ex); + } + } } diff --git a/src/fr/moribus/ImageOnMap/ImgUtility.java b/src/fr/moribus/ImageOnMap/ImgUtility.java index d871bce..565b0b5 100644 --- a/src/fr/moribus/ImageOnMap/ImgUtility.java +++ b/src/fr/moribus/ImageOnMap/ImgUtility.java @@ -1,6 +1,7 @@ package fr.moribus.ImageOnMap; import java.io.File; +import java.util.ArrayList; import java.util.Set; import org.bukkit.ChatColor; @@ -48,6 +49,8 @@ public class ImgUtility plugin.getConfig().set("Limit-map-by-player", 0); if(plugin.getConfig().get("collect-data") == null) plugin.getConfig().set("collect-data", true); + if(plugin.getConfig().get("import-maps") == null) + plugin.getConfig().set("import-maps", true); plugin.saveConfig(); } @@ -55,10 +58,10 @@ public class ImgUtility static int getNombreDeMaps(ImageOnMap plugin) { int nombre = 0; - Set cle = plugin.getConfig().getKeys(false); + Set cle = plugin.getCustomConfig().getKeys(false); for (String s: cle) { - if(plugin.getConfig().getStringList(s).size() >= 3) + if(plugin.getCustomConfig().getStringList(s).size() >= 3) { nombre++; } @@ -69,10 +72,10 @@ public class ImgUtility static int getNombreDeMapsParJoueur(ImageOnMap plugin, String pseudo) { int nombre = 0; - Set cle = plugin.getConfig().getKeys(false); + Set cle = plugin.getCustomConfig().getKeys(false); for (String s: cle) { - if(plugin.getConfig().getStringList(s).size() >= 3 && plugin.getConfig().getStringList(s).get(2).contentEquals(pseudo)) + if(plugin.getCustomConfig().getStringList(s).size() >= 3 && plugin.getCustomConfig().getStringList(s).get(2).contentEquals(pseudo)) { nombre++; } @@ -82,10 +85,10 @@ public class ImgUtility static boolean EstDansFichier(ImageOnMap plugin, short id) { - Set cle = plugin.getConfig().getKeys(false); + Set cle = plugin.getCustomConfig().getKeys(false); for (String s: cle) { - if(plugin.getConfig().getStringList(s).size() >= 3 && Short.parseShort(plugin.getConfig().getStringList(s).get(0)) == id) + if(plugin.getCustomConfig().getStringList(s).size() >= 3 && Short.parseShort(plugin.getCustomConfig().getStringList(s).get(0)) == id) { return true; } @@ -95,14 +98,42 @@ public class ImgUtility public static boolean EstDansFichier(ImageOnMap plugin, short id, String pseudo) { - Set cle = plugin.getConfig().getKeys(false); + Set cle = plugin.getCustomConfig().getKeys(false); for (String s: cle) { - if(plugin.getConfig().getStringList(s).size() >= 3 && Short.parseShort(plugin.getConfig().getStringList(s).get(0)) == id && plugin.getConfig().getStringList(s).get(2).contentEquals(pseudo)) + if(plugin.getCustomConfig().getStringList(s).size() >= 3 && Short.parseShort(plugin.getCustomConfig().getStringList(s).get(0)) == id && plugin.getCustomConfig().getStringList(s).get(2).contentEquals(pseudo)) { return true; } } return false; } + + static boolean ImporterConfig(ImageOnMap plugin) + { + Set cle = plugin.getConfig().getKeys(false); + + plugin.getLogger().info("Start importing maps config to maps.yml..."); + int i = 0; + for (String s: cle) + { + if(plugin.getConfig().getStringList(s).size() >= 3) + { + //plugin.getLogger().info("Importing "+ plugin.getConfig().getStringList(s).get(1)); + ArrayList liste = new ArrayList(); + liste.add(String.valueOf(plugin.getConfig().getStringList(s).get(0))); + liste.add(plugin.getConfig().getStringList(s).get(1)); + liste.add(plugin.getConfig().getStringList(s).get(2)); + plugin.getCustomConfig().set(plugin.getConfig().getStringList(s).get(1), liste); + plugin.getConfig().set(s, null); + i++; + } + + } + plugin.getLogger().info("Importing finished. "+ i+ "maps were imported"); + plugin.getConfig().set("import-maps", false); + plugin.saveConfig(); + plugin.saveCustomConfig(); + return true; + } } \ No newline at end of file diff --git a/src/fr/moribus/ImageOnMap/SavedMap.java b/src/fr/moribus/ImageOnMap/SavedMap.java index 3c646e3..9a9c9b3 100644 --- a/src/fr/moribus/ImageOnMap/SavedMap.java +++ b/src/fr/moribus/ImageOnMap/SavedMap.java @@ -32,17 +32,17 @@ public class SavedMap { idMap = id; plugin = plug; - Set cle = plugin.getConfig().getKeys(false); + Set cle = plugin.getCustomConfig().getKeys(false); int tmp = 0; for (String s: cle) { - if(plugin.getConfig().getStringList(s).size() >= 3 && Short.valueOf(plugin.getConfig().getStringList(s).get(0)) == id) + if(plugin.getCustomConfig().getStringList(s).size() >= 3 && Short.valueOf(plugin.getCustomConfig().getStringList(s).get(0)) == id) { tmp++; //System.out.println(tmp); //MapView carte = Bukkit.getMap(Short.parseShort(plugin.getConfig().getStringList(s).get(0))); - nomImg = plugin.getConfig().getStringList(s).get(1); - nomJoueur = plugin.getConfig().getStringList(s).get(2); + nomImg = plugin.getCustomConfig().getStringList(s).get(1); + nomJoueur = plugin.getCustomConfig().getStringList(s).get(2); try { image = ImageIO.read(new File("./plugins/ImageOnMap/Image/"+ nomImg + ".png")); //System.out.println("Chargement de l'image fini"); @@ -76,8 +76,8 @@ public class SavedMap liste.add(String.valueOf(idMap)); liste.add(nomImg); liste.add(nomJoueur); - plugin.getConfig().set(nomImg, liste); - plugin.saveConfig(); + plugin.getCustomConfig().set(nomImg, liste); + plugin.saveCustomConfig(); return true; }