Skip to content

Commit b19e137

Browse files
committed
feat: Update to Minecraft 1.21.9
1 parent 20f24ca commit b19e137

9 files changed

Lines changed: 94 additions & 56 deletions

File tree

common/src/main/java/net/blay09/mods/cookingforblockheads/block/FridgeBlock.java

Lines changed: 9 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,18 @@
33
import com.mojang.serialization.MapCodec;
44
import com.mojang.serialization.codecs.RecordCodecBuilder;
55
import net.blay09.mods.balm.api.Balm;
6-
7-
import net.blay09.mods.cookingforblockheads.util.ItemUtils;
8-
import net.blay09.mods.cookingforblockheads.item.ModItems;
96
import net.blay09.mods.cookingforblockheads.block.entity.FridgeBlockEntity;
107
import net.blay09.mods.cookingforblockheads.block.entity.ModBlockEntities;
11-
import net.minecraft.ChatFormatting;
8+
import net.blay09.mods.cookingforblockheads.item.ModItems;
129
import net.minecraft.core.BlockPos;
1310
import net.minecraft.core.Direction;
14-
import net.minecraft.network.chat.Component;
15-
import net.minecraft.util.*;
11+
import net.minecraft.util.RandomSource;
12+
import net.minecraft.util.StringRepresentable;
1613
import net.minecraft.world.InteractionHand;
1714
import net.minecraft.world.InteractionResult;
1815
import net.minecraft.world.entity.player.Player;
1916
import net.minecraft.world.item.DyeColor;
20-
import net.minecraft.world.item.Item;
2117
import net.minecraft.world.item.ItemStack;
22-
import net.minecraft.world.item.TooltipFlag;
23-
import net.minecraft.world.item.component.TooltipDisplay;
2418
import net.minecraft.world.item.context.BlockPlaceContext;
2519
import net.minecraft.world.level.*;
2620
import net.minecraft.world.level.block.BaseEntityBlock;
@@ -39,8 +33,6 @@
3933
import net.minecraft.world.phys.shapes.VoxelShape;
4034
import org.jetbrains.annotations.Nullable;
4135

42-
import java.util.function.Consumer;
43-
4436
public class FridgeBlock extends BaseKitchenBlock {
4537

4638
public static final MapCodec<FridgeBlock> CODEC = RecordCodecBuilder.mapCodec((it) -> it.group(DyeColor.CODEC.fieldOf("color")
@@ -188,31 +180,19 @@ protected BlockState updateShape(BlockState state, LevelReader level, ScheduledT
188180
final var posAbove = pos.above();
189181
final var stateAbove = level.getBlockState(posAbove);
190182
if (stateBelow.getBlock() == this && stateBelow.getValue(MODEL_TYPE) == FridgeModelType.LARGE_LOWER) {
191-
return state.setValue(MODEL_TYPE, FridgeModelType.LARGE_UPPER);
183+
return state.setValue(MODEL_TYPE, FridgeModelType.LARGE_UPPER)
184+
.setValue(FACING, stateBelow.getValue(FACING));
192185
} else if (stateAbove.getBlock() == this && stateAbove.getValue(MODEL_TYPE) == FridgeModelType.LARGE_UPPER) {
193186
return state.setValue(MODEL_TYPE, FridgeModelType.LARGE_LOWER);
187+
} else if (state.getValue(MODEL_TYPE) == FridgeModelType.LARGE_LOWER && stateAbove.getBlock() != this) {
188+
return state.setValue(MODEL_TYPE, FridgeModelType.SMALL);
189+
} else if (state.getValue(MODEL_TYPE) == FridgeModelType.LARGE_UPPER && stateBelow.getBlock() != this) {
190+
return state.setValue(MODEL_TYPE, FridgeModelType.SMALL);
194191
}
195192

196193
return super.updateShape(state, level, scheduledTickAccess, pos, facing, facingPos, facingState, randomSource);
197194
}
198195

199-
/*@Override
200-
public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean isMoving) {
201-
if (!state.is(newState.getBlock())) {
202-
BlockPos posAbove = pos.above();
203-
BlockState stateAbove = level.getBlockState(posAbove);
204-
BlockPos posBelow = pos.below();
205-
BlockState stateBelow = level.getBlockState(posBelow);
206-
if (stateAbove.getBlock() == this && stateAbove.getValue(MODEL_TYPE) == FridgeModelType.LARGE_UPPER) {
207-
level.setBlock(posAbove, stateAbove.setValue(MODEL_TYPE, FridgeModelType.SMALL), 3);
208-
} else if (stateBelow.getBlock() == this && stateBelow.getValue(MODEL_TYPE) == FridgeModelType.LARGE_LOWER) {
209-
level.setBlock(posBelow, stateBelow.setValue(MODEL_TYPE, FridgeModelType.SMALL), 3);
210-
}
211-
}
212-
213-
super.onRemove(state, level, pos, newState, isMoving);
214-
}*/
215-
216196
@Nullable
217197
@Override
218198
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, BlockState state, BlockEntityType<T> type) {

common/src/main/java/net/blay09/mods/cookingforblockheads/client/render/CounterRenderer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,15 @@
2222
import net.minecraft.world.phys.Vec3;
2323
import org.jetbrains.annotations.Nullable;
2424

25+
import java.util.ArrayList;
2526
import java.util.Collections;
2627
import java.util.List;
2728

2829
public class CounterRenderer<T extends CounterBlockEntity> implements BlockEntityRenderer<T, CounterRenderer.CounterRenderState> {
2930

3031
public static class CounterRenderState extends BlockEntityRenderState {
3132
public List<ItemStackRenderState> items = Collections.emptyList();
33+
@Nullable
3234
public DyeColor dye;
3335
public float doorAngle;
3436
public boolean flipped;
@@ -78,6 +80,7 @@ public void extractRenderState(T blockEntity, CounterRenderState renderState, fl
7880
renderState.flipped = blockEntity.isFlipped();
7981

8082
final var id = (int) blockEntity.getBlockPos().asLong();
83+
renderState.items = new ArrayList<>();
8184
for (int i = 0; i < blockEntity.getContainer().getContainerSize(); i++) {
8285
final var itemStack = blockEntity.getContainer().getItem(i);
8386
final var itemStackRenderState = new ItemStackRenderState();

common/src/main/java/net/blay09/mods/cookingforblockheads/client/render/CowJarRenderer.java

Lines changed: 56 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,90 @@
11
package net.blay09.mods.cookingforblockheads.client.render;
22

3+
import com.google.common.collect.Maps;
34
import com.mojang.blaze3d.vertex.PoseStack;
5+
import com.mojang.math.Axis;
46
import net.blay09.mods.cookingforblockheads.block.entity.CowJarBlockEntity;
5-
import net.blay09.mods.cookingforblockheads.block.entity.MilkJarBlockEntity;
67
import net.blay09.mods.cookingforblockheads.client.ModModels;
7-
import net.minecraft.client.Minecraft;
8-
import net.minecraft.client.renderer.MultiBufferSource;
8+
import net.minecraft.client.model.AdultAndBabyModelPair;
9+
import net.minecraft.client.model.CowModel;
10+
import net.minecraft.client.model.geom.ModelLayers;
11+
import net.minecraft.client.renderer.RenderType;
912
import net.minecraft.client.renderer.SubmitNodeCollector;
1013
import net.minecraft.client.renderer.block.model.BlockStateModel;
1114
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
15+
import net.minecraft.client.renderer.entity.state.LivingEntityRenderState;
1216
import net.minecraft.client.renderer.feature.ModelFeatureRenderer;
1317
import net.minecraft.client.renderer.state.CameraRenderState;
14-
import net.minecraft.world.entity.EntityType;
15-
import net.minecraft.world.entity.animal.Cow;
16-
import net.minecraft.world.level.Level;
18+
import net.minecraft.client.renderer.texture.OverlayTexture;
19+
import net.minecraft.client.resources.model.Material;
20+
import net.minecraft.client.resources.model.MaterialSet;
21+
import net.minecraft.core.registries.Registries;
22+
import net.minecraft.world.entity.animal.CowVariant;
23+
import net.minecraft.world.entity.animal.CowVariants;
1724
import net.minecraft.world.phys.Vec3;
1825
import org.jetbrains.annotations.Nullable;
1926

27+
import java.util.Map;
28+
2029
public class CowJarRenderer extends MilkJarRenderer<CowJarBlockEntity> {
2130

22-
private static Cow entity;
31+
public static class CowJarRenderState extends MilkJarRenderState {
32+
public final LivingEntityRenderState cow = new LivingEntityRenderState();
33+
@Nullable
34+
public CowVariant variant;
35+
}
36+
37+
private final Map<CowVariant.ModelType, AdultAndBabyModelPair<CowModel>> models;
38+
private final MaterialSet materials;
2339

2440
public CowJarRenderer(BlockEntityRendererProvider.Context context) {
2541
super(context);
42+
materials = context.materials();
43+
models = bakeModels(context);
44+
}
45+
46+
private static Map<CowVariant.ModelType, AdultAndBabyModelPair<CowModel>> bakeModels(BlockEntityRendererProvider.Context context) {
47+
return Maps.newEnumMap(
48+
Map.of(CowVariant.ModelType.NORMAL, new AdultAndBabyModelPair<>(new CowModel(context.bakeLayer(ModelLayers.COW)), new CowModel(context.bakeLayer(ModelLayers.COW_BABY))),
49+
CowVariant.ModelType.WARM, new AdultAndBabyModelPair<>(new CowModel(context.bakeLayer(ModelLayers.WARM_COW)), new CowModel(context.bakeLayer(ModelLayers.WARM_COW_BABY))),
50+
CowVariant.ModelType.COLD, new AdultAndBabyModelPair<>(new CowModel(context.bakeLayer(ModelLayers.COLD_COW)), new CowModel(context.bakeLayer(ModelLayers.COLD_COW_BABY)))));
51+
}
52+
53+
@Override
54+
public MilkJarRenderState createRenderState() {
55+
return new CowJarRenderState();
2656
}
2757

2858
@Override
2959
public void extractRenderState(CowJarBlockEntity blockEntity, MilkJarRenderState renderState, float delta, Vec3 vec, ModelFeatureRenderer.@Nullable CrumblingOverlay crumblingOverlay) {
3060
super.extractRenderState(blockEntity, renderState, delta, vec, crumblingOverlay);
3161

32-
if (entity == null) {
33-
entity = new Cow(EntityType.COW, blockEntity.getLevel());
62+
if (renderState instanceof CowJarRenderState cowJarRenderState) {
63+
cowJarRenderState.variant = blockEntity.getLevel().registryAccess().lookup(Registries.COW_VARIANT)
64+
.flatMap(it -> it.getOptional(CowVariants.DEFAULT))
65+
.orElse(null);
3466
}
3567
}
3668

3769
@Override
3870
public void submit(MilkJarRenderState renderState, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState cameraRenderState) {
3971
super.submit(renderState, poseStack, submitNodeCollector, cameraRenderState);
4072

41-
float shrinkage = 0.2f;
42-
poseStack.pushPose();
43-
RenderUtils.applyBlockAngle(poseStack, renderState.blockState, 0f);
44-
poseStack.translate(0, 0, 0);
45-
poseStack.scale(shrinkage, shrinkage, shrinkage);
46-
47-
// TODO Minecraft.getInstance().getEntityRenderDispatcher().render(entity, 0, 0, 0, 0f, poseStack, buffer, combinedLight);
48-
poseStack.popPose();
73+
if (renderState instanceof CowJarRenderState cowJarRenderState && cowJarRenderState.variant != null) {
74+
poseStack.pushPose();
75+
poseStack.translate(0.5f, 0.5f, 0.5f);
76+
poseStack.mulPose(Axis.ZP.rotationDegrees(180));
77+
poseStack.translate(-0.5f, -0.5f, -0.5f);
78+
RenderUtils.applyBlockAngle(poseStack, renderState.blockState, 0f);
79+
poseStack.translate(0, 0.675f, 0);
80+
float scale = 0.2f;
81+
poseStack.scale(scale, scale, scale);
82+
final var modelAndTexture = cowJarRenderState.variant.modelAndTexture();
83+
final var model = models.get(modelAndTexture.model()).getModel(cowJarRenderState.cow.isBaby);
84+
final var textureAsset = modelAndTexture.asset();
85+
submitNodeCollector.submitModel(model, cowJarRenderState.cow, poseStack, RenderType.entityCutout(textureAsset.texturePath()), renderState.lightCoords, OverlayTexture.NO_OVERLAY, 0, renderState.breakProgress);
86+
poseStack.popPose();
87+
}
4988
}
5089

5190
@Override

common/src/main/java/net/blay09/mods/cookingforblockheads/client/render/FridgeRenderer.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import net.minecraft.world.phys.Vec3;
2424
import org.jetbrains.annotations.Nullable;
2525

26+
import java.util.ArrayList;
2627
import java.util.Collections;
2728
import java.util.List;
2829

@@ -31,8 +32,8 @@ public class FridgeRenderer implements BlockEntityRenderer<FridgeBlockEntity, Fr
3132
public static class FridgeRenderState extends BlockEntityRenderState {
3233
public boolean skip;
3334
public List<ItemStackRenderState> items = Collections.emptyList();
34-
public FridgeBlock.FridgeModelType modelType;
35-
public DyeColor dye;
35+
public FridgeBlock.FridgeModelType modelType = FridgeBlock.FridgeModelType.SMALL;
36+
public DyeColor dye = DyeColor.WHITE;
3637
public float doorAngle;
3738
public boolean flipped;
3839
}
@@ -52,12 +53,14 @@ public FridgeRenderState createRenderState() {
5253
public void extractRenderState(FridgeBlockEntity blockEntity, FridgeRenderState renderState, float delta, Vec3 vec, @Nullable ModelFeatureRenderer.CrumblingOverlay crumblingOverlay) {
5354
BlockEntityRenderer.super.extractRenderState(blockEntity, renderState, delta, vec, crumblingOverlay);
5455

55-
renderState.dye = renderState.blockState.getBlock() instanceof CounterBlock counterBlock ? counterBlock.getColor() : null;
56+
renderState.dye = renderState.blockState.getBlock() instanceof FridgeBlock fridgeBlock ? fridgeBlock.getColor() : DyeColor.WHITE;
5657
renderState.doorAngle = blockEntity.getDoorAnimator().getRenderAngle(delta);
5758
renderState.modelType = blockEntity.getBlockState().getValue(FridgeBlock.MODEL_TYPE);
59+
renderState.skip = renderState.modelType == FridgeBlock.FridgeModelType.LARGE_UPPER;
5860
renderState.flipped = blockEntity.getBlockState().getValue(FridgeBlock.FLIPPED);
5961

6062
final var id = (int) blockEntity.getBlockPos().asLong();
63+
renderState.items = new ArrayList<>();
6164
for (int i = 0; i < blockEntity.getContainer().getContainerSize(); i++) {
6265
final var itemStack = blockEntity.getContainer().getItem(i);
6366
final var itemStackRenderState = new ItemStackRenderState();
@@ -98,10 +101,10 @@ public void submit(FridgeRenderState renderState, PoseStack poseStack, SubmitNod
98101
lowerModel = renderState.flipped ? ModModels.fridgeDoorsFlipped.get(colorIndex).get() : ModModels.fridgeDoors.get(colorIndex).get();
99102
}
100103

101-
submitNodeCollector.submitBlockModel(poseStack, RenderType.entityCutout(TextureAtlas.LOCATION_BLOCKS), lowerModel, 0f, 0f, 0f, renderState.lightCoords, OverlayTexture.NO_OVERLAY, 0);
104+
submitNodeCollector.submitBlockModel(poseStack, RenderType.entityCutout(TextureAtlas.LOCATION_BLOCKS), lowerModel, 1f, 1f, 1f, renderState.lightCoords, OverlayTexture.NO_OVERLAY, 0);
102105
if (upperModel != null) {
103106
poseStack.translate(0, 1, 0);
104-
submitNodeCollector.submitBlockModel(poseStack, RenderType.entityCutout(TextureAtlas.LOCATION_BLOCKS), upperModel, 0f, 0f, 0f, renderState.lightCoords, OverlayTexture.NO_OVERLAY, 0);
107+
submitNodeCollector.submitBlockModel(poseStack, RenderType.entityCutout(TextureAtlas.LOCATION_BLOCKS), upperModel, 1f, 1f, 1f, renderState.lightCoords, OverlayTexture.NO_OVERLAY, 0);
105108
}
106109

107110
poseStack.popPose();

common/src/main/java/net/blay09/mods/cookingforblockheads/client/render/FruitBasketRenderer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import net.minecraft.world.phys.Vec3;
1717
import org.jetbrains.annotations.Nullable;
1818

19+
import java.util.ArrayList;
1920
import java.util.Collections;
2021
import java.util.List;
2122

@@ -41,6 +42,7 @@ public void extractRenderState(FruitBasketBlockEntity blockEntity, FruitBasketRe
4142
BlockEntityRenderer.super.extractRenderState(blockEntity, renderState, delta, vec, crumblingOverlay);
4243

4344
final var id = (int) blockEntity.getBlockPos().asLong();
45+
renderState.items = new ArrayList<>();
4446
for (int i = 0; i < blockEntity.getContainer().getContainerSize(); i++) {
4547
final var itemStack = blockEntity.getContainer().getItem(i);
4648
final var itemStackRenderState = new ItemStackRenderState();

common/src/main/java/net/blay09/mods/cookingforblockheads/client/render/MilkJarRenderer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import net.minecraft.world.phys.Vec3;
1818
import org.jetbrains.annotations.Nullable;
1919

20-
public class MilkJarRenderer<T extends MilkJarBlockEntity> implements BlockEntityRenderer<T, MilkJarRenderer.MilkJarRenderState> {
20+
public class MilkJarRenderer<TBlockEntity extends MilkJarBlockEntity> implements BlockEntityRenderer<TBlockEntity, MilkJarRenderer.MilkJarRenderState> {
2121

2222
public static class MilkJarRenderState extends BlockEntityRenderState {
2323
public float fluidLevel;
@@ -34,7 +34,7 @@ public MilkJarRenderState createRenderState() {
3434
}
3535

3636
@Override
37-
public void extractRenderState(T blockEntity, MilkJarRenderState renderState, float delta, Vec3 vec, @Nullable ModelFeatureRenderer.CrumblingOverlay crumblingOverlay) {
37+
public void extractRenderState(TBlockEntity blockEntity, MilkJarRenderState renderState, float delta, Vec3 vec, @Nullable ModelFeatureRenderer.CrumblingOverlay crumblingOverlay) {
3838
BlockEntityRenderer.super.extractRenderState(blockEntity, renderState, delta, vec, crumblingOverlay);
3939

4040
renderState.fluidLevel = blockEntity.getFluidTank().getAmount() / (float) blockEntity.getFluidTank().getCapacity();

common/src/main/java/net/blay09/mods/cookingforblockheads/client/render/OvenRenderer.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import net.minecraft.world.phys.Vec3;
2222
import org.jetbrains.annotations.Nullable;
2323

24+
import java.util.ArrayList;
2425
import java.util.Collections;
2526
import java.util.List;
2627

@@ -33,7 +34,7 @@ public static class OvenRenderState extends BlockEntityRenderState {
3334
public final ItemStackRenderState fourthTool = new ItemStackRenderState();
3435
public List<ItemStackRenderState> items = Collections.emptyList();
3536
public float doorAngle;
36-
public DyeColor dye;
37+
public DyeColor dye = DyeColor.WHITE;
3738
public boolean active;
3839
}
3940

@@ -59,8 +60,10 @@ public void extractRenderState(OvenBlockEntity blockEntity, OvenRenderState rend
5960

6061
renderState.doorAngle = blockEntity.getDoorAnimator().getRenderAngle(delta);
6162
renderState.dye = blockEntity.getBlockState().getBlock() instanceof OvenBlock oven ? oven.getColor() : DyeColor.WHITE;
63+
renderState.active = blockEntity.isBurning();
6264

6365
final var id = (int) blockEntity.getBlockPos().asLong();
66+
renderState.items = new ArrayList<>();
6467
for (int i = 0; i < 9; i++) {
6568
final var itemStack = blockEntity.getInternalContainer().getItem(7 + i);
6669
final var itemStackRenderState = new ItemStackRenderState();

common/src/main/java/net/blay09/mods/cookingforblockheads/client/render/SinkRenderer.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313
import net.minecraft.client.renderer.state.CameraRenderState;
1414
import net.minecraft.client.renderer.texture.OverlayTexture;
1515
import net.minecraft.client.renderer.texture.TextureAtlas;
16-
import net.minecraft.util.RandomSource;
1716
import net.minecraft.world.phys.Vec3;
1817
import org.jetbrains.annotations.Nullable;
1918

2019
public class SinkRenderer implements BlockEntityRenderer<SinkBlockEntity, SinkRenderer.SinkRenderState> {
2120

2221
public static class SinkRenderState extends BlockEntityRenderState {
2322
public float fluidLevel;
23+
public int waterColor;
2424
}
2525

2626
public SinkRenderer(BlockEntityRendererProvider.Context context) {
@@ -36,6 +36,8 @@ public void extractRenderState(SinkBlockEntity blockEntity, SinkRenderState rend
3636
BlockEntityRenderer.super.extractRenderState(blockEntity, renderState, delta, vec, crumblingOverlay);
3737

3838
renderState.fluidLevel = blockEntity.getFluidTank().getAmount() / (float) blockEntity.getFluidTank().getCapacity();
39+
final var level = blockEntity.getLevel();
40+
renderState.waterColor = level != null ? level.getBiome(blockEntity.getBlockPos()).value().getWaterColor() : 0xFFFFFFFF;
3941
}
4042

4143
@Override
@@ -46,7 +48,11 @@ public void submit(SinkRenderState renderState, PoseStack poseStack, SubmitNodeC
4648
poseStack.translate(0f, 0.5f - 0.5f * filledPercentage, 0f);
4749
poseStack.scale(1f, filledPercentage, 1f);
4850
final var model = ModModels.sinkLiquid.get();
49-
submitNodeCollector.submitBlockModel(poseStack, RenderType.entitySolid(TextureAtlas.LOCATION_BLOCKS), model, 0f, 0f, 0f, renderState.lightCoords, OverlayTexture.NO_OVERLAY, 0);
51+
int color = renderState.waterColor;
52+
float red = (float) (color >> 16 & 255) / 255f;
53+
float green = (float) (color >> 8 & 255) / 255f;
54+
float blue = (float) (color & 255) / 255f;
55+
submitNodeCollector.submitBlockModel(poseStack, RenderType.entitySolid(TextureAtlas.LOCATION_BLOCKS), model, red, green, blue, renderState.lightCoords, OverlayTexture.NO_OVERLAY, 0);
5056
poseStack.popPose();
5157
}
5258
}

common/src/main/java/net/blay09/mods/cookingforblockheads/client/render/SpiceRackRenderer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import net.minecraft.world.phys.Vec3;
1717
import org.jetbrains.annotations.Nullable;
1818

19+
import java.util.ArrayList;
1920
import java.util.Collections;
2021
import java.util.List;
2122

@@ -41,6 +42,7 @@ public void extractRenderState(SpiceRackBlockEntity blockEntity, SpiceRackRender
4142
BlockEntityRenderer.super.extractRenderState(blockEntity, renderState, delta, vec, crumblingOverlay);
4243

4344
final var id = (int) blockEntity.getBlockPos().asLong();
45+
renderState.items = new ArrayList<>();
4446
for (int i = 0; i < blockEntity.getContainer().getContainerSize(); i++) {
4547
final var itemStack = blockEntity.getContainer().getItem(i);
4648
final var itemStackRenderState = new ItemStackRenderState();

0 commit comments

Comments
 (0)