MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Craft avec nbt qui reste

    Planifier Épinglé Verrouillé Déplacé Résolu 1.15.x
    1.15.2
    11 Messages 2 Publieurs 766 Vues 3 Watching
    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.
    • DailyCraftD Hors-ligne
      DailyCraft
      dernière édition par

      Bonjour,

      Je me demandais comment faire un block mais que chaque item doivent avoir un même nbt (qui peut dependre (c’est un pseudo)) et que si tout les nbt sont correcte alors on peut crafter le bloc avec le nbt correspondant.

      Sachant que on ne peut integrer de nbt dans les json, j’ai voulu me penchais sur a méthode à l’ancienne avec le GameRegistery mais il n’y a plus la méthode qui permet d’enregistrer un craft, et en plus les crafts sont enregistrer au démarrage donc il n’y aurai tout simplement pas le craft en jeu. Après je me suis dis que m’orienté vers les events été la meilleur solution mais il y a que un seul event pour les recipes et je n’arrive pas à récuperer les nbt des objets de base. Donc je fais demande à vous pour pouvoir m’aider sur mon problème.

      Mes créations :

      Mod en cours de développement : Personal Robot (1.15.2)

      Datapacks : DailyCraft's Craft (beta)

      Je suis un membre apprécié et joueur, j'ai déjà obtenu 2 point(s) de réputation.

      1 réponse Dernière réponse Répondre Citer 0
      • DailyCraftD Hors-ligne
        DailyCraft
        dernière édition par

        Alors ?

        Mes créations :

        Mod en cours de développement : Personal Robot (1.15.2)

        Datapacks : DailyCraft's Craft (beta)

        Je suis un membre apprécié et joueur, j'ai déjà obtenu 2 point(s) de réputation.

        1 réponse Dernière réponse Répondre Citer 0
        • DailyCraftD Hors-ligne
          DailyCraft
          dernière édition par DailyCraft

          Les events que j’ai essayer d’utiliser sont RecipesUpdateEvent et PlayerEvent.ItemCraftedEvent et rien, aidez moi svp

          Mes créations :

          Mod en cours de développement : Personal Robot (1.15.2)

          Datapacks : DailyCraft's Craft (beta)

          Je suis un membre apprécié et joueur, j'ai déjà obtenu 2 point(s) de réputation.

          1 réponse Dernière réponse Répondre Citer 0
          • DailyCraftD Hors-ligne
            DailyCraft
            dernière édition par

            up ?

            Mes créations :

            Mod en cours de développement : Personal Robot (1.15.2)

            Datapacks : DailyCraft's Craft (beta)

            Je suis un membre apprécié et joueur, j'ai déjà obtenu 2 point(s) de réputation.

            1 réponse Dernière réponse Répondre Citer 0
            • DailyCraftD Hors-ligne
              DailyCraft
              dernière édition par

              Il n’y a personne qui veux me répondre ? 😢

              Mes créations :

              Mod en cours de développement : Personal Robot (1.15.2)

              Datapacks : DailyCraft's Craft (beta)

              Je suis un membre apprécié et joueur, j'ai déjà obtenu 2 point(s) de réputation.

              1 réponse Dernière réponse Répondre Citer 0
              • En0ri4nE Hors-ligne
                En0ri4n
                dernière édition par

                Je pense que tu devrais regarder du coté des crafts pour les shulkers box car elles gardent leurs items donc leurs nbts la classe s’appelle ShulkerBoxRecipes désolé de ne pas t’aider plus mais j’ai jamais essayé 🙂

                Le java c'est comme une boîte de chocolat, on sait jamais sur quoi on va tomber !

                1 réponse Dernière réponse Répondre Citer 0
                • DailyCraftD Hors-ligne
                  DailyCraft
                  dernière édition par DailyCraft

                  c’est ca le nom ShulkerBoxColoringRecipe, tu m’as menti 😢

                  Mes créations :

                  Mod en cours de développement : Personal Robot (1.15.2)

                  Datapacks : DailyCraft's Craft (beta)

                  Je suis un membre apprécié et joueur, j'ai déjà obtenu 2 point(s) de réputation.

                  1 réponse Dernière réponse Répondre Citer 0
                  • DailyCraftD Hors-ligne
                    DailyCraft
                    dernière édition par DailyCraft

                    J’avoue, je suis un peu perdu avec ceux que je dois faire,

                    ShulkerBoxColoringRecipe :

                    public class ShulkerBoxColoringRecipe extends SpecialRecipe {
                       public ShulkerBoxColoringRecipe(ResourceLocation idIn) {
                          super(idIn);
                       }
                    
                       /**
                        * Used to check if a recipe matches current crafting inventory
                        */
                       public boolean matches(CraftingInventory inv, World worldIn) {
                          int i = 0;
                          int j = 0;
                    
                          for(int k = 0; k < inv.getSizeInventory(); ++k) {
                             ItemStack itemstack = inv.getStackInSlot(k);
                             if (!itemstack.isEmpty()) {
                                if (Block.getBlockFromItem(itemstack.getItem()) instanceof ShulkerBoxBlock) {
                                   ++i;
                                } else {
                                   if (!itemstack.getItem().isIn(net.minecraftforge.common.Tags.Items.DYES)) {
                                      return false;
                                   }
                    
                                   ++j;
                                }
                    
                                if (j > 1 || i > 1) {
                                   return false;
                                }
                             }
                          }
                    
                          return i == 1 && j == 1;
                       }
                    
                       /**
                        * Returns an Item that is the result of this recipe
                        */
                       public ItemStack getCraftingResult(CraftingInventory inv) {
                          ItemStack itemstack = ItemStack.EMPTY;
                          net.minecraft.item.DyeColor dyecolor = net.minecraft.item.DyeColor.WHITE;
                    
                          for(int i = 0; i < inv.getSizeInventory(); ++i) {
                             ItemStack itemstack1 = inv.getStackInSlot(i);
                             if (!itemstack1.isEmpty()) {
                                Item item = itemstack1.getItem();
                                if (Block.getBlockFromItem(item) instanceof ShulkerBoxBlock) {
                                   itemstack = itemstack1;
                                } else {
                                   net.minecraft.item.DyeColor tmp = net.minecraft.item.DyeColor.getColor(itemstack1);
                                   if (tmp != null) dyecolor = tmp;
                                }
                             }
                          }
                    
                          ItemStack itemstack2 = ShulkerBoxBlock.getColoredItemStack(dyecolor);
                          if (itemstack.hasTag()) {
                             itemstack2.setTag(itemstack.getTag().copy());
                          }
                    
                          return itemstack2;
                       }
                    
                       /**
                        * Used to determine if this recipe can fit in a grid of the given width/height
                        */
                       public boolean canFit(int width, int height) {
                          return width * height >= 2;
                       }
                    
                       public IRecipeSerializer<?> getSerializer() {
                          return IRecipeSerializer.CRAFTING_SPECIAL_SHULKERBOXCOLORING;
                       }
                    }
                    

                    et la mienne :

                    public class RecipePersonalBlock extends SpecialRecipe
                    {
                        public RecipePersonalBlock()
                        {
                            super(new ResourceLocation(null /* :) */));
                        }
                    
                        @Override
                        public boolean matches(CraftingInventory inv, World worldIn)
                        {
                            return false;
                        }
                    
                        @Override
                        public ItemStack getCraftingResult(CraftingInventory inv)
                        {
                            ItemStack ingredient1 = inv.getStackInSlot(1);
                            ItemStack ingredient2 = inv.getStackInSlot(2);
                            ItemStack ingredient3 = inv.getStackInSlot(3);
                            ItemStack ingredient4 = inv.getStackInSlot(4);
                            ItemStack ingredient5 = inv.getStackInSlot(5);
                            ItemStack ingredient6 = inv.getStackInSlot(6);
                            ItemStack ingredient7 = inv.getStackInSlot(7);
                            ItemStack ingredient8 = inv.getStackInSlot(8);
                            ItemStack ingredient9 = inv.getStackInSlot(9);
                    
                            if (ingredient1.getTag().getString("Owner").equals(ingredient2.getTag().getString("Owner")) && ingredient2.getTag().getString("Owner").equals(ingredient3.getTag().getString("Owner")) && ingredient3.getTag().getString("Owner").equals(ingredient4.getTag().getString("Owner")) && ingredient4.getTag().getString("Owner").equals(ingredient5.getTag().getString("Owner")) && ingredient5.getTag().getString("Owner").equals(ingredient6.getTag().getString("Owner")) && ingredient6.getTag().getString("Owner").equals(ingredient7.getTag().getString("Owner")) && ingredient7.getTag().getString("Owner").equals(ingredient8.getTag().getString("Owner")) && ingredient8.getTag().getString("Owner").equals(ingredient9.getTag().getString("Owner")))
                            {
                                ItemStack item = new ItemStack(Blocks.PERSONAL_BLOCK);
                                item.getTag().putString("Owner", ingredient1.getTag().getString("Owner"));
                    
                                return item;
                            }
                    
                            return ItemStack.EMPTY;
                        }
                    
                        @Override
                        public boolean canFit(int width, int height)
                        {
                            return false;
                    
                            /* EDIT : Je pense que ici c'est  : */ return width * height >= 9;
                        }
                    
                        @Override
                        public IRecipeSerializer<?> getSerializer()
                        {
                            return null;
                    
                            // EDIT : Ici il faudra aller voir comment c'est sur IRecipeSerializer.CRAFTING_SPECIALSHULKERBOXCOLORING donc pas trop difficile
                        }
                    }
                    

                    et si vous savez comment compacter ma vérification, ce serai cool 🙂

                    EDIT : en fait, il y a juste la fonction matches ou je ne sais pas quoi mettre donc ça va en fait

                    Mes créations :

                    Mod en cours de développement : Personal Robot (1.15.2)

                    Datapacks : DailyCraft's Craft (beta)

                    Je suis un membre apprécié et joueur, j'ai déjà obtenu 2 point(s) de réputation.

                    1 réponse Dernière réponse Répondre Citer 0
                    • DailyCraftD Hors-ligne
                      DailyCraft
                      dernière édition par DailyCraft

                      Je pense que je peux compacter en créant la fonction :

                      private String ingredients(CraftingInventory inv, int slot)
                      {
                          return inv.getStackInSlot(slot).getTag().getString("Owner");
                      }
                      

                      Je sais, c’est pas foufou mais c’est deja mieux

                      EDIT : et pour enregistrer la recette j’ai essayer (mais je sais as si c’est correcte) :

                      @EventBusSubscriber(modid = Main.MODID, bus = Bus.MOD)
                      public class Recipes
                      {
                          @SubscribeEvent
                          public static void registerRecipes(Register<IRecipeSerializer<?> /* Je crois que ça s'écrivait comme ça */ > event)
                          {
                              event.getRegistry.register(new SpecialRecipeSerializer/* Toujours pas sur du nom */<IRecipe<?>>(new RecipePersonalBlock() /*mais il y avait une erreur que je n'arrive pas à régler*/).setRegisteryName("personal_block"));

                      Mes créations :

                      Mod en cours de développement : Personal Robot (1.15.2)

                      Datapacks : DailyCraft's Craft (beta)

                      Je suis un membre apprécié et joueur, j'ai déjà obtenu 2 point(s) de réputation.

                      1 réponse Dernière réponse Répondre Citer 0
                      • DailyCraftD Hors-ligne
                        DailyCraft
                        dernière édition par

                        up ?

                        Mes créations :

                        Mod en cours de développement : Personal Robot (1.15.2)

                        Datapacks : DailyCraft's Craft (beta)

                        Je suis un membre apprécié et joueur, j'ai déjà obtenu 2 point(s) de réputation.

                        1 réponse Dernière réponse Répondre Citer 0
                        • DailyCraftD Hors-ligne
                          DailyCraft
                          dernière édition par

                          Bon j’ai décider de faire une machine à part, au moins ça règlera mon problème

                          Mes créations :

                          Mod en cours de développement : Personal Robot (1.15.2)

                          Datapacks : DailyCraft's Craft (beta)

                          Je suis un membre apprécié et joueur, j'ai déjà obtenu 2 point(s) de réputation.

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

                          MINECRAFT FORGE FRANCE © 2024

                          Powered by NodeBB