Restructuration des packages

This commit is contained in:
2014-11-29 13:42:25 +01:00
parent f5f899b771
commit f3a87f8bbf
15 changed files with 22 additions and 22 deletions

View File

@@ -0,0 +1,60 @@
package net.mc_pandacraft.java.plugin.pandacraftutils.simple_commands._command_alias;
import java.util.List;
import java.util.Map;
import net.mc_pandacraft.java.plugin.pandacraftutils.ConfigManager;
import net.mc_pandacraft.java.plugin.pandacraftutils.PandacraftUtils;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
public class CommandAliasManager implements Listener {
private PandacraftUtils plugin;
public CommandAliasManager(PandacraftUtils pl) {
plugin = pl;
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
@EventHandler(priority=EventPriority.HIGHEST)
public void onPlayerCommandPreprocess (PlayerCommandPreprocessEvent event)
{
Player p = event.getPlayer();
List<Map<String, String>> aliases = ConfigManager.getInstance().CommandAlias_alias;
for (Map<String, String> alias : aliases) {
if (alias == null)
continue;
String perm = alias.get("permissions");
String initialCmd = alias.get("initialCommand");
String aliasCmd = alias.get("replaceWith");
if (perm == null || initialCmd == null || aliasCmd == null)
continue;
if (!p.hasPermission(perm))
continue;
String mess = event.getMessage();
if(mess.toLowerCase().startsWith(initialCmd))
mess = mess.replaceFirst(initialCmd, aliasCmd);
else
continue;
event.setMessage(mess);
return;
}
}
}

View File

@@ -0,0 +1,284 @@
package net.mc_pandacraft.java.plugin.pandacraftutils.simple_commands.list;
import java.util.ArrayList;
import net.mc_pandacraft.java.plugin.pandacraftutils.PandacraftUtils;
import net.mc_pandacraft.java.plugin.pandacraftutils.afk.AfkPlayer;
import net.mc_pandacraft.java.util.TimeUtil;
import org.bukkit.GameMode;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.craftbukkit.v1_7_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
public class CommandList implements CommandExecutor {
private PandacraftUtils plugin;
public CommandList(PandacraftUtils pl)
{
plugin = pl;
plugin.getCommand("list").setExecutor(this);
}
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
{
boolean execute = false;
boolean details = false;
if(sender instanceof Player)
{
if (((Player)sender).hasPermission("pandacraft.players"))
execute = true;
if (((Player)sender).hasPermission("pandacraft.players.details"))
details = true;
}
else
{
execute = true;
details = true;
}
if (execute)
{
Server s = plugin.getServer();
Player[] pls = plugin.getServer().getOnlinePlayers();
String decoration_color = "§6";
String header = "";
if (details && args.length > 0)
{
String arg = args[0].toLowerCase();
if (arg.equals("loc") || arg.equals("world"))
header = "Localisation des joueurs";
else if (arg.equals("uuid"))
header = "Identifiants des joueurs";
else if (arg.equals("ip") || arg.equals("ping"))
header = "IP et ping des joueurs";
else if (arg.equals("afk"))
header = "Status AFK des joueurs";
else if (arg.equals("gm") || arg.equals("gamemode"))
header = "Mode de jeu des joueurs";
else if (arg.equals("spam"))
header = "Niveau de spam des joueurs";
}
else
{
header = "Liste des joueurs";
}
header = header.concat(" (§7"+pls.length+decoration_color+"/§7"+s.getMaxPlayers()+decoration_color+")");
char decoration_motif = '-';
ArrayList<String> aff_list = new ArrayList<String>();
if (details && args.length > 0 && (args[0].toLowerCase().equals("loc") || args[0].toLowerCase().equals("world")))
{
for (World w : plugin.getServer().getWorlds())
{
if (w.getPlayers().size() == 0)
continue;
// filtrage pour éviter d'afficher un monde vide (qui contiennent que des joueurs hors ligne)
boolean can_continue = false;
for (Player p : w.getPlayers())
if (p != null && p.isOnline())
{
can_continue = true;
break;
}
if (!can_continue)
continue;
// ---------
aff_list.add(decoration_color+"Monde §7"+w.getName());
for (Player p : w.getPlayers())
{
// filtrage pour éviter d'afficher des joueurs hors ligne
if (p == null || !p.isOnline())
continue;
int x = p.getLocation().getBlockX();
int y = p.getLocation().getBlockY();
int z = p.getLocation().getBlockZ();
String name = p.getDisplayName();
aff_list.add(decoration_color+"- §f"+name+"§r - §7x="+x+" ; y="+y+" ; z="+z);
}
}
}
else if (details && args.length > 0)
{
for (Player p : pls)
{
if (p == null)
continue;
String name = p.getDisplayName();
if (args.length > 0 && args[0].toLowerCase().equals("uuid"))
{
String uuid = p.getUniqueId().toString();
aff_list.add("§f"+name+"§r - §7"+uuid);
}
else if (args.length > 0 && (args[0].toLowerCase().equals("ip") || args[0].toLowerCase().equals("ping")))
{
String ip = p.getAddress().getAddress().getHostAddress();
int ping = ((CraftPlayer)p).getHandle().ping;
aff_list.add("§f"+name+"§r - §7"+ip+"§r - ping : §7"+ping);
}
else if (args.length > 0 && (args[0].toLowerCase().equals("spam")))
{
try
{
int vl = plugin.chatAnalysisManager.getCAPlayer(p).getVL();
int max_vl = plugin.chatAnalysisManager.getCAPlayer(p).getMaxVL();
aff_list.add("§f"+name+"§r - §7"+vl+"/"+max_vl);
}
catch (NullPointerException e)
{
aff_list.add("§cImpossible de récupérer le niveau de spam du joueur.");
}
}
else if (args.length > 0 && args[0].toLowerCase().equals("afk"))
{
AfkPlayer ap = plugin.commandAfk.getAfkPlayer(p);
boolean afk = (ap != null && ap.isAfk());
double afk_time = (ap != null)?ap.getDurationSinceLastAction():-1;
String afkTime;
if (afk_time > 20)
afkTime = TimeUtil.durationToString((long)(afk_time*1000));
else
afkTime = "Actif";
aff_list.add("§f"+name+""+((afk)?" §c[Afk]§r":"")+" §7"+afkTime+"§r");
}
else if (args.length > 0 && (args[0].toLowerCase().equals("gm") || args[0].toLowerCase().equals("gamemode")))
{
String world = p.getWorld().getName();
double health = Math.rint(p.getHealth()*100)/100;
double eat = Math.rint(p.getFoodLevel()*100)/100;
boolean flyMode = p.getAllowFlight();
String gm = (p.getGameMode() == GameMode.SURVIVAL)?("§CSurvie§r;vie:§7"+health+"§r;faim:§7"+eat+"§r"+((flyMode)?";§7canFly":""))
:(p.getGameMode() == GameMode.CREATIVE)?"§bCréa§r"
:(p.getGameMode() == GameMode.ADVENTURE)?("§8Aventure§r;vie:§7"+health+"§r;faim:§7"+eat+"§r"+((flyMode)?";§7canFly":""))
:"§oInconnu";
String afk = (plugin.commandAfk.getAfkPlayer(p) != null && plugin.commandAfk.getAfkPlayer(p).isAfk())?" §c(Afk)§r":"";
aff_list.add("§f"+name+"§r"+afk+" - §7"+world+"§r - "+gm);
}
else
{
return false;
}
}
}
else
{
String joueurs = "";
boolean first = true;
for (Player p : pls)
{
if (p == null)
continue;
if (!first)
joueurs = joueurs.concat("§r, ");
else
first = false;
joueurs = joueurs.concat(p.getDisplayName());
}
if (pls.length > 0)
{
aff_list.add(joueurs);
}
else
aff_list.add("Aucun joueur connecté");
}
int max_length = (header.length()-2*char_count(header, '§')) + 2;
max_length += 2; // évite le décalage de l'entête si il n'y a aucun trait à gauche
for (String line : aff_list)
max_length = (line != null && (line.length()-2*char_count(line, '§')) > max_length) ? (line.length()-2*char_count(line, '§')) : max_length;
if (max_length > 70) max_length = 70;
long header_left_aff = Math.round(Math.floor((max_length - (header.length()-2*char_count(header, '§')) - 2)/2D));
if (header_left_aff < 0) header_left_aff = 0;
long header_right_aff = Math.round(Math.ceil((max_length - (header.length()-2*char_count(header, '§')) - 2)/2D));
if (header_right_aff < 0) header_right_aff = 0;
String final_header = decoration_color;
String final_footer = decoration_color;
for (int j=0; j<header_left_aff; j++)
final_header = final_header + decoration_motif;
final_header = final_header + " " + header + " ";
for (int j=0; j<header_right_aff; j++)
final_header = final_header + decoration_motif;
for (int j=0; j<max_length; j++)
final_footer = final_footer + decoration_motif;
sender.sendMessage(final_header);
for (String line : aff_list)
sender.sendMessage(line);
sender.sendMessage(final_footer);
}
else
sender.sendMessage("Vous n'avez pas la permission pour cette commande.");
return true;
}
private int char_count(String s, char c_match)
{
char[] chars = s.toCharArray();
int count = 0;
for (char c : chars)
if (c == c_match)
count++;
return count;
}
}

View File

@@ -0,0 +1,38 @@
package net.mc_pandacraft.java.plugin.pandacraftutils.simple_commands.me;
import net.mc_pandacraft.java.plugin.pandacraftutils.PandacraftUtils;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.command.RemoteConsoleCommandSender;
import org.bukkit.entity.Player;
public class CommandMe implements CommandExecutor {
private PandacraftUtils plugin;
public CommandMe(PandacraftUtils pl) {
plugin = pl;
plugin.getCommand("me").setExecutor(this);
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
String name;
if (sender instanceof Player)
name = ((Player)sender).getDisplayName()+ChatColor.RESET+" "+ChatColor.ITALIC;
else if (sender instanceof ConsoleCommandSender
|| sender instanceof RemoteConsoleCommandSender)
name = ChatColor.ITALIC+"Le serveur ";
else
name = ChatColor.ITALIC+"@ ";
plugin.getServer().broadcastMessage(name + StringUtils.join(args, ' '));
return true;
}
}

View File

@@ -0,0 +1,57 @@
package net.mc_pandacraft.java.plugin.pandacraftutils.simple_commands.ping;
import net.mc_pandacraft.java.plugin.pandacraftutils.PandacraftUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.craftbukkit.v1_7_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
public class CommandPing implements CommandExecutor {
private PandacraftUtils plugin;
public CommandPing(PandacraftUtils pl)
{
plugin = pl;
plugin.getCommand("ping").setExecutor(this);
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
{
if (sender instanceof Player)
{
try
{
int ping = ((CraftPlayer)(Player)sender).getHandle().ping;
sender.sendMessage(ChatColor.LIGHT_PURPLE+"Votre ping est de §7"+ping+" ms"+ChatColor.LIGHT_PURPLE+".");
}
catch (Exception e)
{
sender.sendMessage(ChatColor.RED+"Impossible de récupérer votre ping");
e.printStackTrace();
}
return true;
}
else if (sender instanceof ConsoleCommandSender)
{
plugin.getServer().dispatchCommand(sender, "list ping");
}
return true;
}
}

View File

@@ -0,0 +1,149 @@
package net.mc_pandacraft.java.plugin.pandacraftutils.simple_commands.setblock;
import net.mc_pandacraft.java.plugin.pandacraftutils.PandacraftUtils;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
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;
public class CommandSetblock implements CommandExecutor {
private PandacraftUtils plugin;
public CommandSetblock(PandacraftUtils pl)
{
plugin = pl;
plugin.getCommand("setblock").setExecutor(this);
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
{
if (sender instanceof Player)
{
if (sender.hasPermission("pandacraft.setblock"))
{
if (args.length >= 4)
{
int x, y, z;
try
{
x = Integer.parseInt(args[0]);
y = Integer.parseInt(args[1]);
z = Integer.parseInt(args[2]);
}
catch (NumberFormatException e)
{
sender.sendMessage("§cLes coordonnées doivent être des chiffres :");
return false;
}
Material mat = Material.matchMaterial(args[3]);
if (mat == null)
{
sender.sendMessage("§cLe type de bloc indiqué n'existe pas :");
return false;
}
World w = ((Player)sender).getWorld();
if (args.length >= 5 && plugin.getServer().getWorld(args[4]) != null)
w = plugin.getServer().getWorld(args[4]);
w.getBlockAt(x, y, z).setType(mat);
sender.sendMessage("Bloc changé en "+mat+" à l'endroit "+(new Location(w, x, y, z)));
}
else
{
sender.sendMessage("§cPas assez de paramètres :");
return false;
}
}
else
sender.sendMessage("§cVous n'avez pas la permission");
}
else if (sender instanceof BlockCommandSender)
{
if (args.length >= 4)
{
int x, y, z;
try
{
x = Integer.parseInt(args[0]);
y = Integer.parseInt(args[1]);
z = Integer.parseInt(args[2]);
}
catch (NumberFormatException e)
{
sender.sendMessage("§cLes coordonnées doivent être des chiffres");
return false;
}
Material mat = Material.matchMaterial(args[3]);
if (mat == null)
{
sender.sendMessage("§cLe type de bloc indiqué n'existe pas");
return false;
}
World w = ((BlockCommandSender)sender).getBlock().getWorld();
if (args.length >= 5 && plugin.getServer().getWorld(args[4]) != null)
w = plugin.getServer().getWorld(args[4]);
w.getBlockAt(x, y, z).setType(mat);
sender.sendMessage("Bloc changé en "+mat+" à l'endroit "+(new Location(w, x, y, z)));
}
else
{
sender.sendMessage("§cPas assez de paramètres");
return false;
}
}
else if (sender instanceof ConsoleCommandSender)
{
if (args.length >= 5)
{
int x, y, z;
try
{
x = Integer.parseInt(args[0]);
y = Integer.parseInt(args[1]);
z = Integer.parseInt(args[2]);
}
catch (NumberFormatException e)
{
sender.sendMessage("§cLes coordonnées doivent être des chiffres :");
return false;
}
Material mat = Material.matchMaterial(args[3]);
if (mat == null)
{
sender.sendMessage("§cLe type de bloc indiqué n'existe pas :");
return false;
}
World w = plugin.getServer().getWorld(args[4]);
if (w == null)
{
sender.sendMessage("§cLe monde indiqué n'existe pas :");
return false;
}
w.getBlockAt(x, y, z).setType(mat);
}
else
{
sender.sendMessage("§cPas assez de paramètres :");
return false;
}
}
return true;
}
}

View File

@@ -0,0 +1,43 @@
package net.mc_pandacraft.java.plugin.pandacraftutils.simple_commands.speed_message;
import java.util.ArrayList;
import java.util.List;
import net.mc_pandacraft.java.plugin.pandacraftutils.PandacraftUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
public class CommandSpeedMessage implements CommandExecutor {
private PandacraftUtils plugin;
private List<Message> messages = new ArrayList<Message>();
public CommandSpeedMessage(PandacraftUtils pl)
{
plugin = pl;
plugin.getCommand("speedmessage").setExecutor(this);
messages.add(new Message("site", "Site internet du serveur : http://www.mc-pandacraft.net/", "pandacraft.grade.all"));
messages.add(new Message("inscription", "Page d'inscription : http://mc-pandacraft.net/?p=inscription", "pandacraft.grade.default"));
messages.add(new Message("ultimate", "Grade [Ultimate] : http://www.mc-pandacraft.net/?p=ultimate", "pandacraft.grade.not_default"));
messages.add(new Message("help", "Si vous avez besoin d'aides pour les commandes, faites &7/help", "pandacraft.grade.all"));
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String alias,
String[] args) {
// TODO voir le plugin.yml pour l'utilisation de la commande
return false;
}
}

View File

@@ -0,0 +1,24 @@
/**
*
*/
package net.mc_pandacraft.java.plugin.pandacraftutils.simple_commands.speed_message;
/**
* @author marcbal
*
*/
public class Message {
private String name;
private String message;
private String permissionNode;
public Message(String non, String mess, String perm) {
name = non;
message = mess;
permissionNode = perm;
}
public String getName() { return name; }
public String getMessage() { return message; }
public String getPermissionNode() { return permissionNode; }
}