Skip to content

Commit fb6607c

Browse files
committed
Implement BW Rendering
1 parent 4d86319 commit fb6607c

File tree

10 files changed

+63
-22
lines changed

10 files changed

+63
-22
lines changed

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ public BWBlock(net.minecraft.block.Block block, World world, Vector3D pos) {
8383
.map(cuboid -> cuboid.subtract(pos))
8484
.collect(Collectors.toSet());
8585
});
86-
components.add(new StaticRenderer())
87-
.onRender(model -> model.addChild(new CustomModel(self -> RenderBlocks.getInstance().renderStandardBlock(mcBlock, x(), y(), z()))));
86+
components.add(new StaticRenderer()).onRender(model ->
87+
model.addChild(new CustomModel(self -> RenderBlocks.getInstance().renderBlockByRenderType(mcBlock, x(), y(), z()))));
8888
//TODO: Set selection bounds
8989
}
9090

minecraft/1.7/src/main/java/nova/core/wrapper/mc/forge/v17/wrapper/entity/backward/BWEntity.java

+8
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,11 @@
2525
import net.minecraft.util.DamageSource;
2626
import nova.core.component.inventory.InventoryPlayer;
2727
import nova.core.component.misc.Damageable;
28+
import nova.core.component.renderer.DynamicRenderer;
2829
import nova.core.entity.Entity;
2930
import nova.core.entity.component.Living;
3031
import nova.core.entity.component.Player;
32+
import nova.core.render.model.CustomModel;
3133
import nova.core.wrapper.mc.forge.v17.wrapper.entity.forward.MCEntityTransform;
3234
import nova.core.wrapper.mc.forge.v17.wrapper.inventory.BWInventory;
3335
import org.apache.commons.math3.geometry.euclidean.threed.Vector3D;
@@ -55,6 +57,12 @@ public void damage(double amount, DamageType type) {
5557
}
5658
});
5759

60+
components.add(new DynamicRenderer()).onRender(model -> {
61+
model.addChild(new CustomModel(self -> {
62+
net.minecraft.client.renderer.entity.RenderManager.instance.renderEntityWithPosYaw(entity, entity.posX, entity.posY, entity.posZ, entity.rotationYaw, 1);
63+
}));
64+
});
65+
5866
if (entity instanceof EntityLivingBase) {
5967
if (entity instanceof EntityPlayer) {
6068
MCPlayer player = components.add(new MCPlayer(this));

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

+15-16
Original file line numberDiff line numberDiff line change
@@ -57,22 +57,21 @@ public BWItem(net.minecraft.item.Item item, int meta, NBTTagCompound tag) {
5757

5858
components.add(new StaticRenderer())
5959
.onRender(model -> {
60-
model.addChild(new CustomModel(self -> {
61-
Tessellator.instance.draw();
62-
GL11.glPushMatrix();
63-
DoubleBuffer buffer = BufferUtils.createDoubleBuffer(4 * 4);
64-
double[] flatArray = Arrays.stream(self.matrix.getMatrix().getData())
65-
.flatMapToDouble(Arrays::stream)
66-
.toArray();
67-
buffer.put(flatArray);
68-
buffer.position(0);
69-
GL11.glMultMatrix(buffer);
70-
BWClientRenderManager.renderItem.doRender(fakeEntity, 0, 0, 0, 0, 0);
71-
GL11.glPopMatrix();
72-
Tessellator.instance.startDrawingQuads();
73-
}));
74-
}
75-
);
60+
model.addChild(new CustomModel(self -> {
61+
Tessellator.instance.draw();
62+
GL11.glPushMatrix();
63+
DoubleBuffer buffer = BufferUtils.createDoubleBuffer(4 * 4);
64+
double[] flatArray = Arrays.stream(self.matrix.getMatrix().getData())
65+
.flatMapToDouble(Arrays::stream)
66+
.toArray();
67+
buffer.put(flatArray);
68+
buffer.position(0);
69+
GL11.glMultMatrix(buffer);
70+
BWClientRenderManager.renderItem.doRender(fakeEntity, 0, 0, 0, 0, 0);
71+
GL11.glPopMatrix();
72+
Tessellator.instance.startDrawingQuads();
73+
}));
74+
});
7675
}
7776

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

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

+7
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222

2323
import net.minecraft.block.BlockSnow;
2424
import net.minecraft.block.state.IBlockState;
25+
import net.minecraft.client.Minecraft;
26+
import net.minecraft.client.renderer.Tessellator;
2527
import net.minecraft.init.Blocks;
2628
import net.minecraft.item.Item;
2729
import net.minecraft.item.ItemStack;
@@ -34,8 +36,10 @@
3436
import nova.core.block.component.BlockProperty;
3537
import nova.core.block.component.LightEmitter;
3638
import nova.core.component.misc.Collider;
39+
import nova.core.component.renderer.StaticRenderer;
3740
import nova.core.component.transform.BlockTransform;
3841
import nova.core.item.ItemFactory;
42+
import nova.core.render.model.CustomModel;
3943
import nova.core.retention.Data;
4044
import nova.core.retention.Storable;
4145
import nova.core.retention.Store;
@@ -93,6 +97,9 @@ public BWBlock(net.minecraft.block.Block block, World world, Vector3D pos) {
9397
.map(cuboid -> cuboid.subtract(pos))
9498
.collect(Collectors.toSet());
9599
});
100+
components.add(new StaticRenderer()).onRender(model ->
101+
model.addChild(new CustomModel(self -> Minecraft.getMinecraft().getBlockRendererDispatcher()
102+
.renderBlock(blockState(), new BlockPos(x(), y(), z()), getMcBlockAccess(), Tessellator.getInstance().getWorldRenderer()))));
96103
//TODO: Set selection bounds
97104
}
98105

minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/entity/backward/BWEntity.java

+10
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,17 @@
2020

2121
package nova.core.wrapper.mc.forge.v18.wrapper.entity.backward;
2222

23+
import net.minecraft.client.Minecraft;
2324
import net.minecraft.entity.EntityLivingBase;
2425
import net.minecraft.entity.player.EntityPlayer;
2526
import net.minecraft.util.DamageSource;
2627
import nova.core.component.inventory.InventoryPlayer;
2728
import nova.core.component.misc.Damageable;
29+
import nova.core.component.renderer.DynamicRenderer;
2830
import nova.core.entity.Entity;
2931
import nova.core.entity.component.Living;
3032
import nova.core.entity.component.Player;
33+
import nova.core.render.model.CustomModel;
3134
import nova.core.wrapper.mc.forge.v18.wrapper.entity.forward.MCEntityTransform;
3235
import nova.core.wrapper.mc.forge.v18.wrapper.inventory.BWInventory;
3336
import org.apache.commons.math3.geometry.euclidean.threed.Vector3D;
@@ -41,6 +44,7 @@ public class BWEntity extends Entity {
4144

4245
public net.minecraft.entity.Entity entity;
4346

47+
@SuppressWarnings("unchecked")
4448
public BWEntity(net.minecraft.entity.Entity entity) {
4549
this.entity = entity;
4650
components.add(new MCEntityTransform(entity));
@@ -55,6 +59,12 @@ public void damage(double amount, DamageType type) {
5559
}
5660
});
5761

62+
components.add(new DynamicRenderer()).onRender(model -> {
63+
model.addChild(new CustomModel(self -> {
64+
Minecraft.getMinecraft().getRenderManager().renderEntityWithPosYaw(entity, entity.posX, entity.posY, entity.posZ, entity.rotationYaw, 1);
65+
}));
66+
});
67+
5868
if (entity instanceof EntityLivingBase) {
5969
if (entity instanceof EntityPlayer) {
6070
MCPlayer player = components.add(new MCPlayer(this));

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

+6
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,11 @@
2222

2323
import net.minecraft.item.ItemStack;
2424
import net.minecraft.nbt.NBTTagCompound;
25+
import nova.core.component.renderer.StaticRenderer;
2526
import nova.core.item.Item;
27+
import nova.core.render.model.CustomModel;
2628
import nova.core.retention.Storable;
29+
import nova.core.wrapper.mc.forge.v18.wrapper.render.BWClientRenderManager;
2730

2831
/**
2932
* @author Stan
@@ -42,6 +45,9 @@ public BWItem(net.minecraft.item.Item item, int meta, NBTTagCompound tag) {
4245
this.item = item;
4346
this.meta = meta;
4447
this.tag = tag;
48+
49+
components.add(new StaticRenderer()).onRender(model ->
50+
model.addChild(new CustomModel(self -> BWClientRenderManager.renderItem().renderItemModel(makeItemStack(count())))));
4551
}
4652

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

minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/render/BWClientRenderManager.java

+8
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
package nova.core.wrapper.mc.forge.v18.wrapper.render;
2222

2323
import net.minecraft.client.Minecraft;
24+
import net.minecraft.client.renderer.entity.RenderItem;
2425
import net.minecraft.util.ResourceLocation;
2526
import net.minecraftforge.fml.relauncher.Side;
2627
import net.minecraftforge.fml.relauncher.SideOnly;
@@ -37,6 +38,13 @@
3738
* @author Calclavia
3839
*/
3940
public class BWClientRenderManager extends BWRenderManager {
41+
42+
//TODO: Would this break server?
43+
@SideOnly(Side.CLIENT)
44+
public static RenderItem renderItem() {
45+
return Minecraft.getMinecraft().getRenderItem();
46+
}
47+
4048
@SideOnly(Side.CLIENT)
4149
@Override
4250
public Vector2D getDimension(Texture texture) {

minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/render/BWModel.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import net.minecraft.client.renderer.entity.RenderManager;
2626
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
2727
import net.minecraft.util.ResourceLocation;
28+
import nova.core.render.model.CustomModel;
2829
import nova.core.render.model.MeshModel;
2930
import nova.core.render.texture.EntityTexture;
3031
import nova.core.render.texture.Texture;
@@ -64,7 +65,7 @@ public void render(Optional<RenderManager> entityRenderManager) {
6465
worldRenderer.setBrightness(15 << 20 | 11 << 4);
6566
}
6667

67-
worldRenderer.setNormal((int) face.normal.getX(), (int) face.normal.getY(), (int) face.normal.getZ());
68+
worldRenderer.setNormal((float) face.normal.getX(), (float) face.normal.getY(), (float) face.normal.getZ());
6869

6970
if (face.texture.isPresent()) {
7071
if (entityRenderManager.isPresent() && face.texture.get() instanceof EntityTexture) {
@@ -100,8 +101,10 @@ public void render(Optional<RenderManager> entityRenderManager) {
100101
);
101102
}
102103
});
104+
} else if (model instanceof CustomModel) {
105+
CustomModel customModel = (CustomModel) model;
106+
customModel.render.accept(customModel);
103107
}
104-
//TODO: Handle BW Rendering
105108
}
106109
);
107110
}

minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/render/BWRenderManager.java

-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import net.minecraft.util.ResourceLocation;
2424
import nova.core.render.RenderManager;
2525
import nova.core.render.texture.Texture;
26-
import nova.internal.core.Game;
2726
import org.apache.commons.math3.geometry.euclidean.twod.Vector2D;
2827

2928
public class BWRenderManager extends RenderManager {

src/main/java/nova/core/render/model/MeshModel.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ public void drawFace(Face Face) {
8282
faces.add(Face);
8383
}
8484

85+
@Override
8586
public Set<Model> flatten(MatrixStack matrixStack) {
8687
Set<Model> models = new HashSet<>();
8788

@@ -110,7 +111,7 @@ public Set<Model> flatten(MatrixStack matrixStack) {
110111
}
111112

112113
@Override
113-
protected Model newModel(String name) {
114+
protected MeshModel newModel(String name) {
114115
return new MeshModel(name);
115116
}
116117

0 commit comments

Comments
 (0)