diff --git a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java index f1cd175d..980183ad 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java +++ b/src/main/java/com/darkona/adventurebackpack/client/gui/GuiOverlay.java @@ -18,6 +18,7 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.GuiIngameForge; import net.minecraftforge.client.IItemRenderer; +import net.minecraftforge.client.MinecraftForgeClient; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; @@ -30,11 +31,8 @@ import com.darkona.adventurebackpack.item.ItemHose; import com.darkona.adventurebackpack.reference.LoadedMods; import com.darkona.adventurebackpack.reference.ModInfo; -import com.darkona.adventurebackpack.reference.ToolHandler; -import com.darkona.adventurebackpack.util.GregtechUtils; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.ThaumcraftUtils; -import com.darkona.adventurebackpack.util.TinkersUtils; import com.darkona.adventurebackpack.util.Wearing; import codechicken.lib.render.TextureUtils; @@ -177,16 +175,14 @@ public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) { drawTexturedModalRect(xStart[1], yStart[0], u[1], v[1], textureWidth, textureHeight); // Right Tank RenderHelper.enableStandardItemLighting(); RenderHelper.enableGUIStandardItemLighting(); - GL11.glPushMatrix(); - GL11.glTranslatef(xStart[0] - textureWidth, yStart[0], 0); - GL11.glScalef(0.5f, 0.5f, 0.5f); if (ConfigHandler.enableToolsRender) { ItemStack upperStack = inv.getStackInSlot(Constants.TOOL_UPPER); ItemStack lowerStack = inv.getStackInSlot(Constants.TOOL_LOWER); - drawItemStack(upperStack, ToolHandler.getToolHandler(upperStack), 0, 0); - drawItemStack(lowerStack, ToolHandler.getToolHandler(lowerStack), 0, 16); + int itemX = xStart[0] - textureWidth; + int itemY = yStart[0]; + drawItemStack(upperStack, itemX, itemY); + drawItemStack(lowerStack, itemX, itemY + 8); } - GL11.glPopMatrix(); RenderHelper.disableStandardItemLighting(); } } @@ -220,45 +216,37 @@ private void drawTank(FluidTank tank, int startX, int startY, int height, int wi } } - private void drawItemStack(ItemStack stack, ToolHandler toolHandler, int x, int y) { + private void drawItemStack(ItemStack stack, int x, int y) { if (stack == null) return; this.zLevel = 200.0F; itemRender.zLevel = 200.0F; - switch (toolHandler) { - case GREGTECH: - GL11.glTranslatef(x, y, 32.0F); - GregtechUtils.renderTool(stack, IItemRenderer.ItemRenderType.INVENTORY); - break; - case TCONSTRUCT: - TextureManager tm = mc.getTextureManager(); - tm.bindTexture(tm.getResourceLocation(stack.getItemSpriteNumber())); - GL11.glTranslatef(x, y, 32.0F); - TinkersUtils.renderTool(stack, IItemRenderer.ItemRenderType.INVENTORY); - break; - case THAUMCRAFT: - // Forge PreRender: net.minecraftforge.client.ForgeHooksClient.renderInventoryItem - GL11.glPushMatrix(); - GL11.glTranslatef(x - 2, y + 3, -3.0F + zLevel); - GL11.glScalef(10F, 10F, 10F); - GL11.glTranslatef(1.0F, 0.5F, 1.0F); - GL11.glScalef(1.0F, 1.0F, -1F); - GL11.glRotatef(210F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-135F, 0.0F, 1.0F, 0.0F); - // Thaumcraft Render - ThaumcraftUtils.renderTool(stack, IItemRenderer.ItemRenderType.INVENTORY); - GL11.glPopMatrix(); - break; - case VANILLA: - default: - GL11.glTranslatef(0F, 0F, 32.0F); - FontRenderer font = stack.getItem().getFontRenderer(stack); - if (font == null) font = fontRenderer; - itemRender.renderItemIntoGUI(font, mc.getTextureManager(), stack, x, y); - break; + IItemRenderer customRenderer = MinecraftForgeClient + .getItemRenderer(stack, IItemRenderer.ItemRenderType.INVENTORY); + + GL11.glPushMatrix(); + GL11.glTranslatef(x, y, 32.0F); + GL11.glScalef(0.5f, 0.5f, 0.5f); + + if (customRenderer != null) { + TextureManager tm = mc.getTextureManager(); + tm.bindTexture(tm.getResourceLocation(stack.getItemSpriteNumber())); + if (customRenderer.shouldUseRenderHelper( + IItemRenderer.ItemRenderType.INVENTORY, + stack, + IItemRenderer.ItemRendererHelper.INVENTORY_BLOCK)) { + RenderHelper.enableGUIStandardItemLighting(); + } + customRenderer.renderItem(IItemRenderer.ItemRenderType.INVENTORY, stack); + } else { + FontRenderer font = stack.getItem().getFontRenderer(stack); + if (font == null) font = fontRenderer; + itemRender.renderItemIntoGUI(font, mc.getTextureManager(), stack, 0, 0); } + GL11.glPopMatrix(); + this.zLevel = 0.0F; itemRender.zLevel = 0.0F; } diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java index e4b4464b..5670dd7e 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelBackpackArmor.java @@ -22,7 +22,6 @@ import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.inventory.InventoryBackpack; import com.darkona.adventurebackpack.reference.BackpackTypes; -import com.darkona.adventurebackpack.reference.ToolHandler; import codechicken.lib.vec.Vector3; @@ -256,8 +255,8 @@ private void renderBackpack(Float scale) { if (ConfigHandler.enableToolsRender) { ItemStack upperStack = backpack.getStackInSlot(Constants.TOOL_UPPER); ItemStack lowerStack = backpack.getStackInSlot(Constants.TOOL_LOWER); - upperTool.setStack(upperStack, ToolHandler.getToolHandler(upperStack)); - lowerTool.setStack(lowerStack, ToolHandler.getToolHandler(lowerStack)); + upperTool.setStack(upperStack); + lowerTool.setStack(lowerStack); } if (type == QUARTZ || type == SLIME || type == SNOW) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/models/ModelClockworkCrossbow.java b/src/main/java/com/darkona/adventurebackpack/client/models/ModelClockworkCrossbow.java index 7dcac8f1..94230590 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/models/ModelClockworkCrossbow.java +++ b/src/main/java/com/darkona/adventurebackpack/client/models/ModelClockworkCrossbow.java @@ -9,7 +9,6 @@ import org.lwjgl.opengl.GL11; import com.darkona.adventurebackpack.client.render.RendererStack; -import com.darkona.adventurebackpack.reference.ToolHandler; import com.darkona.adventurebackpack.util.Utils; public class ModelClockworkCrossbow extends ModelBase { @@ -188,7 +187,7 @@ public ModelClockworkCrossbow() { this.hookHead.addChild(this.hookTooth3); arrow = new RendererStack(this, true); - arrow.setStack(new ItemStack(Items.arrow, 1), ToolHandler.VANILLA); + arrow.setStack(new ItemStack(Items.arrow, 1)); } public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack xbow) { diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java index 734a03db..4a994a07 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererStack.java @@ -6,10 +6,10 @@ import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.item.ItemStack; import net.minecraftforge.client.IItemRenderer; +import net.minecraftforge.client.MinecraftForgeClient; import org.lwjgl.opengl.GL11; -import com.darkona.adventurebackpack.reference.ToolHandler; import com.darkona.adventurebackpack.util.GregtechUtils; import com.darkona.adventurebackpack.util.ThaumcraftUtils; import com.darkona.adventurebackpack.util.TinkersUtils; @@ -23,7 +23,6 @@ public class RendererStack extends ModelRenderer { private final boolean isLowerSlot; private ItemStack stack; - private ToolHandler toolHandler = ToolHandler.VANILLA; public RendererStack(ModelBase modelBase, boolean isLowerSlot) { super(modelBase); @@ -31,9 +30,8 @@ public RendererStack(ModelBase modelBase, boolean isLowerSlot) { addChild(new Thing(modelBase)); } - public void setStack(ItemStack stack, ToolHandler toolHandler) { + public void setStack(ItemStack stack) { this.stack = stack; - this.toolHandler = toolHandler; } private class Thing extends ModelRenderer { @@ -47,6 +45,9 @@ public Thing(ModelBase modelBase) { public void render(float par1) { if (stack == null) return; + IItemRenderer customRenderer = MinecraftForgeClient + .getItemRenderer(stack, IItemRenderer.ItemRenderType.ENTITY); + GL11.glPushMatrix(); GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); if (isLowerSlot) { @@ -57,26 +58,14 @@ public void render(float par1) { GL11.glScalef(0.7F, 0.7F, 0.7F); GL11.glPushMatrix(); } - GL11.glRotatef(getToolRotationAngle(stack, isLowerSlot, toolHandler), 0, 0, 1); - - switch (toolHandler) { - case GREGTECH: - GregtechUtils.renderTool(stack, IItemRenderer.ItemRenderType.ENTITY); - break; - case TCONSTRUCT: - TextureManager tm = MC.getTextureManager(); - tm.bindTexture(tm.getResourceLocation(stack.getItemSpriteNumber())); - GL11.glTranslatef(-0.06F, -0.1F, 0F); - TinkersUtils.renderTool(stack, IItemRenderer.ItemRenderType.ENTITY); - break; - case THAUMCRAFT: - GL11.glTranslatef(0F, -0.375F, 0F); - ThaumcraftUtils.renderTool(stack, IItemRenderer.ItemRenderType.ENTITY); - break; - case VANILLA: - default: - CopygirlRenderUtils.renderItemIn3d(stack); - break; + GL11.glRotatef(getToolRotationAngle(stack, isLowerSlot), 0, 0, 1); + + if (customRenderer != null) { + TextureManager tm = MC.getTextureManager(); + tm.bindTexture(tm.getResourceLocation(stack.getItemSpriteNumber())); + customRenderer.renderItem(IItemRenderer.ItemRenderType.ENTITY, stack); + } else { + CopygirlRenderUtils.renderItemIn3d(stack); } GL11.glPopAttrib(); @@ -84,18 +73,11 @@ public void render(float par1) { GL11.glPopMatrix(); } - private float getToolRotationAngle(ItemStack stack, boolean isLowerSlot, ToolHandler toolHandler) { - switch (toolHandler) { - case GREGTECH: - return GregtechUtils.getToolRotationAngle(stack, isLowerSlot); - case TCONSTRUCT: - return TinkersUtils.getToolRotationAngle(stack, isLowerSlot); - case THAUMCRAFT: - return ThaumcraftUtils.getToolRotationAngle(stack, isLowerSlot); - case VANILLA: - default: - return isLowerSlot ? -225F : 45F; - } + private float getToolRotationAngle(ItemStack stack, boolean isLowerSlot) { + if (GregtechUtils.isTool(stack)) return GregtechUtils.getToolRotationAngle(stack, isLowerSlot); + if (TinkersUtils.isTool(stack)) return TinkersUtils.getToolRotationAngle(stack, isLowerSlot); + if (ThaumcraftUtils.isTool(stack)) return ThaumcraftUtils.getToolRotationAngle(stack, isLowerSlot); + return isLowerSlot ? -225F : 45F; } } } diff --git a/src/main/java/com/darkona/adventurebackpack/reference/ToolHandler.java b/src/main/java/com/darkona/adventurebackpack/reference/ToolHandler.java deleted file mode 100644 index b0cf9e4f..00000000 --- a/src/main/java/com/darkona/adventurebackpack/reference/ToolHandler.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.darkona.adventurebackpack.reference; - -import net.minecraft.item.ItemStack; - -import com.darkona.adventurebackpack.util.GregtechUtils; -import com.darkona.adventurebackpack.util.ThaumcraftUtils; -import com.darkona.adventurebackpack.util.TinkersUtils; - -public enum ToolHandler { - - VANILLA, - GREGTECH, - TCONSTRUCT, - THAUMCRAFT,; - - public static ToolHandler getToolHandler(ItemStack stack) { - if (stack == null) return VANILLA; - - if (GregtechUtils.isTool(stack)) return GREGTECH; - if (TinkersUtils.isTool(stack)) return TCONSTRUCT; - if (ThaumcraftUtils.isTool(stack)) return THAUMCRAFT; - return VANILLA; - } -} diff --git a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java index 9689443d..44eff0af 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/GregtechUtils.java @@ -3,40 +3,17 @@ import javax.annotation.Nonnull; import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; import com.darkona.adventurebackpack.reference.LoadedMods; public final class GregtechUtils { - private static final String CLASS_RENDERER = "gregtech.common.render.MetaGeneratedToolRenderer"; - private static final String TOOLS_NAME = "gt.metatool.01"; private static final int[] ROTATED_45_TOOLS = { 16, 26, 30, 130 }; private static final int[] ROTATED_90_TOOLS = { 10, 14, 18, 22, 34, 150, 160 }; - private static Class toolRenderer; - private static Object toolRendererInstance; - private GregtechUtils() {} - static { - if (LoadedMods.GREGTECH) { - createToolRendererInstance(); - } - } - - private static void createToolRendererInstance() { - if (Utils.inClient()) { - try { - toolRenderer = Class.forName(CLASS_RENDERER); - toolRendererInstance = toolRenderer.getConstructor().newInstance(); - } catch (Exception e) { - LogHelper.error("Error getting instance of Gregtech Tools Renderer: " + e); - } - } - } - public static boolean isTool(@Nonnull ItemStack stack) { return LoadedMods.GREGTECH && stack.getItem().getUnlocalizedName().equals(TOOLS_NAME); } @@ -54,8 +31,4 @@ public static float getToolRotationAngle(ItemStack stack, boolean isLowerSlot) { return isLowerSlot ? -45F : 45F; } - - public static void renderTool(ItemStack stack, IItemRenderer.ItemRenderType renderType) { - ToolRenderHelper.render(stack, renderType, toolRenderer, toolRendererInstance); - } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java b/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java index 313ab5c3..1b3f957a 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/ThaumcraftUtils.java @@ -1,7 +1,6 @@ package com.darkona.adventurebackpack.util; import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; import com.darkona.adventurebackpack.reference.LoadedMods; @@ -9,33 +8,12 @@ public final class ThaumcraftUtils { public static final boolean DIAL_BOTTOM = setDialBottom(); - private static final String CLASS_RENDERER = "thaumcraft.client.renderers.item.ItemWandRenderer"; private static final String CLASS_CONFIG = "thaumcraft.common.config.Config"; private static final String CLASS_WANDS = "thaumcraft.common.items.wands.ItemWandCasting"; private static final String FIELD_DIAL_BOTTOM = "dialBottom"; - private static Class toolRenderer; - private static Object toolRendererInstance; - private ThaumcraftUtils() {} - static { - if (LoadedMods.THAUMCRAFT) { - createToolRendererInstance(); - } - } - - private static void createToolRendererInstance() { - if (Utils.inClient()) { - try { - toolRenderer = Class.forName(CLASS_RENDERER); - toolRendererInstance = toolRenderer.getConstructor().newInstance(); - } catch (Exception e) { - LogHelper.error("Error getting instance of Thaumcraft Wands Renderer: " + e); - } - } - } - private static boolean setDialBottom() { if (!LoadedMods.THAUMCRAFT || Utils.inServer()) return false; @@ -59,8 +37,4 @@ public static boolean isTool(ItemStack stack) { public static float getToolRotationAngle(ItemStack stack, boolean isLowerSlot) { return isLowerSlot ? 0F : 90F; } - - public static void renderTool(ItemStack stack, IItemRenderer.ItemRenderType renderType) { - ToolRenderHelper.render(stack, renderType, toolRenderer, toolRendererInstance); - } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java index 8cef7553..fdc4eb0b 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/TinkersUtils.java @@ -12,7 +12,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.world.WorldServer; -import net.minecraftforge.client.IItemRenderer; import net.minecraftforge.common.util.FakePlayer; import com.darkona.adventurebackpack.reference.LoadedMods; @@ -30,8 +29,6 @@ public final class TinkersUtils { private static final String FIELD_CRAFT_MATRIX = "craftMatrix"; private static final String FIELD_CRAFT_RESULT = "craftResult"; - private static final String CLASS_RENDERER = "tconstruct.client.FlexibleToolRenderer"; - private static final String PACKAGE_TCONSTRUCT = "tconstruct"; private static final String PACKAGE_TOOLS = "tconstruct.items.tools"; private static final String PACKAGE_AMMO = "tconstruct.weaponry.ammo"; // arrows and bolts @@ -40,15 +37,11 @@ public final class TinkersUtils { private static Class craftingStation; private static Object craftingStationInstance; - private static Class toolRenderer; - private static Object toolRendererInstance; - private TinkersUtils() {} static { if (LoadedMods.TCONSTRUCT) { createCraftingStationInstance(); - createToolRendererInstance(); } } @@ -80,17 +73,6 @@ private static InventoryPlayer getInventoryPlayer() { return invPlayer; } - private static void createToolRendererInstance() { - if (Utils.inClient()) { - try { - toolRenderer = Class.forName(CLASS_RENDERER); - toolRendererInstance = toolRenderer.getConstructor().newInstance(); - } catch (Exception e) { - LogHelper.error("Error getting instance of Tinkers Tool Renderer: " + e); - } - } - } - public static boolean isToolOrWeapon(@Nullable ItemStack stack) { if (stack == null) return false; @@ -128,8 +110,4 @@ public static synchronized ItemStack getTinkersRecipe(InventoryCrafting craftMat public static float getToolRotationAngle(ItemStack stack, boolean isLowerSlot) { return isLowerSlot ? -45F : 45F; } - - public static void renderTool(ItemStack stack, IItemRenderer.ItemRenderType renderType) { - ToolRenderHelper.render(stack, renderType, toolRenderer, toolRendererInstance); - } } diff --git a/src/main/java/com/darkona/adventurebackpack/util/ToolRenderHelper.java b/src/main/java/com/darkona/adventurebackpack/util/ToolRenderHelper.java deleted file mode 100644 index fdc25be9..00000000 --- a/src/main/java/com/darkona/adventurebackpack/util/ToolRenderHelper.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.darkona.adventurebackpack.util; - -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer.ItemRenderType; - -public final class ToolRenderHelper { - - private static final String METHOD_RENDERER = "renderItem"; - private static final Object[] EMPTY_OBJECT = {}; - - private ToolRenderHelper() {} - - public static void render(ItemStack stack, ItemRenderType type, Class renderer, Object rendererInstance) { - if (rendererInstance == null) return; - - try { - renderer.getMethod(METHOD_RENDERER, ItemRenderType.class, ItemStack.class, Object[].class) - .invoke(rendererInstance, type, stack, EMPTY_OBJECT); - } catch (Exception e) { - /* */ - } - } -}