• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu Crafting "caché" en multi

    1.7.x
    1.7.x
    3
    6
    1586
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • Drag0SEaters
      Drag0SEaters dernière édition par

      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 🙂

      Cordialement,
      Drag0SEaters.

      1 réponse Dernière réponse Répondre Citer 0
      • Gugu
        Gugu dernière édition par

        Hm, tu ajoute la recette lors du craft et non lors de l’initialisation.

        Tu devrais faire un truc genre l’ajouter, et dans l’event, tu regarde les variables disponibles sur event ( Exemple : event.player ( Pas sur que ce soit ça ); et si le craft est celui de l’item en question, tu vérifie le player, et annule l’event si ce n’est pas le bon

        "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
        ― Jordan B. Peterson

        1 réponse Dernière réponse Répondre Citer 0
        • robin4002
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

          Il faudrait modifier la fonction onCrafting de la classe SlotCrafting, faire que si le thePlayer.getCommandSenderName() n’est pas le bon joueur, ça ne fait rien. Sauf qu’il n’y a pas d’event pour, donc ça va pas être possible.
          Si c’est pour un serveur, le plus simple est de passer par un plugin de permission comme permission ex ou même avec world guard.

          1 réponse Dernière réponse Répondre Citer 0
          • Drag0SEaters
            Drag0SEaters dernière édition par

            @‘robin4002’:

            Si c’est pour un serveur, le plus simple est de passer par un plugin de permission comme permission ex ou même avec world guard.

            Effectivement, mais je vais essayer l’idée de Gugu42,et, si je n’y arrive pas je vais passer par un plugin.

            Merci pour votre aide !

            Cordialement,
            Drag0SEaters.

            1 réponse Dernière réponse Répondre Citer 0
            • robin4002
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

              L’event de craft ne peut pas être cancel, j’ai vérifier avant de te répondre 😉

              1 réponse Dernière réponse Répondre Citer 0
              • Drag0SEaters
                Drag0SEaters dernière édition par

                Ah ok. xD

                Cordialement,
                Drag0SEaters.

                1 réponse Dernière réponse Répondre Citer 0
                • 1 / 1
                • Premier message
                  Dernier message
                Design by Woryk
                Contact / Mentions Légales

                MINECRAFT FORGE FRANCE © 2018

                Powered by NodeBB