Bonjour,
Je vous explique mon problème, je créer un plugin FFa personnalisé.
J'ai donc un système de choix de kits et une téléportation via Timer, le problème étant que lorsque qu'un joueurs séléctionne un kit pendant que le timer est lancé ça fait planter le timer , il tourne en boucle..
Je vous montre le code ça sera plus simple que de long discours.. :
InventoryClickEvent :
TaskJoin :
Main :
J'ai pensé a faire une arraylist ou une hashmap de player , mais je vois pas comment faire une condition qui gère ça .. si vous pouvez m'indiquer la bonne voie, merci a vous..
Je vous explique mon problème, je créer un plugin FFa personnalisé.
J'ai donc un système de choix de kits et une téléportation via Timer, le problème étant que lorsque qu'un joueurs séléctionne un kit pendant que le timer est lancé ça fait planter le timer , il tourne en boucle..
Je vous montre le code ça sera plus simple que de long discours.. :
InventoryClickEvent :
Java:
@EventHandler
public void onClickKit(InventoryClickEvent e) {
Inventory inv = e.getInventory();
Player p = (Player) e.getWhoClicked();
ItemStack current = e.getCurrentItem();
if(current == null) return;
if(inv.getName().equalsIgnoreCase("§c§lKIT MENU")) {
e.setCancelled(true);
p.closeInventory();
switch(current.getType()) {
case DIAMOND_SWORD:
// p.getInventory().clear();
if(p.getGameMode() == GameMode.SPECTATOR) {
new TaskJoin();
TaskJoin.runnable(p);
// Kits.WARRIOR.add(p);
Item helmet = new Item(Material.IRON_HELMET, 1, "§e§lCasque");
Item chestPlate = new Item(Material.IRON_CHESTPLATE, 1, "§e§lPlastron");
Item leggings = new Item(Material.IRON_LEGGINGS, 1, "§e§lLeggin");
Item boots = new Item(Material.IRON_BOOTS, 1, "§e§lBottes");
Item sword = new Item(Material.IRON_SWORD, 1, "§e§lEpee du guerrier");
Item gApple = new Item(Material.GOLDEN_APPLE, 6, "§e§lPomme d'or");
p.getInventory().setHelmet(helmet.getItems());
p.getInventory().setChestplate(chestPlate.getItems());
p.getInventory().setLeggings(leggings.getItems());
p.getInventory().setBoots(boots.getItems());
p.getInventory().setItemInHand(sword.getItems());
p.getInventory().setItem(1, gApple.getItems());
p.sendMessage("§7[§6Herozia§7]"+"§rSelection du kit §4§lGuerrier §ravec §a§osucces");
}
break;
case BOW:
// Kits.ARCHER.add(p);
break;
case TNT:
// Kits.PYROMAN.add(p);
break;
default:
p.sendMessage("§7[§6Herozia§7]"+"§cErreur veuillez reessayer.");
break;
}
}
}
TaskJoin :
Java:
public class TaskJoin {
private static int timer = 5;
static int task;
// private static Main main;
private static int qtLoc = 0;
// public TaskJoin(Main main) {
// this.main = main;
// }
public static void runnable(Player p) {
task = Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.getInstance(), new Runnable() {
@Override
public void run() {
p.sendMessage("§7[§6Herozia§7]"+"Téléportation dans "+timer+"s");
if(timer == 0) {
Bukkit.getScheduler().cancelTask(task);
Location loc1 = new Location(p.getWorld(), -207, 6, -850, -43.6f, 21.4f);
Location loc2 = new Location(p.getWorld(), -201, 6, -834, -88.6f, 21.4f);
Location loc3 = new Location(p.getWorld(), -208, 6, -829, -152.6f, 7f);
Location loc4 = new Location(p.getWorld(), -215, 6, -834, -122.8f, 14.4f);
Random rLoc = new Random();
ArrayList<Location> aLoc = new ArrayList<Location>();
aLoc.add(loc1);
aLoc.add(loc2);
aLoc.add(loc3);
aLoc.add(loc4);
qtLoc = aLoc.size();
p.sendMessage("§7[§6Herozia§7]"+"Téléportation vers l'arène FFA en cours..");
p.teleport(aLoc.get(0+rLoc.nextInt(qtLoc)));
//
// Kits pKits = Main.getInstance().kits.get(p);
// ArrayList<ItemStack> itemKit = pKits.getItem();
//
// for(ItemStack item : itemKit) {
// p.getInventory().addItem(item);
// }
//
// p.getInventory().clear();
p.setGameMode(GameMode.SURVIVAL);
timer = 6;
}
timer--;
}
}, 0, 20);
}
}
Main :
Java:
public class Main extends JavaPlugin {
private static Main instance;
private List<Player> pl = new ArrayList<>();
public HashMap<Player, Kits> kits = new HashMap<>();
public KitContents kitContents = new KitContents();
@Override
public void onEnable() {
System.out.println("\n"+"===========[Ffa Herozia Plugin]==========="+"\n\t\tis Enabled"+"\n==========================================");
instance = this;
PluginManager pm = getServer().getPluginManager();
pm.registerEvents(new PlayerListeners(this), this);
pm.registerEvents(new OnJoinEvent(this), this);
pm.registerEvents(new OnInteractEvent(), this);
pm.registerEvents(new OnClickEvent(), this);
pm.registerEvents(new Scoreboard(), this);
// onEventRegister();
}
@Override
public void onDisable() {
System.out.println("\n"+"===========[Ffa Herozia Plugin]==========="+"\n\t\tis Enabled"+"\n==========================================");
}
public static Main getInstance() {
return instance;
}
// public void onEventRegister() {
// getServer().getPluginManager().registerEvents(new OnJoinEvent(), this);
// }
public List<Player> getPlayers(){
return pl;
}
}
J'ai pensé a faire une arraylist ou une hashmap de player , mais je vois pas comment faire une condition qui gère ça .. si vous pouvez m'indiquer la bonne voie, merci a vous..
Dernière édition: