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! 

Lucidiax

Membres
  • Compteur de contenus

    505
  • Inscription

  • Dernière visite

Réputation sur la communauté

502 Excellent

À propos de Lucidiax

  • Rang
    Développeur Java
  • Date de naissance 01/01/00

Me contacter

  • Discord Lucidiax#5707
  • GitHub Lucidiax
  • Minecraft Lucidiax
  • Steam lucidiax3
  • Twitter Lucidiax_
  • Youtube Lucidiax

Informations de profil

  • Bukkitorg Lucidiax
  • Centres d'intérêt Spigot
  • Sexe Homme

Visiteurs récents du profil

1372 visualisations du profil
  1. Vanic.us Replay

    Hello, ça faisait longtemps que je m'étais pas co ici Il se trouve que j'ai fais un plugin de ce type il y a quelques mois, donc je peux peut-être répondre à certaines de vos questions comme j'y ai passé pas mal de temps ^^   Voici le preview du plugin : https://www.youtube.com/watch?v=NamQlj7_5Vw   Alors, pour ce qui est de la difficulté de la réalisation : je dirai avancé, même beaucoup, tout dépend de comment tu veux gérer ton projet, s'il doit être indépendant, s'il doit utilisé les packets ou les events, et surtout si il doit être propre (c'est à dire pas fait a l'arrache avec un code incompréhensible). J'ai fais deux prototypes de ce plugin : un qui utilise l'enregistrement de packets reçus et émis par le client, et un autre qui utilise l'enregistrement des events Bukkit (mais le prototype final utilise les deux :p). Le plus simple est clairement les events, car tu n'as pas besoin de chercher 3h pour obtenir les informations de l'action, ni utiliser la reflection, ni devoir décompiler spigot pour comprendre les variables du packet, ni devoir update à chaque changement de version.. Mais cela te poseras un problème sur diverses actions qui ne sont pas disponibles sur l'api Bukkit, par exemple (de mémoire) pour ce qui est de l'applicage ou du retrait d'un effet de potion sur un mob (tu peux toujours utiliser un timer qui check tous les ticks mais c'est pas très propre et ça consomme). Donc dans tous les cas tu devras utiliser les packets ^^   Pour ce qui est du replay, c'est du full packet (du moins dans mon prototype). Si tu veux que seul un joueur (ou plusieurs mais pas tout le serveur en gros) voit le replay, tu n'a pas a faire d'entités custom ou quoi que ce soit mais juste de la retranscription de tes données (events et packets) sauvegardées en PacketPlayOut. Donc par exemple, lorsqu'un item est droppé dans l'enregistrement, tu dois sauvegarder la position, l'id/meta de l'item, puis lors du replay, utiliser le PacketPlayOutEntitySpawn (je sais plus si c'est lui mais il me semble que oui), lui attribuer son id etc avec PacketPlayOutEntityMetadata, puis lorsque l'item est ramassé, PacketPlayOutEntityDestroy, etc.. Tu l'auras compris c'est très long et fastidieux, c'est pourquoi il faut vraiment que le travail soit propre si tu veux t'y retrouver ^^   Il y a vraiment beaucoup d'héritage, différents types de listener (un pour les packets, un autre pour les events), un système de timeline pour savoir a quel tick se passe quelle action, et surtout il va bien falloir gérer la mémoire et la sauvegarde d'un record dans un fichier, faire le maximum de trucs en asynchrone (quasiment tout est asynchrone dans la vidéo du dessus)..   Ah oui, donc pour la mémoire, c'est sur que même en asynchrone si tu enregistres tous les joueurs d'un serveur où il y a beaucoup de monde en même temps, ça va consommer a fond. En revanche, si tu actives l'enregistrement d'un joueur uniquement lorsque il est soupçonné de cheat ou est report (ou alors si c'est juste un 1vs1), et que ton temps max d'enregistrement n'est pas trop long (30s - 1m30 est bien, après, plus, mieux vaut éviter), ça passe ^^   Et enfin pour la fluidité du replay, c'est totalement fluide puisque le serveur ne travaille quasiment pas, il se contente juste d'envoyer des packets (et en plus tu peux le faire proprement en asynchrone etc) tous les ticks au joueur, donc pas de problèmes de ce côté non plus     Voilà voilà, donc si tu te lances dans ce projet, bonne chance car pour les packets, c'est vraiment vraiment chiant, faudra utiliser le site http://wiki.vg/index.php?title=Protoco à longueur de journée  
  2. [1.9] Utiliser des api dans un scorebard

    Plugin.yml ? Erreur console ?  Envoie un peu plus d'infos  
  3. Vérification configuration

    Enlève ton point dans tes getConfigurationSection("Arenas"), c'est automatiquement géré   Sinon cette condition devrait marcher : if(!Main.getInstance().getConfig().getConfigurationSection("Arenas").getKeys(false).isEmpty())
  4. Boucle for configuration

    Utilise for(Sting id : getConfig().getConfigurationSection("Arenes").getKeys(false))   Plus d'infos : https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/configuration/ConfigurationSection.html#getKeys-boolean- 
  5. Bug ItemStack setAmount(1) quand l'item n'a pas d'ItemMeta.

    Déjà, tes deux "parties" sont identiques c'est juste ta condition qui change, condense tout ça en une seule "partie" c'est plus propre et tu auras moins de choses à débug ^^   public static void removeInventoryItems(PlayerInventory inv, ItemStack stack, int amount) { for (ItemStack is : inv.getContents()) { if (is != null && is.isSimilar(stack)){ int newamount = is.getAmount() - amount; if (newamount > 0){ is.setAmount(newamount); break; } else { inv.remove(is); amount -= is.getAmount(); } } } } J'ai pas testé, mais ceci devrait marcher, si l'item est similaire à l'autre item, alors on retire <amount>. Si l'amount restant est positif, alors on arrête tout, on a tout enlevé. Sinon, on retire l'item actuellement itéré et on décremente l'<amount> restant à retiré pour la prochaine itération  
  6. Coffre ouvert

    Euh.. Lit tout le thread, t’arrêtes pas au premier bout de code que tu vois ^^'
  7. Les commandes de mon plugin ne marchent pas

    Dans ton plugin.yml, retire la majuscule sur ta commande "Ecabot", mets tout en miniscule ^^ Sinon écoute les conseils de PimaPvP =D
  8. SmartInvs - API Avancée d'Inventaires

    Je viens de regarder le code, vraiment rien à dire : super propre, interfacé, utilise Java 8.. de même pour la documentation : sobre & efficace Bien joué et merci pour la contribution  
  9. Générer des grandes structures... sans lags !

    Il y a une solution que j'utilise très souvent, c'est de faire apparaître ta structure/schématic étape par étape, c'est à dire par exemple placer 10 blocks, puis 1 tick après encore 10 block, et ainsi de suite jusqu'à ce que la totalité de ta structure soit placée  Pour ce, il faut placer tous les blocks à placer dans une file d'attente (par exemple une Map<Location, MaterialData>), faire un timer qui se répète tous les ticks (ou un peu plus si tu veux encore moins de lag), et dans ton run() récuperer les <Math.min(queue.size(); 10)> premières entrées de ta file d'attente, puis de placer le block à la location K et de Material/Data V obtenues dans l'itération de ta file d'attente  Et ensuite bien sur une fois placés, les retirer de la file.   Je sais pas trop si tu as compris l'explication si jamais j’essaierai de te faire un code si j'ai le temps, c'est peut-être pas facile à comprendre à l'écrit ^^
  10. Recherche nom barres

    Héhé j'ai toujours un train d'avance !  #faux
  11. Recherche nom barres

    En 1.9 et +, oui ! Enfin, a l'infini, disons que tu peux en mettre environ 10 sinon après ça va remplir tout ton écran, mais c'est déjà pas mal ^^ J'ai trouvé qu'un tuto/explication en français, le voici :   
  12. Recherche nom barres

    Salut, les deux du haut sont toutes les deux des Bossbar (celles-là sont disponibles uniquement à partir de la 1.9, elles utilisent toutes les deux un pattern différent -la première est jaune tandis que l'autre verte- que tu peux modifier depuis le code), tandis que celle du bas est l'Actionbar, que tu peux modifier en utilisant des packets (y'a pas mal de tutos sur le net pour les utiliser :p) 
  13. Remove ItemStack

    public void sell(Player player, int amount, Material material, byte data) { ItemStack toSell = new ItemStack(material, amount, data); if(player.getInventory().containsAtLeast(toSell, amount)){ player.getInventory().removeItem(toSell); }else{ player.sendMessage("§cVous ne possèdez pas cette item (" + amount + " " + item.getType().toString() + ":" + item.getData().getData() + ")"); player.closeInventory(); } } ceci devrait marcher  
  14. Citizens2 api event

    Essai plutôt NPCRightClickEvent
  15. Récupérer l'entité du PacketPlayInUseEntity

    Renommes entity ->. Si l'erreur persistes envoi un screen de ton IDE avec l'erreur et le mot souligné