Welcome to Bukkit France

Inscrivez-vous maintenant pour profiter d'un accès total à tout le contenu offert par la meilleur communauté Bukkit française ! Une fois inscrit et connecté, vous pourrez contribuez à la communauté en postant vos propres sujets et questions ou en répondant à ceux existants. Vous pourrez aussi customiser votre profil, recevoir des points de réputations, communiquer avec les autres membres via le chat, et plus encore! 

Knockyy

Membres
  • Compteur de contenus

    63
  • Inscription

  • Dernière visite

Tout ce qui a été posté par Knockyy

  1. Field Biomes 1.12

    [b]Version (serveur) :[/b] 1.12.1 [b]API utilisée :[/b] Spigot-API 1.12.1 [b]IDE utilisé :[/b] Eclipse [b]Explications du problème rencontré :[/b] NoSuchFieldException sur mon Biome.class.getDeclaredField("biomes"); [b]Recherches effectuées :[/b] google, spigot [b]Code d'erreur :[/b][spoiler][code] [19:04:39 WARN]: java.lang.NoSuchFieldException: biomes [19:04:39 WARN]: at java.lang.Class.getDeclaredField(Unknown Source) [/code][/spoiler] [b]Code :[/b] [spoiler] Field biomesField = null; try { biomesField = Biome.class.getDeclaredField("biomes"); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } biomesField.setAccessible(true); try { if(biomesField.get(null) instanceof Biome[]) { Biome[] biomes = (Biome[]) biomesField.get(null); biomes[Biome.DEEP_OCEAN.ordinal()] = Biome.PLAINS; biomes[Biome.OCEAN.ordinal()] = Biome.FOREST; biomesField.set(null, biomes); } } catch (IllegalArgumentException | IllegalAccessException e) { e.printStackTrace(); }[/code][/spoiler] [b]Informations supplémentaires :[/b] (screen par exemple)
  2. InventoryClickEvent nullpointerexception

    if(e.getInventory() != null) if(e.getWhoClicked() != nul && e.getWhoClicked() instanceof Player) if(e.getCurrentItem() != null)   //Si tu utilises les Meta    if(e.getCurrentItem().hasItemMeta()) if(e.getCurrentItem().getItemMeta().hasDisplayName())   //Faire ton code   desole pour la mise en forme Mais j'écris depuis mon telephone 
  3. Field Biomes 1.12

    C'est ça, je te remercies pour ton aide ! Dernière question, est-ce qu'on peut supprimer entièrement le dossier "world" (Monde principal) ? Car j'ai une méthode qui supprime tout sauf le sous-dossier " region ", donc ça foire des Chunks des fois :/
  4. Field Biomes 1.12

    Je viens de trouver le soucis, j'utilisais "Spigot-API" Donc les class n'existaient pas. Par contre ducoup j'ai le " key.a()" Qui me met une erreur "Thé Method a(String) in the Type MinecraftKey is not applicable for the arguments ()"  
  5. Field Biomes 1.12

    Salut !    Merci de ta réponse, cependant, en 1.12.1 les class RegistryMaterials, MinecraftKey ainsi que la fonction REGISTRY_ID n'existe pas :/  (BiomeBase non plus Mais ca a été remplacé par Biome tout court Donc c'est pas le soucis)
  6. Meilleure façon de régénérer une Map

    Yep j'ai finalement opté pour une HashMap Et une List Et au final ça a l'air beaucoup mieux, merci !
  7.   Version (serveur) : 1.7/1.8 API utilisée : ProtocolHack 1.7/1.8 IDE utilisé : Eclipse Explications du problème rencontré : J'aimerais trouver un meilleur moyen pour régénérer une map (La remettre d'origine après pose/casse de blocs) (Map étant dans le monde principale). Actuellement j'utilise les Schematics mais cela fait lag Le Serveur lors de la régénération, à cause de la taille de La map (300x300), j'aimerais savoir si il y'a une méthode pour La restaurer comme à l'origine sans lags Recherches effectuées : YT, Forums, Bukkit.org Et Spigot
  8. Meilleure façon de régénérer une Map

    Justement comme dit plus haut la map se trouve dans le même monde que Le spawn etc, ducoup j'aimerais trouver un moyen de regen La map sans devoir restart ou reload, actuellement j'utilise les schematics qui se paste pour remettre tout comme avant Mais sur une map 300x300 ca lag un peu..
  9. Problèmes Optimisation

          Version (serveur) : 1.7.10 API utilisée : Spigot / Bukkit 1.7.10 IDE utilisé : Eclipse Explications du problème rencontré : Nous rencontrons des lags pertinent lorsqu'un nouveau joueur se connecte sur le serveur. Ainsi que quand notre système de "Top Player" se met à jour. J'ai utilisé les Timings pour voir d'où ça provenait, je vous mets les 2 classes concernées plus bas. J'aimerais donc savoir comment bien optimiser ces deux classes. Merci beaucoup de votre aide futur !   PS: La clas "Gamer" est une class object avec des méthodes directe pour récupérer les Kits des joueurs, les Stats (Qui sont sauvegardés dans une config.yml) et d'autres choses du genre. Recherches effectuées : Google, Forums, Contacts Skype Code d'erreur : PlayerJoin Class : Code :    Informations supplémentaires :    Pct Total    Pct Tick       Total          Avg     PerTick         Count        Event        2.12%     414.62%      3.73 s       207.31 ms     0.0           0.0k        PlayerDeath::on(PlayerDeathEvent)        1.15%    1,012.17%      2.02 s       506.09 ms     0.0           0.0k        PlayerJoin::on(PlayerJoinEvent)        0.61%     120.17%      1.08 s        60.09 ms     0.0           0.0k        Levels::on(PlayerDeathEvent)        0.59%    1,041.72%      1.04 s       520.86 ms     0.0           0.0k        Task: TopRunnable(interval 2400)
  10. [RESOLU] [Java] Erreur console code (PlayerInteractEvent)

    Faut que tu vérifies si ton Block cliqué n'est pas == null, car la tu regarde si le Block cliqué est une trapp door sauf que si tu clic en l'air bah c'est ce qui te généré l'erreur étant donné que le Block d'air =  null   Édit :   if(e.getAction() == Action.RIGHT_CLICK_BLOCK) && e.getClickedBlock() != null){   if(e.getClickedBlock.getType() == <Block souhaité>){ //Faire ton code } }
  11. Avoir le ping d'un joueur sur un item dans un gui

    Ta variable Ping existe déjà avec l'Integer, et de plus tu n'a pas de Variable nommée "player"
  12. Bonjour !    J'ai récemment configurer mon VPS pour un serveur minecraft. A la fin de tout, j'ai donc fermé putty, et en relançant la session, je ne sais pas dutout comment re obtenir la console.. En sachant que le serveur tourne 24/24. J'ai beau faire (dans l'ordre)   screen -ls screen -R paperspigot (Nom de mon screen)  ctrl + A +D   ça m'affiche [detached from 6381.paperspigot] [email protected]:~# mais ça ne m'affiche pas la console..   Voilà , merci !
  13. Player duplication dans le Tab

    Bonjour,   Donc je dev un plugin sous Spigot 1.7.10 avec eclipse, et j'ai un problème avec le Tab. En effet, desfois des joueurs se trouve "dupliqués" dedans, ainsi on peut avoir "Knockyy", "Knockyy89","Knockyy" etc etc sauf que ducoup ça me fais planter des systeme de téléportation.. Auriez vous une idée d'où ça peut provenir ? Au début je pensais que c'étais à cause du player.showPlayer(); car ça me fais ça depuis que j'ai acheté des lignes comme ça sauf que je les ai enlevées et c'est pareil.. Merci ! Edition:   Après des test j'ai trouvé d'où ça venait. En faite j'ai un Event PlayerJoinEvent qui permet de détecter la version du Client, si celle-ci est en 1.8, le joueur est Kick. Sauf que si il est en 1.8 et qu'il est Kick, et bien il est dupliqué..   Le code si ça peut aider :   if(((CraftPlayer)event.getPlayer()).getHandle().playerConnection.networkManager.getVersion() >= 47) { player.kickPlayer("§cThe server is only compatible with 1.7 version !"); }  
  14. Probleme pour cacher les joueurs

    Rebonjour   Toujours sous Spigot 1.7.10 et sous eclipse pour dev, cette fois j'ai un soucis au niveau des player.HidePlayer(....); En faite, j'aimerais faire des 1v1 dans une arène global (là ou tous les 1v1 se ferront) sauf que quand je veux cacher les joueurs pour que seulement les 2 adversaires se voient, lorsqu"un joueur se connecte et qu'il vient en 1v1, il voit les gens deja dans l'arène et les gens dans l'arène vois aussi le joueur, ce qui fou bien le bordel.. J'aimerais donc savoir comment bien cacher les joueurs entre eux pour que seulmeent les 2 adversaires se voient !   Ma méthode pour cacher les joueurs :    for(Player online : Bukkit.getOnlinePlayers()) { player.hidePlayer(online); clicked.hidePlayer(online); online.hidePlayer(clicked); online.hidePlayer(player); player.showPlayer(clicked.getPlayer()); clicked.showPlayer(player.getPlayer()); }   J'ai penser à stocker les joueurs en 1v1 dans une List, faire un Iterator pour récup tout le monde et ainsi cacher les 1v1er (jsp si ça se dit :p)  à ceux qui arrive   Un truc comme ça :   for(Player online : Bukkit.getOnlinePlayers()) { player.hidePlayer(online); clicked.hidePlayer(online); online.hidePlayer(player); online.hidePlayer(player); for(Iterator<String> it = inpvp.iterator(); it.hasNext();) { Player next = Bukkit.getPlayer(it.next()); next.hidePlayer(online); online.hidePlayer(next); clicked.hidePlayer(next); } player.showPlayer(clicked); clicked.showPlayer(player); } Sauf que ça ne marche pas.. 
  15. Probleme pour cacher les joueurs

    J'ai fais pareil après avoir posté l'aide. Cependant le problème persiste, lorsque je clic le mec on est dans l'arène normal sauf quand si deux autres joueurs cliquent, moi et le gars avec qui je 1v1 voyons 1 des deux joueurs qui nous on rejoint 
  16. Player duplication dans le Tab

    Désolé du retard mais j'ai pas pensé à revenir ici pour vous prévenir que j'avais trouvé d'où ça provenait. En faite c'était à cause d'un auto-respawn, depuis que je l'ai enlevé tout fonctionne bien !  J'ai aussi changé le PlayerJoin par un PlayerLogin, ça marche tout autant donc merci bien, résolu
  17. Problème optimisation

    Bonjour à tous,   j'ai un plugin fais par mes soins sous Craftbukkit & Bukkit 1.7.10 et dev avec Eclipse, cependant lorsque je met le plugin sur Verygames, il fait énormément lag le serveur.. Je pense donc qu'il n'est pas assez optimisé. J'aimerais donc savoir que me conseilleriez-vous ?  Dans mon plugin j'ai une instance Gamer qui me permet de récupérer les méthode Players (via un getPlayer()) et d'en ajouter des "perso" (Exemple ici : =>  @EventHandler public void onGamerFish(PlayerFishEvent event) { Gamer player = new Gamer(event.getPlayer()); //Instance de la classe Gamer if(player.isKit(Kits.fisherman)) { //Exemple de méthode "perso" if(event.getCaught() != null && event.getCaught() instanceof Player) { event.getCaught().teleport(player.getPlayer()); } } }   Pour moi, je pense que c'est le fait de créer à chaque fois un nouveau Gamer au lieu de récupérer le joueur via une méthode genre Gamer player = Gamer.getGamer(event.getPlayer); qui récupèrerait donc le joueur via une HashMap ou autre, ce qui eviterais de récréer une nouvelle instance d'un nouveau joueur si ce dernier à déjà été initialisé.. Après à voir, je ne suis pas le meilleur pour les optimisations.   Ou alors, le fait que je créer une nouvelle class qui implements Listener pour chaque Kits créer. (J'ai 77 kits, donc minimum 77 class implements Listener qui ont à peu près les mêmes events (PlayerInteract,PlayerMove,EntityDamage etc) donc peut être que c'est le faite d'appeler pleins d'events du même type à chaque fois ? Serait-je pas mieux à créer une class 'PlayerInteractListener' qui regrouperait toutes les actions en rapport avec les Interactions ? Je m'explique.   Le kit 'A' implements l'event PlayerInteractEvent donc, je créer une class nommée "A" implementant Listener et avec un PlayerInteractEvent dedans. Le Kit "B" implements exactement pareil que le Kit A, sauf que je créer une autre class nommée "B" avec pareil PlayerInteractEvent. (A noter que les deux Kits font 2 choses différentes, genre le kit A fais spawn un zombie quand on clic un item et le Kit B fais jouer un son, pour exemple)   Ne serait-je donc pas mieux à faire une seule class nomée "PlayerInteractListener" avec dedans un event PlayerInteractEvent et qui regrouperais les deux ? (En détectant quel kit est le joueur pour bien séparer les deux fonctions des kits).   Ou une derniere chose, les Runnables qui sont lancées depuis le onEnable() ? Dnas mon onEnable j'ai ceci en Runnable qui s'active en continu:    Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Drops(), 0L,20L); Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Feast(), 0L,20L); Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Anchor(), 0L,30L); Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Scout(), 0L, 20 * 240L); Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Werewolf(), 0L, 20 * 1L); new BukkitRunnable() { public void run() { Gamer.handleCooldown(); } }.runTaskTimer(this, 0L, 1L);     Voilà, si vous avez des idées ou même des modifications à apporter, je suis preneur car c'est assez embêtant.. Merci de votre aide !
  18. Avis sur cette offre Verygames

    Bonjour !    Alors récemment j'ai créé un serveur Kitpvp avec des amis. Nous sommes actuellement sur un hebergeur bas de gammes le temps du développement etc, cependant nous allons ouvrir sous peu mais un problème se pose : L'hébergeur.   En effet nous ne savons pas sur le quel aller puisque nous attendons environ 150 joueurs constants, avec 20 plugin installé, Nether & End désactivés et 1 seul serveur / 1 seul monde.   Nous avons donc pensé à un serveur dédié mais aucun de nous ne savons le configurer pour l'intégrer à un serveur Minecraft.. Donc nous voulons plus un hebergeur "Simple" mais puissant avec si possible un AntiDDos puissant également ainsi qu'un serveur TS3 de environ 120slots.   J'ai donc pensé aux VXP de Verygames avec 16go de ram, qu'en pensez vous ?  Si vous avez d'autres hebergeurs qui répondent à mes besoins, n'hésitez pas ! (Mon budget maximum est de 60e).   Merci, bonne journée !
  19. Problème optimisation

    Oui j'ai encore un peu de mal avec tout ça surtout que j'avais pas compris ton code ^^"   Voila les timings :  https://timings.spigotmc.org/?url=18642679
  20. Problème optimisation

    Ah d'accord, j'ai à peu près compris le système   Cependant, pour ma class FishermanKit pour récupérer mon joueur (Instancier donc en Gamer au lieu de Player) , vu que la HashMap est en private, (c'est qu'il doit y avoir une raison) y'a t-il un autre moyen de le récupérer ? 
  21. Problème optimisation

    A quoi sert la class Abstract? Je n'ai jamais vu de class avec ce modifier o-o  Car enfaite j'ai pas totalement compris tes codes, car ou est ce que je vérifie si le joueur est (par exemple) le Kit "A" ? Pour ainsi effectuer l'action du kit en question ? Car si la methode getKit() renvoi sur la clas abstract, comment je sais que le kit en question est bel et bien le Kit "A" ? et pas "Z" par exemple?   Moi justement pour détecter ça j'avais fais une class Enum avec dedans tous les Kits pour faire ainsi    if(player.isKit(Kits.fisherman)) {   et donc effectuer les actions en rapport avec ce kit   Pour mes timings, ce sont que des class implement Runnable et public void run()   par exemple :  public void run() { for (World w : Bukkit.getWorlds()) { for (Entity entity : w.getEntities()) { if (entity.getType() == EntityType.DROPPED_ITEM) { if (entity.getTicksLived() >= 100) { entity.remove(); entity.getWorld().playEffect(entity.getLocation(), Effect.SMOKE, 44); } } } } }  
  22. Avis sur cette offre Verygames

    Merci, mais est ce que l'offre VG dites plus haut est bien? Niveau puissance etc ? Pour pouvoir me faire une idée 
  23. Avis sur cette offre Verygames

    je vais te faire confiance alors ! Mais aurais tu un tuto pour configurer de A à Z le serveur dédié ? En créant l'accès ftp, l'IP personnalisée, etc etc? En sachant que je n'y connais rien du tout car je n'ai jamais fais ça..
  24. [b]Version (serveur) :[/b] 1.7.10 [b]API utilisée :[/b] Bukkit & Craftbukkit [b]IDE utilisé :[/b] Eclipse [b]Explications du problème rencontré :[/b] J'ai créé un Zombie custom, cependant je ne sais pas comment lui appliquer un Skin. [b]Recherches effectuées :[/b] google, forums [b]Code d'erreur :[/b] [b]Code :[/b] [spoiler][code=auto:1]Collez votre code ici[/code][/spoiler] [b]Informations supplémentaires :[/b] (screen par exemple) Class CustomZombie : [spoiler][code]package fr.helik.simplekitpvp.utils; import java.util.List; import org.bukkit.World; import org.bukkit.craftbukkit.v1_7_R4.CraftWorld; import net.minecraft.server.v1_7_R4.EntityHuman; import net.minecraft.server.v1_7_R4.EntityVillager; import net.minecraft.server.v1_7_R4.EntityZombie; import net.minecraft.server.v1_7_R4.PathfinderGoalFloat; import net.minecraft.server.v1_7_R4.PathfinderGoalHurtByTarget; import net.minecraft.server.v1_7_R4.PathfinderGoalLookAtPlayer; import net.minecraft.server.v1_7_R4.PathfinderGoalMeleeAttack; import net.minecraft.server.v1_7_R4.PathfinderGoalMoveThroughVillage; import net.minecraft.server.v1_7_R4.PathfinderGoalMoveTowardsRestriction; import net.minecraft.server.v1_7_R4.PathfinderGoalNearestAttackableTarget; import net.minecraft.server.v1_7_R4.PathfinderGoalRandomLookaround; import net.minecraft.server.v1_7_R4.PathfinderGoalRandomStroll; import net.minecraft.server.v1_7_R4.PathfinderGoalSelector; public class CustomZombie extends EntityZombie { public CustomZombie(World world) { super(((CraftWorld) world).getHandle()); List<?> goalB = (List<?>) UtilField.getPrivateFieldd("b", PathfinderGoalSelector.class, goalSelector); goalB.clear(); List<?> goalC = (List<?>) UtilField.getPrivateFieldd("c", PathfinderGoalSelector.class, goalSelector); goalC.clear(); List<?> targetB = (List<?>) UtilField.getPrivateFieldd("b", PathfinderGoalSelector.class, targetSelector); targetB.clear(); List<?> targetC = (List<?>) UtilField.getPrivateFieldd("c", PathfinderGoalSelector.class, targetSelector); targetC.clear(); /* * this.goalSelector.a(0, new PathfinderGoalFloat(this)); * this.goalSelector.a(2, new PathfinderGoalMeleeAttack(this, * EntityHuman.class, 1.0D, false)); this.goalSelector.a(4, new * PathfinderGoalMeleeAttack(this, EntityVillager.class, 1.0D, true)); * this.goalSelector.a(5, new PathfinderGoalMoveTowardsRestriction(this, * 1.0D)); this.goalSelector.a(6, new * PathfinderGoalMoveThroughVillage(this, 1.0D, false)); * this.goalSelector.a(7, new PathfinderGoalRandomStroll(this, 1.0D)); * this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, * EntityHuman.class, 8.0F)); this.goalSelector.a(8, new * PathfinderGoalRandomLookaround(this)); this.targetSelector.a(1, new * PathfinderGoalHurtByTarget(this, true)); this.targetSelector.a(2, new * PathfinderGoalNearestAttackableTarget(this, EntityHuman.class, 0, * true)); this.targetSelector.a(2, new * PathfinderGoalNearestAttackableTarget(this, EntityVillager.class, 0, * false)); */ this.goalSelector.a(0, new PathfinderGoalFloat(this)); this.goalSelector.a(2, new PathfinderGoalMeleeAttack(this, EntityHuman.class, 2.0D, false)); this.goalSelector.a(4, new PathfinderGoalMeleeAttack(this, EntityVillager.class, 1.0D, true)); this.goalSelector.a(5, new PathfinderGoalMoveTowardsRestriction(this, 1.0D)); this.goalSelector.a(6, new PathfinderGoalMoveThroughVillage(this, 1.0D, false)); this.goalSelector.a(7, new PathfinderGoalRandomStroll(this, 1.6D)); this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this)); this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, true)); this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntityHuman.class, 1, true)); this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntityVillager.class, 0, false)); } // EntityTypes.spawnEntity(new CustomZombie(Bukkit.getWorld("world")), new // Location(Bukkit.getWorld("world"), 100, 100, 100)); } [/code] Class CustomEntity [spoiler][code] package fr.helik.simplekitpvp.utils; import java.util.Map; import org.bukkit.Location; import org.bukkit.craftbukkit.v1_7_R4.CraftWorld; import net.minecraft.server.v1_7_R4.Entity; public enum EntityType { // NAME("Entity name", Entity ID, yourcustomclass.class); CUSTOM_ZOMBIE("Zombie", 54, CustomZombie.class); // You can add as many as // you want. private EntityType(String name, int id, Class<? extends Entity> custom) { addToMaps(custom, name, id); } public static void spawnEntity(Entity entity, Location loc) { entity.setLocation(loc.getX(), loc.getY(), loc.getZ(), loc.getYaw(), loc.getPitch()); ((CraftWorld) loc.getWorld()).getHandle().addEntity(entity); } @SuppressWarnings("unchecked") private static void addToMaps(Class<? extends Entity> clazz, String name, int id) { //getPrivateField is the method from above. //Remove the lines with // in front of them if you want to override default entities (You'd have to remove the default entity from the map first though). ((Map<String, Class<? extends Entity>>)UtilField.getPrivateField("c", net.minecraft.server.v1_7_R4.EntityTypes.class, null)).put(name, clazz); ((Map<Class<? extends Entity>, String>)UtilField.getPrivateField("d", net.minecraft.server.v1_7_R4.EntityTypes.class, null)).put(clazz, name); ((Map<Integer, Class<? extends Entity>>)UtilField.getPrivateField("e", net.minecraft.server.v1_7_R4.EntityTypes.class, null)).put(Integer.valueOf(id), clazz); ((Map<Class<? extends Entity>, Integer>)UtilField.getPrivateField("f", net.minecraft.server.v1_7_R4.EntityTypes.class, null)).put(clazz, Integer.valueOf(id)); ((Map<String, Integer>)UtilField.getPrivateField("g", net.minecraft.server.v1_7_R4.EntityTypes.class, null)).put(name, Integer.valueOf(id)); } } [/code][/spoiler] Class Minions [spoiler][code]package fr.helik.simplekitpvp.ability; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Zombie; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.player.PlayerInteractEvent; import fr.helik.simplekitpvp.utils.CustomZombie; import fr.helik.simplekitpvp.utils.EntityType; import fr.helik.simplekitpvp.utils.ProfileLoader; public class Minions implements Listener { @EventHandler public void onpl(PlayerInteractEvent event) { if(event.getPlayer().getItemInHand().getType() == Material.APPLE) { Bukkit.broadcastMessage("d"); ProfileLoader load = new ProfileLoader("Bot", "Quentin1327"); EntityType.spawnEntity(new CustomZombie(event.getPlayer().getWorld()), event.getPlayer().getLocation()); load.loadProfile(); } } @EventHandler public void onso(CreatureSpawnEvent event) { if(event.getEntity() instanceof Zombie) { event.getEntity().setCustomName("Bot"); } } } [/code][/spoiler] Et la classe ProfileLoader : [spoiler][code]package fr.helik.simplekitpvp.utils; import java.net.URL; import java.net.URLConnection; import java.util.Scanner; import java.util.UUID; import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import net.minecraft.util.com.mojang.authlib.GameProfile; import net.minecraft.util.com.mojang.authlib.properties.Property; public class ProfileLoader { private final String uuid; private final String name; private final String skinOwner; public ProfileLoader(String uuid, String name) { this(uuid, name, name); } public ProfileLoader(String uuid, String name, String skinOwner) { this.uuid = uuid == null ? null : uuid.replaceAll("-", ""); // We add // these // later String displayName = ChatColor.translateAlternateColorCodes('&', name); this.name = ChatColor.stripColor(displayName); this.skinOwner = skinOwner; } public GameProfile loadProfile() { UUID id = uuid == null ? parseUUID(getUUID(name)) : parseUUID(uuid); GameProfile profile = new GameProfile(id, name); addProperties(profile); return profile; } @SuppressWarnings("resource") private void addProperties(GameProfile profile) { String uuid = getUUID(skinOwner); try { // Get the name from SwordPVP URL url = new URL("https://sessionserver.mojang.com/session/minecraft/profile/" + uuid + "?unsigned=false"); URLConnection uc = url.openConnection(); uc.setUseCaches(false); uc.setDefaultUseCaches(false); uc.addRequestProperty("User-Agent", "Mozilla/5.0"); uc.addRequestProperty("Cache-Control", "no-cache, no-store, must-revalidate"); uc.addRequestProperty("Pragma", "no-cache"); // Parse it String json = new Scanner(uc.getInputStream(), "UTF-8").useDelimiter("\\A").next(); JSONParser parser = new JSONParser(); Object obj = parser.parse(json); JSONArray properties = (JSONArray) ((JSONObject) obj).get("properties"); for (int i = 0; i < properties.size(); i++) { try { JSONObject property = (JSONObject) properties.get(i); String name = (String) property.get("name"); String value = (String) property.get("value"); String signature = property.containsKey("signature") ? (String) property.get("signature") : null; if (signature != null) { profile.getProperties().put(name, new Property(name, value, signature)); } else { profile.getProperties().put(name, new Property(value, name)); } } catch (Exception e) { Bukkit.getLogger().log(Level.WARNING, "Failed to apply auth property", e); } } } catch (Exception e) { ; // Failed to load skin } } @SuppressWarnings("deprecation") private String getUUID(String name) { return Bukkit.getOfflinePlayer(name).getUniqueId().toString().replaceAll("-", ""); } private UUID parseUUID(String uuidStr) { // Split uuid in to 5 components String[] uuidComponents = new String[] { uuidStr.substring(0, 8), uuidStr.substring(8, 12), uuidStr.substring(12, 16), uuidStr.substring(16, 20), uuidStr.substring(20, uuidStr.length()) }; // Combine components with a dash StringBuilder builder = new StringBuilder(); for (String component : uuidComponents) { builder.append(component).append('-'); } // Correct uuid length, remove last dash builder.setLength(builder.length() - 1); return UUID.fromString(builder.toString()); } } [/code][/spoiler]  
  25. Obtenir le Slot d'un item

    Merci à vous, et désolé pour la question un peu con, mais j'avais pas dutout pensé à faire comme ça ^^' J'avais a la base fais une boucle for(ItemStack contents : inv.getContents()){  et ensuite incrementé un int slot mais enfaite ça fonctionnait pas du tout ...   Ducoup j'ai fais comme ça :   public int getSlot(ItemStack stack, Inventory inv) { for(int slot = 0; slot < inv.getSize(); slot++) { if(inv.getItem(slot).getType() == stack.getType()) { return slot; } } return 0; } Et ça fonctionne niquel !    La j'ai un dernier soucis, qui est tout aussi con mais que je ne vois pas du tout pourquoi ça ne fonctionne pas..   J'ai un Listener quui permet d'écraser les joueurs quand on leurs sautent dessus (on leurs inflige des dégàts) sauf que quand on les one shot, on ne voit pas le message de mort.. J'avais essayé le player.damage(<damage>, <damager>); sauf que les joueurs avaient tout le temps 1.5 coeurs de dommages.. J'aimerais donc savoir comment faire pour afficher les messages de mort..   Voila mon code :   package fr.helik.simplekitpvp.ability; import org.bukkit.Bukkit; import org.bukkit.Sound; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import fr.helik.simplekitpvp.customevent.GamerUseKitEvent; import fr.helik.simplekitpvp.utils.Gamer; import fr.helik.simplekitpvp.utils.Kits; public class Stomper implements Listener { @SuppressWarnings("deprecation") @EventHandler public void onGamerDamage(EntityDamageEvent event) { if (event.getEntity() instanceof Player) { Gamer player = new Gamer((Player) event.getEntity()); if (player.isKit(Kits.stomper)) { if (event.getCause() == DamageCause.FALL) { if(player.getPlayer().getFallDistance() > 3.0f) { GamerUseKitEvent evt = new GamerUseKitEvent(player, player.getKit()); Bukkit.getPluginManager().callEvent(evt); if (evt.isCancelled()) return; for (Entity nearby : player.getPlayer().getNearbyEntities(4, 4, 4)) { if (nearby instanceof Player) { Gamer target = new Gamer((Player) nearby); if (!target.getPlayer().isSneaking()) { //EntityDamageByEntityEvent e = new EntityDamageByEntityEvent(player.getPlayer(), target.getPlayer(), EntityDamageEvent.DamageCause.ENTITY_ATTACK, event.getDamage()); //Bukkit.getServer().getPluginManager().callEvent(e); //target.getPlayer().setLastDamageCause(e); //target.getPlayer().damage(event.getDamage()); ^ Cette méthode ne fonctionne pas, ça n'affiche pas le message de mort.. ^ //target.getPlayer().damage(event.getDamage(), player.getPlayer()); Cette méthode donne tout le temps 1.5 coeurs de dommage mais affiche le message de mort.. player.getPlayer().playSound(player.getPlayer().getLocation(), Sound.ANVIL_LAND, 1.0f, 1.0f); target.getPlayer().playSound(target.getPlayer().getLocation(), Sound.ANVIL_LAND, 1.0f, 1.0f); } else { target.getPlayer().damage(0.0D); } player.getPlayer().playSound(player.getPlayer().getLocation(), Sound.ANVIL_LAND, 8.0F,1.0F); } } event.setDamage(player.getPlayer().getFallDistance() / 8); } } } } } }