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

    Résolu Recette client/serveur

    1.7.x
    1.7.10
    3
    6
    1191
    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.
    • SCAREX
      SCAREX dernière édition par

      Aujourd’hui, j’ai essayé de créer un craft qui donnait un chiffre aléatoire à l’item en question :

      package fr.scarex.ascalonmod.recipe;
      
      import java.util.Random;
      
      import net.minecraft.init.Items;
      import net.minecraft.inventory.InventoryCrafting;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      import net.minecraft.item.crafting.IRecipe;
      import net.minecraft.nbt.NBTTagCompound;
      import net.minecraft.world.World;
      import fr.scarex.ascalonmod.AscalonMod;
      import fr.scarex.ascalonmod.item.AscalonModItems;
      
      /**
      * @author SCAREX
      *
      */
      public class KeyRecipe implements IRecipe
      {
      private static final Random RNG = new Random();
      protected ItemStack result;
      protected Item[][] matrix;
      protected byte slotIndex;
      
      public KeyRecipe(ItemStack result, byte slotIndex, Item[][] matrix) {
      this.result = result;
      this.matrix = matrix;
      this.slotIndex = slotIndex;
      }
      
      public KeyRecipe(CraftMatrix c) {
      this.result = c.result;
      this.slotIndex = c.slot;
      this.matrix = c.matrix;
      }
      
      @Override
      public boolean matches(InventoryCrafting inv, World world) {
      for (int i = 0; i < 3; i++) {
      for (int j = 0; j < 3; j++) {
      if (matrix*[j] != null && (inv.getStackInSlot(i * 3 + j) == null || inv.getStackInSlot(i * 3 + j).getItem() != matrix*[j])) return false;
      }
      }
      return true;
      }
      
      @Override
      public ItemStack getCraftingResult(InventoryCrafting inv) {
      NBTTagCompound comp = new NBTTagCompound();
      if (slotIndex > 0)
      comp.setInteger("key", inv.getStackInSlot(slotIndex).getTagCompound().getInteger("key"));
      else {
      int i = RNG.nextInt();
      AscalonMod.LOGGER.info("matrix : " + i);
      comp.setInteger("key", i);
      }
      ItemStack stack = result.copy();
      stack.setTagCompound(comp);
      return stack;
      }
      
      @Override
      public int getRecipeSize() {
      return 9;
      }
      
      @Override
      public ItemStack getRecipeOutput() {
      return null;
      }
      
      public static enum CraftMatrix
      {
      KEY(new ItemStack(AscalonModItems.ITEM_KEY), -1, new Item[][] {
      new Item[] {
      Items.iron_ingot,
      Items.iron_ingot,
      null },
      new Item[] {
      null,
      Items.iron_ingot,
      null },
      new Item[] {
      null,
      Items.iron_ingot,
      null } });
      
      public ItemStack result;
      public byte slot;
      public Item[][] matrix;
      
      private CraftMatrix(ItemStack stack, int slotIndex, Item[][] matrix) {
      this.result = stack;
      this.slot = (byte) slotIndex;
      this.matrix = matrix;
      }
      }
      }
      

      Malheuresement, j’ai un problème de synchronisation client/serveur car lorsque je passe la souris au-dessus du résultat, il me montre un certain nombre, mais une fois que je le prends le nombre change. (Ce problème a assez peu d’impact vu que le joueur n’est pas censé voir ce chiffre, mais j’ai peur d’avoir des problèmes avec d’autres crafts)

      Screenshots :

      Site web contenant mes scripts : http://SCAREXgaming.github.io

      Pas de demandes de support par MP ni par skype SVP.
      Je n'accepte sur skype que l…

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

        Salut,
        Essayes d’enregistrer la recette côté serveur uniquement.

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

          Si je le met dans le CommonProxy, la méthode n’est pas appelée, si je met dans la fonction matches if (world.isRemote) return false; l’Item ne s’affiche pas mais si je clique sur le slot, il apparaît.

          Site web contenant mes scripts : http://SCAREXgaming.github.io

          Pas de demandes de support par MP ni par skype SVP.
          Je n'accepte sur skype que l…

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

            Dans ce cas faudrait trouver un moyen de synchro cette valeur avec un paquet.

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

              Pas grave, j’abandonne.

              Site web contenant mes scripts : http://SCAREXgaming.github.io

              Pas de demandes de support par MP ni par skype SVP.
              Je n'accepte sur skype que l…

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

                j’avait ma lut le code dsl

                “Imagination is more important than knowledge. For knowledge is limited to all we now know and understand, while imagination embraces the entire wo…

                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