mirror of
https://github.com/zDevelopers/ImageOnMap.git
synced 2024-09-30 15:37:40 +02:00
Corrections de bugs liés au chargement des images
This commit is contained in:
parent
ea018da66c
commit
f3510b1d3f
@ -1,6 +1,8 @@
|
||||
package fr.moribus.ImageOnMap;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
@ -18,12 +20,24 @@ public final class ImageOnMap extends JavaPlugin
|
||||
// On ajoute si besoin les params par défaut du plugin
|
||||
ImgUtility.CreeSectionConfig(this);
|
||||
|
||||
if(this.getConfig().getBoolean("collect-data"))
|
||||
{
|
||||
try
|
||||
{
|
||||
MetricsLite metrics = new MetricsLite(this);
|
||||
metrics.start();
|
||||
System.out.println("Metrics launched for ImageOnMap");
|
||||
} catch (IOException e) {
|
||||
// Failed to submit the stats :-(
|
||||
}
|
||||
}
|
||||
|
||||
if(dossierCree)
|
||||
{
|
||||
getCommand("tomap").setExecutor(new ImageRenduCommande(this));
|
||||
getCommand("rmmap").setExecutor(new ImageSupprCommande(this));
|
||||
//getCommand("rmmap").setExecutor(new ImageSupprCommande(this));
|
||||
this.saveDefaultConfig();
|
||||
//ChargerMap();
|
||||
ChargerMap();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -38,23 +52,26 @@ public final class ImageOnMap extends JavaPlugin
|
||||
System.out.println("Stopping ImageOnMap");
|
||||
}
|
||||
|
||||
/*public void ChargerMap()
|
||||
public void ChargerMap()
|
||||
{
|
||||
Set<String> cle = getConfig().getKeys(false);
|
||||
int nbMap = 0, nbErr = 0;
|
||||
for (String s: cle)
|
||||
{
|
||||
if(getConfig().getStringList(s).size() >= 3)
|
||||
{
|
||||
System.out.println("Loading " + s);
|
||||
@SuppressWarnings("deprecation")
|
||||
MapView carte = Bukkit.getMap(Short.parseShort(getConfig().getStringList(s).get(0)));
|
||||
ImageRenderer.SupprRendu(carte);
|
||||
if (getConfig().getStringList(s).size() == 4)
|
||||
carte.addRenderer(new Rendu("./plugins/ImageOnMap/Image/" + getConfig().getStringList(s).get(1) + ".png", getConfig().getStringList(s).get(2), getConfig().getStringList(s).get(3)));
|
||||
else if (getConfig().getStringList(s).size() == 3)
|
||||
carte.addRenderer(new Rendu("./plugins/ImageOnMap/Image/" + getConfig().getStringList(s).get(1) + ".png", getConfig().getStringList(s).get(2), "True"));
|
||||
SavedMap map = new SavedMap(this, Short.valueOf(getConfig().getStringList(s).get(0)));
|
||||
|
||||
if(map.LoadMap())
|
||||
nbMap++;
|
||||
else
|
||||
nbErr++;
|
||||
}
|
||||
|
||||
}
|
||||
}*/
|
||||
System.out.println(nbMap +" maps was loaded");
|
||||
if(nbErr != 0)
|
||||
System.out.println(nbErr +" maps can't be loaded");
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -55,10 +55,10 @@ public class ImageRenderer extends Thread
|
||||
|
||||
static void SupprRendu(MapView map)
|
||||
{
|
||||
if (map.getRenderers().size() != 0)
|
||||
if (map.getRenderers().size() > 0)
|
||||
{
|
||||
int i = 0, t = map.getRenderers().size();
|
||||
while (i < t )
|
||||
while (i < t)
|
||||
{
|
||||
map.removeRenderer(map.getRenderers().get(i));
|
||||
i++;
|
||||
|
@ -1,13 +1,11 @@
|
||||
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.map.MapView;
|
||||
|
||||
|
||||
public class ImageRenduCommande implements CommandExecutor
|
||||
{
|
||||
@ -15,16 +13,12 @@ public class ImageRenduCommande implements CommandExecutor
|
||||
Player joueur;
|
||||
boolean renderName, imgSvg;
|
||||
ImageOnMap ca;
|
||||
int nbMapServeur, nbMapJoueur;
|
||||
|
||||
public ImageRenduCommande(ImageOnMap plugin)
|
||||
{
|
||||
ca = plugin;
|
||||
nbMapServeur = ca.getConfig().getInt("Limit-map-by-server");
|
||||
nbMapJoueur = ca.getConfig().getInt("Limit-map-by-player");
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command arg1, String arg2,
|
||||
String[] arg3)
|
||||
@ -44,13 +38,6 @@ public class ImageRenduCommande implements CommandExecutor
|
||||
joueur.sendMessage("You are not allowed to use this command ( " + arg1.getName() + " )!");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if(joueur.getItemInHand().getType() != Material.MAP)
|
||||
{
|
||||
joueur.sendMessage(ChatColor.RED + "You must hold a map !!");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (arg3.length < 1)
|
||||
{
|
||||
@ -58,42 +45,7 @@ public class ImageRenduCommande implements CommandExecutor
|
||||
return false;
|
||||
}
|
||||
|
||||
if (arg3.length == 2)
|
||||
{
|
||||
if (arg3[1].contains("true"))
|
||||
renderName = true;
|
||||
else
|
||||
renderName = false;
|
||||
}
|
||||
else
|
||||
renderName = false;
|
||||
|
||||
// on crée une carte
|
||||
MapView carte = Bukkit.getMap(joueur.getItemInHand().getDurability());
|
||||
|
||||
// On vérifie que le nombre limite de map par serveur n'a pas été atteint.
|
||||
// Si la carte est déjà inscrite dans le fichier (== contient une image), on outrepasse la vérification
|
||||
// vu que le nb de map n'augmentera pas.
|
||||
// Si la limite = 0, on ignore cette vérification.
|
||||
if(!ImgUtility.EstDansFichier(ca, carte.getId()) && nbMapServeur != 0 && ImgUtility.getNombreDeMaps(ca) >= nbMapServeur)
|
||||
{
|
||||
joueur.sendMessage(ChatColor.RED + "The limit of map's number per server (" + nbMapServeur + ") have been reached !");
|
||||
return true;
|
||||
}
|
||||
|
||||
// Même chose, mais par joueur cette fois
|
||||
if(!ImgUtility.EstDansFichier(ca, carte.getId(), joueur.getName()) && nbMapJoueur != 0 && ImgUtility.getNombreDeMapsParJoueur(ca, joueur.getName()) >= nbMapJoueur)
|
||||
{
|
||||
joueur.sendMessage(ChatColor.RED + "You've reached the limit of maps per player (" + nbMapJoueur + ") ! Please delete or reuse one of your custom map.");
|
||||
return true;
|
||||
}
|
||||
|
||||
imgSvg = true;
|
||||
// On ajoute un rendu
|
||||
//Rendu ren = new Rendu(arg3[0], imgSvg, ca, renderName);
|
||||
ImageRenderer.SupprRendu(carte);
|
||||
//carte.addRenderer(ren);
|
||||
TacheTraitementImg tache = new TacheTraitementImg(joueur, arg3[0]);
|
||||
TacheTraitementMap tache = new TacheTraitementMap(joueur, arg3[0], ca);
|
||||
tache.runTaskTimer(ca, 0, 10);
|
||||
|
||||
return true;
|
||||
|
@ -46,6 +46,8 @@ public class ImgUtility
|
||||
plugin.getConfig().set("Limit-map-by-server", 0);
|
||||
if(plugin.getConfig().get("Limit-map-by-player") == null)
|
||||
plugin.getConfig().set("Limit-map-by-player", 0);
|
||||
if(plugin.getConfig().get("collect-data") == null)
|
||||
plugin.getConfig().set("collect-data", true);
|
||||
plugin.saveConfig();
|
||||
|
||||
}
|
||||
|
@ -15,8 +15,6 @@ public class Rendu extends MapRenderer implements Runnable
|
||||
Image touhou;
|
||||
private Thread TRendu;
|
||||
public MapCanvas canvas;
|
||||
MapView carte;
|
||||
Player joueur;
|
||||
|
||||
public Rendu(Image img)
|
||||
{
|
||||
@ -28,8 +26,6 @@ public class Rendu extends MapRenderer implements Runnable
|
||||
public void render(MapView v, final MapCanvas mc, Player p)
|
||||
{
|
||||
canvas = mc;
|
||||
carte = v;
|
||||
joueur = p;
|
||||
|
||||
|
||||
if (!estRendu) // Si la map a déjà été rendu, on n'entre plus dans la fonction, ce qui évite de surcharger le serveur
|
||||
@ -49,18 +45,4 @@ public class Rendu extends MapRenderer implements Runnable
|
||||
canvas.drawImage(0, 0, touhou);
|
||||
|
||||
}
|
||||
|
||||
/*@SuppressWarnings("deprecation")
|
||||
void SvgMap(int IdMap, String nomImage, String nomJoueur)
|
||||
{
|
||||
System.out.println("Saving map " + carte.getId());
|
||||
ArrayList<String> liste = new ArrayList<String>();
|
||||
liste.add(String.valueOf(IdMap));
|
||||
liste.add(nomImage);
|
||||
liste.add(nomJoueur);
|
||||
liste.add(String.valueOf(renderName));
|
||||
plugin.getConfig().set("map" + IdMap, liste);
|
||||
plugin.saveConfig();
|
||||
}*/
|
||||
|
||||
}
|
98
src/fr/moribus/ImageOnMap/SavedMap.java
Normal file
98
src/fr/moribus/ImageOnMap/SavedMap.java
Normal file
@ -0,0 +1,98 @@
|
||||
package fr.moribus.ImageOnMap;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.map.MapPalette;
|
||||
import org.bukkit.map.MapView;
|
||||
|
||||
public class SavedMap
|
||||
{
|
||||
ImageOnMap plugin;
|
||||
String nomImg, nomJoueur;
|
||||
short idMap;
|
||||
BufferedImage image;
|
||||
|
||||
SavedMap(ImageOnMap plug, String nomJ, short id, BufferedImage img)
|
||||
{
|
||||
plugin = plug;
|
||||
nomJoueur = nomJ;
|
||||
idMap = id;
|
||||
image = img;
|
||||
nomImg = "map" + id;
|
||||
}
|
||||
|
||||
SavedMap(ImageOnMap plug, short id)
|
||||
{
|
||||
idMap = id;
|
||||
plugin = plug;
|
||||
Set<String> cle = plugin.getConfig().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)
|
||||
{
|
||||
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);
|
||||
try {
|
||||
image = ImageIO.read(new File("./plugins/ImageOnMap/Image/"+ nomImg + ".png"));
|
||||
//System.out.println("Chargement de l'image fini");
|
||||
} catch (IOException e) {
|
||||
System.out.println("Image "+ nomImg +".png doesn't exists in Image directory.");
|
||||
}
|
||||
}
|
||||
}
|
||||
if(tmp == 0)
|
||||
{
|
||||
System.out.println("No map was loaded");
|
||||
}
|
||||
}
|
||||
|
||||
Boolean SaveMap()
|
||||
{
|
||||
System.out.println("Saving map " + idMap);
|
||||
|
||||
// Enregistrement de l'image sur le disque dur
|
||||
try
|
||||
{
|
||||
File outputfile = new File("./plugins/ImageOnMap/Image/"+ nomImg + ".png");
|
||||
ImageIO.write(MapPalette.resizeImage(image), "png", outputfile);
|
||||
} catch (IOException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
// Enregistrement de la map dans la config
|
||||
ArrayList<String> liste = new ArrayList<String>();
|
||||
liste.add(String.valueOf(idMap));
|
||||
liste.add(nomImg);
|
||||
liste.add(nomJoueur);
|
||||
plugin.getConfig().set(nomImg, liste);
|
||||
plugin.saveConfig();
|
||||
return true;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
Boolean LoadMap()
|
||||
{
|
||||
MapView carte = Bukkit.getMap(idMap);
|
||||
if(carte != null)
|
||||
{
|
||||
ImageRenderer.SupprRendu(carte);
|
||||
carte.addRenderer(new Rendu(image));
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
package fr.moribus.ImageOnMap;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@ -9,21 +10,23 @@ import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.map.MapView;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
public class TacheTraitementImg extends BukkitRunnable
|
||||
public class TacheTraitementMap extends BukkitRunnable
|
||||
{
|
||||
int i;
|
||||
Player joueur;
|
||||
ImageRenderer renduImg;
|
||||
PlayerInventory inv;
|
||||
ItemStack map;
|
||||
ImageOnMap plugin;
|
||||
|
||||
TacheTraitementImg(Player j, String u)
|
||||
TacheTraitementMap(Player j, String u, ImageOnMap plug)
|
||||
{
|
||||
i = 0;
|
||||
joueur = j;
|
||||
renduImg = new ImageRenderer(u);
|
||||
renduImg.start();
|
||||
inv = joueur.getInventory();
|
||||
plugin = plug;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@ -32,13 +35,28 @@ public class TacheTraitementImg extends BukkitRunnable
|
||||
{
|
||||
if(!renduImg.getStatut())
|
||||
{
|
||||
joueur.sendMessage("Nombre d'exécution depuis le lancement du timer : " + i);
|
||||
//joueur.sendMessage("Nombre d'exécution depuis le lancement du timer : " + i);
|
||||
i++;
|
||||
if(i > 42)
|
||||
{
|
||||
joueur.sendMessage("TIMEOUT: the render took too many time");
|
||||
cancel();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cancel();
|
||||
int nbImage = renduImg.getImg().getPoster().length;
|
||||
if (plugin.getConfig().getInt("Limit-map-by-server") != 0 && nbImage + ImgUtility.getNombreDeMaps(plugin) > plugin.getConfig().getInt("Limit-map-by-server"))
|
||||
{
|
||||
joueur.sendMessage("ERROR: cannot render "+ nbImage +" picture(s): the limit of maps per server would be exceeded.");
|
||||
return;
|
||||
}
|
||||
if (plugin.getConfig().getInt("Limit-map-by-player") != 0 && nbImage + ImgUtility.getNombreDeMapsParJoueur(plugin, joueur.getName()) > plugin.getConfig().getInt("Limit-map-by-player"))
|
||||
{
|
||||
joueur.sendMessage(ChatColor.RED +"ERROR: cannot render "+ nbImage +" picture(s): the limit of maps allowed for you (per player) would be exceeded.");
|
||||
return;
|
||||
}
|
||||
MapView carte;
|
||||
|
||||
for (int i = 0; i < nbImage; i++)
|
||||
@ -51,6 +69,10 @@ public class TacheTraitementImg extends BukkitRunnable
|
||||
meta.setDisplayName("Map (" +renduImg.getImg().NumeroMap.get(i) +")");
|
||||
map.setItemMeta(meta);
|
||||
inv.addItem(map);
|
||||
|
||||
//Svg de la map
|
||||
SavedMap svg = new SavedMap(plugin, joueur.getName(), carte.getId(), renduImg.getImg().getPoster()[i]);
|
||||
svg.SaveMap();
|
||||
}
|
||||
joueur.sendMessage("Rendu de l'image fini");
|
||||
}
|
Loading…
Reference in New Issue
Block a user