@@ -1,28 +1,31 @@
package tamaized.cosmicreality.client.render;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import org.lwjgl.opengl.GL11;

import tamaized.cosmicreality.common.entity.EntityPortal;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.EntityRenderer;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.RenderGlobal;
import net.minecraft.client.settings.GameSettings;
import net.minecraft.entity.Entity;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import net.minecraftforge.fml.relauncher.Side;
import org.lwjgl.opengl.GL11;
import tamaized.cosmicreality.CosmicReality;
import tamaized.cosmicreality.common.entity.EntityPortal;

import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

@Mod.EventBusSubscriber(modid = CosmicReality.modid, value = Side.CLIENT)
public class RenderMirror {

private static Minecraft mc;
private static Map<EntityPortal, Integer> portals = new HashMap<EntityPortal, Integer>();
private static List<EntityPortal> remove = new ArrayList<EntityPortal>();
private static Map<EntityPortal, Integer> portals = Maps.newHashMap();
private static List<EntityPortal> remove = Lists.newArrayList();
private static RenderGlobal globalRenderer;

public static void registerPortal(EntityPortal portal, int newTextureId) {
@@ -42,14 +45,18 @@ public static int getTextureID(EntityPortal portal) {
}

@SubscribeEvent
public void onTick(TickEvent.RenderTickEvent event) {
if (mc == null) mc = Minecraft.getMinecraft();
if (globalRenderer == null) globalRenderer = new RenderGlobal(mc);
if (event.phase.equals(TickEvent.Phase.END)) return;
public static void onTick(TickEvent.RenderTickEvent event) {
if (mc == null)
mc = Minecraft.getMinecraft();
if (globalRenderer == null)
globalRenderer = new RenderGlobal(mc);
if (event.phase.equals(TickEvent.Phase.END))
return;

if (!remove.isEmpty()) {
for (EntityPortal portal : remove) {
if (!portals.containsKey(portal)) continue;
if (!portals.containsKey(portal))
continue;
GlStateManager.deleteTexture(portals.get(portal));
portals.remove(portal);
}
@@ -61,18 +68,19 @@ public void onTick(TickEvent.RenderTickEvent event) {
EntityPortal entity = entry.getKey();
int textureID = entry.getValue();

if (entity == null) {
if (entity.isDead) {
remove(entity);
continue;
}

// if (!entity.rendering) continue;

if (!mc.player.canEntityBeSeen(entity)) continue;
if (!mc.player.canEntityBeSeen(entity))
continue;

if (entity.getDistanceToEntity(mc.player) < 25) {
GameSettings settings = mc.gameSettings;
// RenderGlobal renderBackup = mc.renderGlobal;
// RenderGlobal renderBackup = mc.renderGlobal;
Entity entityBackup = mc.getRenderViewEntity();
int thirdPersonBackup = settings.thirdPersonView;
boolean hideGuiBackup = settings.hideGUI;
@@ -82,23 +90,24 @@ public void onTick(TickEvent.RenderTickEvent event) {
int heightBackup = mc.displayHeight;
int quality = 512;

// globalRenderer.setWorldAndLoadRenderers(mc.world);
// mc.renderGlobal = globalRenderer;
// globalRenderer.setWorldAndLoadRenderers(mc.world);
// mc.renderGlobal = globalRenderer;
mc.setRenderViewEntity(entity);
settings.thirdPersonView = 0;
settings.hideGUI = true;
settings.mipmapLevels = 0;
mc.displayWidth = quality;
mc.displayHeight = quality*2;
mc.displayHeight = quality * 2;

int fps = Math.max(30, settings.limitFramerate);
EntityRenderer entityRenderer = mc.entityRenderer;
entityRenderer.renderWorld(event.renderTickTime, System.nanoTime() + (1000000000 / fps));

GlStateManager.bindTexture(textureID);
GL11.glCopyTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGB, 0, 0, quality, quality*2, 0);
GL11.glCopyTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGB, 0, 0, quality, quality * 2, 0);

// mc.renderGlobal = renderBackup;
// mc.renderGlobal = renderBackup;
//noinspection ConstantConditions
mc.setRenderViewEntity(entityBackup);
settings.fovSetting = fovBackup;
settings.thirdPersonView = thirdPersonBackup;

This file was deleted.

@@ -0,0 +1,53 @@
package tamaized.cosmicreality.common.capabilities;


import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.ICapabilitySerializable;
import net.minecraftforge.event.AttachCapabilitiesEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import tamaized.cosmicreality.CosmicReality;
import tamaized.cosmicreality.common.capabilities.cosmic.CosmicCapabilityHandler;
import tamaized.cosmicreality.common.capabilities.cosmic.ICosmicCapability;

import javax.annotation.Nonnull;

@Mod.EventBusSubscriber(modid = CosmicReality.modid)
public class CapabilityAttachment {

@SubscribeEvent
public static void attach(AttachCapabilitiesEvent<Entity> e) {
if (!(e.getObject() instanceof EntityPlayer))
return;
e.addCapability(CosmicCapabilityHandler.ID, new ICapabilitySerializable<NBTTagCompound>() {

ICosmicCapability inst = CapabilityList.COSMIC.getDefaultInstance();

@Override
public boolean hasCapability(@Nonnull Capability<?> capability, EnumFacing facing) {
return capability == CapabilityList.COSMIC;
}

@Override
public <T> T getCapability(@Nonnull Capability<T> capability, EnumFacing facing) {
return capability == CapabilityList.COSMIC ? CapabilityList.COSMIC.<T>cast(inst) : null;
}

@Override
public NBTTagCompound serializeNBT() {
return (NBTTagCompound) CapabilityList.COSMIC.getStorage().writeNBT(CapabilityList.COSMIC, inst, null);
}

@Override
public void deserializeNBT(NBTTagCompound nbt) {
CapabilityList.COSMIC.getStorage().readNBT(CapabilityList.COSMIC, inst, null, nbt);
}

});
}

}
@@ -1,12 +1,16 @@
package tamaized.cosmicreality.common.capabilities;

import tamaized.cosmicreality.common.capabilities.cosmic.ICosmicCapability;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.CapabilityInject;
import tamaized.cosmicreality.common.capabilities.cosmic.ICosmicCapability;

public class CapabilityList {

@CapabilityInject(ICosmicCapability.class)
public static final Capability<ICosmicCapability> COSMIC = null;
public static final Capability<ICosmicCapability> COSMIC;

static {
COSMIC = null;
}

}
@@ -1,32 +1,34 @@
package tamaized.cosmicreality.common.capabilities.cosmic;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import tamaized.cosmicreality.CosmicReality;
import tamaized.cosmicreality.common.entity.EntityPortal;
import Tamaized.TamModized.helper.RayTraceHelper;
import com.google.common.collect.Lists;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import tamaized.cosmicreality.CosmicReality;
import tamaized.cosmicreality.common.entity.EntityPortal;

import java.util.List;
import java.util.Random;

public class CosmicCapabilityHandler implements ICosmicCapability {

public static final ResourceLocation ID = new ResourceLocation(CosmicReality.modid, "CosmicCapabilityHandler");

private final float length = 0.3F;
private int[] test = new int[]{0, 0, 0, 0};
private double speed = 0.00125;

private int tick;
private Animation animation = Animation.Idle;
private List<WingVector> wingList = Lists.newArrayList();

private enum Animation {
Idle, Portal_Start, Portal_Open
public int getTest(int id) {
return test[id];
}

private List<WingVector> wingList = new ArrayList<WingVector>();
public void setTest(int id, int val) {
test[id] = val;
}

public ICosmicCapability init() {

@@ -92,11 +94,11 @@ public ICosmicCapability init() {
private int getRandColor(Random rand) {
// TODO: allow range to be set
int uniRand = rand.nextInt(0x22);
int rangeRA = 0x00 + 1;// 0x00;
int rangeRA = 1;// 0x00;
int rangeRB = 0xFF;// 0xFFFFFF/2;
int rangeGA = 0x00 + 1;
int rangeGA = 1;
int rangeGB = 0xA4;// 0xFFFFFF/2;
int rangeBA = 0x00 + 1;
int rangeBA = 1;
int rangeBB = 0xEA;// 0xFFFFFF/2;
return (MathHelper.clamp(rand.nextInt(rangeRA) + rangeRB + uniRand, 0x00, 0xFF) << 16) + (MathHelper.clamp(rand.nextInt(rangeGA) + rangeGB + uniRand, 0x00, 0xFF) << 8) + MathHelper.clamp(rand.nextInt(rangeBA) + rangeBB + uniRand, 0x00, 0xFF);
}
@@ -114,10 +116,11 @@ public void update(Entity entity) {
speed = 0.00125;
tick++;
if (tick % 30 == 0) {
if (entity.world.isRemote) for (WingVector vec : wingList)
if (vec.getParent() != null && Math.floor(Math.random() * 2) == 0) {
vec.setPoint(new Vec3d((Math.random() * (length * (vec.getSide() == WingVector.Side.LEFT ? -1 : 1))), (Math.random() * (length)), (Math.random() * (-length))));
}
if (entity.world.isRemote)
for (WingVector vec : wingList)
if (vec.getParent() != null && Math.floor(Math.random() * 2) == 0) {
vec.setPoint(new Vec3d((Math.random() * (length * (vec.getSide() == WingVector.Side.LEFT ? -1 : 1))), (Math.random() * (length)), (Math.random() * (-length))));
}
tick = 0;
}
break;
@@ -130,29 +133,31 @@ public void update(Entity entity) {
if (!entity.world.isRemote) {
EntityPortal portal = new EntityPortal(entity.world);
Vec3d pos = new Vec3d(entity.posX, entity.posY, entity.posZ).add(new Vec3d(1, 0, 1).rotateYaw(entity.rotationYaw - 90));
portal.setLocationAndAngles(pos.xCoord, pos.yCoord, pos.zCoord, entity.rotationYaw + 180, 0);
portal.setLocationAndAngles(pos.x, pos.y, pos.z, entity.rotationYaw + 180, 0);
entity.world.spawnEntity(portal);
}
if (entity.world.isRemote) for (WingVector vec : wingList)
if (vec.getParent() != null) {
if (vec.getParent().getParent() == null) {
vec.setPoint(new Vec3d(0.3 * (vec.getSide() == WingVector.Side.LEFT ? -1 : 1), 0.3, 0.3));
} else {
vec.setPoint(new Vec3d(-0.25 * (vec.getSide() == WingVector.Side.LEFT ? -1 : 1), 0.0, 0.2));
if (entity.world.isRemote)
for (WingVector vec : wingList)
if (vec.getParent() != null) {
if (vec.getParent().getParent() == null) {
vec.setPoint(new Vec3d(0.3 * (vec.getSide() == WingVector.Side.LEFT ? -1 : 1), 0.3, 0.3));
} else {
vec.setPoint(new Vec3d(-0.25 * (vec.getSide() == WingVector.Side.LEFT ? -1 : 1), 0.0, 0.2));
}
}
}
}
break;
case Portal_Open:
speed = 0.00125;
if (entity.world.isRemote) for (WingVector vec : wingList)
if (vec.getParent() != null) {
if (vec.getParent().getParent() == null) {
vec.setPoint(new Vec3d(0.4 * (vec.getSide() == WingVector.Side.LEFT ? -1 : 1), 0.3, 0.3));
} else {
vec.setPoint(new Vec3d(0.25 * (vec.getSide() == WingVector.Side.LEFT ? -1 : 1), 0.0, 0.2));
if (entity.world.isRemote)
for (WingVector vec : wingList)
if (vec.getParent() != null) {
if (vec.getParent().getParent() == null) {
vec.setPoint(new Vec3d(0.4 * (vec.getSide() == WingVector.Side.LEFT ? -1 : 1), 0.3, 0.3));
} else {
vec.setPoint(new Vec3d(0.25 * (vec.getSide() == WingVector.Side.LEFT ? -1 : 1), 0.0, 0.2));
}
}
}
tick--;
if (tick <= 0) {
tick = 0;
@@ -162,19 +167,36 @@ public void update(Entity entity) {
}
}

public static class WingVector {

public enum Side {
LEFT, RIGHT
@Override
public void debug() {
if (test[3] <= 0) {
test[0] |= 0b001;
test[3] = 20;
}
/*animation = Animation.Portal_Start;
tick = 20 * 4;
for (WingVector vec : wingList)
if (vec.getParent() != null) {
if (vec.getParent().getParent() == null) {
vec.setPoint(new Vec3d(0.3 * (vec.getSide() == WingVector.Side.LEFT ? -1 : 1), 0.3, 0.3));
} else {
vec.setPoint(new Vec3d(-0.25 * (vec.getSide() == WingVector.Side.LEFT ? -1 : 1), 0.0, 0.2));
}
}*/
}

private enum Animation {
Idle, Portal_Start, Portal_Open
}

public static class WingVector {

private final WingVector parent;
private final Side side;

private final CosmicCapabilityHandler cap;
private Vec3d point;
private Vec3d render;
private int color;
private final CosmicCapabilityHandler cap;

public WingVector(CosmicCapabilityHandler cap, Side s, Vec3d vec, WingVector parent, int color) {
this.cap = cap;
@@ -206,37 +228,33 @@ public Vec3d getRenderVector() {
}

public void update() {
double dx = point.xCoord - render.xCoord;
double dy = point.yCoord - render.yCoord;
double dz = point.zCoord - render.zCoord;
double dx = point.x - render.x;
double dy = point.y - render.y;
double dz = point.z - render.z;
double speed = cap.speed;
if (dx > speed) dx = speed;
else if (dx < -speed) dx = -speed;
if (dx > speed)
dx = speed;
else if (dx < -speed)
dx = -speed;

if (dy > speed) dy = speed;
else if (dy < -speed) dy = -speed;
if (dy > speed)
dy = speed;
else if (dy < -speed)
dy = -speed;

if (dz > speed) dz = speed;
else if (dz < -speed) dz = -speed;
if (dz > speed)
dz = speed;
else if (dz < -speed)
dz = -speed;

render = render.addVector(dx, dy, dz);
// render = point;
}

}
public enum Side {
LEFT, RIGHT
}

@Override
public void debug() {
animation = Animation.Portal_Start;
tick = 20 * 4;
for (WingVector vec : wingList)
if (vec.getParent() != null) {
if (vec.getParent().getParent() == null) {
vec.setPoint(new Vec3d(0.3 * (vec.getSide() == WingVector.Side.LEFT ? -1 : 1), 0.3, 0.3));
} else {
vec.setPoint(new Vec3d(-0.25 * (vec.getSide() == WingVector.Side.LEFT ? -1 : 1), 0.0, 0.2));
}
}
}

}
@@ -14,4 +14,8 @@ public interface ICosmicCapability {

void debug();

int getTest(int id);

void setTest(int id, int val);

}
@@ -4,6 +4,8 @@
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;

import javax.annotation.Nonnull;

public class EntityPortal extends Entity {

public EntityPortal(World worldIn) {
@@ -16,12 +18,12 @@ protected void entityInit() {
}

@Override
protected void readEntityFromNBT(NBTTagCompound compound) {
protected void readEntityFromNBT(@Nonnull NBTTagCompound compound) {

}

@Override
protected void writeEntityToNBT(NBTTagCompound compound) {
protected void writeEntityToNBT(@Nonnull NBTTagCompound compound) {

}

@@ -1,22 +1,27 @@
package tamaized.cosmicreality.common.event;

import tamaized.cosmicreality.common.capabilities.CapabilityList;
import tamaized.cosmicreality.common.capabilities.cosmic.ICosmicCapability;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent.Phase;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import tamaized.cosmicreality.CosmicReality;
import tamaized.cosmicreality.common.capabilities.CapabilityList;
import tamaized.cosmicreality.common.capabilities.cosmic.ICosmicCapability;

@Mod.EventBusSubscriber(modid = CosmicReality.modid)
public class PlayerTickEvent {

@SubscribeEvent
public void tick(net.minecraftforge.fml.common.gameevent.TickEvent.PlayerTickEvent e) {

if (e.phase == Phase.END) {
EntityPlayer player = e.player;
ICosmicCapability cap = player.getCapability(CapabilityList.COSMIC, null);
if (cap != null) cap.update(player);
}

public static void tick(net.minecraftforge.fml.common.gameevent.TickEvent.PlayerTickEvent e) {
if (e.phase == TickEvent.Phase.START)
return;
EntityPlayer player = e.player;
if (!player.hasCapability(CapabilityList.COSMIC, null))
return;
ICosmicCapability cap = player.getCapability(CapabilityList.COSMIC, null);
if (cap != null)
cap.update(player);
}

}
@@ -1,29 +1,37 @@
package tamaized.cosmicreality.common.items;

import tamaized.cosmicreality.common.capabilities.CapabilityList;
import tamaized.cosmicreality.common.capabilities.cosmic.ICosmicCapability;
import tamaized.cosmicreality.registry.ModCreativeTabs;
import Tamaized.TamModized.items.TamItem;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand;
import net.minecraft.world.World;
import tamaized.cosmicreality.common.capabilities.CapabilityList;
import tamaized.cosmicreality.common.capabilities.cosmic.ICosmicCapability;
import tamaized.cosmicreality.registry.ModCreativeTabs;
import tamaized.tammodized.common.items.TamItem;

import javax.annotation.Nonnull;

public class DebugTool extends TamItem {

public DebugTool() {
super(ModCreativeTabs.tab, "debugtool", 1);
}

@Nonnull
@Override
public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer player, EnumHand hand) {
public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer player, @Nonnull EnumHand hand) {
ICosmicCapability cap = player.getCapability(CapabilityList.COSMIC, null);
if (cap != null) {
cap.debug();
}
return new ActionResult(EnumActionResult.SUCCESS, player.getHeldItem(hand));
return new ActionResult<>(EnumActionResult.SUCCESS, player.getHeldItem(hand));
}

@Override
public boolean hasEffect(ItemStack stack) {
return true;
}
}
@@ -1,15 +1,10 @@
package tamaized.cosmicreality.proxy;

import tamaized.cosmicreality.client.render.RenderMirror;
import tamaized.cosmicreality.client.render.RenderPlayer;
import tamaized.cosmicreality.common.entity.EntityPortal;
import tamaized.cosmicreality.client.entity.render.RenderPortal;
import Tamaized.TamModized.proxy.AbstractProxy;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.client.registry.IRenderFactory;

import net.minecraftforge.fml.client.registry.RenderingRegistry;
import tamaized.cosmicreality.client.entity.render.RenderPortal;
import tamaized.cosmicreality.common.entity.EntityPortal;
import tamaized.tammodized.proxy.AbstractProxy;

public class ClientProxy extends AbstractProxy {

@@ -24,15 +19,7 @@ public void preRegisters() {

@Override
public void preInit() {
MinecraftForge.EVENT_BUS.register(new RenderPlayer());
MinecraftForge.EVENT_BUS.register(new RenderMirror());

RenderingRegistry.registerEntityRenderingHandler(EntityPortal.class, new IRenderFactory<EntityPortal>() {
@Override
public Render<? super EntityPortal> createRenderFor(RenderManager manager) {
return new RenderPortal(manager);
}
});
RenderingRegistry.registerEntityRenderingHandler(EntityPortal.class, RenderPortal::new);
}

@Override
@@ -1,7 +1,7 @@
package tamaized.cosmicreality.proxy;

import Tamaized.TamModized.proxy.AbstractProxy;
import net.minecraftforge.fml.relauncher.Side;

import tamaized.tammodized.proxy.AbstractProxy;

public class ServerProxy extends AbstractProxy {

@@ -1,61 +1,17 @@
package tamaized.cosmicreality.registry;

import java.util.ArrayList;

import tamaized.cosmicreality.CosmicReality;
import Tamaized.TamModized.registry.ITamModel;
import Tamaized.TamModized.registry.ITamRegistry;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;

public class ModCreativeTabs implements ITamRegistry {
public class ModCreativeTabs {

public static CreativeTabs tab;

@Override
public void preInit() {
tab = new CreativeTabs("tabCosmic") {
@Override
public ItemStack getTabIconItem() {
return new ItemStack(Items.ENDER_EYE);
}
};
}

@Override
public void init() {

}

@Override
public void postInit() {

}

@Override
public void clientPreInit() {

}

@Override
public void clientInit() {

}

@Override
public void clientPostInit() {

}

@Override
public ArrayList<ITamModel> getModelList() {
return new ArrayList<ITamModel>();
}

@Override
public String getModID() {
return CosmicReality.modid;
}
public static CreativeTabs tab = new CreativeTabs("tabCosmic") {
@Override
public ItemStack getTabIconItem() {
return new ItemStack(Items.ENDER_EYE);
}
};

}
@@ -1,56 +1,41 @@
package tamaized.cosmicreality.registry;

import java.util.ArrayList;

import net.minecraft.item.Item;
import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import tamaized.cosmicreality.CosmicReality;
import tamaized.cosmicreality.common.items.DebugTool;
import Tamaized.TamModized.registry.ITamModel;
import Tamaized.TamModized.registry.ITamRegistry;
import tamaized.tammodized.registry.ITamRegistry;

public class ModItems implements ITamRegistry {
import java.util.ArrayList;

private ArrayList<ITamModel> models = new ArrayList<ITamModel>();
@Mod.EventBusSubscriber(modid = CosmicReality.modid)
public class ModItems {

public static DebugTool debugTool;
private static ArrayList<Item> list = new ArrayList<>();

@Override
public void preInit() {
models.add(debugTool = new DebugTool());
}

@Override
public void init() {

}

@Override
public void postInit() {

}

@Override
public void clientPreInit() {

}

@Override
public void clientInit() {

}

@Override
public void clientPostInit() {

static {
list.add(debugTool = new DebugTool());
}

@Override
public ArrayList<ITamModel> getModelList() {
return models;
@SubscribeEvent
public static void register(RegistryEvent.Register<Item> e) {
for (Item item : list)
e.getRegistry().register(item);
}

@Override
public String getModID() {
return CosmicReality.modid;
@SubscribeEvent
@SideOnly(Side.CLIENT)
public static void loadModels(ModelRegistryEvent e) {
for (Item item : list)
if (item instanceof ITamRegistry)
((ITamRegistry) item).registerModel(e);
}

}
@@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "items/emerald"
}
}