• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Solved Crafting "caché" en multi

    1.7.x
    1.7.x
    3
    6
    1494
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Drag0SEaters
      Drag0SEaters last edited by

      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 Reply Last reply Reply Quote 0
      • Gugu
        Gugu last edited by

        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 Reply Last reply Reply Quote 0
        • robin4002
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

          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 Reply Last reply Reply Quote 0
          • Drag0SEaters
            Drag0SEaters last edited by

            @‘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 Reply Last reply Reply Quote 0
            • robin4002
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

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

              1 Reply Last reply Reply Quote 0
              • Drag0SEaters
                Drag0SEaters last edited by

                Ah ok. xD

                Cordialement,
                Drag0SEaters.

                1 Reply Last reply Reply Quote 0
                • 1 / 1
                • First post
                  Last post
                Design by Woryk
                Contact / Mentions Légales

                MINECRAFT FORGE FRANCE © 2018

                Powered by NodeBB