Ajout de la commande /rmmap

This commit is contained in:
Coutume 2013-10-01 17:38:33 +02:00
parent b9393d7ec5
commit aa9c7df875
7 changed files with 68 additions and 50 deletions

View File

@ -1,8 +1,11 @@
name: ImageOnMap name: ImageOnMap
main: fr.moribus.ImageOnMap.ImageOnMap main: fr.moribus.ImageOnMap.ImageOnMap
version: 1.0 version: 1.2
commands: commands:
tomap: tomap:
description: render an image in a map description: render an image in a map
usage: /<command> [URL] [true or false] usage: /<command> [URL]
rmmap:
description: remove an image
usage: /<command>

View File

@ -1,5 +1,6 @@
package fr.moribus.ImageOnMap; package fr.moribus.ImageOnMap;
import java.io.File;
import java.util.Set; import java.util.Set;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@ -8,12 +9,18 @@ import org.bukkit.plugin.java.JavaPlugin;
public final class ImageOnMap extends JavaPlugin public final class ImageOnMap extends JavaPlugin
{ {
File dossier;
@Override @Override
public void onEnable() public void onEnable()
{ {
dossier = new File(getDataFolder().getPath() + "/Image");
if (!dossier.exists())
{
dossier.mkdir();
}
System.out.println("Loading ImageOnMap"); System.out.println("Loading ImageOnMap");
getCommand("tomap").setExecutor(new ImageCommande(this)); getCommand("tomap").setExecutor(new ImageRenduCommande(this));
getCommand("rmmap").setExecutor(new ImageSupprCommande(this));
this.saveDefaultConfig(); this.saveDefaultConfig();
ChargerMap(); ChargerMap();
} }
@ -24,16 +31,16 @@ public final class ImageOnMap extends JavaPlugin
System.out.println("Stopping ImageOnMap"); System.out.println("Stopping ImageOnMap");
} }
void ChargerMap() public void ChargerMap()
{ {
Set<String> cle = getConfig().getKeys(false); Set<String> cle = getConfig().getKeys(false);
for (String s: cle) for (String s: cle)
{ {
System.out.println("Loading" + s); System.out.println("Loading " + s);
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
MapView carte = Bukkit.getMap(Short.parseShort(getConfig().getStringList(s).get(0))); MapView carte = Bukkit.getMap(Short.parseShort(getConfig().getStringList(s).get(0)));
Rendu.SupprRendu(carte); Rendu.SupprRendu(carte);
carte.addRenderer(new Rendu("./plugins/ImageOnMap/" + getConfig().getStringList(s).get(1) + ".png", getConfig().getStringList(s).get(2))); carte.addRenderer(new Rendu("./plugins/ImageOnMap/Image/" + getConfig().getStringList(s).get(1) + ".png", getConfig().getStringList(s).get(2)));
} }
} }

View File

@ -1,27 +1,23 @@
package fr.moribus.ImageOnMap; package fr.moribus.ImageOnMap;
import java.util.ArrayList;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.command.BlockCommandSender;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.map.MapView; import org.bukkit.map.MapView;
import org.bukkit.plugin.Plugin;
public class ImageCommande implements CommandExecutor public class ImageRenduCommande implements CommandExecutor
{ {
Player joueur; Player joueur;
Plugin ca; ImageOnMap ca;
boolean imgSvg; boolean imgSvg;
public ImageCommande(Plugin plugin) public ImageRenduCommande(ImageOnMap plugin)
{ {
ca = plugin; ca = plugin;
} }
@ -32,50 +28,39 @@ public class ImageCommande implements CommandExecutor
String[] arg3) String[] arg3)
{ {
// On vérifie si celui qui exécute la commande est bien un joueur // On vérifie si celui qui exécute la commande est bien un joueur
if (sender instanceof Player) if (!ImgUtility.VerifierIdentite(sender))
joueur = (Player) sender; return false;
else if (sender instanceof ConsoleCommandSender)
{System.out.println(ChatColor.RED + "Cette commande ne peut être utilisée dans la console !"); return true;}
else if (sender instanceof BlockCommandSender)
{System.out.println(ChatColor.RED + "Cette commande ne peut être utilisée par un bloc-commande !"); return true;}
else
{System.out.println(ChatColor.RED + "Cette commande ne peut être lancée de cette façon !"); return true;}
if (arg3.length < 2) joueur = (Player) sender;
if(!joueur.hasPermission("imageonmap.userender") || !joueur.isOp())
{ {
joueur.sendMessage("You must enter image url, and true if you want image to be persistant (false otherwise)"); joueur.sendMessage("You are not allowed to use this command ( " + arg1.getName() + " )!");
return false;
}
if(joueur.getItemInHand().getType() != Material.MAP)
{
joueur.sendMessage(ChatColor.RED + "Vous devez tenir une map en main !!");
return false;
}
if (arg3.length < 1)
{
joueur.sendMessage(ChatColor.RED + "You must enter image url");
return false; return false;
} }
if (arg3[1].contains("true")) imgSvg = true;
imgSvg = true;
else
imgSvg = false;
// On crée une map // On crée une map
Rendu ren = new Rendu(arg3[0], imgSvg); Rendu ren = new Rendu(arg3[0], imgSvg, ca);
MapView carte = Bukkit.createMap(joueur.getWorld()); MapView carte = Bukkit.getMap(joueur.getItemInHand().getDurability());
Rendu.SupprRendu(carte); Rendu.SupprRendu(carte);
carte.addRenderer(ren); carte.addRenderer(ren);
joueur.setItemInHand(new ItemStack(Material.MAP, 1, carte.getId())); joueur.setItemInHand(new ItemStack(Material.MAP, 1, carte.getId()));
if (imgSvg)
{
SvgMap(carte.getId(), "map" + carte.getId(), joueur.getName());
}
return true; return true;
} }
void SvgMap(int IdMap, String nomImage, String nomJoueur)
{
System.out.println("Sauvegarde de la map..");
ArrayList<String> liste = new ArrayList<String>();
liste.add(String.valueOf(IdMap));
liste.add(nomImage);
liste.add(nomJoueur);
ca.getConfig().set("map" + IdMap, liste);
ca.saveConfig();
}
} }

View File

@ -4,6 +4,7 @@ import java.awt.image.BufferedImage;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.net.URI; import java.net.URI;
import java.util.ArrayList;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
@ -25,12 +26,15 @@ public class Rendu extends MapRenderer implements Runnable
MapView carte; MapView carte;
String URLImage, nomJoueur; String URLImage, nomJoueur;
Player joueur; Player joueur;
boolean hasFail;
ImageOnMap plugin;
public Rendu(String url, boolean svg) public Rendu(String url, boolean svg, ImageOnMap plug)
{ {
estRendu = true; estRendu = true;
estSVGee = svg; estSVGee = svg;
URLImage = url; URLImage = url;
plugin = plug;
} }
public Rendu(String url, String pseudo) public Rendu(String url, String pseudo)
@ -59,6 +63,7 @@ public class Rendu extends MapRenderer implements Runnable
} }
// Le chargement et le rendu de l'image se font dans un thread afin d'éviter le lag.. // Le chargement et le rendu de l'image se font dans un thread afin d'éviter le lag..
@SuppressWarnings("deprecation")
@Override @Override
public void run() public void run()
{ {
@ -72,6 +77,7 @@ public class Rendu extends MapRenderer implements Runnable
} }
catch (IOException e) { catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
hasFail = true;
} }
} }
if (touhou == null && local == true) if (touhou == null && local == true)
@ -83,6 +89,7 @@ public class Rendu extends MapRenderer implements Runnable
} }
catch (IOException e) { catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
hasFail = true;
} }
} }
@ -91,14 +98,19 @@ public class Rendu extends MapRenderer implements Runnable
{ {
try try
{ {
@SuppressWarnings("deprecation") File outputfile = new File("./plugins/ImageOnMap/Image/map" + carte.getId() + ".png");
File outputfile = new File("./plugins/ImageOnMap/map" + carte.getId() + ".png");
ImageIO.write(MapPalette.resizeImage(touhou), "png", outputfile); ImageIO.write(MapPalette.resizeImage(touhou), "png", outputfile);
hasFail = false;
} catch (IOException e) } catch (IOException e)
{ {
e.printStackTrace(); e.printStackTrace();
hasFail = true;
} }
} }
if(!hasFail && local == false)
{
SvgMap(carte.getId(), "map" + carte.getId(), joueur.getName());
}
//System.out.println("Rendu de l'image.."); //System.out.println("Rendu de l'image..");
@ -115,6 +127,17 @@ public class Rendu extends MapRenderer implements Runnable
} }
void SvgMap(int IdMap, String nomImage, String nomJoueur)
{
System.out.println("Sauvegarde de la map..");
ArrayList<String> liste = new ArrayList<String>();
liste.add(String.valueOf(IdMap));
liste.add(nomImage);
liste.add(nomJoueur);
plugin.getConfig().set("map" + IdMap, liste);
plugin.saveConfig();
}
static void SupprRendu(MapView map) static void SupprRendu(MapView map)
{ {
if (map.getRenderers().size() != 0) if (map.getRenderers().size() != 0)