From 72e5e61e9c3116435a4de6d7bc94d2cd66e20f89 Mon Sep 17 00:00:00 2001 From: xkball <45330674+xkball@users.noreply.github.com> Date: Tue, 18 Apr 2023 00:49:13 +0800 Subject: allow data stick (contains assline recipe)render like ae2 pattern (#1890) * allow data stick (contains assline recipe)render like ae2 patten * spotless * data stick renderer and spotlessApply * Remove recursive boolean in data stick renderer,maybe have side effect --------- Co-authored-by: Martin Robertz --- .../common/render/items/GT_DataStick_Renderer.java | 42 ++++++++++++++++++++++ .../items/GT_MetaGenerated_Item_Renderer.java | 10 ++++++ 2 files changed, 52 insertions(+) create mode 100644 src/main/java/gregtech/common/render/items/GT_DataStick_Renderer.java (limited to 'src/main') diff --git a/src/main/java/gregtech/common/render/items/GT_DataStick_Renderer.java b/src/main/java/gregtech/common/render/items/GT_DataStick_Renderer.java new file mode 100644 index 0000000000..668b1daa6c --- /dev/null +++ b/src/main/java/gregtech/common/render/items/GT_DataStick_Renderer.java @@ -0,0 +1,42 @@ +package gregtech.common.render.items; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; + +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +import gregtech.api.util.GT_AssemblyLineUtils; + +// borrow form ae2 + +public class GT_DataStick_Renderer implements IItemRenderer { + + private final RenderItem ri = new RenderItem(); + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + final boolean isShiftHeld = Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT); + return type == ItemRenderType.INVENTORY && isShiftHeld; + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + return false; + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + final ItemStack is = GT_AssemblyLineUtils.getDataStickOutput(item); + final Minecraft mc = Minecraft.getMinecraft(); + + GL11.glPushAttrib(GL11.GL_ENABLE_BIT | GL11.GL_COLOR_BUFFER_BIT); + RenderHelper.enableGUIStandardItemLighting(); + this.ri.renderItemAndEffectIntoGUI(mc.fontRenderer, mc.getTextureManager(), is, 0, 0); + RenderHelper.disableStandardItemLighting(); + GL11.glPopAttrib(); + } +} diff --git a/src/main/java/gregtech/common/render/items/GT_MetaGenerated_Item_Renderer.java b/src/main/java/gregtech/common/render/items/GT_MetaGenerated_Item_Renderer.java index 78f8401abb..48a598a32b 100644 --- a/src/main/java/gregtech/common/render/items/GT_MetaGenerated_Item_Renderer.java +++ b/src/main/java/gregtech/common/render/items/GT_MetaGenerated_Item_Renderer.java @@ -8,6 +8,7 @@ import net.minecraftforge.client.MinecraftForgeClient; import org.lwjgl.opengl.GL11; +import gregtech.api.enums.ItemList; import gregtech.api.enums.Materials; import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer; import gregtech.api.objects.ItemData; @@ -19,6 +20,8 @@ public class GT_MetaGenerated_Item_Renderer implements IItemRenderer { private final IItemRenderer mItemRenderer = new GT_GeneratedItem_Renderer(); private final IItemRenderer mMaterialRenderer = new GT_GeneratedMaterial_Renderer(); + private final IItemRenderer mDataStickRenderer = new GT_DataStick_Renderer(); + public GT_MetaGenerated_Item_Renderer() {} public void registerItem(T item) { @@ -80,6 +83,13 @@ public class GT_MetaGenerated_Item_Renderer implements IItemRenderer { return aMaterialRenderer != null ? aMaterialRenderer : mMaterialRenderer; } + // handle data stick + if (aStack.getItem() == ItemList.Tool_DataStick.getItem() && aStack.hasTagCompound() + && aStack.getTagCompound() + .hasKey("output")) { + return mDataStickRenderer; + } + return mItemRenderer; } } -- cgit