MFF

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

    [1.16.5] Aide pour créér une recette de craft 4x4

    Planifier Épinglé Verrouillé Déplacé Non résolu Support pour les moddeurs
    1.16.x
    1 Messages 1 Publieurs 132 Vues 1 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.
    • B Hors-ligne
      bouchbi_
      dernière édition par

      Bonjour/bonsoir,
      Pour mon mod je voudrais faire une recette custom de crafting 4x4, le problème que j’ai c’est avec la création de la classe de recette, je la fait étendre ShapedRecipe et passe dedans super() avec la taille de ma table de craft (4x4), et j’appelle ensuite la fonction setCraftingSize(4, 4), comme indiqué pour permettre des plus grandes recettes dans le deserializer. Cependant, lorsque je lance mon mod, les recettes ne marchent pas en en multijoueur j’obtiens une erreur : “Invalid pattern : too many rows, 3 is maximum”, ce qui montre que l’appel de setCraftingSize n’est pas pris en compte.
      Au passage, j’override le méthode matches() pour qu’elle soit cohérente et marche avec ma tile entity.

      Voici ma classe de recette:

      public class WorkbenchRecipeShaped extends ShapedRecipe {
      	
      	private static final int width = 4;
      	private static final int height = 4;
      	private final NonNullList<Ingredient> recipeItems;
      	
      	public WorkbenchRecipeShaped(ResourceLocation idIn, String groupIn, int recipeWidthIn, int recipeHeightIn, NonNullList<Ingredient> recipeItemsIn, ItemStack recipeOutputIn) {
      		super(idIn, groupIn, width, height, recipeItemsIn, recipeOutputIn);
      		recipeItems = recipeItemsIn;
      		setCraftingSize(width, height);
      	}
      	
      	@Override public boolean matches(CraftingInventory inv, World worldIn) {
      		if (inv.isEmpty()) return false;
      		
      		for (int col = 0 ; col < inv.getWidth() ; col++) {
      			for (int raw = 0 ; raw < inv.getHeight() ; raw++) {
      				Ingredient ingredient = recipeItems.get(raw + col * inv.getWidth());
      				
      				if (!ingredient.test(inv.getStackInSlot(raw + col * inv.getWidth() + 1))) return false;
      			}
      		}
      		return true;
      	}
      	
      }
      

      Et le bout de méthode qui me permet de prendre en compte l’inventaire:

      if (gridValid() && isMoving && !waitingForTakeStack && items.get(0).getCount() >= 10) {
      			this.items.set(17, getRecipe().getRecipeOutput());
      			this.waitingForTakeStack = true;
      		}
      
      private boolean gridValid() {
      		assert world != null;
      		if (getRecipe() == null) return false;
      		return getRecipe().matches(this.inv, world);
      	}
      

      Merci de votre aide, et si quelqu’un à déjà fait des tabes de crafts custom j’aimerais bien un petit coup de main svp. Merci

      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