From 0cda3f3dd5e2282e3d6ac6b70176ab6007a36f73 Mon Sep 17 00:00:00 2001 From: ExE Boss Date: Tue, 17 Jan 2017 17:22:33 +0100 Subject: [PATCH] Implement BW Rendering --- .../v17/wrapper/block/backward/BWBlock.java | 4 +-- .../mc/forge/v17/wrapper/item/BWItem.java | 31 +++++++++---------- .../v18/wrapper/block/backward/BWBlock.java | 7 +++++ .../mc/forge/v18/wrapper/item/BWItem.java | 6 ++++ .../wrapper/render/BWClientRenderManager.java | 6 ++++ .../mc/forge/v18/wrapper/render/BWModel.java | 5 ++- .../v18/wrapper/render/BWRenderManager.java | 1 - .../nova/core/render/model/MeshModel.java | 3 +- 8 files changed, 42 insertions(+), 21 deletions(-) diff --git a/minecraft/1.7/src/main/java/nova/core/wrapper/mc/forge/v17/wrapper/block/backward/BWBlock.java b/minecraft/1.7/src/main/java/nova/core/wrapper/mc/forge/v17/wrapper/block/backward/BWBlock.java index 20d6a7a56..fb689a79b 100644 --- a/minecraft/1.7/src/main/java/nova/core/wrapper/mc/forge/v17/wrapper/block/backward/BWBlock.java +++ b/minecraft/1.7/src/main/java/nova/core/wrapper/mc/forge/v17/wrapper/block/backward/BWBlock.java @@ -83,8 +83,8 @@ public BWBlock(net.minecraft.block.Block block, World world, Vector3D pos) { .map(cuboid -> cuboid.subtract(pos)) .collect(Collectors.toSet()); }); - components.add(new StaticRenderer()) - .onRender(model -> model.addChild(new CustomModel(self -> RenderBlocks.getInstance().renderStandardBlock(mcBlock, x(), y(), z())))); + components.add(new StaticRenderer()).onRender(model -> + model.addChild(new CustomModel(self -> RenderBlocks.getInstance().renderBlockByRenderType(mcBlock, x(), y(), z())))); //TODO: Set selection bounds } diff --git a/minecraft/1.7/src/main/java/nova/core/wrapper/mc/forge/v17/wrapper/item/BWItem.java b/minecraft/1.7/src/main/java/nova/core/wrapper/mc/forge/v17/wrapper/item/BWItem.java index df0eccf39..9f430d365 100644 --- a/minecraft/1.7/src/main/java/nova/core/wrapper/mc/forge/v17/wrapper/item/BWItem.java +++ b/minecraft/1.7/src/main/java/nova/core/wrapper/mc/forge/v17/wrapper/item/BWItem.java @@ -57,22 +57,21 @@ public BWItem(net.minecraft.item.Item item, int meta, NBTTagCompound tag) { components.add(new StaticRenderer()) .onRender(model -> { - model.addChild(new CustomModel(self -> { - Tessellator.instance.draw(); - GL11.glPushMatrix(); - DoubleBuffer buffer = BufferUtils.createDoubleBuffer(4 * 4); - double[] flatArray = Arrays.stream(self.matrix.getMatrix().getData()) - .flatMapToDouble(Arrays::stream) - .toArray(); - buffer.put(flatArray); - buffer.position(0); - GL11.glMultMatrix(buffer); - BWClientRenderManager.renderItem.doRender(fakeEntity, 0, 0, 0, 0, 0); - GL11.glPopMatrix(); - Tessellator.instance.startDrawingQuads(); - })); - } - ); + model.addChild(new CustomModel(self -> { + Tessellator.instance.draw(); + GL11.glPushMatrix(); + DoubleBuffer buffer = BufferUtils.createDoubleBuffer(4 * 4); + double[] flatArray = Arrays.stream(self.matrix.getMatrix().getData()) + .flatMapToDouble(Arrays::stream) + .toArray(); + buffer.put(flatArray); + buffer.position(0); + GL11.glMultMatrix(buffer); + BWClientRenderManager.renderItem.doRender(fakeEntity, 0, 0, 0, 0, 0); + GL11.glPopMatrix(); + Tessellator.instance.startDrawingQuads(); + })); + }); } public net.minecraft.item.Item getItem() { diff --git a/minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/block/backward/BWBlock.java b/minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/block/backward/BWBlock.java index a7d70ff25..2d1dcaab7 100644 --- a/minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/block/backward/BWBlock.java +++ b/minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/block/backward/BWBlock.java @@ -22,6 +22,8 @@ import net.minecraft.block.BlockSnow; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -34,8 +36,10 @@ import nova.core.block.component.BlockProperty; import nova.core.block.component.LightEmitter; import nova.core.component.misc.Collider; +import nova.core.component.renderer.StaticRenderer; import nova.core.component.transform.BlockTransform; import nova.core.item.ItemFactory; +import nova.core.render.model.CustomModel; import nova.core.retention.Data; import nova.core.retention.Storable; import nova.core.retention.Store; @@ -93,6 +97,9 @@ public BWBlock(net.minecraft.block.Block block, World world, Vector3D pos) { .map(cuboid -> cuboid.subtract(pos)) .collect(Collectors.toSet()); }); + components.add(new StaticRenderer()).onRender(model -> + model.addChild(new CustomModel(self -> Minecraft.getMinecraft().getBlockRendererDispatcher() + .renderBlock(blockState(), new BlockPos(x(), y(), z()), getMcBlockAccess(), Tessellator.getInstance().getWorldRenderer())))); //TODO: Set selection bounds } diff --git a/minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/item/BWItem.java b/minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/item/BWItem.java index 7476b9d26..87e2f6bba 100644 --- a/minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/item/BWItem.java +++ b/minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/item/BWItem.java @@ -22,8 +22,11 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import nova.core.component.renderer.StaticRenderer; import nova.core.item.Item; +import nova.core.render.model.CustomModel; import nova.core.retention.Storable; +import nova.core.wrapper.mc.forge.v18.wrapper.render.BWClientRenderManager; /** * @author Stan @@ -42,6 +45,9 @@ public BWItem(net.minecraft.item.Item item, int meta, NBTTagCompound tag) { this.item = item; this.meta = meta; this.tag = tag; + + components.add(new StaticRenderer()).onRender(model -> + model.addChild(new CustomModel(self -> BWClientRenderManager.renderItem.renderItemModel(makeItemStack(count()))))); } public net.minecraft.item.Item getItem() { diff --git a/minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/render/BWClientRenderManager.java b/minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/render/BWClientRenderManager.java index 73e013c60..7cd453ebc 100644 --- a/minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/render/BWClientRenderManager.java +++ b/minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/render/BWClientRenderManager.java @@ -21,6 +21,7 @@ package nova.core.wrapper.mc.forge.v18.wrapper.render; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -37,6 +38,11 @@ * @author Calclavia */ public class BWClientRenderManager extends BWRenderManager { + + //TODO: Would this break server? + @SideOnly(Side.CLIENT) + public static RenderItem renderItem = Minecraft.getMinecraft().getRenderItem(); + @SideOnly(Side.CLIENT) @Override public Vector2D getDimension(Texture texture) { diff --git a/minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/render/BWModel.java b/minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/render/BWModel.java index 90fd2841b..c4c5396b9 100644 --- a/minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/render/BWModel.java +++ b/minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/render/BWModel.java @@ -25,6 +25,7 @@ import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.ResourceLocation; +import nova.core.render.model.CustomModel; import nova.core.render.model.MeshModel; import nova.core.render.texture.EntityTexture; import nova.core.render.texture.Texture; @@ -100,8 +101,10 @@ public void render(Optional entityRenderManager) { ); } }); + } else if (model instanceof CustomModel) { + CustomModel customModel = (CustomModel) model; + customModel.render.accept(customModel); } - //TODO: Handle BW Rendering } ); } diff --git a/minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/render/BWRenderManager.java b/minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/render/BWRenderManager.java index eb6a28f25..d214af0c7 100644 --- a/minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/render/BWRenderManager.java +++ b/minecraft/1.8/src/main/java/nova/core/wrapper/mc/forge/v18/wrapper/render/BWRenderManager.java @@ -23,7 +23,6 @@ import net.minecraft.util.ResourceLocation; import nova.core.render.RenderManager; import nova.core.render.texture.Texture; -import nova.internal.core.Game; import org.apache.commons.math3.geometry.euclidean.twod.Vector2D; public class BWRenderManager extends RenderManager { diff --git a/src/main/java/nova/core/render/model/MeshModel.java b/src/main/java/nova/core/render/model/MeshModel.java index a36e2597b..05a6e970f 100644 --- a/src/main/java/nova/core/render/model/MeshModel.java +++ b/src/main/java/nova/core/render/model/MeshModel.java @@ -82,6 +82,7 @@ public void drawFace(Face Face) { faces.add(Face); } + @Override public Set flatten(MatrixStack matrixStack) { Set models = new HashSet<>(); @@ -110,7 +111,7 @@ public Set flatten(MatrixStack matrixStack) { } @Override - protected Model newModel(String name) { + protected MeshModel newModel(String name) { return new MeshModel(name); }