3 juin 2014, 09:37

Bonjour a tous !
Je voudrais savoir comment autoriser un craft que pour quelques personnes seulement sur un serveur multijoueurs.

En solo j’ai réussis détecter le nom du joueur :

/* Code dans la méthode ClientProxy() du fichier ClientProxy.java */
if (Minecraft.getMinecraft().getSession().getUsername().contentEquals("Drag0SEaters") == true)
{
  /* Exemple de craft ^^ */
  GameRegistry.addShapelessRecipe(new ItemStack(Blocks.mossy_cobblestone), new Object[]{ new ItemStack(Blocks.cobblestone), new ItemStack(Blocks.vine) });
}

J’ai bien compris en parcourant les forums que pour séparer le serveur du client il fallait passé par les Proxy et les Envents.
J’ai donc mis le code ci-dessus dans mon ClientProxy. Mais je voudrais savoir comment mettre la condition sur serveur (le craft ne doit pas être apparent pour les autres joueurs = ils ne doivent pas savoir que ce craft existe).
J’ai essayé de mettre ce code dans le CommonProxy :

      @EventHandler
   public void onCrafting(ItemCraftedEvent event)
   {
       if (MinecraftServer.getServer().getAllUsernames().equals("Drag0SEaters") == true)
       {
           GameRegistry.addShapelessRecipe(new ItemStack(Blocks.mossy_cobblestone), new Object[]{ new ItemStack(Blocks.cobblestone), new ItemStack(Blocks.vine) });
       }
   }

Les autres joueurs ne peuvent pas faire le craft, le résultat du craft ne s’affiche pas et même si on clique sur le slot ça nous donne pas l’item. Mais lorsque j’effectue le craft avec le perso Drag0SEaters le résultat du craft s’affiche, je peux récupérer la mossy cobble mais une fois sur quatre j’ai l’item, sinon l’item disparais ou alors j’ai l’item sans utiliser la cobble et la liane ect…

❗ Je suis conscient que ce n’est pas dans le CommonProxy qu’il faut mettre la condition et que l’Event : " onCrafting " n’est pas le bon, mais je n’ai aucune idée de ce qu’il faut mettre à la place et où.  :huh:

J’ai repris il y a peux le modding Minecraft sous Forge, je suis plus codding en Vanilla et en 1.5.2. ^^

Merci d’avance pour votre aide 🙂