More core resource update

This commit is contained in:
Calclavia 2014-07-14 17:55:12 -04:00
parent 4b273c9b18
commit 7f56f5f656
18 changed files with 192 additions and 291 deletions

View file

@ -38,7 +38,7 @@ import resonantinduction.core.Reference;
import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction;
import resonantinduction.core.ResonantTab; import resonantinduction.core.ResonantTab;
import resonantinduction.core.Settings; import resonantinduction.core.Settings;
import resonantinduction.core.prefab.imprint.ItemImprint; import resonantinduction.archaic.filter.imprint.ItemImprint;
import resonantinduction.core.resource.ItemHandCrank; import resonantinduction.core.resource.ItemHandCrank;
import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.EventHandler;

View file

@ -45,7 +45,7 @@ import resonant.lib.utility.inventory.InventoryUtility;
import resonantinduction.core.Reference; import resonantinduction.core.Reference;
import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction;
import resonantinduction.core.ResonantInduction.RecipeType; import resonantinduction.core.ResonantInduction.RecipeType;
import resonantinduction.core.prefab.imprint.ItemImprint; import resonantinduction.archaic.filter.imprint.ItemImprint;
import universalelectricity.api.vector.Vector2; import universalelectricity.api.vector.Vector2;
import universalelectricity.core.transform.vector.Vector3; import universalelectricity.core.transform.vector.Vector3;
import codechicken.multipart.ControlKeyModifer; import codechicken.multipart.ControlKeyModifer;

View file

@ -12,7 +12,7 @@ import net.minecraftforge.common.util.ForgeDirection;
import resonant.lib.prefab.block.BlockTile; import resonant.lib.prefab.block.BlockTile;
import resonant.lib.utility.inventory.InventoryUtility; import resonant.lib.utility.inventory.InventoryUtility;
import resonantinduction.core.Reference; import resonantinduction.core.Reference;
import resonantinduction.core.prefab.imprint.ItemImprint; import resonantinduction.archaic.filter.imprint.ItemImprint;
import universalelectricity.api.UniversalElectricity; import universalelectricity.api.UniversalElectricity;
import universalelectricity.api.vector.Vector2; import universalelectricity.api.vector.Vector2;
import universalelectricity.core.transform.vector.Vector3; import universalelectricity.core.transform.vector.Vector3;

View file

@ -11,9 +11,6 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.Packet;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidHandler;
import resonant.api.IFilterable; import resonant.api.IFilterable;
import resonant.api.recipe.MachineRecipes; import resonant.api.recipe.MachineRecipes;
import resonant.api.recipe.RecipeResource; import resonant.api.recipe.RecipeResource;
@ -22,13 +19,12 @@ import resonant.lib.network.Synced.SyncedInput;
import resonant.lib.network.Synced.SyncedOutput; import resonant.lib.network.Synced.SyncedOutput;
import resonant.lib.prefab.vector.Cuboid; import resonant.lib.prefab.vector.Cuboid;
import resonant.lib.render.RenderItemOverlayUtility; import resonant.lib.render.RenderItemOverlayUtility;
import resonant.lib.utility.FluidUtility;
import resonant.lib.utility.LanguageUtility; import resonant.lib.utility.LanguageUtility;
import resonant.lib.utility.inventory.InventoryUtility; import resonant.lib.utility.inventory.InventoryUtility;
import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction;
import resonantinduction.core.ResonantInduction.RecipeType; import resonantinduction.core.ResonantInduction.RecipeType;
import resonantinduction.core.prefab.imprint.ItemImprint; import resonantinduction.archaic.filter.imprint.ItemImprint;
import resonantinduction.core.prefab.imprint.TileFilterable; import resonantinduction.archaic.filter.imprint.TileFilterable;
import resonantinduction.core.resource.ResourceGenerator; import resonantinduction.core.resource.ResourceGenerator;
import resonantinduction.core.resource.fluid.BlockFluidMixture; import resonantinduction.core.resource.fluid.BlockFluidMixture;
import universalelectricity.core.transform.vector.Vector3; import universalelectricity.core.transform.vector.Vector3;

View file

@ -14,7 +14,7 @@ import resonant.lib.network.IPacketReceiver;
import resonant.lib.network.PacketHandler; import resonant.lib.network.PacketHandler;
import resonant.lib.prefab.tile.TileAdvanced; import resonant.lib.prefab.tile.TileAdvanced;
import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction;
import resonantinduction.core.prefab.imprint.ItemImprint; import resonantinduction.archaic.filter.imprint.ItemImprint;
import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteArrayDataInput;

View file

@ -1,4 +1,4 @@
package resonantinduction.core.prefab.imprint; package resonantinduction.archaic.filter.imprint;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;

View file

@ -1,4 +1,4 @@
package resonantinduction.core.prefab.imprint; package resonantinduction.archaic.filter.imprint;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;

View file

@ -1,4 +1,4 @@
package resonantinduction.core.prefab.imprint; package resonantinduction.archaic.filter.imprint;
import java.util.Set; import java.util.Set;

View file

@ -9,8 +9,8 @@ import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.MovingObjectPosition;
import resonant.lib.render.RenderUtility; import resonant.lib.render.RenderUtility;
import resonantinduction.core.prefab.imprint.ItemImprint; import resonantinduction.archaic.filter.imprint.ItemImprint;
import resonantinduction.core.prefab.imprint.TileFilterable; import resonantinduction.archaic.filter.imprint.TileFilterable;
import universalelectricity.core.transform.vector.Vector3; import universalelectricity.core.transform.vector.Vector3;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;

View file

@ -1,267 +0,0 @@
package resonantinduction.core.resource;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import resonant.lib.prefab.block.BlockTile;
import resonantinduction.core.Reference;
import resonantinduction.core.ResonantInduction;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
/**
* The block form of the item dust.
*
* @author Calclavia
*/
public class BlockDust extends BlockTile
{
int nextDropMaterialID = 0;
public BlockDust(int id)
{
super(id, Material.sand);
setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.125F, 1.0F);
setBlockBoundsForDepth(0);
setHardness(0.5f);
setTextureName(Reference.PREFIX + "material_sand");
setStepSound(soundGravelFootstep);
}
public static boolean canFallBelow(World par0World, int par1, int par2, int par3)
{
int l = par0World.getBlockId(par1, par2, par3);
if (par0World.isAirBlock(par1, par2, par3))
{
return true;
}
else if (l == Block.fire.blockID)
{
return true;
}
else
{
Material material = Block.blocksList[l].blockMaterial;
return material == Material.water ? true : material == Material.lava;
}
}
@SideOnly(Side.CLIENT)
@Override
public int colorMultiplier(IBlockAccess access, int x, int y, int z)
{
TileEntity tileEntity = access.getBlockTileEntity(x, y, z);
if (tileEntity instanceof TileMaterial)
{
return ((TileMaterial) tileEntity).getColor();
}
return 16777215;
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase par5EntityLivingBase, ItemStack itemStack)
{
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (tileEntity instanceof TileMaterial)
{
((TileMaterial) tileEntity).name = ItemOreResource.getMaterialFromStack(itemStack);
}
}
@Override
public void onPostBlockPlaced(World world, int x, int y, int z, int metadata)
{
tryToFall(world, x, y, z);
}
@Override
public void onBlockAdded(World world, int x, int y, int z)
{
tryToFall(world, x, y, z);
}
@Override
public void onNeighborBlockChange(World world, int x, int y, int z, int id)
{
tryToFall(world, x, y, z);
}
private void tryToFall(World world, int x, int y, int z)
{
TileEntity tile = world.getBlockTileEntity(x, y, z);
if (tile instanceof TileMaterial)
{
String materialName = ((TileMaterial) tile).name;
if (materialName != null)
{
int metadata = world.getBlockMetadata(x, y, z);
if (canFallBelow(world, x, y - 1, z) && y >= 0)
{
world.setBlockToAir(x, y, z);
while (canFallBelow(world, x, y - 1, z) && y > 0)
{
--y;
}
if (y > 0)
{
world.setBlock(x, y, z, this.blockID, metadata, 3);
TileEntity newTile = world.getBlockTileEntity(x, y, z);
if (newTile instanceof TileMaterial)
{
((TileMaterial) newTile).name = materialName;
}
}
}
}
}
}
@Override
public TileEntity createNewTileEntity(World var1)
{
return new TileDust();
}
/**
* Returns a bounding box from the pool of bounding boxes (this means this box can change after
* the pool has been
* cleared to be reused)
*/
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4)
{
int l = par1World.getBlockMetadata(par2, par3, par4) & 7;
float f = 0.125F;
return AxisAlignedBB.getAABBPool().getAABB(par2 + this.minX, par3 + this.minY, par4 + this.minZ, par2 + this.maxX, par3 + l * f, par4 + this.maxZ);
}
/**
* Is this block (a) opaque and (b) a full 1m cube? This determines whether or not to render the
* shared face of two
* adjacent blocks and also whether the player can attach torches, redstone wire, etc to this
* block.
*/
@Override
public boolean isOpaqueCube()
{
return false;
}
/**
* If this block doesn't render as an ordinary block it will return False (examples: signs,
* buttons, stairs, etc)
*/
@Override
public boolean renderAsNormalBlock()
{
return false;
}
/**
* Sets the block's bounds for rendering it as an item
*/
@Override
public void setBlockBoundsForItemRender()
{
this.setBlockBoundsForDepth(0);
}
/**
* Updates the blocks bounds based on its current state. Args: world, x, y, z
*/
@Override
public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4)
{
this.setBlockBoundsForDepth(par1IBlockAccess.getBlockMetadata(par2, par3, par4));
}
/**
* calls setBlockBounds based on the depth of the snow. Int is any values 0x0-0x7, usually this
* blocks metadata.
*/
protected void setBlockBoundsForDepth(int par1)
{
int j = par1 & 7;
float f = 2 * (1 + j) / 16.0F;
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, f, 1.0F);
}
/**
* Returns the ID of the items to drop on destruction.
*/
@Override
public int idDropped(int par1, Random par2Random, int par3)
{
return this == ResonantInduction.blockRefinedDust ? ResonantInduction.itemRefinedDust.itemID : ResonantInduction.itemDust.itemID;
}
@Override
public int idPicked(World par1World, int par2, int par3, int par4)
{
return this == ResonantInduction.blockRefinedDust ? ResonantInduction.itemRefinedDust.itemID : ResonantInduction.itemDust.itemID;
}
@Override
public void breakBlock(World world, int x, int y, int z, int par5, int par6)
{
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (tileEntity instanceof TileMaterial)
{
nextDropMaterialID = ResourceGenerator.getID(((TileMaterial) tileEntity).name);
}
super.breakBlock(world, x, y, z, par5, par6);
}
@Override
public int getDamageValue(World world, int x, int y, int z)
{
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (tileEntity instanceof TileMaterial)
{
return ResourceGenerator.getID(((TileMaterial) tileEntity).name);
}
return damageDropped(0);
}
@Override
public int damageDropped(int par1)
{
return nextDropMaterialID;
}
@SideOnly(Side.CLIENT)
@Override
public boolean shouldSideBeRendered(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5)
{
return par5 == 1 ? true : super.shouldSideBeRendered(par1IBlockAccess, par2, par3, par4, par5);
}
@Override
public int quantityDropped(int meta, int fortune, Random random)
{
return (meta & 7) + 1;
}
}

View file

@ -1,10 +1,182 @@
package resonantinduction.core.resource package resonantinduction.core.resource
import java.util
import cpw.mods.fml.relauncher.{Side, SideOnly}
import net.minecraft.block.Block
import net.minecraft.block.material.Material import net.minecraft.block.material.Material
import net.minecraft.entity.EntityLivingBase
import net.minecraft.item.ItemStack
import net.minecraft.tileentity.TileEntity
import net.minecraft.util.{AxisAlignedBB, MovingObjectPosition}
import net.minecraft.world.{IBlockAccess, World}
import resonantinduction.core.{CoreContent, Reference}
/** /**
* Created by Henry on 3/25/2014. * @author Calclavia
*/ */
class TileDust extends TileMaterial(Material.sand) class TileDust extends TileMaterial(Material.sand)
{ {
private[resource] var nextDropMaterialID: Int = 0
setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.125F, 1.0F)
setBlockBoundsForDepth(0)
setHardness(0.5f)
setTextureName(Reference.PREFIX + "material_sand")
setStepSound(soundGravelFootstep)
normalRender = false
isOpaqueCube = false
def canFallBelow(par0World: World, par1: Int, par2: Int, par3: Int): Boolean =
{
val l: Int = par0World.getBlockId(par1, par2, par3)
if (par0World.isAirBlock(par1, par2, par3))
{
return true
}
else if (l == Block.fire.blockID)
{
return true
}
else
{
val material: Material = Block.blocksList(l).blockMaterial
return if (material eq Material.water) true else material eq Material.lava
}
}
@SideOnly(Side.CLIENT)
override def colorMultiplier: Int = super.colorMultiplier
{
return getColor
}
override def onPlaced(entityLiving: EntityLivingBase, itemStack: ItemStack)
{
name = ItemOreResource.getMaterialFromStack(itemStack)
}
override def onPostBlockPlaced(world: World, x: Int, y: Int, z: Int, metadata: Int)
{
tryToFall(world, x, y, z)
}
/**
* Block events
*/
override def onAdded()
{
tryToFall(world, x, y, z)
}
override def onNeighborChanged(block: Block)
{
tryToFall(world, x, y, z)
}
private def tryToFall(world: World, x: Int, y: Int, z: Int)
{
val tile: TileEntity = world.getBlockTileEntity(x, y, z)
if (tile.isInstanceOf[TileMaterial])
{
val materialName: String = (tile.asInstanceOf[TileMaterial]).name
if (materialName != null)
{
val metadata: Int = world.getBlockMetadata(x, y, z)
if (canFallBelow(world, x, y - 1, z) && y >= 0)
{
world.setBlockToAir(x, y, z)
while (canFallBelow(world, x, y - 1, z) && y > 0)
{
y -= 1
}
if (y > 0)
{
world.setBlock(x, y, z, this.blockID, metadata, 3)
val newTile: TileEntity = world.getBlockTileEntity(x, y, z)
if (newTile.isInstanceOf[TileMaterial])
{
(newTile.asInstanceOf[TileMaterial]).name = materialName
}
}
}
}
}
}
/**
* Returns a bounding box from the pool of bounding boxes (this means this box can change after
* the pool has been
* cleared to be reused)
*/
def getCollisionBoundingBoxFromPool(par1World: World, par2: Int, par3: Int, par4: Int): AxisAlignedBB =
{
val l: Int = par1World.getBlockMetadata(par2, par3, par4) & 7
val f: Float = 0.125F
return AxisAlignedBB.getAABBPool.getAABB(par2 + this.minX, par3 + this.minY, par4 + this.minZ, par2 + this.maxX, par3 + l * f, par4 + this.maxZ)
}
/**
* Sets the block's bounds for rendering it as an item
*/
override def setBlockBoundsForItemRender
{
this.setBlockBoundsForDepth(0)
}
/**
* Updates the blocks bounds based on its current state. Args: world, x, y, z
*/
def setBlockBoundsBasedOnState(par1IBlockAccess: IBlockAccess, par2: Int, par3: Int, par4: Int)
{
this.setBlockBoundsForDepth(par1IBlockAccess.getBlockMetadata(par2, par3, par4))
}
/**
* calls setBlockBounds based on the depth of the snow. Int is any values 0x0-0x7, usually this
* blocks metadata.
*/
protected def setBlockBoundsForDepth(par1: Int)
{
val j: Int = par1 & 7
val f: Float = 2 * (1 + j) / 16.0F
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, f, 1.0F)
}
/**
* Drops
*/
override def getDrops(metadata: Int, fortune: Int): util.ArrayList[ItemStack] =
{
if (this == CoreContent.blockRefinedDust)
return List(new ItemStack(CoreContent.refinedDust))
return List(new ItemStack(CoreContent.dust))
}
override def getPickBlock(target: MovingObjectPosition): ItemStack = if (this == CoreContent.blockRefinedDust) new ItemStack(CoreContent.refinedDust) else new ItemStack(CoreContent.dust)
override def onRemove(block: Block, par6: Int)
{
val tileEntity: TileEntity = world.getBlockTileEntity(x, y, z)
if (tileEntity.isInstanceOf[TileMaterial])
{
nextDropMaterialID = ResourceGenerator.getID((tileEntity.asInstanceOf[TileMaterial]).name)
}
}
def getDamageValue(world: World, x: Int, y: Int, z: Int): Int =
{
ResourceGenerator.getID((tileEntity.asInstanceOf[TileMaterial]).name)
}
override def metadataDropped(meta: Int, fortune: Int): Int = nextDropMaterialID
@SideOnly(Side.CLIENT)
override def shouldSideBeRendered(access: IBlockAccess, x: Int, y: Int, z: Int, side: Int): Boolean =
{
if (par5 == 1) true else super.shouldSideBeRendered(access, x, y, z, side)
}
override def quantityDropped(meta: Int, fortune: Int): Int = (meta & 7) + 1
} }

View file

@ -8,7 +8,7 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import resonantinduction.core.Reference; import resonantinduction.core.Reference;
import resonantinduction.core.prefab.imprint.BlockImprintable; import resonantinduction.archaic.filter.imprint.BlockImprintable;
import universalelectricity.api.UniversalElectricity; import universalelectricity.api.UniversalElectricity;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;

View file

@ -6,7 +6,7 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.ChatMessageComponent; import net.minecraft.util.ChatMessageComponent;
import net.minecraft.world.World; import net.minecraft.world.World;
import resonant.lib.render.block.BlockRenderingHandler; import resonant.lib.render.block.BlockRenderingHandler;
import resonantinduction.core.prefab.imprint.BlockImprintable; import resonantinduction.archaic.filter.imprint.BlockImprintable;
import universalelectricity.api.UniversalElectricity; import universalelectricity.api.UniversalElectricity;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;

View file

@ -6,7 +6,7 @@ import net.minecraft.util.IIcon;
import net.minecraft.world.World; import net.minecraft.world.World;
import resonant.lib.render.block.BlockRenderingHandler; import resonant.lib.render.block.BlockRenderingHandler;
import resonantinduction.core.Reference; import resonantinduction.core.Reference;
import resonantinduction.core.prefab.imprint.BlockImprintable; import resonantinduction.archaic.filter.imprint.BlockImprintable;
import universalelectricity.api.UniversalElectricity; import universalelectricity.api.UniversalElectricity;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;

View file

@ -13,7 +13,7 @@ import net.minecraftforge.common.util.ForgeDirection;
import resonant.lib.network.IPacketReceiver; import resonant.lib.network.IPacketReceiver;
import resonant.lib.network.PacketHandler; import resonant.lib.network.PacketHandler;
import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction;
import resonantinduction.core.prefab.imprint.TileFilterable; import resonantinduction.archaic.filter.imprint.TileFilterable;
import resonantinduction.mechanical.Mechanical; import resonantinduction.mechanical.Mechanical;
import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteArrayDataInput;

View file

@ -14,8 +14,8 @@ import resonant.api.IRotatable;
import resonant.lib.network.IPacketReceiver; import resonant.lib.network.IPacketReceiver;
import resonant.lib.utility.inventory.InternalInventoryHandler; import resonant.lib.utility.inventory.InternalInventoryHandler;
import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction;
import resonantinduction.core.prefab.imprint.ItemImprint; import resonantinduction.archaic.filter.imprint.ItemImprint;
import resonantinduction.core.prefab.imprint.TileFilterable; import resonantinduction.archaic.filter.imprint.TileFilterable;
import universalelectricity.core.transform.vector.Vector3; import universalelectricity.core.transform.vector.Vector3;
import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteArrayDataInput;

View file

@ -13,7 +13,7 @@ import net.minecraftforge.common.util.ForgeDirection;
import resonant.api.IEntityConveyor; import resonant.api.IEntityConveyor;
import resonant.lib.network.IPacketReceiverWithID; import resonant.lib.network.IPacketReceiverWithID;
import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction;
import resonantinduction.core.prefab.imprint.TileFilterable; import resonantinduction.archaic.filter.imprint.TileFilterable;
import universalelectricity.core.transform.vector.Vector3; import universalelectricity.core.transform.vector.Vector3;
import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteArrayDataInput;

View file

@ -27,7 +27,7 @@ import resonant.lib.prefab.vector.Cuboid;
import resonant.lib.render.RenderUtility; import resonant.lib.render.RenderUtility;
import resonant.lib.utility.inventory.InventoryUtility; import resonant.lib.utility.inventory.InventoryUtility;
import resonantinduction.core.Reference; import resonantinduction.core.Reference;
import resonantinduction.core.prefab.imprint.ItemImprint; import resonantinduction.archaic.filter.imprint.ItemImprint;
import universalelectricity.api.UniversalElectricity; import universalelectricity.api.UniversalElectricity;
import universalelectricity.core.transform.vector.Vector3; import universalelectricity.core.transform.vector.Vector3;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;