mirror of
https://github.com/zDevelopers/ImageOnMap.git
synced 2025-01-26 09:11:27 +01:00
First update# On branch master
This commit is contained in:
parent
525c6e7891
commit
f12b48a6e5
BIN
bin/fr/moribus/ImageOnMap/ImageCommande.class
Normal file
BIN
bin/fr/moribus/ImageOnMap/ImageCommande.class
Normal file
Binary file not shown.
BIN
bin/fr/moribus/ImageOnMap/ImageOnMap.class
Normal file
BIN
bin/fr/moribus/ImageOnMap/ImageOnMap.class
Normal file
Binary file not shown.
BIN
bin/fr/moribus/ImageOnMap/Rendu.class
Normal file
BIN
bin/fr/moribus/ImageOnMap/Rendu.class
Normal file
Binary file not shown.
0
config.yml
Normal file
0
config.yml
Normal file
81
src/fr/moribus/ImageOnMap/ImageCommande.java
Normal file
81
src/fr/moribus/ImageOnMap/ImageCommande.java
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
package fr.moribus.ImageOnMap;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.command.BlockCommandSender;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.ConsoleCommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.map.MapView;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
|
public class ImageCommande implements CommandExecutor
|
||||||
|
{
|
||||||
|
|
||||||
|
Player joueur;
|
||||||
|
Plugin ca;
|
||||||
|
boolean imgSvg;
|
||||||
|
|
||||||
|
public ImageCommande(Plugin plugin)
|
||||||
|
{
|
||||||
|
ca = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(CommandSender sender, Command arg1, String arg2,
|
||||||
|
String[] arg3)
|
||||||
|
{
|
||||||
|
// On vérifie si celui qui exécute la commande est bien un joueur
|
||||||
|
if (sender instanceof Player)
|
||||||
|
joueur = (Player) sender;
|
||||||
|
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.sendMessage("You must enter image url, and true if you want image to be persistant (false otherwise)");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (arg3[1].contains("true"))
|
||||||
|
imgSvg = true;
|
||||||
|
else
|
||||||
|
imgSvg = false;
|
||||||
|
|
||||||
|
// On crée une map
|
||||||
|
Rendu ren = new Rendu(arg3[0], imgSvg);
|
||||||
|
MapView carte = Bukkit.createMap(joueur.getWorld());
|
||||||
|
Rendu.SupprRendu(carte);
|
||||||
|
carte.addRenderer(ren);
|
||||||
|
joueur.setItemInHand(new ItemStack(Material.MAP, 1, carte.getId()));
|
||||||
|
|
||||||
|
if (imgSvg)
|
||||||
|
{
|
||||||
|
SvgMap(carte.getId(), "map" + carte.getId(), joueur.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
40
src/fr/moribus/ImageOnMap/ImageOnMap.java
Normal file
40
src/fr/moribus/ImageOnMap/ImageOnMap.java
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
package fr.moribus.ImageOnMap;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.map.MapView;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
public final class ImageOnMap extends JavaPlugin
|
||||||
|
{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnable()
|
||||||
|
{
|
||||||
|
System.out.println("Loading ImageOnMap");
|
||||||
|
getCommand("tomap").setExecutor(new ImageCommande(this));
|
||||||
|
this.saveDefaultConfig();
|
||||||
|
ChargerMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable()
|
||||||
|
{
|
||||||
|
System.out.println("Stopping ImageOnMap");
|
||||||
|
}
|
||||||
|
|
||||||
|
void ChargerMap()
|
||||||
|
{
|
||||||
|
Set<String> cle = getConfig().getKeys(false);
|
||||||
|
for (String s: cle)
|
||||||
|
{
|
||||||
|
System.out.println("Loading" + s);
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
MapView carte = Bukkit.getMap(Short.parseShort(getConfig().getStringList(s).get(0)));
|
||||||
|
Rendu.SupprRendu(carte);
|
||||||
|
carte.addRenderer(new Rendu("./plugins/ImageOnMap/" + getConfig().getStringList(s).get(1) + ".png", getConfig().getStringList(s).get(2)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
131
src/fr/moribus/ImageOnMap/Rendu.java
Normal file
131
src/fr/moribus/ImageOnMap/Rendu.java
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
package fr.moribus.ImageOnMap;
|
||||||
|
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.URI;
|
||||||
|
|
||||||
|
import javax.imageio.ImageIO;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.map.MapCanvas;
|
||||||
|
import org.bukkit.map.MapPalette;
|
||||||
|
import org.bukkit.map.MapRenderer;
|
||||||
|
import org.bukkit.map.MapView;
|
||||||
|
import org.bukkit.map.MinecraftFont;
|
||||||
|
|
||||||
|
public class Rendu extends MapRenderer implements Runnable
|
||||||
|
{
|
||||||
|
|
||||||
|
boolean estRendu, estSVGee, local = false;
|
||||||
|
BufferedImage touhou;
|
||||||
|
BufferedImage resizedImage;
|
||||||
|
private Thread TRendu;
|
||||||
|
public MapCanvas canvas;
|
||||||
|
MapView carte;
|
||||||
|
String URLImage, nomJoueur;
|
||||||
|
Player joueur;
|
||||||
|
|
||||||
|
public Rendu(String url, boolean svg)
|
||||||
|
{
|
||||||
|
estRendu = true;
|
||||||
|
estSVGee = svg;
|
||||||
|
URLImage = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Rendu(String url, String pseudo)
|
||||||
|
{
|
||||||
|
estRendu = true;
|
||||||
|
estSVGee = false;
|
||||||
|
URLImage = url;
|
||||||
|
local = true; // Sert à indiquer que le rendu a été lancé par le plugin au démarrage, et non par un joueur en jeu.
|
||||||
|
nomJoueur = pseudo;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
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
|
||||||
|
{
|
||||||
|
// On instancie et démarre le thread de rendu
|
||||||
|
TRendu = new Thread(this);
|
||||||
|
TRendu.start();
|
||||||
|
estRendu = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Le chargement et le rendu de l'image se font dans un thread afin d'éviter le lag..
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
// chargement de l'image seulement si elle n'est pas déjà chargée
|
||||||
|
if (touhou == null && local == false)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
touhou = ImageIO.read(URI.create(URLImage).toURL().openStream());
|
||||||
|
//System.out.println("chargement de l'image");
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (touhou == null && local == true)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
touhou = ImageIO.read(new File(URLImage));
|
||||||
|
//System.out.println("chargement de l'image");
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (estSVGee)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
File outputfile = new File("./plugins/ImageOnMap/map" + carte.getId() + ".png");
|
||||||
|
ImageIO.write(MapPalette.resizeImage(touhou), "png", outputfile);
|
||||||
|
} catch (IOException e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//System.out.println("Rendu de l'image..");
|
||||||
|
|
||||||
|
// on dessine l'image redimensionnée dans le canvas (et donc, sur la map !)
|
||||||
|
canvas.drawImage(0, 0, MapPalette.resizeImage(touhou));
|
||||||
|
|
||||||
|
// On écrit le pseudo du joueur qui a téléchargé l'image
|
||||||
|
if(!local)
|
||||||
|
canvas.drawText(2, 120, MinecraftFont.Font, new String("(" + joueur.getName() + ")"));
|
||||||
|
else
|
||||||
|
canvas.drawText(2, 120, MinecraftFont.Font, new String("(" + nomJoueur + ")"));
|
||||||
|
|
||||||
|
//System.out.println("Rendu de l'image fini");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SupprRendu(MapView map)
|
||||||
|
{
|
||||||
|
if (map.getRenderers().size() != 0)
|
||||||
|
{
|
||||||
|
int i = 0, t = map.getRenderers().size();
|
||||||
|
while (i < t )
|
||||||
|
{
|
||||||
|
map.removeRenderer(map.getRenderers().get(i));
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user