NaturesAura/src/main/java/de/ellpeck/naturesaura/blocks/tiles/render/RenderOfferingTable.java

60 lines
2.4 KiB
Java
Raw Normal View History

2018-11-19 20:18:22 +01:00
package de.ellpeck.naturesaura.blocks.tiles.render;
import com.mojang.blaze3d.vertex.PoseStack;
2023-07-08 12:32:27 +02:00
import com.mojang.math.Axis;
2021-12-04 15:40:09 +01:00
import de.ellpeck.naturesaura.blocks.tiles.BlockEntityOfferingTable;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
2021-12-15 16:24:53 +01:00
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.util.Mth;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
2023-07-08 12:32:27 +02:00
import net.minecraft.world.item.ItemDisplayContext;
2018-11-19 20:18:22 +01:00
import java.util.Random;
public class RenderOfferingTable implements BlockEntityRenderer<BlockEntityOfferingTable> {
2018-11-19 20:18:22 +01:00
private final Random rand = new Random();
2021-12-15 16:24:53 +01:00
public RenderOfferingTable(BlockEntityRendererProvider.Context context) {
}
2018-11-19 20:18:22 +01:00
@Override
public void render(BlockEntityOfferingTable tileEntityOfferingTable, float v, PoseStack matrixStack, MultiBufferSource iRenderTypeBuffer, int combinedLightIn, int combinedOverlayIn) {
2021-12-15 16:30:22 +01:00
var stack = tileEntityOfferingTable.items.getStackInSlot(0);
2018-11-19 20:18:22 +01:00
if (!stack.isEmpty()) {
this.rand.setSeed(Item.getId(stack.getItem()) + stack.getDamageValue());
2018-11-19 20:18:22 +01:00
2021-12-15 16:30:22 +01:00
var amount = Mth.ceil(stack.getCount() / 2F);
for (var i = 0; i < amount; i++) {
matrixStack.pushPose();
2021-12-15 16:30:22 +01:00
var item = stack.getItem();
2018-11-19 20:18:22 +01:00
float scale;
float yOff;
2020-01-28 18:08:56 +01:00
if (item instanceof BlockItem) {
scale = 0.5F;
2018-11-19 20:18:22 +01:00
yOff = 0.08F;
} else {
scale = 0.35F;
2018-11-19 20:18:22 +01:00
yOff = 0F;
}
2020-01-28 18:08:56 +01:00
matrixStack.translate(
0.35F + this.rand.nextFloat() * 0.3F,
0.9F + yOff + i * 0.001F,
0.35F + this.rand.nextFloat() * 0.3F);
2023-07-08 12:32:27 +02:00
matrixStack.mulPose(Axis.YP.rotationDegrees(this.rand.nextFloat() * 360));
matrixStack.mulPose(Axis.XP.rotationDegrees(90F));
2020-01-28 18:08:56 +01:00
matrixStack.scale(scale, scale, scale);
2018-11-19 20:18:22 +01:00
2023-07-08 12:32:27 +02:00
Minecraft.getInstance().getItemRenderer().renderStatic(stack, ItemDisplayContext.GROUND, combinedLightIn, combinedOverlayIn, matrixStack, iRenderTypeBuffer, tileEntityOfferingTable.getLevel(), 0);
matrixStack.popPose();
2018-11-19 20:18:22 +01:00
}
}
}
2018-11-19 20:18:22 +01:00
}