From 63e101106b73dbe16d9c62c080d6135aa40a1ae4 Mon Sep 17 00:00:00 2001 From: "Luis C.M." <42545778+c0508383@users.noreply.github.com> Date: Thu, 4 Apr 2024 00:00:29 -0500 Subject: [PATCH] Scripted block now properly renders as a block item --- .../java/noppes/npcs/client/ClientProxy.java | 9 +-- .../CustomItemRenderer.java | 2 +- .../items/ScriptedBlockItemRenderer.java | 77 +++++++++++++++++++ 3 files changed, 82 insertions(+), 6 deletions(-) rename src/main/java/noppes/npcs/client/renderer/{customitem => items}/CustomItemRenderer.java (99%) create mode 100644 src/main/java/noppes/npcs/client/renderer/items/ScriptedBlockItemRenderer.java diff --git a/src/main/java/noppes/npcs/client/ClientProxy.java b/src/main/java/noppes/npcs/client/ClientProxy.java index 175e15bc9..3071d68f0 100644 --- a/src/main/java/noppes/npcs/client/ClientProxy.java +++ b/src/main/java/noppes/npcs/client/ClientProxy.java @@ -27,10 +27,7 @@ import net.minecraft.world.World; import net.minecraftforge.client.MinecraftForgeClient; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.FakePlayer; -import noppes.npcs.CommonProxy; -import noppes.npcs.CustomNpcs; -import noppes.npcs.LogWriter; -import noppes.npcs.PacketHandlerPlayer; +import noppes.npcs.*; import noppes.npcs.api.IWorld; import noppes.npcs.blocks.tiles.*; import noppes.npcs.client.controllers.*; @@ -53,7 +50,8 @@ import noppes.npcs.client.gui.script.GuiScriptItem; import noppes.npcs.client.model.*; import noppes.npcs.client.renderer.*; import noppes.npcs.client.renderer.blocks.*; -import noppes.npcs.client.renderer.customitem.CustomItemRenderer; +import noppes.npcs.client.renderer.items.CustomItemRenderer; +import noppes.npcs.client.renderer.items.ScriptedBlockItemRenderer; import noppes.npcs.config.ConfigClient; import noppes.npcs.config.ConfigMain; import noppes.npcs.config.StringCache; @@ -103,6 +101,7 @@ public class ClientProxy extends CommonProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileBlockAnvil.class, new BlockCarpentryBenchRenderer()); ClientRegistry.bindTileEntitySpecialRenderer(TileMailbox.class, new BlockMailboxRenderer()); ClientRegistry.bindTileEntitySpecialRenderer(TileScripted.class, new BlockScriptedRenderer()); + MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(CustomItems.scripted), new ScriptedBlockItemRenderer()); RenderingRegistry.registerBlockHandler(new BlockBorderRenderer()); if(!ConfigMain.DisableExtraBlock){ diff --git a/src/main/java/noppes/npcs/client/renderer/customitem/CustomItemRenderer.java b/src/main/java/noppes/npcs/client/renderer/items/CustomItemRenderer.java similarity index 99% rename from src/main/java/noppes/npcs/client/renderer/customitem/CustomItemRenderer.java rename to src/main/java/noppes/npcs/client/renderer/items/CustomItemRenderer.java index a400bbde8..e672281f0 100644 --- a/src/main/java/noppes/npcs/client/renderer/customitem/CustomItemRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/items/CustomItemRenderer.java @@ -1,4 +1,4 @@ -package noppes.npcs.client.renderer.customitem; +package noppes.npcs.client.renderer.items; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ItemRenderer; diff --git a/src/main/java/noppes/npcs/client/renderer/items/ScriptedBlockItemRenderer.java b/src/main/java/noppes/npcs/client/renderer/items/ScriptedBlockItemRenderer.java new file mode 100644 index 000000000..1f0784f81 --- /dev/null +++ b/src/main/java/noppes/npcs/client/renderer/items/ScriptedBlockItemRenderer.java @@ -0,0 +1,77 @@ +package noppes.npcs.client.renderer.items; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; +import noppes.npcs.CustomItems; +import org.lwjgl.opengl.GL11; + +public class ScriptedBlockItemRenderer implements IItemRenderer { + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + return type != ItemRenderType.FIRST_PERSON_MAP; + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + return true; + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + RenderBlocks renderBlocks = (RenderBlocks) data[0]; + if (type == ItemRenderType.INVENTORY) { + GL11.glTranslatef(0, -0.1f, 0); + renderBlock(item, renderBlocks); + } else if (type == ItemRenderType.EQUIPPED) { + GL11.glTranslatef(0.5F, 0.4F, 0.5F); + renderBlock(item, renderBlocks); + } else if (type == ItemRenderType.ENTITY) { + renderBlock(item, renderBlocks); + } else if (type == ItemRenderType.EQUIPPED_FIRST_PERSON) { + GL11.glTranslatef(0.5F, 0.4F, 0.5F); + renderBlock(item, renderBlocks); + } + } + + private void renderBlock(ItemStack item, RenderBlocks renderBlocks) { + Tessellator tessellator = Tessellator.instance; + + Block block = CustomItems.scripted; + int p_147800_2_ = item.getItemDamage(); + + block.setBlockBoundsForItemRender(); + renderBlocks.setRenderBoundsFromBlock(block); + GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); + GL11.glTranslatef(-0.5F, -0.4F, -0.5F); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, -1.0F, 0.0F); + renderBlocks.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderBlocks.getBlockIconFromSideAndMetadata(block, 0, p_147800_2_)); + tessellator.draw(); + + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + renderBlocks.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderBlocks.getBlockIconFromSideAndMetadata(block, 1, p_147800_2_)); + tessellator.draw(); + + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, -1.0F); + renderBlocks.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderBlocks.getBlockIconFromSideAndMetadata(block, 2, p_147800_2_)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, 1.0F); + renderBlocks.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderBlocks.getBlockIconFromSideAndMetadata(block, 3, p_147800_2_)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(-1.0F, 0.0F, 0.0F); + renderBlocks.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderBlocks.getBlockIconFromSideAndMetadata(block, 4, p_147800_2_)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(1.0F, 0.0F, 0.0F); + renderBlocks.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderBlocks.getBlockIconFromSideAndMetadata(block, 5, p_147800_2_)); + tessellator.draw(); + } +}