Ajout de paramètres pour limiter le nombre de map par serveur et par joueur

This commit is contained in:
Coutume 2013-10-03 02:25:21 +02:00
parent 3655cffd38
commit 770cff2fa8
4 changed files with 94 additions and 12 deletions

View File

@ -21,6 +21,9 @@ public final class ImageOnMap extends JavaPlugin
// On ajoute si besoin les params par défaut du plugin
ImgUtility.CreeSectionConfig(this);
System.out.println(ImgUtility.getNombreDeMaps(this));
System.out.println(ImgUtility.getNombreDeMapsParJoueur(this, "moribus"));
if(dossierCree)
{
getCommand("tomap").setExecutor(new ImageRenduCommande(this));

View File

@ -14,13 +14,15 @@ public class ImageRenduCommande implements CommandExecutor
{
Player joueur;
boolean renderName;
boolean renderName, imgSvg;
ImageOnMap ca;
boolean imgSvg;
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")
@ -67,10 +69,29 @@ public class ImageRenduCommande implements CommandExecutor
else
renderName = false;
imgSvg = true;
// On crée une map
Rendu ren = new Rendu(arg3[0], imgSvg, ca, renderName);
// 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()) && 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);
Rendu.SupprRendu(carte);
carte.addRenderer(ren);
joueur.setItemInHand(new ItemStack(Material.MAP, 1, carte.getId()));

View File

@ -50,14 +50,17 @@ public class ImageSupprCommande implements CommandExecutor
Set<String> cle = plugin.getConfig().getKeys(false);
for (String s: cle)
{
if(carte.getId() == Short.parseShort(plugin.getConfig().getStringList(s).get(0)))
if(plugin.getConfig().getStringList(s).size() >= 3)
{
Rendu.SupprRendu(carte);
plugin.getConfig().set(s, null);
plugin.saveConfig();
new File("./plugins/ImageOnMap/" + s + ".png").delete();
joueur.sendMessage("L'image a bien été supprimée");
return true;
if(carte.getId() == Short.parseShort(plugin.getConfig().getStringList(s).get(0)))
{
Rendu.SupprRendu(carte);
plugin.getConfig().set(s, null);
plugin.saveConfig();
new File("./plugins/ImageOnMap/" + s + ".png").delete();
joueur.sendMessage("L'image a bien été supprimée");
return true;
}
}
}

View File

@ -1,6 +1,7 @@
package fr.moribus.ImageOnMap;
import java.io.File;
import java.util.Set;
import org.bukkit.ChatColor;
import org.bukkit.command.BlockCommandSender;
@ -48,4 +49,58 @@ public class ImgUtility
plugin.saveConfig();
}
static int getNombreDeMaps(ImageOnMap plugin)
{
int nombre = 0;
Set<String> cle = plugin.getConfig().getKeys(false);
for (String s: cle)
{
if(plugin.getConfig().getStringList(s).size() >= 3)
{
nombre++;
}
}
return nombre;
}
static int getNombreDeMapsParJoueur(ImageOnMap plugin, String pseudo)
{
int nombre = 0;
Set<String> cle = plugin.getConfig().getKeys(false);
for (String s: cle)
{
if(plugin.getConfig().getStringList(s).size() >= 3 && plugin.getConfig().getStringList(s).get(2).contentEquals(pseudo))
{
nombre++;
}
}
return nombre;
}
static boolean EstDansFichier(ImageOnMap plugin, short id)
{
Set<String> cle = plugin.getConfig().getKeys(false);
for (String s: cle)
{
if(plugin.getConfig().getStringList(s).size() >= 3 && Short.parseShort(plugin.getConfig().getStringList(s).get(0)) == id)
{
return true;
}
}
return false;
}
public static boolean EstDansFichier(ImageOnMap plugin, short id, String pseudo)
{
Set<String> cle = plugin.getConfig().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))
{
return true;
}
}
return false;
}
}