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
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());
|
|
}
|
|
}
|
|
}
|