More error corrections and scala conversions

This commit is contained in:
Robert S 2014-08-06 12:50:58 -04:00
parent 9d5a41dec7
commit c6a9f23349
16 changed files with 582 additions and 908 deletions

View file

@ -9,7 +9,7 @@ import net.minecraftforge.oredict.OreDictionary
import net.minecraftforge.oredict.ShapedOreRecipe
import resonant.content.loader.ModManager
import resonant.lib.recipe.UniversalRecipe
import resonantinduction.archaic.blocks.TileTurntable
import resonantinduction.archaic.blocks.{ItemImprint, TileImprinter, TileTurntable}
import resonantinduction.archaic.crate.BlockCrate
import resonantinduction.archaic.crate.CrateRecipe
import resonantinduction.archaic.crate.ItemBlockCrate
@ -17,8 +17,6 @@ import resonantinduction.archaic.crate.TileCrate
import resonantinduction.archaic.engineering.ItemHammer
import resonantinduction.archaic.engineering.TileEngineeringTable
import resonantinduction.archaic.filter.BlockImprinter
import resonantinduction.archaic.filter.TileFilter
import resonantinduction.archaic.filter.TileImprinter
import resonantinduction.archaic.firebox.BlockHotPlate
import resonantinduction.archaic.firebox.TileFirebox
import resonantinduction.archaic.firebox.TileHotPlate
@ -32,7 +30,6 @@ import resonantinduction.core.Reference
import resonantinduction.core.ResonantInduction
import resonantinduction.core.ResonantTab
import resonantinduction.core.Settings
import resonantinduction.archaic.filter.imprint.ItemImprint
import resonantinduction.mechanical.gear.ItemHandCrank
import cpw.mods.fml.common.Mod
import cpw.mods.fml.common.Mod.EventHandler

View file

@ -1,4 +1,4 @@
package resonantinduction.archaic.filter.imprint;
package resonantinduction.archaic.blocks;
import java.util.ArrayList;
import java.util.HashSet;
@ -22,12 +22,12 @@ import resonantinduction.core.Settings;
public class ItemImprint extends Item
{
public ItemImprint(int id)
public ItemImprint()
{
super(Settings.config.getItem("imprint", id).getInt());
this.setUnlocalizedName(Reference.PREFIX + "imprint");
this.setTextureName(Reference.PREFIX + "imprint");
this.setCreativeTab(ResonantTab.DEFAULT);
super();
this.setUnlocalizedName(Reference.prefix() + "imprint");
this.setTextureName(Reference.prefix() + "imprint");
this.setCreativeTab(ResonantTab.tab());
this.setHasSubtypes(true);
this.setMaxStackSize(1);
}
@ -114,11 +114,11 @@ public class ItemImprint extends Item
HashSet<ItemStack> filterStacks = new HashSet<ItemStack>();
NBTTagCompound nbt = NBTUtility.getNBTTagCompound(itemStack);
NBTTagList tagList = nbt.getTagList("Items");
NBTTagList tagList = nbt.getTagList("Items", 0);
for (int i = 0; i < tagList.tagCount(); ++i)
{
NBTTagCompound var4 = (NBTTagCompound) tagList.tagAt(i);
NBTTagCompound var4 = (NBTTagCompound) tagList.getCompoundTagAt(i);
filterStacks.add(ItemStack.loadItemStackFromNBT(var4));
}
@ -130,11 +130,11 @@ public class ItemImprint extends Item
List<ItemStack> filterStacks = new ArrayList<ItemStack>();
NBTTagCompound nbt = NBTUtility.getNBTTagCompound(itemStack);
NBTTagList tagList = nbt.getTagList("Items");
NBTTagList tagList = nbt.getTagList("Items", 0);
for (int i = 0; i < tagList.tagCount(); ++i)
{
NBTTagCompound var4 = (NBTTagCompound) tagList.tagAt(i);
NBTTagCompound var4 = (NBTTagCompound) tagList.getCompoundTagAt(i);
filterStacks.add(ItemStack.loadItemStackFromNBT(var4));
}

View file

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

View file

@ -0,0 +1,474 @@
package resonantinduction.archaic.blocks;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import codechicken.multipart.ControlKeyModifer;
import cpw.mods.fml.common.network.ByteBufUtils;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.Packet;
import net.minecraft.util.IIcon;
import net.minecraftforge.common.util.ForgeDirection;
import org.lwjgl.opengl.GL11;
import resonant.content.prefab.java.TileAdvanced;
import resonant.content.spatial.block.SpatialBlock;
import resonant.engine.ResonantEngine;
import resonant.lib.network.discriminator.PacketTile;
import resonant.lib.network.discriminator.PacketType;
import resonant.lib.network.handle.IPacketReceiver;
import resonant.lib.render.RenderItemOverlayUtility;
import resonant.lib.utility.inventory.InventoryUtility;
import resonantinduction.core.Reference;
import universalelectricity.core.transform.vector.Vector2;
import universalelectricity.core.transform.vector.Vector3;
import universalelectricity.core.transform.vector.VectorWorld;
public class TileImprinter extends TileAdvanced implements ISidedInventory, IPacketReceiver
{
public ItemStack[] inventory = new ItemStack[10];
public TileImprinter()
{
super(Material.circuits);
}
@Override
public Packet getDescriptionPacket()
{
NBTTagCompound nbt = new NBTTagCompound();
this.writeToNBT(nbt);
return ResonantEngine.instance.packetHandler.toMCPacket(new PacketTile(this, nbt));
}
@Override
public void read(ByteBuf data, EntityPlayer player, PacketType type)
{
try
{
this.readFromNBT(ByteBufUtils.readTag(data));
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* Inventory methods.
*/
@Override
public boolean canUpdate()
{
return false;
}
@Override
public int getSizeInventory()
{
return this.inventory.length;
}
/**
* Sets the given item stack to the specified slot in the inventory (can be crafting or armor
* sections).
*/
@Override
public void setInventorySlotContents(int slot, ItemStack itemStack)
{
if (slot < this.getSizeInventory())
{
inventory[slot] = itemStack;
}
}
@Override
public String getInventoryName() {
return null;
}
@Override
public boolean hasCustomInventoryName() {
return false;
}
@Override
public ItemStack decrStackSize(int i, int amount)
{
if (this.getStackInSlot(i) != null)
{
ItemStack stack;
if (this.getStackInSlot(i).stackSize <= amount)
{
stack = this.getStackInSlot(i);
this.setInventorySlotContents(i, null);
return stack;
}
else
{
stack = this.getStackInSlot(i).splitStack(amount);
if (this.getStackInSlot(i).stackSize == 0)
{
this.setInventorySlotContents(i, null);
}
return stack;
}
}
else
{
return null;
}
}
@Override
public ItemStack getStackInSlot(int slot)
{
return this.inventory[slot];
}
/**
* When some containers are closed they call this on each slot, then drop whatever it returns as
* an EntityItem - like when you close a workbench GUI.
*/
@Override
public ItemStack getStackInSlotOnClosing(int slot)
{
if (this.getStackInSlot(slot) != null)
{
ItemStack var2 = this.getStackInSlot(slot);
this.setInventorySlotContents(slot, null);
return var2;
}
else
{
return null;
}
}
@Override
public void openInventory()
{
this.onInventoryChanged();
}
@Override
public void closeInventory()
{
this.onInventoryChanged();
}
/** Updates all the output slots. Call this to update the Imprinter. */
public void onInventoryChanged()
{
if (!this.worldObj.isRemote)
{
/** Makes the stamping recipe for filters */
ItemStack fitlerStack = this.inventory[9];
if (fitlerStack != null && fitlerStack.getItem() instanceof ItemImprint)
{
ItemStack outputStack = fitlerStack.copy();
Set<ItemStack> filters = ItemImprint.getFilters(outputStack);
Set<ItemStack> toAdd = new HashSet<ItemStack>();
/** A hashset of to be imprinted items containing NO repeats. */
Set<ItemStack> toBeImprinted = new HashSet<ItemStack>();
check:
for (int i = 0; i < 9; i++)
{
ItemStack stackInInventory = inventory[i];
if (stackInInventory != null)
{
for (ItemStack check : toBeImprinted)
{
if (check.isItemEqual(stackInInventory))
continue check;
}
toBeImprinted.add(stackInInventory);
}
}
for (ItemStack stackInInventory : toBeImprinted)
{
Iterator<ItemStack> it = filters.iterator();
boolean removed = false;
while (it.hasNext())
{
ItemStack filteredStack = it.next();
if (filteredStack.isItemEqual(stackInInventory))
{
it.remove();
removed = true;
}
}
if (!removed)
toAdd.add(stackInInventory);
}
filters.addAll(toAdd);
ItemImprint.setFilters(outputStack, filters);
this.inventory[9] = outputStack;
}
}
}
// ///////////////////////////////////////
// // Save And Data processing //////
// ///////////////////////////////////////
/** NBT Data */
@Override
public void readFromNBT(NBTTagCompound nbt)
{
super.readFromNBT(nbt);
NBTTagList var2 = nbt.getTagList("Items", 0);
this.inventory = new ItemStack[10];
for (int i = 0; i < var2.tagCount(); ++i)
{
NBTTagCompound var4 = (NBTTagCompound) var2.getCompoundTagAt(i);
byte var5 = var4.getByte("Slot");
if (var5 >= 0 && var5 < this.getSizeInventory())
{
this.setInventorySlotContents(var5, ItemStack.loadItemStackFromNBT(var4));
}
}
}
/** Writes a tile entity to NBT. */
@Override
public void writeToNBT(NBTTagCompound nbt)
{
super.writeToNBT(nbt);
NBTTagList var2 = new NBTTagList();
for (int i = 0; i < this.getSizeInventory(); ++i)
{
if (this.getStackInSlot(i) != null)
{
NBTTagCompound var4 = new NBTTagCompound();
var4.setByte("Slot", (byte) i);
this.getStackInSlot(i).writeToNBT(var4);
var2.appendTag(var4);
}
}
nbt.setTag("Items", var2);
}
// ///////////////////////////////////////
// // Inventory Access side Methods //////
// ///////////////////////////////////////
@Override
public boolean isItemValidForSlot(int i, ItemStack itemstack)
{
return true;
}
@Override
public int getInventoryStackLimit()
{
return 64;
}
@Override
public boolean isUseableByPlayer(EntityPlayer entityplayer)
{
return this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : entityplayer.getDistanceSq(this.xCoord + 0.5D, this.yCoord + 0.5D, this.zCoord + 0.5D) <= 64.0D;
}
@Override
public int[] getAccessibleSlotsFromSide(int side)
{
return side == 1 ? new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 } : new int[10];
}
@Override
public boolean canInsertItem(int slot, ItemStack itemstack, int side)
{
return this.isItemValidForSlot(slot, itemstack);
}
@Override
public boolean canExtractItem(int slot, ItemStack itemstack, int side)
{
return this.isItemValidForSlot(slot, itemstack);
}
@Override
public void renderDynamic(Vector3 position, float frame, int pass)
{
GL11.glPushMatrix();
RenderItemOverlayUtility.renderTopOverlay(this, inventory, ForgeDirection.EAST, x(), y(), z());
RenderItemOverlayUtility.renderItemOnSides(this, getStackInSlot(9), x(), y(), z());
GL11.glPopMatrix();
}
@SideOnly(Side.CLIENT)
@Override
public void registerIcons(IIconRegister iconReg)
{
super.registerIcons(iconReg);
SpatialBlock.icon().put("imprinter_side", iconReg.registerIcon(Reference.prefix() + "imprinter_side"));
SpatialBlock.icon().put("imprinter_top", iconReg.registerIcon(Reference.prefix() + "imprinter_top"));
SpatialBlock.icon().put("imprinter_bottom", iconReg.registerIcon(Reference.prefix() + "imprinter_bottom"));
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta)
{
if (side == 1)
{
return SpatialBlock.icon().get("imprinter_top");
}
else if (side == 0)
{
return SpatialBlock.icon().get("imprinter_bottom");
}
return SpatialBlock.icon().get("imprinter_side");
}
public boolean use(EntityPlayer player, int hitSide, Vector3 hit)
{
ItemStack current = player.inventory.getCurrentItem();
if (hitSide == 1)
{
if (!world().isRemote)
{
Vector2 hitVector = new Vector2(hit.x(), hit.z());
double regionLength = 1d / 3d;
/**
* Crafting Matrix
*/
matrix:
for (int j = 0; j < 3; j++)
{
for (int k = 0; k < 3; k++)
{
Vector2 check = new Vector2(j, k).multiply(regionLength);
if (check.distance(hitVector) < regionLength)
{
int slotID = j * 3 + k;
boolean didInsert = false;
ItemStack checkStack = inventory[slotID];
if (current != null)
{
if (checkStack == null || checkStack.isItemEqual(current))
{
if (ControlKeyModifer.isControlDown(player))
{
if (checkStack == null)
{
inventory[slotID] = current;
}
else
{
inventory[slotID].stackSize += current.stackSize;
current.stackSize = 0;
}
current = null;
}
else
{
if (checkStack == null)
{
inventory[slotID] = current.splitStack(1);
}
else
{
inventory[slotID].stackSize++;
current.stackSize--;
}
}
if (current == null || current.stackSize <= 0)
{
player.inventory.setInventorySlotContents(player.inventory.currentItem, null);
}
didInsert = true;
}
}
if (!didInsert && checkStack != null)
{
InventoryUtility.dropItemStack(world(), new Vector3(player), checkStack, 0);
inventory[slotID] = null;
}
break matrix;
}
}
}
world().markBlockForUpdate(x(), y(), z());
}
return true;
}
else if (hitSide != 0)
{
ItemStack output = getStackInSlot(9);
if (output != null)
{
InventoryUtility.dropItemStack(world(), new Vector3(player), output, 0);
setInventorySlotContents(9, null);
}
else if (current != null && current.getItem() instanceof ItemImprint)
{
setInventorySlotContents(9, current);
player.inventory.setInventorySlotContents(player.inventory.currentItem, null);
}
}
return false;
}
@Override
public void onNeighborChanged(Block block)
{
VectorWorld vec = new VectorWorld(this);
Block b = vec.add(ForgeDirection.getOrientation(1)).getBlock();
if (Blocks.piston_head == b)
{
onInventoryChanged();
}
}
}

View file

@ -3,6 +3,9 @@ package resonantinduction.archaic.engineering;
import java.util.ArrayList;
import java.util.Set;
import cpw.mods.fml.common.network.ByteBufUtils;
import io.netty.buffer.ByteBuf;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
@ -11,12 +14,14 @@ import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.CraftingManager;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.packet.Packet;
import net.minecraft.network.Packet;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.IIcon;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.oredict.OreDictionary;
@ -28,13 +33,12 @@ import resonant.api.IRotatable;
import resonant.api.ISlotPickResult;
import resonant.api.recipe.MachineRecipes;
import resonant.api.recipe.RecipeResource;
import resonant.lib.content.module.TileRender;
import resonant.lib.content.module.prefab.TileInventory;
import resonant.content.prefab.itemblock.ItemBlockSaved;
import resonant.engine.ResonantEngine;
import resonant.lib.gui.ContainerDummy;
import resonant.lib.network.IPacketReceiver;
import resonant.lib.network.PacketHandler;
import resonant.lib.prefab.item.ItemBlockSaved;
import resonant.lib.prefab.vector.Cuboid;
import resonant.lib.network.discriminator.PacketTile;
import resonant.lib.network.discriminator.PacketType;
import resonant.lib.network.handle.IPacketReceiver;
import resonant.lib.render.RenderItemOverlayUtility;
import resonant.lib.type.Pair;
import resonant.lib.utility.LanguageUtility;
@ -45,15 +49,16 @@ import resonant.lib.utility.inventory.InventoryUtility;
import resonantinduction.core.Reference;
import resonantinduction.core.ResonantInduction;
import resonantinduction.core.ResonantInduction.RecipeType;
import resonantinduction.archaic.filter.imprint.ItemImprint;
import universalelectricity.api.vector.Vector2;
import resonantinduction.archaic.blocks.ItemImprint;
import universalelectricity.core.transform.region.Cuboid;
import universalelectricity.core.transform.rotation.Quaternion;
import universalelectricity.core.transform.vector.Vector2;
import universalelectricity.core.transform.vector.Vector3;
import codechicken.multipart.ControlKeyModifer;
import com.google.common.io.ByteArrayDataInput;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import resonant.lib.content.prefab.java.TileInventory;
/** Advanced crafting table that stores its crafting grid, can craft out of the player's inv, and be
* configed to auto craft.
@ -92,10 +97,10 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
public TileEngineeringTable()
{
super(Material.wood);
bounds = new Cuboid(0, 0, 0, 1, 0.9f, 1);
isOpaqueCube = false;
normalRender = false;
itemBlock = ItemBlockSaved.class;
bounds(new Cuboid(0, 0, 0, 1, 0.9f, 1));
isOpaqueCube(false);
normalRender(false);
itemBlock(ItemBlockSaved.class);
}
@Override
@ -132,7 +137,7 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
}
@Override
protected boolean use(EntityPlayer player, int hitSide, Vector3 hit)
public boolean use(EntityPlayer player, int hitSide, Vector3 hit)
{
if (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() instanceof ItemHammer)
{
@ -146,7 +151,7 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
if (oreName != null && !oreName.equals("Unknown"))
{
RecipeResource[] outputs = MachineRecipes.INSTANCE.getOutput(RecipeType.CRUSHER.name(), oreName);
RecipeResource[] outputs = MachineRecipes.INSTANCE.getOutput(RecipeType.CRUSHER().toString(), oreName);
if (outputs != null && outputs.length > 0)
{
@ -164,8 +169,8 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
}
}
ResonantInduction.proxy.renderBlockParticle(world(), new Vector3(x() + 0.5, y() + 0.5, z() + 0.5), new Vector3((Math.random() - 0.5f) * 3, (Math.random() - 0.5f) * 3, (Math.random() - 0.5f) * 3), inputStack.itemID, 1);
world().playSoundEffect(x() + 0.5, y() + 0.5, z() + 0.5, Reference.PREFIX + "hammer", 0.5f, 0.8f + (0.2f * world().rand.nextFloat()));
ResonantInduction.proxy().renderBlockParticle(world(), new Vector3(x() + 0.5, y() + 0.5, z() + 0.5), new Vector3((Math.random() - 0.5f) * 3, (Math.random() - 0.5f) * 3, (Math.random() - 0.5f) * 3), Item.getIdFromItem(inputStack.getItem()), 1);
world().playSoundEffect(x() + 0.5, y() + 0.5, z() + 0.5, Reference.prefix() + "hammer", 0.5f, 0.8f + (0.2f * world().rand.nextFloat()));
player.addExhaustion(0.1f);
player.getCurrentEquippedItem().damageItem(1, player);
return true;
@ -180,12 +185,12 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
{
if (!world().isRemote)
{
Vector3 hitVector = new Vector3(hit.x, 0, hit.z);
Vector3 hitVector = new Vector3(hit.x(), 0, hit.z());
final double regionLength = 1d / 3d;
// Rotate the hit vector based on direction of the tile.
hitVector.add(new Vector3(-0.5, 0, -0.5));
hitVector.rotate(WorldUtility.getAngleFromForgeDirection(getDirection()), Vector3.UP());
hitVector.transform(new Quaternion(WorldUtility.getAngleFromForgeDirection(getDirection()), Vector3.up()));
hitVector.add(new Vector3(0.5, 0, 0.5));
/** Crafting Matrix */
@ -194,7 +199,7 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
{
for (int k = 0; k < 3; k++)
{
Vector2 check = new Vector2(j, k).scale(regionLength);
Vector2 check = new Vector2(j, k).multiply(regionLength);
if (check.distance(hitVector.toVector2()) < regionLength)
{
@ -246,7 +251,7 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
}
@Override
protected boolean configure(EntityPlayer player, int side, Vector3 hit)
public boolean configure(EntityPlayer player, int side, Vector3 hit)
{
if (player.isSneaking())
{
@ -254,9 +259,9 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
if (!world().isRemote)
{
if (searchInventories)
player.addChatMessage(LanguageUtility.getLocal("engineerTable.config.inventory.true"));
player.addChatMessage(new ChatComponentText(LanguageUtility.getLocal("engineerTable.config.inventory.true")));
else
player.addChatMessage(LanguageUtility.getLocal("engineerTable.config.inventory.false"));
player.addChatMessage(new ChatComponentText(LanguageUtility.getLocal("engineerTable.config.inventory.false")));
}
markUpdate();
@ -273,9 +278,9 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
}
@Override
public void onRemove(int par5, int par6)
public void onRemove(Block block, int par6)
{
ItemStack stack = ItemBlockSaved.getItemStackWithNBT(this.getBlockType(), world(), x(), y(), z());
ItemStack stack = ItemBlockSaved.getItemStackWithNBT(block, world(), x(), y(), z());
InventoryUtility.dropItemStack(world(), center(), stack);
}
@ -320,15 +325,15 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
{
NBTTagCompound nbt = new NBTTagCompound();
this.writeToNBT(nbt);
return ResonantInduction.PACKET_TILE.getPacket(this, nbt);
return ResonantEngine.instance.packetHandler.toMCPacket(new PacketTile(this, nbt));
}
@Override
public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra)
public void read(ByteBuf data, EntityPlayer player, PacketType type)
{
try
{
readFromNBT(PacketHandler.readNBTTagCompound(data));
readFromNBT(ByteBufUtils.readTag(data));
}
catch (Exception e)
{
@ -475,24 +480,6 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
}
}
@Override
public String getInvName()
{
return this.getBlockType().getLocalizedName();
}
@Override
public void openChest()
{
this.onInventoryChanged();
}
@Override
public void closeChest()
{
this.onInventoryChanged();
}
/** Construct an InventoryCrafting Matrix on the fly.
*
* @return */
@ -509,7 +496,6 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
}
/** Updates all the output slots. Call this to update the Engineering Table. */
@Override
public void onInventoryChanged()
{
if (worldObj != null)
@ -597,13 +583,13 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
{
super.readFromNBT(nbt);
NBTTagList nbtList = nbt.getTagList("Items");
NBTTagList nbtList = nbt.getTagList("Items", 0);
this.craftingMatrix = new ItemStack[9];
this.outputInventory = new ItemStack[1];
for (int i = 0; i < nbtList.tagCount(); ++i)
{
NBTTagCompound stackTag = (NBTTagCompound) nbtList.tagAt(i);
NBTTagCompound stackTag = nbtList.getCompoundTagAt(i);
byte id = stackTag.getByte("Slot");
if (id >= 0 && id < this.getSizeInventory())
@ -642,12 +628,6 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
// // Inventory Access side Methods //////
// ///////////////////////////////////////
@Override
public boolean isInvNameLocalized()
{
return false;
}
@Override
public boolean isItemValidForSlot(int i, ItemStack itemstack)
{
@ -756,25 +736,23 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
return slots;
}
@Override
@SideOnly(Side.CLIENT)
protected TileRender newRenderer()
{
return new TileRender()
{
@Override
public boolean renderDynamic(Vector3 position, boolean isItem, float frame)
{
if (!isItem)
{
GL11.glPushMatrix();
RenderItemOverlayUtility.renderItemOnSides(TileEngineeringTable.this, getStackInSlot(9), position.x, position.y, position.z);
RenderItemOverlayUtility.renderTopOverlay(TileEngineeringTable.this, craftingMatrix, getDirection(), position.x, position.y - 0.1, position.z);
GL11.glPopMatrix();
}
return false;
}
};
@Override
public void renderDynamic(Vector3 position, float frame, int pass)
{
GL11.glPushMatrix();
RenderItemOverlayUtility.renderItemOnSides(TileEngineeringTable.this, getStackInSlot(9), position.x(), position.y(), position.z());
RenderItemOverlayUtility.renderTopOverlay(TileEngineeringTable.this, craftingMatrix, getDirection(), position.x(), position.y() - 0.1, position.z());
GL11.glPopMatrix();
}
@Override
public ForgeDirection getDirection() {
return null;
}
@Override
public void setDirection(ForgeDirection direction) {
}
}

View file

@ -1,202 +0,0 @@
package resonantinduction.archaic.filter;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import resonant.lib.prefab.block.BlockTile;
import resonant.lib.utility.inventory.InventoryUtility;
import resonantinduction.core.Reference;
import resonantinduction.archaic.filter.imprint.ItemImprint;
import universalelectricity.api.UniversalElectricity;
import universalelectricity.api.vector.Vector2;
import universalelectricity.core.transform.vector.Vector3;
import universalelectricity.api.vector.VectorWorld;
import codechicken.multipart.ControlKeyModifer;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class BlockImprinter extends BlockTile
{
IIcon imprinter_side;
IIcon imprinter_top;
IIcon imprinter_bottom;
public BlockImprinter(int id)
{
super(id, UniversalElectricity.machine);
}
@SideOnly(Side.CLIENT)
@Override
public void registerIcons(IIconRegister iconReg)
{
this.imprinter_side = iconReg.registerIcon(Reference.PREFIX + "imprinter_side");
this.imprinter_top = iconReg.registerIcon(Reference.PREFIX + "imprinter_top");
this.imprinter_bottom = iconReg.registerIcon(Reference.PREFIX + "imprinter_bottom");
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getBlockTexture(IBlockAccess world, int x, int y, int z, int side)
{
return getIcon(side, 0);
}
/** Returns the block texture based on the side being looked at. Args: side */
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta)
{
if (side == 1)
{
return this.imprinter_top;
}
else if (side == 0)
{
return this.imprinter_bottom;
}
return this.imprinter_side;
}
@Override
public void onNeighborBlockChange(World world, int x, int y, int z, int blockID)
{
TileEntity te = world.getTileEntity(x, y, z);
if (te instanceof TileImprinter)
{
TileImprinter tile = (TileImprinter) te;
int idOnTop = ((VectorWorld) new VectorWorld(world, x, y, z).add(ForgeDirection.getOrientation(1))).getBlock();
if (Block.pistonMoving.blockID == blockID)
{
tile.onInventoryChanged();
}
}
}
@Override
public boolean onMachineActivated(World world, int x, int y, int z, EntityPlayer player, int hitSide, float hitX, float hitY, float hitZ)
{
TileEntity te = world.getTileEntity(x, y, z);
if (te instanceof TileImprinter)
{
TileImprinter tile = (TileImprinter) te;
ItemStack current = player.inventory.getCurrentItem();
if (hitSide == 1)
{
if (!world.isRemote)
{
Vector2 hitVector = new Vector2(hitX, hitZ);
double regionLength = 1d / 3d;
/**
* Crafting Matrix
*/
matrix:
for (int j = 0; j < 3; j++)
{
for (int k = 0; k < 3; k++)
{
Vector2 check = new Vector2(j, k).scale(regionLength);
if (check.distance(hitVector) < regionLength)
{
int slotID = j * 3 + k;
boolean didInsert = false;
ItemStack checkStack = tile.inventory[slotID];
if (current != null)
{
if (checkStack == null || checkStack.isItemEqual(current))
{
if (ControlKeyModifer.isControlDown(player))
{
if (checkStack == null)
{
tile.inventory[slotID] = current;
}
else
{
tile.inventory[slotID].stackSize += current.stackSize;
current.stackSize = 0;
}
current = null;
}
else
{
if (checkStack == null)
{
tile.inventory[slotID] = current.splitStack(1);
}
else
{
tile.inventory[slotID].stackSize++;
current.stackSize--;
}
}
if (current == null || current.stackSize <= 0)
{
player.inventory.setInventorySlotContents(player.inventory.currentItem, null);
}
didInsert = true;
}
}
if (!didInsert && checkStack != null)
{
InventoryUtility.dropItemStack(world, new Vector3(player), checkStack, 0);
tile.inventory[slotID] = null;
}
break matrix;
}
}
}
world.markBlockForUpdate(x, y, z);
}
return true;
}
else if (hitSide != 0)
{
ItemStack output = tile.getStackInSlot(9);
if (output != null)
{
InventoryUtility.dropItemStack(world, new Vector3(player), output, 0);
tile.setInventorySlotContents(9, null);
}
else if (current != null && current.getItem() instanceof ItemImprint)
{
tile.setInventorySlotContents(9, current);
player.inventory.setInventorySlotContents(player.inventory.currentItem, null);
}
}
}
return false;
}
@Override
public TileEntity createNewTileEntity(World var1)
{
return new TileImprinter();
}
}

View file

@ -1,26 +0,0 @@
package resonantinduction.archaic.filter;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
import resonant.lib.render.RenderItemOverlayUtility;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class RenderImprinter extends TileEntitySpecialRenderer
{
private final RenderBlocks renderBlocks = new RenderBlocks();
@Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float var8)
{
if (tileEntity instanceof TileImprinter)
{
TileImprinter tile = (TileImprinter) tileEntity;
RenderItemOverlayUtility.renderTopOverlay(tileEntity, tile.inventory, ForgeDirection.EAST, x, y, z);
RenderItemOverlayUtility.renderItemOnSides(tileEntity, tile.getStackInSlot(9), x, y, z);
}
}
}

View file

@ -1,185 +0,0 @@
package resonantinduction.archaic.filter;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.packet.Packet;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.common.util.ForgeDirection;
import resonant.api.IFilterable;
import resonant.api.recipe.MachineRecipes;
import resonant.api.recipe.RecipeResource;
import resonant.lib.content.module.TileRender;
import resonant.lib.network.Synced.SyncedInput;
import resonant.lib.network.Synced.SyncedOutput;
import resonant.lib.prefab.vector.Cuboid;
import resonant.lib.render.RenderItemOverlayUtility;
import resonant.lib.utility.LanguageUtility;
import resonant.lib.utility.inventory.InventoryUtility;
import resonantinduction.core.ResonantInduction;
import resonantinduction.core.ResonantInduction.RecipeType;
import resonantinduction.archaic.filter.imprint.ItemImprint;
import resonantinduction.archaic.filter.imprint.TileFilterable;
import resonantinduction.core.resource.ResourceGenerator;
import resonantinduction.core.resource.fluid.BlockFluidMixture;
import universalelectricity.core.transform.vector.Vector3;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class TileFilter extends TileFilterable implements IFilterable
{
public TileFilter()
{
super(Material.iron);
maxSlots = 1;
isOpaqueCube = false;
normalRender = false;
}
public Iterable<Cuboid> getCollisionBoxes(Cuboid intersect, Entity entity)
{
if (entity == null)
return null;
if (entity instanceof EntityItem)
{
if (isFiltering(((EntityItem) entity).getEntityItem()))
{
return null;
}
}
return super.getCollisionBoxes(intersect, entity);
}
@Override
public void updateEntity()
{
super.updateEntity();
if (ticks % 60 == 0)
{
/** Toggle item filter render */
if (getFilter() != null)
{
List<ItemStack> filteredStacks = ItemImprint.getFilterList(getFilter());
if (filteredStacks.size() > 0)
{
renderIndex = (renderIndex + 1) % filteredStacks.size();
}
}
/** Fluid filters */
Vector3 position = new Vector3(this);
Vector3 checkAbove = position.clone().add(ForgeDirection.UP);
Vector3 checkBelow = position.clone().add(ForgeDirection.DOWN);
Block bAbove = Block.blocksList[checkAbove.getBlock(worldObj)];
if (bAbove instanceof BlockFluidMixture && worldObj.isAirBlock(checkBelow.xi(), checkBelow.yi(), checkBelow.zi()))
{
worldObj.spawnParticle("dripWater", xCoord + 0.5, yCoord, zCoord + 0.5, 0, 0, 0);
/** Leak the fluid down. */
BlockFluidMixture fluidBlock = (BlockFluidMixture) bAbove;
int amount = fluidBlock.getQuantaValue(worldObj, checkAbove.xi(), checkAbove.yi(), checkAbove.zi());
int leakAmount = 2;
/** Drop item from fluid. */
for (RecipeResource resoure : MachineRecipes.INSTANCE.getOutput(RecipeType.MIXER.name(), "dirtyDust" + LanguageUtility.capitalizeFirst(ResourceGenerator.mixtureToMaterial(fluidBlock.getFluid().getName()))))
{
InventoryUtility.dropItemStack(worldObj, checkAbove.clone().add(0.5), resoure.getItemStack().copy(), 0, 0);
}
// TODO: Check if this is correct?
int remaining = amount - leakAmount;
/** Remove liquid from top. */
fluidBlock.setQuanta(worldObj, checkAbove.xi(), checkAbove.yi(), checkAbove.zi(), remaining);
// Since there is air below us we will spawn water.
checkBelow.setBlock(worldObj, Block.waterMoving.blockID);
}
}
}
@SyncedOutput
@Override
public void writeToNBT(NBTTagCompound nbt)
{
super.writeToNBT(nbt);
}
@SyncedInput
@Override
public void readFromNBT(NBTTagCompound nbt)
{
super.readFromNBT(nbt);
}
private int renderIndex = 0;
@SideOnly(Side.CLIENT)
protected TileRender newRenderer()
{
return new TileRender()
{
@Override
public boolean renderDynamic(Vector3 position, boolean isItem, float frame)
{
if (isItem)
return false;
if (getFilter() != null)
{
List<ItemStack> filteredStacks = ItemImprint.getFilterList(getFilter());
if (filteredStacks.size() > 0)
{
ItemStack renderStack = filteredStacks.get(renderIndex);
RenderItemOverlayUtility.renderItemOnSides(TileFilter.this, renderStack, position.x, position.y, position.z);
}
}
return false;
}
};
}
@Override
public boolean shouldSideBeRendered(IBlockAccess access, int x, int y, int z, int side)
{
return access.getBlockId(x, y, z) == block.blockID ? false : super.shouldSideBeRendered(access, x, y, z, side);
}
@Override
public Packet getDescriptionPacket()
{
return ResonantInduction.PACKET_ANNOTATION.getPacket(this);
}
@Override
public boolean canStore(ItemStack stack, int slot, ForgeDirection side)
{
return slot == 0 && stack.getItem() instanceof ItemImprint;
}
@Override
public void setFilter(ItemStack filter)
{
setInventorySlotContents(0, filter);
markUpdate();
}
@Override
public ItemStack getFilter()
{
return getStackInSlot(0);
}
}

View file

@ -1,302 +0,0 @@
package resonantinduction.archaic.filter;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.packet.Packet;
import resonant.lib.network.IPacketReceiver;
import resonant.lib.network.PacketHandler;
import resonant.lib.prefab.tile.TileAdvanced;
import resonantinduction.core.ResonantInduction;
import resonantinduction.archaic.filter.imprint.ItemImprint;
import com.google.common.io.ByteArrayDataInput;
public class TileImprinter extends TileAdvanced implements ISidedInventory, IPacketReceiver
{
public ItemStack[] inventory = new ItemStack[10];
@Override
public Packet getDescriptionPacket()
{
NBTTagCompound nbt = new NBTTagCompound();
this.writeToNBT(nbt);
return new PacketTile(this, nbt);
}
@Override
public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra)
{
try
{
this.readFromNBT(PacketHandler.readNBTTagCompound(data));
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* Inventory methods.
*/
@Override
public boolean canUpdate()
{
return false;
}
@Override
public int getSizeInventory()
{
return this.inventory.length;
}
/**
* Sets the given item stack to the specified slot in the inventory (can be crafting or armor
* sections).
*/
@Override
public void setInventorySlotContents(int slot, ItemStack itemStack)
{
if (slot < this.getSizeInventory())
{
inventory[slot] = itemStack;
}
}
@Override
public ItemStack decrStackSize(int i, int amount)
{
if (this.getStackInSlot(i) != null)
{
ItemStack stack;
if (this.getStackInSlot(i).stackSize <= amount)
{
stack = this.getStackInSlot(i);
this.setInventorySlotContents(i, null);
return stack;
}
else
{
stack = this.getStackInSlot(i).splitStack(amount);
if (this.getStackInSlot(i).stackSize == 0)
{
this.setInventorySlotContents(i, null);
}
return stack;
}
}
else
{
return null;
}
}
@Override
public ItemStack getStackInSlot(int slot)
{
return this.inventory[slot];
}
/**
* When some containers are closed they call this on each slot, then drop whatever it returns as
* an EntityItem - like when you close a workbench GUI.
*/
@Override
public ItemStack getStackInSlotOnClosing(int slot)
{
if (this.getStackInSlot(slot) != null)
{
ItemStack var2 = this.getStackInSlot(slot);
this.setInventorySlotContents(slot, null);
return var2;
}
else
{
return null;
}
}
@Override
public void openChest()
{
this.onInventoryChanged();
}
@Override
public void closeChest()
{
this.onInventoryChanged();
}
/** Updates all the output slots. Call this to update the Imprinter. */
@Override
public void onInventoryChanged()
{
if (!this.worldObj.isRemote)
{
/** Makes the stamping recipe for filters */
ItemStack fitlerStack = this.inventory[9];
if (fitlerStack != null && fitlerStack.getItem() instanceof ItemImprint)
{
ItemStack outputStack = fitlerStack.copy();
Set<ItemStack> filters = ItemImprint.getFilters(outputStack);
Set<ItemStack> toAdd = new HashSet<ItemStack>();
/** A hashset of to be imprinted items containing NO repeats. */
Set<ItemStack> toBeImprinted = new HashSet<ItemStack>();
check:
for (int i = 0; i < 9; i++)
{
ItemStack stackInInventory = inventory[i];
if (stackInInventory != null)
{
for (ItemStack check : toBeImprinted)
{
if (check.isItemEqual(stackInInventory))
continue check;
}
toBeImprinted.add(stackInInventory);
}
}
for (ItemStack stackInInventory : toBeImprinted)
{
Iterator<ItemStack> it = filters.iterator();
boolean removed = false;
while (it.hasNext())
{
ItemStack filteredStack = it.next();
if (filteredStack.isItemEqual(stackInInventory))
{
it.remove();
removed = true;
}
}
if (!removed)
toAdd.add(stackInInventory);
}
filters.addAll(toAdd);
ItemImprint.setFilters(outputStack, filters);
this.inventory[9] = outputStack;
}
}
}
// ///////////////////////////////////////
// // Save And Data processing //////
// ///////////////////////////////////////
/** NBT Data */
@Override
public void readFromNBT(NBTTagCompound nbt)
{
super.readFromNBT(nbt);
NBTTagList var2 = nbt.getTagList("Items");
this.inventory = new ItemStack[10];
for (int i = 0; i < var2.tagCount(); ++i)
{
NBTTagCompound var4 = (NBTTagCompound) var2.tagAt(i);
byte var5 = var4.getByte("Slot");
if (var5 >= 0 && var5 < this.getSizeInventory())
{
this.setInventorySlotContents(var5, ItemStack.loadItemStackFromNBT(var4));
}
}
}
/** Writes a tile entity to NBT. */
@Override
public void writeToNBT(NBTTagCompound nbt)
{
super.writeToNBT(nbt);
NBTTagList var2 = new NBTTagList();
for (int i = 0; i < this.getSizeInventory(); ++i)
{
if (this.getStackInSlot(i) != null)
{
NBTTagCompound var4 = new NBTTagCompound();
var4.setByte("Slot", (byte) i);
this.getStackInSlot(i).writeToNBT(var4);
var2.appendTag(var4);
}
}
nbt.setTag("Items", var2);
}
// ///////////////////////////////////////
// // Inventory Access side Methods //////
// ///////////////////////////////////////
@Override
public boolean isInvNameLocalized()
{
return false;
}
@Override
public String getInvName()
{
return getBlockType().getLocalizedName();
}
@Override
public boolean isItemValidForSlot(int i, ItemStack itemstack)
{
return true;
}
@Override
public int getInventoryStackLimit()
{
return 64;
}
@Override
public boolean isUseableByPlayer(EntityPlayer entityplayer)
{
return this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : entityplayer.getDistanceSq(this.xCoord + 0.5D, this.yCoord + 0.5D, this.zCoord + 0.5D) <= 64.0D;
}
@Override
public int[] getAccessibleSlotsFromSide(int side)
{
return side == 1 ? new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 } : new int[10];
}
@Override
public boolean canInsertItem(int slot, ItemStack itemstack, int side)
{
return this.isItemValidForSlot(slot, itemstack);
}
@Override
public boolean canExtractItem(int slot, ItemStack itemstack, int side)
{
return this.isItemValidForSlot(slot, itemstack);
}
}

View file

@ -1,81 +0,0 @@
package resonantinduction.archaic.filter.imprint;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import resonant.api.IFilterable;
/**
* Extend this block class if a filter is allowed to be placed inside of this block.
*
* @author Calclavia
*/
public abstract class BlockImprintable extends Block
{
public BlockImprintable(Material material)
{
super(material);
}
/** Allows filters to be placed inside of this block. */
@Override
public boolean onMachineActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9)
{
TileEntity tileEntity = world.getTileEntity(x, y, z);
if (tileEntity instanceof IFilterable)
{
ItemStack containingStack = ((IFilterable) tileEntity).getFilter();
if (containingStack != null)
{
if (!world.isRemote)
{
EntityItem dropStack = new EntityItem(world, player.posX, player.posY, player.posZ, containingStack);
dropStack.delayBeforeCanPickup = 0;
world.spawnEntityInWorld(dropStack);
}
((IFilterable) tileEntity).setFilter(null);
return true;
}
else
{
if (player.getCurrentEquippedItem() != null)
{
if (player.getCurrentEquippedItem().getItem() instanceof ItemImprint)
{
((IFilterable) tileEntity).setFilter(player.getCurrentEquippedItem());
player.inventory.setInventorySlotContents(player.inventory.currentItem, null);
return true;
}
}
}
}
return false;
}
@Override
public boolean onSneakUseWrench(World world, int x, int y, int z, EntityPlayer par5EntityPlayer, int side, float hitX, float hitY, float hitZ)
{
TileEntity tileEntity = world.getTileEntity(x, y, z);
if (tileEntity != null)
{
if (tileEntity instanceof TileFilterable)
{
((TileFilterable) tileEntity).toggleInversion();
world.markBlockForRenderUpdate(x, y, z);
world.markBlockForUpdate(x, y, z);
}
}
return true;
}
}

View file

@ -43,14 +43,14 @@ object TileGrate {
@SideOnly( Side.CLIENT )
private var iconSide : IIcon = _
class ComparableVector( var position : Vector3, var iterations : Int ) extends Comparable[ _ ] {
class ComparableVector( var position : Vector3, var iterations : Int ) extends Comparable[Vector3] {
override def compareTo( obj : AnyRef ) : Int = {
override def compareTo( obj : Vector3 ) : Int = {
val wr = obj.asInstanceOf[ ComparableVector ]
if ( this.position.y == wr.position.y ) {
return this.iterations - wr.iterations
}
this.position.yi() - wr.position.yi()
this.position.yi - wr.position.yi
}
}
}

View file

@ -9,6 +9,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidContainerItem;
import resonant.lib.utility.LanguageUtility;
@ -46,7 +47,7 @@ public class ItemBlockTank extends ItemBlock implements IFluidContainerItem
if (fluid != null)
{
list.add("Fluid: " + fluid.getFluid().getLocalizedName());
list.add("Volume: " + UnitDisplay.getDisplay(fluid.amount, Unit.LITER, UnitPrefix.MILLI));
list.add("Volume: " + new UnitDisplay(Unit.LITER, fluid.amount));
}
}
}
@ -64,14 +65,14 @@ public class ItemBlockTank extends ItemBlock implements IFluidContainerItem
@Override
public String getUnlocalizedName(ItemStack itemStack)
{
String translation = LanguageUtility.getLocal(Block.blocksList[this.getBlock()].getUnlocalizedName() + "." + itemStack.getItemDamage());
String translation = LanguageUtility.getLocal(getUnlocalizedName() + "." + itemStack.getItemDamage());
if (translation == null || translation.isEmpty())
{
return Block.blocksList[this.getBlock()].getUnlocalizedName();
return getUnlocalizedName();
}
return Block.blocksList[this.getBlock()].getUnlocalizedName() + "." + itemStack.getItemDamage();
return getUnlocalizedName() + "." + itemStack.getItemDamage();
}
@Override
@ -82,9 +83,7 @@ public class ItemBlockTank extends ItemBlock implements IFluidContainerItem
TileEntity tile = world.getTileEntity(x, y, z);
if (tile instanceof TileFluidDistribution)
{
((TileFluidDistribution) tile).setSubID(stack.getItemDamage());
((TileFluidDistribution) tile).getForwardTank().fill(getFluid(stack), true);
((TileFluidDistribution) tile).getForwardTank().fill(ForgeDirection.UNKNOWN, getFluid(stack), true);
}
return true;
}

View file

@ -5,6 +5,7 @@ import java.util.ArrayList;
import java.util.List;
import archaic.Archaic;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
@ -34,6 +35,7 @@ import resonantinduction.core.grid.fluid.distribution.TFluidDistributor;
import resonantinduction.core.grid.fluid.distribution.TankGrid;
import resonantinduction.core.grid.fluid.distribution.TileFluidDistribution;
import universalelectricity.api.UniversalElectricity;
import universalelectricity.api.core.grid.INode;
import universalelectricity.core.transform.vector.Vector3;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@ -49,20 +51,20 @@ public class TileTank extends TileFluidDistribution implements IComparatorInputO
public TileTank()
{
super(UniversalElectricity.machine, VOLUME * FluidContainerRegistry.BUCKET_VOLUME);
isOpaqueCube = false;
normalRender = false;
itemBlock = ItemBlockTank.class;
super(Material.iron, VOLUME * FluidContainerRegistry.BUCKET_VOLUME);
isOpaqueCube(false);
normalRender(false);
itemBlock(ItemBlockTank.class);
}
@Override
public boolean shouldSideBeRendered(IBlockAccess access, int x, int y, int z, int side)
{
return access != null && block != null && access.getBlockId(x, y, z) != block.blockID;
return access.getBlock(x, y, z) != getBlockType();
}
@Override
protected boolean use(EntityPlayer player, int side, Vector3 vector3)
public boolean use(EntityPlayer player, int side, Vector3 vector3)
{
if (!world().isRemote)
{
@ -204,7 +206,27 @@ public class TileTank extends TileFluidDistribution implements IComparatorInputO
};
}
public static class ItemRenderer implements ISimpleItemRenderer
@Override
public FluidTank getTank() {
return null;
}
@Override
public FluidTank tank() {
return null;
}
@Override
public void tank_$eq(FluidTank tank) {
}
@Override
public INode getNode(Class<? extends INode> nodeType, ForgeDirection from) {
return null;
}
public static class ItemRenderer implements ISimpleItemRenderer
{
public static ItemRenderer instance = new ItemRenderer();

View file

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

View file

@ -22,7 +22,7 @@ import resonant.engine.ResonantEngine;
import resonant.lib.network.discriminator.PacketTile;
import resonant.lib.network.discriminator.PacketType;
import resonant.lib.network.handle.IPacketIDReceiver;
import resonantinduction.archaic.filter.imprint.TileFilterable;
import resonantinduction.archaic.blocks.TileFilterable;
import resonantinduction.core.Reference;
import resonantinduction.mechanical.Mechanical;

View file

@ -17,7 +17,7 @@ import resonant.engine.ResonantEngine;
import resonant.lib.network.discriminator.PacketTile;
import resonant.lib.network.discriminator.PacketType;
import resonant.lib.network.handle.IPacketIDReceiver;
import resonantinduction.archaic.filter.imprint.TileFilterable;
import resonantinduction.archaic.blocks.TileFilterable;
import universalelectricity.core.transform.vector.Vector3;
/** @author Darkguardsman */