minecraft-src/net/minecraft/recipebook/PlaceRecipe.java
2025-07-04 01:41:11 +03:00

58 lines
1.2 KiB
Java

package net.minecraft.recipebook;
import java.util.Iterator;
import net.minecraft.util.Mth;
import net.minecraft.world.item.crafting.RecipeHolder;
import net.minecraft.world.item.crafting.ShapedRecipe;
public interface PlaceRecipe<T> {
default void placeRecipe(int width, int height, int outputSlot, RecipeHolder<?> recipe, Iterator<T> ingredients, int maxAmount) {
int i = width;
int j = height;
if (recipe.value() instanceof ShapedRecipe shapedRecipe) {
i = shapedRecipe.getWidth();
j = shapedRecipe.getHeight();
}
int k = 0;
for (int l = 0; l < height; l++) {
if (k == outputSlot) {
k++;
}
boolean bl = j < height / 2.0F;
int m = Mth.floor(height / 2.0F - j / 2.0F);
if (bl && m > l) {
k += width;
l++;
}
for (int n = 0; n < width; n++) {
if (!ingredients.hasNext()) {
return;
}
bl = i < width / 2.0F;
m = Mth.floor(width / 2.0F - i / 2.0F);
int o = i;
boolean bl2 = n < i;
if (bl) {
o = m + i;
bl2 = m <= n && n < m + i;
}
if (bl2) {
this.addItemToSlot((T)ingredients.next(), k, maxAmount, n, l);
} else if (o == n) {
k += width - n;
break;
}
k++;
}
}
}
void addItemToSlot(T item, int slot, int maxAmount, int x, int y);
}