• Récent
  • Mots-clés
  • Populaire
  • Utilisateurs
  • Groupes
  • S'inscrire
  • Se connecter
  • 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
1.6k
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 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 🙂

    Cordialement,
    Drag0SEaters.

    1 réponse Dernière réponse Répondre Citer 0
    • Gugu
      Gugu dernière édition par 3 juin 2014, 10:50

      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 3 juin 2014, 11:51

        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 3 juin 2014, 15:54

          @‘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 3 juin 2014, 17:14

            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 3 juin 2014, 17:38

              Ah ok. xD

              Cordialement,
              Drag0SEaters.

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

              MINECRAFT FORGE FRANCE © 2018

              Powered by NodeBB