Skip to content

Commit 8e6c213

Browse files
committed
DynamicRenderer for BWBlock with TileEntity
1 parent 5730a95 commit 8e6c213

File tree

4 files changed

+61
-9
lines changed

4 files changed

+61
-9
lines changed

minecraft/1.7/src/main/java/nova/core/wrapper/mc/forge/v17/wrapper/block/backward/BWBlock.java

+18-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
package nova.core.wrapper.mc.forge.v17.wrapper.block.backward;
2222

2323
import net.minecraft.client.renderer.RenderBlocks;
24+
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
2425
import net.minecraft.init.Blocks;
2526
import net.minecraft.item.Item;
2627
import net.minecraft.item.ItemStack;
@@ -32,6 +33,7 @@
3233
import nova.core.block.component.BlockProperty;
3334
import nova.core.block.component.LightEmitter;
3435
import nova.core.component.misc.Collider;
36+
import nova.core.component.renderer.DynamicRenderer;
3537
import nova.core.component.renderer.StaticRenderer;
3638
import nova.core.component.transform.BlockTransform;
3739
import nova.core.item.ItemFactory;
@@ -98,8 +100,22 @@ public BWBlock(net.minecraft.block.Block block, World world, Vector3D pos) {
98100
.collect(Collectors.toSet());
99101
});
100102
//TODO: Set selection bounds
101-
components.add(new StaticRenderer()).onRender(model ->
102-
model.addChild(new CustomModel(self -> RenderBlocks.getInstance().renderBlockByRenderType(mcBlock, x(), y(), z()))));
103+
components.add(new StaticRenderer())
104+
.onRender(model -> {
105+
model.addChild(new CustomModel(self -> {
106+
RenderBlocks.getInstance()
107+
.renderBlockByRenderType(mcBlock, x(), y(), z());
108+
}));
109+
});
110+
getTileEntity().ifPresent(tileEntity -> {
111+
components.add(new DynamicRenderer())
112+
.onRender(model -> {
113+
model.addChild(new CustomModel(self -> {
114+
TileEntityRendererDispatcher.instance.renderTileEntityAt(tileEntity, position().getX(), position().getY(), position().getZ(), 0);
115+
}));
116+
});
117+
});
118+
103119
WrapperEvent.BWBlockCreate event = new WrapperEvent.BWBlockCreate(world, pos, this, mcBlock);
104120
Game.events().publish(event);
105121
}

minecraft/1.7/src/main/java/nova/core/wrapper/mc/forge/v17/wrapper/item/BWItem.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public BWItem(net.minecraft.item.Item item, int meta, NBTTagCompound tag) {
6767
buffer.put(flatArray);
6868
buffer.position(0);
6969
GL11.glMultMatrix(buffer);
70-
RenderItem.getInstance().doRender(fakeEntity, 0, 0, 0, 0, 0);
70+
RenderItem.getInstance().doRender(fakeEntity, 0, 0, 0, 0, 0);
7171
GL11.glPopMatrix();
7272
Tessellator.instance.startDrawingQuads();
7373
}));

minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/block/backward/BWBlock.java

+18-3
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import net.minecraft.block.state.IBlockState;
2525
import net.minecraft.client.Minecraft;
2626
import net.minecraft.client.renderer.Tessellator;
27+
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
2728
import net.minecraft.init.Blocks;
2829
import net.minecraft.item.Item;
2930
import net.minecraft.item.ItemStack;
@@ -36,6 +37,7 @@
3637
import nova.core.block.component.BlockProperty;
3738
import nova.core.block.component.LightEmitter;
3839
import nova.core.component.misc.Collider;
40+
import nova.core.component.renderer.DynamicRenderer;
3941
import nova.core.component.renderer.StaticRenderer;
4042
import nova.core.component.transform.BlockTransform;
4143
import nova.core.item.ItemFactory;
@@ -102,9 +104,22 @@ public BWBlock(net.minecraft.block.Block block, World world, Vector3D pos) {
102104
.collect(Collectors.toSet());
103105
});
104106
//TODO: Set selection bounds
105-
components.add(new StaticRenderer()).onRender(model ->
106-
model.addChild(new CustomModel(self -> Minecraft.getMinecraft().getBlockRendererDispatcher()
107-
.renderBlock(blockState(), new BlockPos(x(), y(), z()), getMcBlockAccess(), Tessellator.getInstance().getWorldRenderer()))));
107+
components.add(new StaticRenderer())
108+
.onRender(model -> {
109+
model.addChild(new CustomModel(self -> {
110+
Minecraft.getMinecraft().getBlockRendererDispatcher()
111+
.renderBlock(blockState(), new BlockPos(x(), y(), z()), getMcBlockAccess(), Tessellator.getInstance().getWorldRenderer());
112+
}));
113+
});
114+
getTileEntity().ifPresent(tileEntity -> {
115+
components.add(new DynamicRenderer())
116+
.onRender(model -> {
117+
model.addChild(new CustomModel(self -> {
118+
TileEntityRendererDispatcher.instance.renderTileEntityAt(tileEntity, position().getX(), position().getY(), position().getZ(), 0);
119+
}));
120+
});
121+
});
122+
108123
WrapperEvent.BWBlockCreate event = new WrapperEvent.BWBlockCreate(world, pos, this, mcBlock);
109124
Game.events().publish(event);
110125
}

minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/item/BWItem.java

+24-3
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,19 @@
2020

2121
package nova.core.wrapper.mc.forge.v18.wrapper.item;
2222

23+
import net.minecraft.client.Minecraft;
24+
import net.minecraft.client.renderer.Tessellator;
2325
import net.minecraft.item.ItemStack;
2426
import net.minecraft.nbt.NBTTagCompound;
2527
import nova.core.component.renderer.StaticRenderer;
2628
import nova.core.item.Item;
2729
import nova.core.render.model.CustomModel;
2830
import nova.core.retention.Storable;
29-
import nova.core.wrapper.mc.forge.v18.wrapper.render.BWClientRenderManager;
31+
import org.lwjgl.BufferUtils;
32+
import org.lwjgl.opengl.GL11;
33+
34+
import java.nio.DoubleBuffer;
35+
import java.util.Arrays;
3036

3137
/**
3238
* @author Stan
@@ -46,8 +52,23 @@ public BWItem(net.minecraft.item.Item item, int meta, NBTTagCompound tag) {
4652
this.meta = meta;
4753
this.tag = tag;
4854

49-
components.add(new StaticRenderer()).onRender(model ->
50-
model.addChild(new CustomModel(self -> BWClientRenderManager.renderItem().renderItemModel(makeItemStack(count())))));
55+
components.add(new StaticRenderer())
56+
.onRender(model -> {
57+
model.addChild(new CustomModel(self -> {
58+
Tessellator.getInstance().draw();
59+
GL11.glPushMatrix();
60+
DoubleBuffer buffer = BufferUtils.createDoubleBuffer(4 * 4);
61+
double[] flatArray = Arrays.stream(self.matrix.getMatrix().getData())
62+
.flatMapToDouble(Arrays::stream)
63+
.toArray();
64+
buffer.put(flatArray);
65+
buffer.position(0);
66+
GL11.glMultMatrix(buffer);
67+
Minecraft.getMinecraft().getRenderItem().renderItemModel(makeItemStack(count()));
68+
GL11.glPopMatrix();
69+
Tessellator.getInstance().getWorldRenderer().startDrawingQuads();
70+
}));
71+
});
5172
}
5273

5374
public net.minecraft.item.Item getItem() {

0 commit comments

Comments
 (0)