package com.zivilon.cinder_loe.mixins; import com.zivilon.cinder_loe.client.render.item.RenderHelper; import com.zivilon.cinder_loe.items.Nimveil; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import lotr.client.render.item.LOTRRenderLargeItem; import lotr.client.LOTRItemRendererManager; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.util.StringUtils; import net.minecraftforge.client.IItemRenderer; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import lotr.client.render.item.LOTRRenderBannerItem; import lotr.client.render.item.LOTRRenderBlownItem; import lotr.client.render.item.LOTRRenderBow; import lotr.client.render.item.LOTRRenderCrossbow; import lotr.client.render.item.LOTRRenderElvenBlade; import lotr.client.render.item.LOTRRenderInvTableCommand; import lotr.client.render.item.LOTRRenderLargeItem; import lotr.client.render.item.LOTRRenderSkullStaff; import lotr.client.render.tileentity.LOTRRenderAnimalJar; import lotr.common.LOTRMod; import lotr.common.item.LOTRItemSword; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.resources.IReloadableResourceManager; import net.minecraft.client.resources.IResourceManager; import net.minecraft.client.resources.IResourceManagerReloadListener; import net.minecraft.item.Item; import net.minecraftforge.client.IItemRenderer; import net.minecraftforge.client.MinecraftForgeClient; import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.common.MinecraftForge; @Mixin(LOTRItemRendererManager.class) public abstract class MixinLOTRItemRendererManager { @Shadow(remap = false) private static List largeItemRenderers; /** * @author Shinare * @reason testing */ @Overwrite(remap = false) public void func_110549_a(IResourceManager resourceManager) { largeItemRenderers.clear(); try { for (Field field : LOTRMod.class.getFields()) { if (field.get(null) instanceof Item) { Item item = (Item)field.get(null); if (item instanceof Nimveil) System.out.println("Processing Nimveil!"); MinecraftForgeClient.registerItemRenderer(item, null); LOTRRenderLargeItem largeItemRenderer = LOTRRenderLargeItem.getRendererIfLarge(item); boolean isLarge = (largeItemRenderer != null); if (item instanceof lotr.common.item.LOTRItemCrossbow) { MinecraftForgeClient.registerItemRenderer(item, (IItemRenderer)new LOTRRenderCrossbow()); } else if (item instanceof lotr.common.item.LOTRItemBow) { MinecraftForgeClient.registerItemRenderer(item, (IItemRenderer)new LOTRRenderBow(largeItemRenderer)); } else if (item instanceof LOTRItemSword && ((LOTRItemSword)item).isElvenBlade()) { double d = 24.0D; if (item == LOTRMod.sting) d = 40.0D; MinecraftForgeClient.registerItemRenderer(item, (IItemRenderer)new LOTRRenderElvenBlade(d, largeItemRenderer)); } else if (isLarge) { if (item instanceof Nimveil) System.out.println("Nimveil is large!"); MinecraftForgeClient.registerItemRenderer(item, (IItemRenderer)largeItemRenderer); } if (largeItemRenderer != null) { if (item instanceof Nimveil) System.out.println("Adding Nimveil large renderer!"); largeItemRenderers.add(largeItemRenderer); } if (item instanceof Nimveil) System.out.println("Nimveil processing ending!"); } } } catch (Exception e) { e.printStackTrace(); } MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(LOTRMod.commandTable), (IItemRenderer)new LOTRRenderInvTableCommand()); MinecraftForgeClient.registerItemRenderer(LOTRMod.hobbitPipe, (IItemRenderer)new LOTRRenderBlownItem()); MinecraftForgeClient.registerItemRenderer(LOTRMod.commandHorn, (IItemRenderer)new LOTRRenderBlownItem()); MinecraftForgeClient.registerItemRenderer(LOTRMod.conquestHorn, (IItemRenderer)new LOTRRenderBlownItem()); MinecraftForgeClient.registerItemRenderer(LOTRMod.banner, (IItemRenderer)new LOTRRenderBannerItem()); MinecraftForgeClient.registerItemRenderer(LOTRMod.orcSkullStaff, (IItemRenderer)new LOTRRenderSkullStaff()); Iterator itItems = Item.itemRegistry.iterator(); while (itItems.hasNext()) { Item item = itItems.next(); if (item instanceof lotr.common.item.LOTRItemAnimalJar) MinecraftForgeClient.registerItemRenderer(item, (IItemRenderer)new LOTRRenderAnimalJar()); } } }