Création de la commande /ghost + Correction de bugs relatifs aux évènements + amélioration de l'efficacité du vanish
This commit is contained in:
parent
093a1f619a
commit
e2be425513
@ -0,0 +1,125 @@
|
||||
package net.mc_pandacraft.java.plugin.pandacraftutils.commands;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.config.ConfigManager;
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.config.elements.WorldBorderConfigEntry;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class CommandGhost extends AbstractCommandExecutor {
|
||||
|
||||
public CommandGhost() {
|
||||
super("ghost");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String label,
|
||||
String[] args) {
|
||||
|
||||
if (!(sender instanceof Player)) {
|
||||
sender.sendMessage(ChatColor.RED+"Vous devez être en ligne pour faire cette commande");
|
||||
return true;
|
||||
}
|
||||
|
||||
Player player = (Player) sender;
|
||||
|
||||
if (args.length == 0) {
|
||||
showHelp(player);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args.length >= 1 && args[0].equalsIgnoreCase("thor")) {
|
||||
onCommandThor(player);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// on arrive ici si aucune des sous commandes correspond à celle tapée
|
||||
sender.sendMessage(ChatColor.RED+"Mauvaise utilisation de la commande. Faites "+ChatColor.GRAY+"/ghost"+ChatColor.RED+" pour connaitre l'utilisation");
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void showHelp(Player player) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private void onCommandThor(Player player) {
|
||||
|
||||
List<World> worlds = plugin.getServer().getWorlds();
|
||||
|
||||
Random r = new Random();
|
||||
|
||||
for (World w : worlds) {
|
||||
|
||||
int nbStrike = r.nextInt(2)+1;
|
||||
|
||||
for (int i=0; i<nbStrike; i++) {
|
||||
|
||||
WorldBorderConfigEntry config = ConfigManager.getInstance().worldBorderConfig.getEntry(w);
|
||||
if (config == null)
|
||||
continue;
|
||||
|
||||
// l'orage sera localisé à un endroit aléatoire à l'intérieur des WorldBorders
|
||||
double locX = r.nextDouble()*(config.getMaxX()-config.getMinX())+config.getMinX();
|
||||
double locY = r.nextDouble()*255;
|
||||
double locZ = r.nextDouble()*(config.getMaxZ()-config.getMinZ())+config.getMinZ();
|
||||
|
||||
int nbTickBeforeStrike = r.nextInt(20);
|
||||
|
||||
Location loc = new Location(w, locX, locY, locZ);
|
||||
|
||||
plugin.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
|
||||
Location loc;
|
||||
@Override
|
||||
public void run() {
|
||||
loc.getWorld().strikeLightningEffect(loc);
|
||||
}
|
||||
|
||||
public Runnable init(Location l) {
|
||||
loc = l;
|
||||
return this;
|
||||
}
|
||||
|
||||
}.init(loc), nbTickBeforeStrike);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -99,6 +99,10 @@ public class PlayerListener implements Listener {
|
||||
plugin.chatAnalysisManager.onAsyncPlayerChat(event);
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled=true,priority=EventPriority.HIGHEST)
|
||||
public void onAsyncPlayerChat_Highest_IgnoreCancelled(AsyncPlayerChatEvent event) {
|
||||
plugin.ghostManager.onAsyncPlayerChat(event);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -109,18 +113,24 @@ public class PlayerListener implements Listener {
|
||||
|
||||
|
||||
|
||||
|
||||
@EventHandler(ignoreCancelled=false,priority=EventPriority.LOWEST)
|
||||
public void onPlayerCommandPreprocess_Lowest(PlayerCommandPreprocessEvent event) {
|
||||
OnlinePlayerManager.get(event.getPlayer()).getEssentialsUser().setDisplayNick();
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled=false,priority=EventPriority.NORMAL)
|
||||
public void onPlayerCommandPreprocess (PlayerCommandPreprocessEvent event) {
|
||||
public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) {
|
||||
plugin.afkManager.onPlayerCommandPreprocess(event);
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled=false,priority=EventPriority.HIGHEST)
|
||||
public void onPlayerCommandPreprocess_Highest (PlayerCommandPreprocessEvent event) {
|
||||
public void onPlayerCommandPreprocess_Highest(PlayerCommandPreprocessEvent event) {
|
||||
plugin.commandAliasManager.onPlayerCommandPreprocess(event);
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled=true,priority=EventPriority.HIGHEST)
|
||||
public void onPlayerCommandPreprocess_Highest_IgnoreCancelled (PlayerCommandPreprocessEvent event) {
|
||||
public void onPlayerCommandPreprocess_Highest_IgnoreCancelled(PlayerCommandPreprocessEvent event) {
|
||||
plugin.chatAnalysisManager.onPlayerCommandPreprocess(event);
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
package net.mc_pandacraft.java.plugin.pandacraftutils.modules.fun;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.PandacraftUtils;
|
||||
@ -31,6 +33,15 @@ public class GhostManager {
|
||||
|
||||
|
||||
|
||||
public void onAsyncPlayerChat(AsyncPlayerChatEvent event) {
|
||||
if (!event.getPlayer().hasPermission("pandacraft.ghost")) return;
|
||||
|
||||
event.setFormat("<"+ChatColor.ITALIC+"%1$s"+ChatColor.RESET+"> "+ChatColor.ITALIC+"%2$s");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -77,7 +77,7 @@ public class NoPvpProtectManager {
|
||||
for (Player pl : pls)
|
||||
{
|
||||
// on ne compte pas le poseur (sinon, on y arrivera pas x) )
|
||||
if (pl == p || pl.getGameMode() == GameMode.CREATIVE)
|
||||
if (pl == p || !pl.isOnline() || pl.getGameMode() == GameMode.CREATIVE)
|
||||
continue;
|
||||
|
||||
if (OnlinePlayerManager.get(pl).isVanished())
|
||||
@ -119,7 +119,7 @@ public class NoPvpProtectManager {
|
||||
for (Player pl : pls)
|
||||
{
|
||||
// on ne compte pas le poseur (sinon, on y arrivera pas x) )
|
||||
if (pl == p || pl.getGameMode() == GameMode.CREATIVE)
|
||||
if (pl == p || !pl.isOnline() || pl.getGameMode() == GameMode.CREATIVE)
|
||||
continue;
|
||||
|
||||
if (OnlinePlayerManager.get(pl).isVanished())
|
||||
@ -164,7 +164,7 @@ public class NoPvpProtectManager {
|
||||
for (Player pl : pls)
|
||||
{
|
||||
// on ne compte pas le poseur (sinon, on y arrivera pas x) )
|
||||
if (pl == p || pl.getGameMode() == GameMode.CREATIVE)
|
||||
if (pl == p || !pl.isOnline() || pl.getGameMode() == GameMode.CREATIVE)
|
||||
continue;
|
||||
|
||||
if (OnlinePlayerManager.get(pl).isVanished())
|
||||
@ -204,7 +204,7 @@ public class NoPvpProtectManager {
|
||||
for (Player pl : pls)
|
||||
{
|
||||
// on ne compte pas le poseur (sinon, on y arrivera pas x) ) et on ignorent ceux qui fly
|
||||
if (pl == p || pl.isFlying())
|
||||
if (pl == p || !pl.isOnline() || pl.isFlying())
|
||||
continue;
|
||||
|
||||
if (OnlinePlayerManager.get(pl).isVanished())
|
||||
@ -250,7 +250,7 @@ public class NoPvpProtectManager {
|
||||
for (Player pl : pls)
|
||||
{
|
||||
// on ignore ceux en créatif
|
||||
if (pl.getGameMode() == GameMode.CREATIVE)
|
||||
if (pl == null || !pl.isOnline() || pl.getGameMode() == GameMode.CREATIVE)
|
||||
continue;
|
||||
|
||||
if (OnlinePlayerManager.get(pl).isVanished())
|
||||
|
@ -94,10 +94,7 @@ public class OffPlayer {
|
||||
* @return l'instance xAuth du joueur, ou null si aucune donnée n'est présente à propos du joueur
|
||||
*/
|
||||
public xAuthPlayer getXAuthPlayer() {
|
||||
xAuthPlayer xAP = xAuth.getPlugin().getPlayerManager().getPlayer(playerName);
|
||||
if (xAP.getAccountId() == -1)
|
||||
return null;
|
||||
return xAP;
|
||||
return xAuth.getPlugin().getPlayerManager().getPlayer(playerName);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user