Skip to content

Commit d677a5a

Browse files
committed
block entity renderer
1 parent bb5d441 commit d677a5a

File tree

3 files changed

+60
-0
lines changed

3 files changed

+60
-0
lines changed

src/main/java/net/kaupenjoe/tutorialmod/TutorialModClient.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,16 @@
66
import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry;
77
import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry;
88
import net.kaupenjoe.tutorialmod.block.ModBlocks;
9+
import net.kaupenjoe.tutorialmod.block.entity.ModBlockEntities;
10+
import net.kaupenjoe.tutorialmod.block.entity.renderer.PedestalBlockEntityRenderer;
911
import net.kaupenjoe.tutorialmod.entity.ModEntities;
1012
import net.kaupenjoe.tutorialmod.entity.client.*;
1113
import net.kaupenjoe.tutorialmod.particle.ModParticles;
1214
import net.kaupenjoe.tutorialmod.particle.PinkGarnetParticle;
1315
import net.kaupenjoe.tutorialmod.util.ModModelPredicates;
1416
import net.minecraft.client.render.RenderLayer;
17+
import net.minecraft.client.render.block.entity.BlockEntityRendererFactories;
18+
import net.minecraft.client.render.block.entity.BlockEntityRendererFactory;
1519

1620
public class TutorialModClient implements ClientModInitializer {
1721
@Override
@@ -35,5 +39,7 @@ public void onInitializeClient() {
3539
EntityRendererRegistry.register(ModEntities.CHAIR, ChairRenderer::new);
3640

3741
ParticleFactoryRegistry.getInstance().register(ModParticles.PINK_GARNET_PARTICLE, PinkGarnetParticle.Factory::new);
42+
43+
BlockEntityRendererFactories.register(ModBlockEntities.PEDESTAL_BE, PedestalBlockEntityRenderer::new);
3844
}
3945
}

src/main/java/net/kaupenjoe/tutorialmod/block/entity/custom/PedestalBlockEntity.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
public class PedestalBlockEntity extends BlockEntity implements ImplementedInventory {
1919
private final DefaultedList<ItemStack> inventory = DefaultedList.ofSize(1, ItemStack.EMPTY);
20+
private float rotation = 0;
2021

2122
public PedestalBlockEntity(BlockPos pos, BlockState state) {
2223
super(ModBlockEntities.PEDESTAL_BE, pos, state);
@@ -27,6 +28,14 @@ public DefaultedList<ItemStack> getItems() {
2728
return inventory;
2829
}
2930

31+
public float getRenderingRotation() {
32+
rotation += 0.5f;
33+
if(rotation >= 360) {
34+
rotation = 0;
35+
}
36+
return rotation;
37+
}
38+
3039
@Override
3140
protected void writeNbt(NbtCompound nbt, RegistryWrapper.WrapperLookup registryLookup) {
3241
super.writeNbt(nbt, registryLookup);
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package net.kaupenjoe.tutorialmod.block.entity.renderer;
2+
3+
import net.kaupenjoe.tutorialmod.block.entity.custom.PedestalBlockEntity;
4+
import net.minecraft.client.MinecraftClient;
5+
import net.minecraft.client.render.LightmapTextureManager;
6+
import net.minecraft.client.render.OverlayTexture;
7+
import net.minecraft.client.render.VertexConsumerProvider;
8+
import net.minecraft.client.render.block.entity.BlockEntityRenderer;
9+
import net.minecraft.client.render.block.entity.BlockEntityRendererFactory;
10+
import net.minecraft.client.render.item.ItemRenderer;
11+
import net.minecraft.client.render.model.json.ModelTransformationMode;
12+
import net.minecraft.client.util.math.MatrixStack;
13+
import net.minecraft.item.ItemStack;
14+
import net.minecraft.util.math.BlockPos;
15+
import net.minecraft.util.math.RotationAxis;
16+
import net.minecraft.world.LightType;
17+
import net.minecraft.world.World;
18+
19+
public class PedestalBlockEntityRenderer implements BlockEntityRenderer<PedestalBlockEntity> {
20+
public PedestalBlockEntityRenderer(BlockEntityRendererFactory.Context context) {
21+
22+
}
23+
24+
@Override
25+
public void render(PedestalBlockEntity entity, float tickDelta, MatrixStack matrices,
26+
VertexConsumerProvider vertexConsumers, int light, int overlay) {
27+
ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer();
28+
ItemStack stack = entity.getStack(0);
29+
30+
matrices.push();
31+
matrices.translate(0.5f, 1.15f, 0.5f);
32+
matrices.scale(0.5f, 0.5f, 0.5f);
33+
matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(entity.getRenderingRotation()));
34+
35+
itemRenderer.renderItem(stack, ModelTransformationMode.GUI, getLightLevel(entity.getWorld(),
36+
entity.getPos()), OverlayTexture.DEFAULT_UV, matrices, vertexConsumers, entity.getWorld(), 1);
37+
matrices.pop();
38+
}
39+
40+
private int getLightLevel(World world, BlockPos pos) {
41+
int bLight = world.getLightLevel(LightType.BLOCK, pos);
42+
int sLight = world.getLightLevel(LightType.SKY, pos);
43+
return LightmapTextureManager.pack(bLight, sLight);
44+
}
45+
}

0 commit comments

Comments
 (0)