2
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
5.6 KiB
Java

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<LOTRRenderLargeItem> 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<Item> itItems = Item.itemRegistry.iterator();
while (itItems.hasNext()) {
Item item = itItems.next();
if (item instanceof lotr.common.item.LOTRItemAnimalJar)
MinecraftForgeClient.registerItemRenderer(item, (IItemRenderer)new LOTRRenderAnimalJar());
}
}
}