v4.2.0 Beta #1

Sorry, changelog is too big.  To be precise, *ENERGY.*
This commit is contained in:
Aidan Brady 2012-10-02 14:39:40 -04:00
parent 4479f8becf
commit 44bb93be1e
66 changed files with 3038 additions and 1744 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -0,0 +1,67 @@
package net.uberkat.obsidian.api;
import java.util.List;
import ic2.api.IWrenchable;
import net.minecraft.src.*;
import net.minecraftforge.common.ISidedInventory;
/**
* A group of common methods used by all Obsidian Ingots machines.
* @author AidanBrady
*
*/
public interface IElectricMachine extends IInventory, ISidedInventory, IWrenchable, INetworkedMachine
{
/**
* Update call for machines. Use instead of updateEntity() - it's called every tick.
*/
public void onUpdate();
/**
* Whether or not this machine can operate.
* @return can operate
*/
public boolean canOperate();
/**
* Runs this machine's operation -- or smelts the item.
*/
public void operate();
/**
* Sends a tile entity packet to the server.
*/
public void sendPacket();
/**
* Sends a tile entity packet to the server with a defined range.
*/
public void sendPacketWithRange();
/**
* Gets the recipe vector from the machine tile entity.
* @return recipes
*/
public List getRecipes();
/**
* Gets the scaled charge level for the GUI.
* @param i - control
* @return scaled charge level
*/
public int getScaledChargeLevel(int i);
/**
* Gets the scaled progress for the GUI.
* @param i - control
* @return scaled progress
*/
public int getScaledProgress(int i);
/**
* Sets this machine's active state, sending a packet to the server if it differs from the previous update.
* @param active
*/
public void setActive(boolean active);
}

View file

@ -0,0 +1,59 @@
package net.uberkat.obsidian.api;
import net.minecraft.src.*;
/**
* Implement this in your item class if it can store or transfer energy.
* @author AidanBrady
*
*/
public interface IEnergizedItem
{
/**
* Gets the amount of energy the item has from NBT storage.
* @param itemstack
* @return amount of energy
*/
public int getEnergy(ItemStack itemstack);
/**
* Sets the energy the item has with NBT.
* @param itemstack
* @param energy
*/
public void setEnergy(ItemStack itemstack, int energy);
/**
* Gets the maximum amount of energy this item can hold.
* @return maximum energy
*/
public int getMaxEnergy();
/**
* Gets the rate of transfer this item can handle.
* @return
*/
public int getRate();
/**
* Charges the item with the defined amount of energy.
* @param itemstack
* @param amount
* @return leftover energy
*/
public int charge(ItemStack itemstack, int amount);
/**
* Removes the defined amount of energy from the item.
* @param itemstack
* @param amount
* @return leftover energy
*/
public int discharge(ItemStack itemstack, int amount);
/**
* Whether or not this item's energy can be used.
* @return if energy can be used
*/
public boolean canCharge();
}

View file

@ -1,4 +1,4 @@
package net.uberkat.obsidian.common;
package net.uberkat.obsidian.api;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.NetworkManager;

View file

@ -29,13 +29,13 @@ public class BlockMachine extends BlockContainer
super(id, Material.iron);
setHardness(3.5F);
setResistance(8F);
setCreativeTab(CreativeTabs.tabDeco);
setCreativeTab(CreativeTabs.tabDecorations);
setRequiresSelfNotify();
}
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving entityliving)
{
TileEntityMachine tileEntity = (TileEntityMachine)world.getBlockTileEntity(x, y, z);
TileEntityBasicMachine tileEntity = (TileEntityBasicMachine)world.getBlockTileEntity(x, y, z);
int side = MathHelper.floor_double((double)(entityliving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
int change = 3;
@ -53,7 +53,7 @@ public class BlockMachine extends BlockContainer
@SideOnly(Side.CLIENT)
public void randomDisplayTick(World world, int x, int y, int z, Random random)
{
TileEntityMachine tileEntity = (TileEntityMachine)world.getBlockTileEntity(x, y, z);
TileEntityBasicMachine tileEntity = (TileEntityBasicMachine)world.getBlockTileEntity(x, y, z);
if (isActive(world, x, y, z))
{
float var7 = (float)x + 0.5F;
@ -150,7 +150,7 @@ public class BlockMachine extends BlockContainer
public int getBlockTexture(IBlockAccess world, int x, int y, int z, int side)
{
int metadata = world.getBlockMetadata(x, y, z);
TileEntityMachine tileEntity = (TileEntityMachine)world.getBlockTileEntity(x, y, z);
TileEntityBasicMachine tileEntity = (TileEntityBasicMachine)world.getBlockTileEntity(x, y, z);
if(metadata == 0)
{
@ -242,7 +242,7 @@ public class BlockMachine extends BlockContainer
*/
public boolean isActive(IBlockAccess world, int x, int y, int z)
{
TileEntityMachine tileEntity = (TileEntityMachine)world.getBlockTileEntity(x, y, z);
TileEntityBasicMachine tileEntity = (TileEntityBasicMachine)world.getBlockTileEntity(x, y, z);
if(tileEntity != null)
{
return tileEntity.isActive;
@ -252,7 +252,7 @@ public class BlockMachine extends BlockContainer
public void breakBlock(World world, int par2, int par3, int par4, int i1, int i2)
{
TileEntityMachine var5 = (TileEntityMachine)world.getBlockTileEntity(par2, par3, par4);
TileEntityBasicMachine var5 = (TileEntityBasicMachine)world.getBlockTileEntity(par2, par3, par4);
if (var5 != null)
{
@ -262,13 +262,13 @@ public class BlockMachine extends BlockContainer
if (var7 != null)
{
float var8 = this.machineRand.nextFloat() * 0.8F + 0.1F;
float var9 = this.machineRand.nextFloat() * 0.8F + 0.1F;
float var10 = this.machineRand.nextFloat() * 0.8F + 0.1F;
float var8 = machineRand.nextFloat() * 0.8F + 0.1F;
float var9 = machineRand.nextFloat() * 0.8F + 0.1F;
float var10 = machineRand.nextFloat() * 0.8F + 0.1F;
while (var7.stackSize > 0)
{
int var11 = this.machineRand.nextInt(21) + 10;
int var11 = machineRand.nextInt(21) + 10;
if (var11 > var7.stackSize)
{
@ -284,9 +284,9 @@ public class BlockMachine extends BlockContainer
}
float var13 = 0.05F;
var12.motionX = (double)((float)this.machineRand.nextGaussian() * var13);
var12.motionY = (double)((float)this.machineRand.nextGaussian() * var13 + 0.2F);
var12.motionZ = (double)((float)this.machineRand.nextGaussian() * var13);
var12.motionX = (double)((float)machineRand.nextGaussian() * var13);
var12.motionY = (double)((float)machineRand.nextGaussian() * var13 + 0.2F);
var12.motionZ = (double)((float)machineRand.nextGaussian() * var13);
world.spawnEntityInWorld(var12);
}
}
@ -305,7 +305,7 @@ public class BlockMachine extends BlockContainer
}
else
{
TileEntityMachine tileEntity = (TileEntityMachine)world.getBlockTileEntity(x, y, z);
TileEntityBasicMachine tileEntity = (TileEntityBasicMachine)world.getBlockTileEntity(x, y, z);
int metadata = world.getBlockMetadata(x, y, z);
if (tileEntity != null)

View file

@ -23,6 +23,8 @@ public class BlockMulti extends Block
public BlockMulti(int i)
{
super(i, Material.iron);
setHardness(5F);
setResistance(10F);
setCreativeTab(CreativeTabs.tabBlock);
setRequiresSelfNotify();
}
@ -68,7 +70,7 @@ public class BlockMulti extends Block
{
if(entityplayer.isSneaking())
{
entityplayer.openGui(ObsidianIngots.instance, 19, world, x, y, z);
entityplayer.openGui(ObsidianIngots.instance, 1, world, x, y, z);
return true;
}
}

View file

@ -17,6 +17,8 @@ public class BlockOre extends Block
public BlockOre(int i)
{
super(i, Material.rock);
setHardness(3F);
setResistance(5F);
setCreativeTab(CreativeTabs.tabBlock);
setRequiresSelfNotify();
}

View file

@ -0,0 +1,214 @@
package net.uberkat.obsidian.common;
import ic2.api.EnergyNet;
import java.util.List;
import java.util.Random;
import cpw.mods.fml.common.Side;
import cpw.mods.fml.common.asm.SideOnly;
import net.minecraft.src.*;
import net.minecraftforge.common.ForgeDirection;
/**
* Block class for handling multiple ore block IDs.
* 0: Power Unit
* 1: Advanced Power Unit
* @author AidanBrady
*
*/
public class BlockPowerUnit extends BlockContainer
{
private Random powerRand = new Random();
public BlockPowerUnit(int id)
{
super(id, Material.iron);
setHardness(2F);
setResistance(4F);
setCreativeTab(CreativeTabs.tabDecorations);
setRequiresSelfNotify();
}
public int getBlockTextureFromSideAndMetadata(int side, int meta)
{
if(meta == 0)
{
if(side == 3)
{
return 23;
}
else {
return 24;
}
}
else if(meta == 1)
{
if(side == 3)
{
return 21;
}
else {
return 22;
}
}
return 0;
}
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving entityliving)
{
TileEntityPowerUnit tileEntity = (TileEntityPowerUnit)world.getBlockTileEntity(x, y, z);
int side = MathHelper.floor_double((double)(entityliving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
int change = 3;
switch(side)
{
case 0: change = 2; break;
case 1: change = 5; break;
case 2: change = 3; break;
case 3: change = 4; break;
}
tileEntity.setFacing((short)change);
}
public int damageDropped(int i)
{
return i;
}
@SideOnly(Side.CLIENT)
public void getSubBlocks(int i, CreativeTabs creativetabs, List list)
{
list.add(new ItemStack(i, 1, 0));
list.add(new ItemStack(i, 1, 1));
}
@SideOnly(Side.CLIENT)
public int getBlockTexture(IBlockAccess world, int x, int y, int z, int side)
{
int metadata = world.getBlockMetadata(x, y, z);
TileEntityPowerUnit tileEntity = (TileEntityPowerUnit)world.getBlockTileEntity(x, y, z);
if(metadata == 0)
{
if(side == tileEntity.facing)
{
return 23;
}
else {
return 24;
}
}
else if(metadata == 1)
{
if(side == tileEntity.facing)
{
return 21;
}
else {
return 22;
}
}
return 0;
}
public void breakBlock(World world, int par2, int par3, int par4, int i1, int i2)
{
TileEntityPowerUnit var5 = (TileEntityPowerUnit)world.getBlockTileEntity(par2, par3, par4);
if (var5 != null)
{
for (int var6 = 0; var6 < var5.getSizeInventory(); ++var6)
{
ItemStack var7 = var5.getStackInSlot(var6);
if (var7 != null)
{
float var8 = powerRand.nextFloat() * 0.8F + 0.1F;
float var9 = powerRand.nextFloat() * 0.8F + 0.1F;
float var10 = powerRand.nextFloat() * 0.8F + 0.1F;
while (var7.stackSize > 0)
{
int var11 = powerRand.nextInt(21) + 10;
if (var11 > var7.stackSize)
{
var11 = var7.stackSize;
}
var7.stackSize -= var11;
EntityItem var12 = new EntityItem(world, (double)((float)par2 + var8), (double)((float)par3 + var9), (double)((float)par4 + var10), new ItemStack(var7.itemID, var11, var7.getItemDamage()));
if (var7.hasTagCompound())
{
var12.item.setTagCompound((NBTTagCompound)var7.getTagCompound().copy());
}
float var13 = 0.05F;
var12.motionX = (double)((float)powerRand.nextGaussian() * var13);
var12.motionY = (double)((float)powerRand.nextGaussian() * var13 + 0.2F);
var12.motionZ = (double)((float)powerRand.nextGaussian() * var13);
world.spawnEntityInWorld(var12);
}
}
}
if(ObsidianIngots.hooks.IC2Loaded)
{
EnergyNet.getForWorld(var5.worldObj).removeTileEntity(var5);
}
var5.invalidate();
}
super.breakBlock(world, par2, par3, par4, i1, i2);
}
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityplayer, int i1, float f1, float f2, float f3)
{
if (world.isRemote)
{
return true;
}
else
{
TileEntityPowerUnit tileEntity = (TileEntityPowerUnit)world.getBlockTileEntity(x, y, z);
int metadata = world.getBlockMetadata(x, y, z);
if (tileEntity != null)
{
if(!entityplayer.isSneaking())
{
entityplayer.openGui(ObsidianIngots.instance, 8, world, x, y, z);
}
else {
return false;
}
}
return true;
}
}
public String getTextureFile()
{
return "/obsidian/terrain.png";
}
public TileEntity createNewTileEntity(World world, int metadata)
{
if(metadata == 0)
{
return new TileEntityPowerUnit();
}
else if(metadata == 1)
{
return new TileEntityAdvancedPowerUnit();
}
return null;
}
public TileEntity createNewTileEntity(World world)
{
return null;
}
}

View file

@ -50,12 +50,13 @@ public class CommonProxy
public void loadConfiguration()
{
ObsidianIngots.configuration.load();
ObsidianIngots.multiBlockID = ObsidianIngots.configuration.getOrCreateBlockIdProperty("MultiBlock", 3000).getInt();
ObsidianIngots.machineBlockID = ObsidianIngots.configuration.getOrCreateBlockIdProperty("MachineBlock", 3001).getInt();
ObsidianIngots.oreBlockID = ObsidianIngots.configuration.getOrCreateBlockIdProperty("OreBlock", 3002).getInt();
ObsidianIngots.obsidianTNTID = ObsidianIngots.configuration.getOrCreateBlockIdProperty("ObsidianTNT", 3003).getInt();
ObsidianIngots.extrasEnabled = ObsidianIngots.configuration.getOrCreateBooleanProperty("ExtrasEnabled", Configuration.CATEGORY_GENERAL, true).getBoolean(true);
ObsidianIngots.oreGenerationEnabled = ObsidianIngots.configuration.getOrCreateBooleanProperty("OreGenerationEnabled", Configuration.CATEGORY_GENERAL, true).getBoolean(true);
ObsidianIngots.multiBlockID = ObsidianIngots.configuration.getBlock("MultiBlock", 3000).getInt();
ObsidianIngots.machineBlockID = ObsidianIngots.configuration.getBlock("MachineBlock", 3001).getInt();
ObsidianIngots.oreBlockID = ObsidianIngots.configuration.getBlock("OreBlock", 3002).getInt();
ObsidianIngots.obsidianTNTID = ObsidianIngots.configuration.getBlock("ObsidianTNT", 3003).getInt();
ObsidianIngots.powerUnitID = ObsidianIngots.configuration.getBlock("PowerUnit", 3004).getInt();
ObsidianIngots.extrasEnabled = ObsidianIngots.configuration.get("ExtrasEnabled", Configuration.CATEGORY_GENERAL, true).getBoolean(true);
ObsidianIngots.oreGenerationEnabled = ObsidianIngots.configuration.get("OreGenerationEnabled", Configuration.CATEGORY_GENERAL, true).getBoolean(true);
ObsidianIngots.configuration.save();
}
@ -99,20 +100,23 @@ public class CommonProxy
switch(ID)
{
case 3:
TileEntityEnrichmentChamber tileentity = (TileEntityEnrichmentChamber)world.getBlockTileEntity(x, y, z);
return new ContainerEnrichmentChamber(player.inventory, tileentity);
TileEntityElectricMachine tileentity = (TileEntityElectricMachine)world.getBlockTileEntity(x, y, z);
return new ContainerElectricMachine(player.inventory, tileentity);
case 4:
TileEntityPlatinumCompressor tileentity1 = (TileEntityPlatinumCompressor)world.getBlockTileEntity(x, y, z);
return new ContainerPlatinumCompressor(player.inventory, tileentity1);
TileEntityAdvancedElectricMachine tileentity1 = (TileEntityAdvancedElectricMachine)world.getBlockTileEntity(x, y, z);
return new ContainerAdvancedElectricMachine(player.inventory, tileentity1);
case 5:
TileEntityCombiner tileentity2 = (TileEntityCombiner)world.getBlockTileEntity(x, y, z);
return new ContainerCombiner(player.inventory, tileentity2);
TileEntityAdvancedElectricMachine tileentity2 = (TileEntityAdvancedElectricMachine)world.getBlockTileEntity(x, y, z);
return new ContainerAdvancedElectricMachine(player.inventory, tileentity2);
case 6:
TileEntityCrusher tileentity3 = (TileEntityCrusher)world.getBlockTileEntity(x, y, z);
return new ContainerCrusher(player.inventory, tileentity3);
TileEntityElectricMachine tileentity3 = (TileEntityElectricMachine)world.getBlockTileEntity(x, y, z);
return new ContainerElectricMachine(player.inventory, tileentity3);
case 7:
TileEntityTheoreticalElementizer tileentity4 = (TileEntityTheoreticalElementizer)world.getBlockTileEntity(x, y, z);
return new ContainerTheoreticalElementizer(player.inventory, tileentity4);
TileEntityAdvancedElectricMachine tileentity4 = (TileEntityAdvancedElectricMachine)world.getBlockTileEntity(x, y, z);
return new ContainerAdvancedElectricMachine(player.inventory, tileentity4);
case 8:
TileEntityPowerUnit tileentity5 = (TileEntityPowerUnit)world.getBlockTileEntity(x, y, z);
return new ContainerPowerUnit(player.inventory, tileentity5);
}
return null;
}

View file

@ -0,0 +1,121 @@
package net.uberkat.obsidian.common;
import ic2.api.IElectricItem;
import universalelectricity.implement.IItemElectric;
import net.minecraft.src.*;
import net.uberkat.obsidian.api.IEnergizedItem;
public class ContainerAdvancedElectricMachine extends Container
{
private TileEntityAdvancedElectricMachine tileEntity;
public ContainerAdvancedElectricMachine(InventoryPlayer par1InventoryPlayer, TileEntityAdvancedElectricMachine tentity)
{
tileEntity = tentity;
addSlotToContainer(new Slot(tentity, 0, 56, 17));
addSlotToContainer(new Slot(tentity, 1, 56, 53));
addSlotToContainer(new SlotFurnace(par1InventoryPlayer.player, tentity, 2, 116, 35));
addSlotToContainer(new SlotEnergy(tentity, 3, 31, 35));
int var3;
for (var3 = 0; var3 < 3; ++var3)
{
for (int var4 = 0; var4 < 9; ++var4)
{
addSlotToContainer(new Slot(par1InventoryPlayer, var4 + var3 * 9 + 9, 8 + var4 * 18, 84 + var3 * 18));
}
}
for (var3 = 0; var3 < 9; ++var3)
{
addSlotToContainer(new Slot(par1InventoryPlayer, var3, 8 + var3 * 18, 142));
}
}
public boolean canInteractWith(EntityPlayer par1EntityPlayer)
{
return tileEntity.isUseableByPlayer(par1EntityPlayer);
}
/**
* Called to transfer a stack from one inventory to the other eg. when shift clicking.
*/
public ItemStack transferStackInSlot(int slotID)
{
ItemStack stack = null;
Slot currentSlot = (Slot)inventorySlots.get(slotID);
if(currentSlot != null && currentSlot.getHasStack())
{
ItemStack slotStack = currentSlot.getStack();
stack = slotStack.copy();
if(slotStack.getItem() instanceof IEnergizedItem || slotStack.getItem() instanceof IItemElectric || slotStack.getItem() instanceof IElectricItem || slotStack.itemID == Item.redstone.shiftedIndex)
{
if(slotID != 0 && slotID != 1 && slotID != 2 && slotID != 3)
{
if (!mergeItemStack(slotStack, 3, 4, false))
{
return null;
}
}
else {
if(!mergeItemStack(slotStack, 4, inventorySlots.size(), true))
{
return null;
}
}
}
else if(tileEntity.getFuelTicks(slotStack) > 0)
{
if(slotID != 0 && slotID != 1 && slotID != 2 && slotID != 3)
{
if (!mergeItemStack(slotStack, 1, 2, false))
{
return null;
}
}
else {
if(!mergeItemStack(slotStack, 4, inventorySlots.size(), true))
{
return null;
}
}
}
else if(RecipeHandler.getOutput(slotStack, false, tileEntity.getRecipes()) != null)
{
if(slotID != 0 && slotID != 1 && slotID != 2 && slotID != 3)
{
if (!mergeItemStack(slotStack, 0, 1, false))
{
return null;
}
}
else {
if(!mergeItemStack(slotStack, 4, inventorySlots.size(), true))
{
return null;
}
}
}
if (slotStack.stackSize == 0)
{
currentSlot.putStack((ItemStack)null);
}
else
{
currentSlot.onSlotChanged();
}
if (slotStack.stackSize == stack.stackSize)
{
return null;
}
currentSlot.onPickupFromSlot(slotStack);
}
return stack;
}
}

View file

@ -1,163 +0,0 @@
package net.uberkat.obsidian.common;
import net.minecraft.src.*;
public class ContainerCombiner extends Container
{
private TileEntityCombiner machine;
private int lastCookTime = 0;
private int lastBurnTime = 0;
private int lastItemBurnTime = 0;
public ContainerCombiner(InventoryPlayer par1InventoryPlayer, TileEntityCombiner par2TileEntityCombiner)
{
this.machine = par2TileEntityCombiner;
this.addSlotToContainer(new Slot(par2TileEntityCombiner, 0, 56, 17));
this.addSlotToContainer(new Slot(par2TileEntityCombiner, 1, 56, 53));
this.addSlotToContainer(new SlotFurnace(par1InventoryPlayer.player, par2TileEntityCombiner, 2, 116, 35));
int var3;
for (var3 = 0; var3 < 3; ++var3)
{
for (int var4 = 0; var4 < 9; ++var4)
{
this.addSlotToContainer(new Slot(par1InventoryPlayer, var4 + var3 * 9 + 9, 8 + var4 * 18, 84 + var3 * 18));
}
}
for (var3 = 0; var3 < 9; ++var3)
{
this.addSlotToContainer(new Slot(par1InventoryPlayer, var3, 8 + var3 * 18, 142));
}
}
/**
* Updates crafting matrix; called from onCraftMatrixChanged. Args: none
*/
public void updateCraftingResults()
{
super.updateCraftingResults();
for (int var1 = 0; var1 < this.crafters.size(); ++var1)
{
ICrafting var2 = (ICrafting)this.crafters.get(var1);
if (this.lastCookTime != this.machine.machineCookTime)
{
var2.updateCraftingInventoryInfo(this, 0, this.machine.machineCookTime);
}
if (this.lastBurnTime != this.machine.machineBurnTime)
{
var2.updateCraftingInventoryInfo(this, 1, this.machine.machineBurnTime);
}
if (this.lastItemBurnTime != this.machine.currentItemBurnTime)
{
var2.updateCraftingInventoryInfo(this, 2, this.machine.currentItemBurnTime);
}
}
this.lastCookTime = this.machine.machineCookTime;
this.lastBurnTime = this.machine.machineBurnTime;
this.lastItemBurnTime = this.machine.currentItemBurnTime;
}
public void updateProgressBar(int par1, int par2)
{
if (par1 == 0)
{
this.machine.machineCookTime = par2;
}
if (par1 == 1)
{
this.machine.machineBurnTime = par2;
}
if (par1 == 2)
{
this.machine.currentItemBurnTime = par2;
}
}
public boolean canInteractWith(EntityPlayer par1EntityPlayer)
{
return this.machine.isUseableByPlayer(par1EntityPlayer);
}
/**
* Called to transfer a stack from one inventory to the other eg. when shift clicking.
*/
public ItemStack transferStackInSlot(int par1)
{
ItemStack var2 = null;
Slot var3 = (Slot)this.inventorySlots.get(par1);
if (var3 != null && var3.getHasStack())
{
ItemStack var4 = var3.getStack();
var2 = var4.copy();
if (par1 == 2)
{
if (!this.mergeItemStack(var4, 3, 39, true))
{
return null;
}
var3.onSlotChange(var4, var2);
}
else if (par1 != 1 && par1 != 0)
{
if (MachineRecipes.getOutput(var4, false, machine.recipes) != null)
{
if (!this.mergeItemStack(var4, 0, 1, false))
{
return null;
}
}
else if (TileEntityCombiner.isItemFuel(var4))
{
if (!this.mergeItemStack(var4, 1, 2, false))
{
return null;
}
}
else if (par1 >= 3 && par1 < 30)
{
if (!this.mergeItemStack(var4, 30, 39, false))
{
return null;
}
}
else if (par1 >= 30 && par1 < 39 && !this.mergeItemStack(var4, 3, 30, false))
{
return null;
}
}
else if (!this.mergeItemStack(var4, 3, 39, false))
{
return null;
}
if (var4.stackSize == 0)
{
var3.putStack((ItemStack)null);
}
else
{
var3.onSlotChanged();
}
if (var4.stackSize == var2.stackSize)
{
return null;
}
var3.onPickupFromSlot(var4);
}
return var2;
}
}

View file

@ -1,163 +0,0 @@
package net.uberkat.obsidian.common;
import net.minecraft.src.*;
public class ContainerCrusher extends Container
{
private TileEntityCrusher machine;
private int lastCookTime = 0;
private int lastBurnTime = 0;
private int lastItemBurnTime = 0;
public ContainerCrusher(InventoryPlayer par1InventoryPlayer, TileEntityCrusher par2TileEntityCrusher)
{
this.machine = par2TileEntityCrusher;
this.addSlotToContainer(new Slot(par2TileEntityCrusher, 0, 56, 17));
this.addSlotToContainer(new Slot(par2TileEntityCrusher, 1, 56, 53));
this.addSlotToContainer(new SlotFurnace(par1InventoryPlayer.player, par2TileEntityCrusher, 2, 116, 35));
int var3;
for (var3 = 0; var3 < 3; ++var3)
{
for (int var4 = 0; var4 < 9; ++var4)
{
this.addSlotToContainer(new Slot(par1InventoryPlayer, var4 + var3 * 9 + 9, 8 + var4 * 18, 84 + var3 * 18));
}
}
for (var3 = 0; var3 < 9; ++var3)
{
this.addSlotToContainer(new Slot(par1InventoryPlayer, var3, 8 + var3 * 18, 142));
}
}
/**
* Updates crafting matrix; called from onCraftMatrixChanged. Args: none
*/
public void updateCraftingResults()
{
super.updateCraftingResults();
for (int var1 = 0; var1 < this.crafters.size(); ++var1)
{
ICrafting var2 = (ICrafting)this.crafters.get(var1);
if (this.lastCookTime != this.machine.machineCookTime)
{
var2.updateCraftingInventoryInfo(this, 0, this.machine.machineCookTime);
}
if (this.lastBurnTime != this.machine.machineBurnTime)
{
var2.updateCraftingInventoryInfo(this, 1, this.machine.machineBurnTime);
}
if (this.lastItemBurnTime != this.machine.currentItemBurnTime)
{
var2.updateCraftingInventoryInfo(this, 2, this.machine.currentItemBurnTime);
}
}
this.lastCookTime = this.machine.machineCookTime;
this.lastBurnTime = this.machine.machineBurnTime;
this.lastItemBurnTime = this.machine.currentItemBurnTime;
}
public void updateProgressBar(int par1, int par2)
{
if (par1 == 0)
{
this.machine.machineCookTime = par2;
}
if (par1 == 1)
{
this.machine.machineBurnTime = par2;
}
if (par1 == 2)
{
this.machine.currentItemBurnTime = par2;
}
}
public boolean canInteractWith(EntityPlayer par1EntityPlayer)
{
return this.machine.isUseableByPlayer(par1EntityPlayer);
}
/**
* Called to transfer a stack from one inventory to the other eg. when shift clicking.
*/
public ItemStack transferStackInSlot(int par1)
{
ItemStack var2 = null;
Slot var3 = (Slot)this.inventorySlots.get(par1);
if (var3 != null && var3.getHasStack())
{
ItemStack var4 = var3.getStack();
var2 = var4.copy();
if (par1 == 2)
{
if (!this.mergeItemStack(var4, 3, 39, true))
{
return null;
}
var3.onSlotChange(var4, var2);
}
else if (par1 != 1 && par1 != 0)
{
if (MachineRecipes.getOutput(var4, false, machine.recipes) != null)
{
if (!this.mergeItemStack(var4, 0, 1, false))
{
return null;
}
}
else if (TileEntityCrusher.isItemFuel(var4))
{
if (!this.mergeItemStack(var4, 1, 2, false))
{
return null;
}
}
else if (par1 >= 3 && par1 < 30)
{
if (!this.mergeItemStack(var4, 30, 39, false))
{
return null;
}
}
else if (par1 >= 30 && par1 < 39 && !this.mergeItemStack(var4, 3, 30, false))
{
return null;
}
}
else if (!this.mergeItemStack(var4, 3, 39, false))
{
return null;
}
if (var4.stackSize == 0)
{
var3.putStack((ItemStack)null);
}
else
{
var3.onSlotChanged();
}
if (var4.stackSize == var2.stackSize)
{
return null;
}
var3.onPickupFromSlot(var4);
}
return var2;
}
}

View file

@ -0,0 +1,105 @@
package net.uberkat.obsidian.common;
import ic2.api.IElectricItem;
import universalelectricity.implement.IItemElectric;
import net.minecraft.src.*;
import net.uberkat.obsidian.api.IEnergizedItem;
public class ContainerElectricMachine extends Container
{
private TileEntityElectricMachine tileEntity;
public ContainerElectricMachine(InventoryPlayer par1InventoryPlayer, TileEntityElectricMachine tentity)
{
this.tileEntity = tentity;
this.addSlotToContainer(new Slot(tentity, 0, 56, 17));
this.addSlotToContainer(new SlotEnergy(tentity, 1, 56, 53));
this.addSlotToContainer(new SlotFurnace(par1InventoryPlayer.player, tentity, 2, 116, 35));
int var3;
for (var3 = 0; var3 < 3; ++var3)
{
for (int var4 = 0; var4 < 9; ++var4)
{
this.addSlotToContainer(new Slot(par1InventoryPlayer, var4 + var3 * 9 + 9, 8 + var4 * 18, 84 + var3 * 18));
}
}
for (var3 = 0; var3 < 9; ++var3)
{
this.addSlotToContainer(new Slot(par1InventoryPlayer, var3, 8 + var3 * 18, 142));
}
}
public boolean canInteractWith(EntityPlayer par1EntityPlayer)
{
return this.tileEntity.isUseableByPlayer(par1EntityPlayer);
}
/**
* Called to transfer a stack from one inventory to the other eg. when shift clicking.
*/
public ItemStack transferStackInSlot(int slotID)
{
ItemStack stack = null;
Slot currentSlot = (Slot)inventorySlots.get(slotID);
if(currentSlot != null && currentSlot.getHasStack())
{
ItemStack slotStack = currentSlot.getStack();
stack = slotStack.copy();
if(slotStack.getItem() instanceof IEnergizedItem || slotStack.getItem() instanceof IItemElectric || slotStack.getItem() instanceof IElectricItem || slotStack.itemID == Item.redstone.shiftedIndex)
{
if(slotID != 1)
{
if (!mergeItemStack(slotStack, 1, 2, false))
{
return null;
}
}
else if(slotID == 1)
{
if(!mergeItemStack(slotStack, 3, inventorySlots.size(), false))
{
return null;
}
}
}
else if(RecipeHandler.getOutput(slotStack, false, tileEntity.getRecipes()) != null)
{
if(slotID != 0 && slotID != 1 && slotID != 2)
{
if (!mergeItemStack(slotStack, 0, 1, false))
{
return null;
}
}
else {
if(!mergeItemStack(slotStack, 3, inventorySlots.size(), true))
{
return null;
}
}
}
if (slotStack.stackSize == 0)
{
currentSlot.putStack((ItemStack)null);
}
else
{
currentSlot.onSlotChanged();
}
if (slotStack.stackSize == stack.stackSize)
{
return null;
}
currentSlot.onPickupFromSlot(slotStack);
}
return stack;
}
}

View file

@ -1,163 +0,0 @@
package net.uberkat.obsidian.common;
import net.minecraft.src.*;
public class ContainerEnrichmentChamber extends Container
{
private TileEntityEnrichmentChamber machine;
private int lastCookTime = 0;
private int lastBurnTime = 0;
private int lastItemBurnTime = 0;
public ContainerEnrichmentChamber(InventoryPlayer par1InventoryPlayer, TileEntityEnrichmentChamber par2TileEntityEnrichmentChamber)
{
this.machine = par2TileEntityEnrichmentChamber;
this.addSlotToContainer(new Slot(par2TileEntityEnrichmentChamber, 0, 56, 17));
this.addSlotToContainer(new Slot(par2TileEntityEnrichmentChamber, 1, 56, 53));
this.addSlotToContainer(new SlotFurnace(par1InventoryPlayer.player, par2TileEntityEnrichmentChamber, 2, 116, 35));
int var3;
for (var3 = 0; var3 < 3; ++var3)
{
for (int var4 = 0; var4 < 9; ++var4)
{
this.addSlotToContainer(new Slot(par1InventoryPlayer, var4 + var3 * 9 + 9, 8 + var4 * 18, 84 + var3 * 18));
}
}
for (var3 = 0; var3 < 9; ++var3)
{
this.addSlotToContainer(new Slot(par1InventoryPlayer, var3, 8 + var3 * 18, 142));
}
}
/**
* Updates crafting matrix; called from onCraftMatrixChanged. Args: none
*/
public void updateCraftingResults()
{
super.updateCraftingResults();
for (int var1 = 0; var1 < this.crafters.size(); ++var1)
{
ICrafting var2 = (ICrafting)this.crafters.get(var1);
if (this.lastCookTime != this.machine.machineCookTime)
{
var2.updateCraftingInventoryInfo(this, 0, this.machine.machineCookTime);
}
if (this.lastBurnTime != this.machine.machineBurnTime)
{
var2.updateCraftingInventoryInfo(this, 1, this.machine.machineBurnTime);
}
if (this.lastItemBurnTime != this.machine.currentItemBurnTime)
{
var2.updateCraftingInventoryInfo(this, 2, this.machine.currentItemBurnTime);
}
}
this.lastCookTime = this.machine.machineCookTime;
this.lastBurnTime = this.machine.machineBurnTime;
this.lastItemBurnTime = this.machine.currentItemBurnTime;
}
public void updateProgressBar(int par1, int par2)
{
if (par1 == 0)
{
this.machine.machineCookTime = par2;
}
if (par1 == 1)
{
this.machine.machineBurnTime = par2;
}
if (par1 == 2)
{
this.machine.currentItemBurnTime = par2;
}
}
public boolean canInteractWith(EntityPlayer par1EntityPlayer)
{
return this.machine.isUseableByPlayer(par1EntityPlayer);
}
/**
* Called to transfer a stack from one inventory to the other eg. when shift clicking.
*/
public ItemStack transferStackInSlot(int par1)
{
ItemStack var2 = null;
Slot var3 = (Slot)this.inventorySlots.get(par1);
if (var3 != null && var3.getHasStack())
{
ItemStack var4 = var3.getStack();
var2 = var4.copy();
if (par1 == 2)
{
if (!this.mergeItemStack(var4, 3, 39, true))
{
return null;
}
var3.onSlotChange(var4, var2);
}
else if (par1 != 1 && par1 != 0)
{
if (MachineRecipes.getOutput(var4, false, machine.recipes) != null)
{
if (!this.mergeItemStack(var4, 0, 1, false))
{
return null;
}
}
else if (TileEntityEnrichmentChamber.isItemFuel(var4))
{
if (!this.mergeItemStack(var4, 1, 2, false))
{
return null;
}
}
else if (par1 >= 3 && par1 < 30)
{
if (!this.mergeItemStack(var4, 30, 39, false))
{
return null;
}
}
else if (par1 >= 30 && par1 < 39 && !this.mergeItemStack(var4, 3, 30, false))
{
return null;
}
}
else if (!this.mergeItemStack(var4, 3, 39, false))
{
return null;
}
if (var4.stackSize == 0)
{
var3.putStack((ItemStack)null);
}
else
{
var3.onSlotChanged();
}
if (var4.stackSize == var2.stackSize)
{
return null;
}
var3.onPickupFromSlot(var4);
}
return var2;
}
}

View file

@ -1,163 +0,0 @@
package net.uberkat.obsidian.common;
import net.minecraft.src.*;
public class ContainerPlatinumCompressor extends Container
{
private TileEntityPlatinumCompressor machine;
private int lastCookTime = 0;
private int lastBurnTime = 0;
private int lastItemBurnTime = 0;
public ContainerPlatinumCompressor(InventoryPlayer par1InventoryPlayer, TileEntityPlatinumCompressor par2TileEntityPlatinumCompressor)
{
this.machine = par2TileEntityPlatinumCompressor;
this.addSlotToContainer(new Slot(par2TileEntityPlatinumCompressor, 0, 56, 17));
this.addSlotToContainer(new Slot(par2TileEntityPlatinumCompressor, 1, 56, 53));
this.addSlotToContainer(new SlotFurnace(par1InventoryPlayer.player, par2TileEntityPlatinumCompressor, 2, 116, 35));
int var3;
for (var3 = 0; var3 < 3; ++var3)
{
for (int var4 = 0; var4 < 9; ++var4)
{
this.addSlotToContainer(new Slot(par1InventoryPlayer, var4 + var3 * 9 + 9, 8 + var4 * 18, 84 + var3 * 18));
}
}
for (var3 = 0; var3 < 9; ++var3)
{
this.addSlotToContainer(new Slot(par1InventoryPlayer, var3, 8 + var3 * 18, 142));
}
}
/**
* Updates crafting matrix; called from onCraftMatrixChanged. Args: none
*/
public void updateCraftingResults()
{
super.updateCraftingResults();
for (int var1 = 0; var1 < this.crafters.size(); ++var1)
{
ICrafting var2 = (ICrafting)this.crafters.get(var1);
if (this.lastCookTime != this.machine.machineCookTime)
{
var2.updateCraftingInventoryInfo(this, 0, this.machine.machineCookTime);
}
if (this.lastBurnTime != this.machine.machineBurnTime)
{
var2.updateCraftingInventoryInfo(this, 1, this.machine.machineBurnTime);
}
if (this.lastItemBurnTime != this.machine.currentItemBurnTime)
{
var2.updateCraftingInventoryInfo(this, 2, this.machine.currentItemBurnTime);
}
}
this.lastCookTime = this.machine.machineCookTime;
this.lastBurnTime = this.machine.machineBurnTime;
this.lastItemBurnTime = this.machine.currentItemBurnTime;
}
public void updateProgressBar(int par1, int par2)
{
if (par1 == 0)
{
this.machine.machineCookTime = par2;
}
if (par1 == 1)
{
this.machine.machineBurnTime = par2;
}
if (par1 == 2)
{
this.machine.currentItemBurnTime = par2;
}
}
public boolean canInteractWith(EntityPlayer par1EntityPlayer)
{
return this.machine.isUseableByPlayer(par1EntityPlayer);
}
/**
* Called to transfer a stack from one inventory to the other eg. when shift clicking.
*/
public ItemStack transferStackInSlot(int par1)
{
ItemStack var2 = null;
Slot var3 = (Slot)this.inventorySlots.get(par1);
if (var3 != null && var3.getHasStack())
{
ItemStack var4 = var3.getStack();
var2 = var4.copy();
if (par1 == 2)
{
if (!this.mergeItemStack(var4, 3, 39, true))
{
return null;
}
var3.onSlotChange(var4, var2);
}
else if (par1 != 1 && par1 != 0)
{
if (MachineRecipes.getOutput(var4, false, machine.recipes) != null)
{
if (!this.mergeItemStack(var4, 0, 1, false))
{
return null;
}
}
else if (TileEntityPlatinumCompressor.isItemFuel(var4))
{
if (!this.mergeItemStack(var4, 1, 2, false))
{
return null;
}
}
else if (par1 >= 3 && par1 < 30)
{
if (!this.mergeItemStack(var4, 30, 39, false))
{
return null;
}
}
else if (par1 >= 30 && par1 < 39 && !this.mergeItemStack(var4, 3, 30, false))
{
return null;
}
}
else if (!this.mergeItemStack(var4, 3, 39, false))
{
return null;
}
if (var4.stackSize == 0)
{
var3.putStack((ItemStack)null);
}
else
{
var3.onSlotChanged();
}
if (var4.stackSize == var2.stackSize)
{
return null;
}
var3.onPickupFromSlot(var4);
}
return var2;
}
}

View file

@ -0,0 +1,99 @@
package net.uberkat.obsidian.common;
import ic2.api.IElectricItem;
import universalelectricity.implement.IItemElectric;
import net.uberkat.obsidian.api.*;
import net.minecraft.src.*;
public class ContainerPowerUnit extends Container
{
private TileEntityPowerUnit tileEntity;
public ContainerPowerUnit(InventoryPlayer inventory, TileEntityPowerUnit unit)
{
tileEntity = unit;
addSlotToContainer(new SlotEnergy(unit, 0, 8, 8));
addSlotToContainer(new SlotEnergy(unit, 1, 8, 40));
int var3;
for (var3 = 0; var3 < 3; ++var3)
{
for (int var4 = 0; var4 < 9; ++var4)
{
addSlotToContainer(new Slot(inventory, var4 + var3 * 9 + 9, 8 + var4 * 18, 84 + var3 * 18));
}
}
for (var3 = 0; var3 < 9; ++var3)
{
addSlotToContainer(new Slot(inventory, var3, 8 + var3 * 18, 142));
}
}
public boolean canInteractWith(EntityPlayer par1EntityPlayer)
{
return tileEntity.isUseableByPlayer(par1EntityPlayer);
}
public ItemStack transferStackInSlot(int slotID)
{
ItemStack stack = null;
Slot currentSlot = (Slot)inventorySlots.get(slotID);
if(currentSlot != null && currentSlot.getHasStack())
{
ItemStack slotStack = currentSlot.getStack();
stack = slotStack.copy();
if(slotStack.getItem() instanceof IEnergizedItem || slotStack.getItem() instanceof IItemElectric || slotStack.getItem() instanceof IElectricItem || slotStack.itemID == Item.redstone.shiftedIndex)
{
if(slotID != 0 && slotID != 1)
{
if (!mergeItemStack(slotStack, 1, 2, false))
{
if (!mergeItemStack(slotStack, 0, 1, false))
{
return null;
}
}
}
else if(slotID == 1)
{
if(!mergeItemStack(slotStack, 0, 1, false))
{
if(!mergeItemStack(slotStack, 2, inventorySlots.size(), false))
{
return null;
}
}
}
else if(slotID == 0)
{
if(!mergeItemStack(slotStack, 2, inventorySlots.size(), true))
{
return null;
}
}
}
if (slotStack.stackSize == 0)
{
currentSlot.putStack((ItemStack)null);
}
else
{
currentSlot.onSlotChanged();
}
if (slotStack.stackSize == stack.stackSize)
{
return null;
}
currentSlot.onPickupFromSlot(slotStack);
}
return stack;
}
}

View file

@ -1,163 +0,0 @@
package net.uberkat.obsidian.common;
import net.minecraft.src.*;
public class ContainerTheoreticalElementizer extends Container
{
private TileEntityTheoreticalElementizer machine;
private int lastCookTime = 0;
private int lastBurnTime = 0;
private int lastItemBurnTime = 0;
public ContainerTheoreticalElementizer(InventoryPlayer par1InventoryPlayer, TileEntityTheoreticalElementizer par2TileEntityTheoreticalElementizer)
{
this.machine = par2TileEntityTheoreticalElementizer;
this.addSlotToContainer(new Slot(par2TileEntityTheoreticalElementizer, 0, 56, 17));
this.addSlotToContainer(new Slot(par2TileEntityTheoreticalElementizer, 1, 56, 53));
this.addSlotToContainer(new SlotFurnace(par1InventoryPlayer.player, par2TileEntityTheoreticalElementizer, 2, 116, 35));
int var3;
for (var3 = 0; var3 < 3; ++var3)
{
for (int var4 = 0; var4 < 9; ++var4)
{
this.addSlotToContainer(new Slot(par1InventoryPlayer, var4 + var3 * 9 + 9, 8 + var4 * 18, 84 + var3 * 18));
}
}
for (var3 = 0; var3 < 9; ++var3)
{
this.addSlotToContainer(new Slot(par1InventoryPlayer, var3, 8 + var3 * 18, 142));
}
}
/**
* Updates crafting matrix; called from onCraftMatrixChanged. Args: none
*/
public void updateCraftingResults()
{
super.updateCraftingResults();
for (int var1 = 0; var1 < this.crafters.size(); ++var1)
{
ICrafting var2 = (ICrafting)this.crafters.get(var1);
if (this.lastCookTime != this.machine.machineCookTime)
{
var2.updateCraftingInventoryInfo(this, 0, this.machine.machineCookTime);
}
if (this.lastBurnTime != this.machine.machineBurnTime)
{
var2.updateCraftingInventoryInfo(this, 1, this.machine.machineBurnTime);
}
if (this.lastItemBurnTime != this.machine.currentItemBurnTime)
{
var2.updateCraftingInventoryInfo(this, 2, this.machine.currentItemBurnTime);
}
}
this.lastCookTime = this.machine.machineCookTime;
this.lastBurnTime = this.machine.machineBurnTime;
this.lastItemBurnTime = this.machine.currentItemBurnTime;
}
public void updateProgressBar(int par1, int par2)
{
if (par1 == 0)
{
this.machine.machineCookTime = par2;
}
if (par1 == 1)
{
this.machine.machineBurnTime = par2;
}
if (par1 == 2)
{
this.machine.currentItemBurnTime = par2;
}
}
public boolean canInteractWith(EntityPlayer par1EntityPlayer)
{
return this.machine.isUseableByPlayer(par1EntityPlayer);
}
/**
* Called to transfer a stack from one inventory to the other eg. when shift clicking.
*/
public ItemStack transferStackInSlot(int par1)
{
ItemStack var2 = null;
Slot var3 = (Slot)this.inventorySlots.get(par1);
if (var3 != null && var3.getHasStack())
{
ItemStack var4 = var3.getStack();
var2 = var4.copy();
if (par1 == 2)
{
if (!this.mergeItemStack(var4, 3, 39, true))
{
return null;
}
var3.onSlotChange(var4, var2);
}
else if (par1 != 1 && par1 != 0)
{
if (var4.getItem().shiftedIndex == ObsidianIngots.EnrichedAlloy.shiftedIndex)
{
if (!this.mergeItemStack(var4, 0, 1, false))
{
return null;
}
}
else if (TileEntityTheoreticalElementizer.isItemFuel(var4))
{
if (!this.mergeItemStack(var4, 1, 2, false))
{
return null;
}
}
else if (par1 >= 3 && par1 < 30)
{
if (!this.mergeItemStack(var4, 30, 39, false))
{
return null;
}
}
else if (par1 >= 30 && par1 < 39 && !this.mergeItemStack(var4, 3, 30, false))
{
return null;
}
}
else if (!this.mergeItemStack(var4, 3, 39, false))
{
return null;
}
if (var4.stackSize == 0)
{
var3.putStack((ItemStack)null);
}
else
{
var3.onSlotChanged();
}
if (var4.stackSize == var2.stackSize)
{
return null;
}
var3.onPickupFromSlot(var4);
}
return var2;
}
}

View file

@ -14,11 +14,11 @@ import net.minecraft.src.ItemStack;
* @author AidanBrady
*
*/
public class ItemMachine extends ItemBlock
public class ItemBlockMachine extends ItemBlock
{
public Block metaBlock;
public ItemMachine(int id, Block block)
public ItemBlockMachine(int id, Block block)
{
super(id);
metaBlock = block;

View file

@ -12,11 +12,11 @@ import net.minecraft.src.*;
* @author AidanBrady
*
*/
public class ItemMulti extends ItemBlock
public class ItemBlockMulti extends ItemBlock
{
public Block metaBlock;
public ItemMulti(int id, Block block)
public ItemBlockMulti(int id, Block block)
{
super(id);
metaBlock = block;

View file

@ -8,11 +8,11 @@ import net.minecraft.src.*;
* @author AidanBrady
*
*/
public class ItemOre extends ItemBlock
public class ItemBlockOre extends ItemBlock
{
public Block metaBlock;
public ItemOre(int id, Block block)
public ItemBlockOre(int id, Block block)
{
super(id);
metaBlock = block;

View file

@ -0,0 +1,50 @@
package net.uberkat.obsidian.common;
import net.minecraft.src.*;
/**
* Item class for handling multiple power unit block IDs.
* 0: Power Unit
* 1: Advanced Power Unit
* @author AidanBrady
*
*/
public class ItemBlockPowerUnit extends ItemBlock
{
public Block metaBlock;
public ItemBlockPowerUnit(int id, Block block)
{
super(id);
metaBlock = block;
setHasSubtypes(true);
}
public int getMetadata(int i)
{
return i;
}
public int getIconFromDamage(int i)
{
return metaBlock.getBlockTextureFromSideAndMetadata(2, i);
}
public String getItemNameIS(ItemStack itemstack)
{
String name = "";
switch(itemstack.getItemDamage())
{
case 0:
name = "PowerUnit";
break;
case 1:
name = "AdvancedPowerUnit";
break;
default:
name = "Unknown";
break;
}
return getItemName() + "." + name;
}
}

View file

@ -0,0 +1,186 @@
package net.uberkat.obsidian.common;
import java.util.List;
import universalelectricity.UniversalElectricity;
import universalelectricity.implement.IItemElectric;
import ic2.api.IElectricItem;
import net.minecraft.src.*;
import net.uberkat.obsidian.api.IEnergizedItem;
public class ItemEnergized extends Item implements IEnergizedItem, IItemElectric
{
public int maxEnergy;
public int transferRate;
public ItemEnergized(int id, int energy, int rate)
{
super(id);
maxEnergy = energy;
transferRate = rate;
setMaxStackSize(1);
setMaxDamage(maxEnergy);
setNoRepair();
setCreativeTab(CreativeTabs.tabRedstone);
}
public void addInformation(ItemStack itemstack, List list)
{
int energy = getEnergy(itemstack);
list.add("Stored Energy: " + ObsidianUtils.getDisplayedEnergy(energy));
}
public void onCreated(ItemStack itemstack, World world, EntityPlayer entityplayer)
{
itemstack = getUnchargedItem();
}
public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5)
{
ItemEnergized item = ((ItemEnergized)par1ItemStack.getItem());
item.setEnergy(par1ItemStack, item.getEnergy(par1ItemStack));
}
public int getEnergy(ItemStack itemstack)
{
if(itemstack.stackTagCompound == null)
{
return 0;
}
int stored = 0;
if(itemstack.stackTagCompound.getTag("energy") != null)
{
stored = itemstack.stackTagCompound.getInteger("energy");
}
itemstack.setItemDamage(maxEnergy - stored);
return stored;
}
public void setEnergy(ItemStack itemstack, int energy)
{
if(itemstack.stackTagCompound == null)
{
itemstack.setTagCompound(new NBTTagCompound());
}
int stored = Math.max(Math.min(energy, maxEnergy), 0);
itemstack.stackTagCompound.setInteger("energy", stored);
itemstack.setItemDamage(maxEnergy - stored);
}
public ItemStack getUnchargedItem()
{
ItemStack charged = new ItemStack(this);
charged.setItemDamage(maxEnergy);
return charged;
}
public void getSubItems(int i, CreativeTabs tabs, List list)
{
ItemStack discharged = new ItemStack(this);
discharged.setItemDamage(maxEnergy);
list.add(discharged);
ItemStack charged = new ItemStack(this);
setEnergy(charged, ((IEnergizedItem)charged.getItem()).getMaxEnergy());
list.add(charged);
}
public int getMaxEnergy()
{
return maxEnergy;
}
public int getRate()
{
return transferRate;
}
public int charge(ItemStack itemstack, int amount)
{
int rejects = Math.max((getEnergy(itemstack) + amount) - maxEnergy, 0);
setEnergy(itemstack, getEnergy(itemstack) + amount - rejects);
return rejects;
}
public int discharge(ItemStack itemstack, int amount)
{
int energyToUse = Math.min(getEnergy(itemstack), amount);
setEnergy(itemstack, getEnergy(itemstack) - energyToUse);
return energyToUse;
}
public double getWattHours(Object... data)
{
if(data[0] instanceof ItemStack)
{
ItemStack itemstack = (ItemStack)data[0];
return getEnergy(itemstack)*UniversalElectricity.IC2_RATIO;
}
return 0;
}
public void setWattHours(double wattHours, Object... data)
{
if(data[0] instanceof ItemStack)
{
ItemStack itemstack = (ItemStack)data[0];
setEnergy(itemstack, (int)(wattHours*UniversalElectricity.Wh_IC2_RATIO));
}
}
public double getMaxWattHours()
{
return maxEnergy*UniversalElectricity.IC2_RATIO;
}
public double getVoltage()
{
return 20;
}
public double onReceiveElectricity(double wattHourReceive, ItemStack itemStack)
{
int rejects = (int)Math.max((getEnergy(itemStack) + wattHourReceive*UniversalElectricity.Wh_IC2_RATIO) - getMaxEnergy(), 0);
setEnergy(itemStack, (int)(getEnergy(itemStack) + wattHourReceive*UniversalElectricity.Wh_IC2_RATIO - rejects));
return rejects*UniversalElectricity.IC2_RATIO;
}
public double onUseElectricity(double wattHourRequest, ItemStack itemStack)
{
int energyRequest = (int)Math.min(getEnergy(itemStack), wattHourRequest*UniversalElectricity.Wh_IC2_RATIO);
setEnergy(itemStack, getEnergy(itemStack) - energyRequest);
return energyRequest*UniversalElectricity.IC2_RATIO;
}
public boolean canReceiveElectricity()
{
return true;
}
public boolean canProduceElectricity()
{
return true;
}
public double getTransferRate()
{
return transferRate*UniversalElectricity.IC2_RATIO;
}
public String getTextureFile()
{
return "/obsidian/items.png";
}
public boolean canCharge()
{
return true;
}
}

View file

@ -9,7 +9,7 @@ public class ItemLightningRod extends ItemObsidian
super(i);
setMaxStackSize(1);
setMaxDamage(100);
setTabToDisplayOn(CreativeTabs.tabTools);
setCreativeTab(CreativeTabs.tabTools);
}
public boolean hasEffect(ItemStack par1ItemStack)

View file

@ -8,7 +8,7 @@ public class ItemObsidian extends Item
{
super(i);
itemsList[256 + i] = this;
setTabToDisplayOn(CreativeTabs.tabAllSearch);
setCreativeTab(CreativeTabs.tabAllSearch);
}
public String getTextureFile() {

View file

@ -7,7 +7,7 @@ public class ItemObsidianArmor extends ItemArmor
public ItemObsidianArmor(int par1, EnumArmorMaterial par2EnumArmorMaterial, int par3, int par4)
{
super(par1, par2EnumArmorMaterial, par3, par4);
setTabToDisplayOn(CreativeTabs.tabCombat);
setCreativeTab(CreativeTabs.tabCombat);
}
public String getTextureFile() {

View file

@ -10,7 +10,7 @@ public class ItemObsidianBow extends ItemObsidian
super(par1);
maxStackSize = 1;
setMaxDamage(750);
setTabToDisplayOn(CreativeTabs.tabCombat);
setCreativeTab(CreativeTabs.tabCombat);
}
/**

View file

@ -9,7 +9,7 @@ public class ItemObsidianHoe extends ItemObsidian
super(par1);
maxStackSize = 1;
setMaxDamage(par2EnumToolMaterial.getMaxUses());
setTabToDisplayOn(CreativeTabs.tabTools);
setCreativeTab(CreativeTabs.tabTools);
}
/**

View file

@ -25,7 +25,7 @@ public class ItemObsidianKnife extends ItemObsidian
entityDamage = 2;
blockDamage = 2;
enchantability = enumtoolmaterial.getEnchantability();
setTabToDisplayOn(CreativeTabs.tabCombat);
setCreativeTab(CreativeTabs.tabCombat);
}
/**

View file

@ -13,7 +13,7 @@ public class ItemObsidianPaxel extends ItemObsidianTool
public ItemObsidianPaxel(int i, EnumToolMaterial enumtoolmaterial)
{
super(i, 3, enumtoolmaterial, blocksEffectiveAgainst);
setTabToDisplayOn(CreativeTabs.tabTools);
setCreativeTab(CreativeTabs.tabTools);
}
public boolean canHarvestBlock(Block block)

View file

@ -13,7 +13,7 @@ public class ItemObsidianPickaxe extends ItemObsidianTool
public ItemObsidianPickaxe(int par1, EnumToolMaterial par2EnumToolMaterial)
{
super(par1, 2, par2EnumToolMaterial, blocksEffectiveAgainst);
setTabToDisplayOn(CreativeTabs.tabTools);
setCreativeTab(CreativeTabs.tabTools);
}
/**

View file

@ -11,7 +11,7 @@ public class ItemObsidianSpade extends ItemObsidianTool
public ItemObsidianSpade(int par1, EnumToolMaterial par2EnumToolMaterial)
{
super(par1, 1, par2EnumToolMaterial, blocksEffectiveAgainst);
setTabToDisplayOn(CreativeTabs.tabTools);
setCreativeTab(CreativeTabs.tabTools);
}
/**

View file

@ -23,7 +23,7 @@ public class ItemObsidianSword extends ItemObsidian
maxStackSize = 1;
setMaxDamage(par2EnumToolMaterial.getMaxUses());
weaponDamage = 4 + par2EnumToolMaterial.getDamageVsEntity();
setTabToDisplayOn(CreativeTabs.tabCombat);
setCreativeTab(CreativeTabs.tabCombat);
}
/**

View file

@ -9,7 +9,7 @@ public class ItemStopwatch extends ItemObsidian {
super(i);
setMaxStackSize(1);
setMaxDamage(5000);
setTabToDisplayOn(CreativeTabs.tabTools);
setCreativeTab(CreativeTabs.tabTools);
}
public boolean hasEffect(ItemStack itemstack)
@ -21,7 +21,7 @@ public class ItemStopwatch extends ItemObsidian {
{
if(itemstack.getItemDamage() == 0)
{
entityplayer.openGui(ObsidianIngots.instance, 18, world, (int)entityplayer.posX, (int)entityplayer.posY, (int)entityplayer.posZ);
entityplayer.openGui(ObsidianIngots.instance, 0, world, (int)entityplayer.posX, (int)entityplayer.posY, (int)entityplayer.posZ);
}
return itemstack;
}

View file

@ -9,7 +9,7 @@ public class ItemWeatherOrb extends ItemObsidian
super(i);
setMaxStackSize(1);
setMaxDamage(5000);
setTabToDisplayOn(CreativeTabs.tabTools);
setCreativeTab(CreativeTabs.tabTools);
}
public boolean hasEffect(ItemStack itemstack)
@ -21,7 +21,7 @@ public class ItemWeatherOrb extends ItemObsidian
{
if(itemstack.getItemDamage() == 0)
{
entityplayer.openGui(ObsidianIngots.instance, 20, world, (int)entityplayer.posX, (int)entityplayer.posY, (int)entityplayer.posZ);
entityplayer.openGui(ObsidianIngots.instance, 2, world, (int)entityplayer.posX, (int)entityplayer.posY, (int)entityplayer.posZ);
}
return itemstack;
}

View file

@ -34,12 +34,8 @@ public class ObsidianHooks
IC2IronDust = getIC2Item("ironDust");
IC2GoldDust = getIC2Item("goldDust");
Ic2Recipes.addMaceratorRecipe(new ItemStack(ObsidianIngots.MultiBlock, 1, 0), new ItemStack(ObsidianIngots.PlatinumDust, 2));
if(!RailcraftLoaded)
{
Ic2Recipes.addMaceratorRecipe(new ItemStack(Block.obsidian), new ItemStack(ObsidianIngots.ObsidianDust));
}
Ic2Recipes.addMatterAmplifier(ObsidianIngots.EnrichedAlloy, 100000);
Ic2Recipes.addMaceratorRecipe(new ItemStack(ObsidianIngots.OreBlock, 1, 0), new ItemStack(ObsidianIngots.PlatinumDust, 2));
Ic2Recipes.addMatterAmplifier(ObsidianIngots.EnrichedAlloy, 80000);
System.out.println("[ObsidianIngots] Hooked into IC2 successfully.");
}

View file

@ -1,5 +1,7 @@
package net.uberkat.obsidian.common;
import ic2.api.Ic2Recipes;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.InetAddress;
@ -35,7 +37,7 @@ import cpw.mods.fml.common.registry.TickRegistry;
* @author AidanBrady
*
*/
@Mod(modid = "ObsidianIngots", name = "Obsidian Ingots", version = "4.1.0")
@Mod(modid = "ObsidianIngots", name = "Obsidian Ingots", version = "4.2.0")
@NetworkMod(channels = { "ObsidianIngots" }, clientSideRequired = true, serverSideRequired = false, packetHandler = PacketHandler.class)
public class ObsidianIngots
{
@ -57,7 +59,7 @@ public class ObsidianIngots
public static Configuration configuration;
/** Obsidian Ingots version number */
public static Version versionNumber = new Version(4, 1, 0);
public static Version versionNumber = new Version(4, 2, 0);
/** The latest version number which is received from the Obsidian Ingots server */
public static String latestVersionNumber;
@ -95,6 +97,7 @@ public class ObsidianIngots
public static int machineBlockID = 3001;
public static int oreBlockID = 3002;
public static int obsidianTNTID = 3003;
public static int powerUnitID = 3004;
//Base Items
public static Item WoodPaxel;
@ -188,12 +191,16 @@ public class ObsidianIngots
public static Item Stopwatch;
public static Item WeatherOrb;
public static Item EnrichedAlloy;
public static ItemEnergized EnergyTablet;
public static ItemEnergized EnergyOrb;
public static ItemEnergized EnergyCube;
//Extra Blocks
public static Block MultiBlock;
public static Block MachineBlock;
public static Block OreBlock;
public static Block ObsidianTNT;
public static Block PowerUnit;
//Boolean Values
public static boolean extrasEnabled = true;
@ -459,14 +466,29 @@ public class ObsidianIngots
GameRegistry.addRecipe(new ItemStack(ObsidianBow, 1), new Object[] {
" AB", "A B", " AB", Character.valueOf('A'), ObsidianIngot, Character.valueOf('B'), Item.silk
});
GameRegistry.addRecipe(EnergyCube.getUnchargedItem(), new Object[] {
"RAR", "APA", "RAR", Character.valueOf('R'), Item.redstone, Character.valueOf('A'), EnrichedAlloy, Character.valueOf('P'), PlatinumDust
});
GameRegistry.addRecipe(EnergyTablet.getUnchargedItem(), new Object[] {
"RCR", "ECE", "RCR", Character.valueOf('C'), EnergyCube.getUnchargedItem(), Character.valueOf('R'), Item.redstone, Character.valueOf('E'), EnrichedAlloy
});
GameRegistry.addRecipe(EnergyOrb.getUnchargedItem(), new Object[] {
"ECE", "CCC", "ECE", Character.valueOf('E'), EnrichedAlloy, Character.valueOf('C'), EnergyCube.getUnchargedItem()
});
GameRegistry.addRecipe(new ItemStack(PowerUnit, 1, 0), new Object[] {
"CEC", "EPE", "CEC", Character.valueOf('C'), EnergyCube.getUnchargedItem(), Character.valueOf('E'), EnrichedAlloy, Character.valueOf('P'), new ItemStack(MultiBlock, 1, 0)
});
GameRegistry.addRecipe(new ItemStack(PowerUnit, 1, 1), new Object[] {
"ECE", "CPC", "ECE", Character.valueOf('E'), EnrichedAlloy, Character.valueOf('C'), EnergyCube.getUnchargedItem(), Character.valueOf('P'), new ItemStack(PowerUnit, 1, 0)
});
GameRegistry.addRecipe(new ItemStack(MachineBlock, 1, 0), new Object[] {
"***", "*R*", "***", Character.valueOf('*'), PlatinumIngot, Character.valueOf('R'), Item.redstone
});
GameRegistry.addRecipe(new ItemStack(MachineBlock, 1, 1), new Object[] {
"***", "*P*", "***", Character.valueOf('*'), Item.redstone, Character.valueOf('P'), new ItemStack(MultiBlock, 1, 1)
"***", "*P*", "***", Character.valueOf('*'), Item.redstone, Character.valueOf('P'), new ItemStack(MultiBlock, 1, 0)
});
GameRegistry.addRecipe(new ItemStack(MachineBlock, 1, 2), new Object[] {
"***", "*P*", "***", Character.valueOf('*'), Block.cobblestone, Character.valueOf('P'), new ItemStack(MultiBlock, 1, 1)
"***", "*P*", "***", Character.valueOf('*'), Block.cobblestone, Character.valueOf('P'), new ItemStack(MultiBlock, 1, 0)
});
GameRegistry.addRecipe(new ItemStack(MachineBlock, 1, 3), new Object[] {
"***", "*L*", "***", Character.valueOf('*'), PlatinumIngot, Character.valueOf('L'), Item.bucketLava
@ -475,7 +497,7 @@ public class ObsidianIngots
if(extrasEnabled)
{
GameRegistry.addRecipe(new ItemStack(MachineBlock, 1, 4), new Object[] {
"SGS", "GDG", "SGS", Character.valueOf('S'), Block.stone, Character.valueOf('G'), Block.glass, Character.valueOf('D'), Block.blockDiamond
"SGS", "GDG", "SGS", Character.valueOf('S'), EnrichedAlloy, Character.valueOf('G'), Block.glass, Character.valueOf('D'), Block.blockDiamond
});
}
@ -484,24 +506,27 @@ public class ObsidianIngots
GameRegistry.addSmelting(PlatinumDust.shiftedIndex, new ItemStack(PlatinumIngot, 1), 1.0F);
//Enrichment Chamber Recipes
MachineRecipes.addEnrichmentChamberRecipe(new ItemStack(OreBlock, 1, 0), new ItemStack(PlatinumDust, 2));
MachineRecipes.addEnrichmentChamberRecipe(new ItemStack(Block.oreRedstone), new ItemStack(Item.redstone, 2));
RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(OreBlock, 1, 0), new ItemStack(PlatinumDust, 2));
RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.oreRedstone), new ItemStack(Item.redstone, 2));
//Platinum Compressor Recipes
MachineRecipes.addPlatinumCompressorRecipe(new ItemStack(Item.redstone), new ItemStack(RedstoneIngot));
MachineRecipes.addPlatinumCompressorRecipe(new ItemStack(Item.lightStoneDust), new ItemStack(GlowstoneIngot));
RecipeHandler.addPlatinumCompressorRecipe(new ItemStack(Item.redstone), new ItemStack(RedstoneIngot));
RecipeHandler.addPlatinumCompressorRecipe(new ItemStack(Item.lightStoneDust), new ItemStack(GlowstoneIngot));
//Combiner Recipes
MachineRecipes.addCombinerRecipe(new ItemStack(Item.redstone, 4), new ItemStack(Block.oreRedstone));
MachineRecipes.addCombinerRecipe(new ItemStack(Item.redstone), new ItemStack(RedstoneIngot));
MachineRecipes.addCombinerRecipe(new ItemStack(PlatinumDust, 2), new ItemStack(OreBlock, 1, 0));
MachineRecipes.addCombinerRecipe(new ItemStack(Item.diamond), new ItemStack(Block.oreDiamond));
MachineRecipes.addCombinerRecipe(new ItemStack(Item.dyePowder, 4, 4), new ItemStack(Block.oreLapis));
RecipeHandler.addCombinerRecipe(new ItemStack(Item.redstone, 4), new ItemStack(Block.oreRedstone));
RecipeHandler.addCombinerRecipe(new ItemStack(Item.redstone), new ItemStack(RedstoneIngot));
RecipeHandler.addCombinerRecipe(new ItemStack(PlatinumDust, 2), new ItemStack(OreBlock, 1, 0));
RecipeHandler.addCombinerRecipe(new ItemStack(Item.diamond), new ItemStack(Block.oreDiamond));
RecipeHandler.addCombinerRecipe(new ItemStack(Item.dyePowder, 4, 4), new ItemStack(Block.oreLapis));
//Crusher Recipes
MachineRecipes.addCrusherRecipe(new ItemStack(RedstoneIngot), new ItemStack(Item.redstone));
MachineRecipes.addCrusherRecipe(new ItemStack(PlatinumIngot), new ItemStack(PlatinumDust));
MachineRecipes.addCrusherRecipe(new ItemStack(GlowstoneIngot), new ItemStack(Item.lightStoneDust));
RecipeHandler.addCrusherRecipe(new ItemStack(RedstoneIngot), new ItemStack(Item.redstone));
RecipeHandler.addCrusherRecipe(new ItemStack(PlatinumIngot), new ItemStack(PlatinumDust));
RecipeHandler.addCrusherRecipe(new ItemStack(GlowstoneIngot), new ItemStack(Item.lightStoneDust));
//Theoretical Elementizer Recipes
RecipeHandler.addTheoreticalElementizerRecipe(new ItemStack(EnrichedAlloy), new ItemStack(TileEntityTheoreticalElementizer.getRandomMagicItem()));
}
/**
@ -604,6 +629,10 @@ public class ObsidianIngots
LanguageRegistry.addName(EnrichedAlloy, "Enriched Alloy");
}
LanguageRegistry.addName(EnergyTablet, "Energy Tablet");
LanguageRegistry.addName(EnergyOrb, "Energy Orb");
LanguageRegistry.addName(EnergyCube, "Energy Cube");
//Localization for MultiBlock
LanguageRegistry.instance().addStringLocalization("tile.MultiBlock.PlatinumBlock.name", "Platinum Block");
LanguageRegistry.instance().addStringLocalization("tile.MultiBlock.RedstoneBlock.name", "Redstone Block");
@ -620,6 +649,10 @@ public class ObsidianIngots
//Localization for OreBlock
LanguageRegistry.instance().addStringLocalization("tile.OreBlock.PlatinumOre.name", "Platinum Ore");
//Localization for PowerUnit
LanguageRegistry.instance().addStringLocalization("tile.PowerUnit.PowerUnit.name", "Power Unit");
LanguageRegistry.instance().addStringLocalization("tile.PowerUnit.AdvancedPowerUnit.name", "Advanced Power Unit");
if(extrasEnabled == true)
{
LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.TheoreticalElementizer.name", "Theoretical Elementizer");
@ -725,6 +758,10 @@ public class ObsidianIngots
WeatherOrb.setIconIndex(226);
EnrichedAlloy.setIconIndex(227);
}
EnergyTablet.setIconIndex(228);
EnergyOrb.setIconIndex(229);
EnergyCube.setIconIndex(230);
}
/**
@ -736,7 +773,7 @@ public class ObsidianIngots
RedstoneBody = (new ItemObsidianArmor(11236, armorREDSTONE, proxy.getArmorIndex("redstone"), 1)).setItemName("RedstoneBody");
RedstoneLegs = (new ItemObsidianArmor(11237, armorREDSTONE, proxy.getArmorIndex("redstone"), 2)).setItemName("RedstoneLegs");
RedstoneBoots = (new ItemObsidianArmor(11238, armorREDSTONE, proxy.getArmorIndex("redstone"), 3)).setItemName("RedstoneBoots");
RedstoneIngot = new ItemObsidian(11239).setItemName("RedstoneIngot").setTabToDisplayOn(CreativeTabs.tabMaterials);
RedstoneIngot = new ItemObsidian(11239).setItemName("RedstoneIngot").setCreativeTab(CreativeTabs.tabMaterials);
RedstonePaxel = new ItemObsidianPaxel(11240, toolREDSTONE2).setItemName("RedstonePaxel");
RedstonePickaxe = new ItemObsidianPickaxe(11241, toolREDSTONE).setItemName("RedstonePickaxe");
RedstoneAxe = new ItemObsidianAxe(11242, toolREDSTONE).setItemName("RedstoneAxe");
@ -747,7 +784,7 @@ public class ObsidianIngots
PlatinumBody = (new ItemObsidianArmor(11247, EnumArmorMaterial.DIAMOND, proxy.getArmorIndex("platinum"), 1)).setItemName("PlatinumBody");
PlatinumLegs = (new ItemObsidianArmor(11248, EnumArmorMaterial.DIAMOND, proxy.getArmorIndex("platinum"), 2)).setItemName("PlatinumLegs");
PlatinumBoots = (new ItemObsidianArmor(11249, EnumArmorMaterial.DIAMOND, proxy.getArmorIndex("platinum"), 3)).setItemName("PlatinumBoots");
PlatinumIngot = new ItemObsidian(11250).setItemName("PlatinumIngot").setTabToDisplayOn(CreativeTabs.tabMaterials);
PlatinumIngot = new ItemObsidian(11250).setItemName("PlatinumIngot").setCreativeTab(CreativeTabs.tabMaterials);
PlatinumPaxel = new ItemObsidianPaxel(11251, toolPLATINUM2).setItemName("PlatinumPaxel");
PlatinumPickaxe = new ItemObsidianPickaxe(11252, toolPLATINUM).setItemName("PlatinumPickaxe");
PlatinumAxe = new ItemObsidianAxe(11253, toolPLATINUM).setItemName("PlatinumAxe");
@ -758,7 +795,7 @@ public class ObsidianIngots
ObsidianBody = (new ItemObsidianArmor(11258, armorOBSIDIAN, proxy.getArmorIndex("obsidian"), 1)).setItemName("ObsidianBody");
ObsidianLegs = (new ItemObsidianArmor(11259, armorOBSIDIAN, proxy.getArmorIndex("obsidian"), 2)).setItemName("ObsidianLegs");
ObsidianBoots = (new ItemObsidianArmor(11260, armorOBSIDIAN, proxy.getArmorIndex("obsidian"), 3)).setItemName("ObsidianBoots");
ObsidianIngot = new ItemObsidian(11261).setItemName("ObsidianIngot").setTabToDisplayOn(CreativeTabs.tabMaterials);
ObsidianIngot = new ItemObsidian(11261).setItemName("ObsidianIngot").setCreativeTab(CreativeTabs.tabMaterials);
ObsidianPaxel = new ItemObsidianPaxel(11262, toolOBSIDIAN2).setItemName("ObsidianPaxel");
ObsidianPickaxe = new ItemObsidianPickaxe(11263, toolOBSIDIAN).setItemName("ObsidianPickaxe");
ObsidianAxe = new ItemObsidianAxe(11264, toolOBSIDIAN).setItemName("ObsidianAxe");
@ -775,14 +812,14 @@ public class ObsidianIngots
LazuliBody = (new ItemObsidianArmor(11275, armorLAZULI, proxy.getArmorIndex("lazuli"), 1)).setItemName("LazuliBody");
LazuliLegs = (new ItemObsidianArmor(11276, armorLAZULI, proxy.getArmorIndex("lazuli"), 2)).setItemName("LazuliLegs");
LazuliBoots = (new ItemObsidianArmor(11277, armorLAZULI, proxy.getArmorIndex("lazuli"), 3)).setItemName("LazuliBoots");
ObsidianArrow = new ItemObsidian(11278).setItemName("ObsidianArrow").setTabToDisplayOn(CreativeTabs.tabCombat);
ObsidianArrow = new ItemObsidian(11278).setItemName("ObsidianArrow").setCreativeTab(CreativeTabs.tabCombat);
ObsidianBow = new ItemObsidianBow(11279).setItemName("ObsidianBow");
if(extrasEnabled == true)
{
LightningRod = new ItemLightningRod(11280).setItemName("LightningRod");
Stopwatch = new ItemStopwatch(11281).setItemName("Stopwatch");
WeatherOrb = new ItemWeatherOrb(11282).setItemName("WeatherOrb");
EnrichedAlloy = new ItemObsidian(11313).setItemName("EnrichedAlloy").setTabToDisplayOn(CreativeTabs.tabMaterials);
EnrichedAlloy = new ItemObsidian(11313).setItemName("EnrichedAlloy").setCreativeTab(CreativeTabs.tabMaterials);
}
WoodPaxel = new ItemObsidianPaxel(11283, EnumToolMaterial.WOOD).setItemName("WoodPaxel");
StonePaxel = new ItemObsidianPaxel(11284, EnumToolMaterial.STONE).setItemName("StonePaxel");
@ -798,8 +835,8 @@ public class ObsidianIngots
LazuliKnife = new ItemObsidianKnife(11294, toolLAZULI).setItemName("LazuliKnife");
PlatinumKnife = new ItemObsidianKnife(11295, toolPLATINUM).setItemName("PlatinumKnife");
RedstoneKnife = new ItemObsidianKnife(11296, toolREDSTONE).setItemName("RedstoneKnife");
PlatinumDust = new ItemObsidian(11300).setItemName("PlatinumDust").setTabToDisplayOn(CreativeTabs.tabMaterials);
GlowstoneIngot = new ItemObsidian(11301).setItemName("GlowstoneIngot").setTabToDisplayOn(CreativeTabs.tabMaterials);
PlatinumDust = new ItemObsidian(11300).setItemName("PlatinumDust").setCreativeTab(CreativeTabs.tabMaterials);
GlowstoneIngot = new ItemObsidian(11301).setItemName("GlowstoneIngot").setCreativeTab(CreativeTabs.tabMaterials);
GlowstonePaxel = new ItemObsidianPaxel(11302, toolGLOWSTONE2).setItemName("GlowstonePaxel");
GlowstonePickaxe = new ItemObsidianPickaxe(11303, toolGLOWSTONE).setItemName("GlowstonePickaxe");
GlowstoneAxe = new ItemObsidianAxe(11304, toolGLOWSTONE).setItemName("GlowstoneAxe");
@ -811,6 +848,9 @@ public class ObsidianIngots
GlowstoneLegs = new ItemObsidianArmor(11310, armorGLOWSTONE, proxy.getArmorIndex("glowstone"), 2).setItemName("GlowstoneLegs");
GlowstoneBoots = new ItemObsidianArmor(11311, armorGLOWSTONE, proxy.getArmorIndex("glowstone"), 3).setItemName("GlowstoneBoots");
GlowstoneKnife = new ItemObsidianKnife(11312, toolGLOWSTONE).setItemName("GlowstoneKnife");
EnergyTablet = (ItemEnergized) new ItemEnergized(11314, 50000, 100).setItemName("EnergyTablet");
EnergyOrb = (ItemEnergized) new ItemEnergized(11315, 15000000, 1000).setItemName("EnergyOrb");
EnergyCube = (ItemEnergized) new ItemEnergized(11316, 12000, 100).setItemName("EnergyCube");
}
/**
@ -822,15 +862,17 @@ public class ObsidianIngots
MultiBlock = new BlockMulti(multiBlockID).setBlockName("MultiBlock");
MachineBlock = new BlockMachine(machineBlockID).setBlockName("MachineBlock");
OreBlock = new BlockOre(oreBlockID).setBlockName("OreBlock");
PowerUnit = new BlockPowerUnit(powerUnitID).setBlockName("PowerUnit");
ObsidianTNT = new BlockObsidianTNT(obsidianTNTID).setBlockName("ObsidianTNT").setCreativeTab(CreativeTabs.tabRedstone);
//Registrations
GameRegistry.registerBlock(ObsidianTNT);
//Add block items into itemsList for blocks with multiple IDs.
Item.itemsList[multiBlockID] = new ItemMulti(multiBlockID - 256, MultiBlock).setItemName("MultiBlock");
Item.itemsList[machineBlockID] = new ItemMachine(machineBlockID - 256, MachineBlock).setItemName("MachineBlock");
Item.itemsList[oreBlockID] = new ItemOre(oreBlockID - 256, OreBlock).setItemName("OreBlock");
Item.itemsList[multiBlockID] = new ItemBlockMulti(multiBlockID - 256, MultiBlock).setItemName("MultiBlock");
Item.itemsList[machineBlockID] = new ItemBlockMachine(machineBlockID - 256, MachineBlock).setItemName("MachineBlock");
Item.itemsList[oreBlockID] = new ItemBlockOre(oreBlockID - 256, OreBlock).setItemName("OreBlock");
Item.itemsList[powerUnitID] = new ItemBlockPowerUnit(powerUnitID - 256, PowerUnit).setItemName("PowerUnit");
}
/**
@ -844,8 +886,8 @@ public class ObsidianIngots
GoldDust = hooks.IC2GoldDust.getItem();
}
else {
IronDust = new ItemObsidian(11298).setItemName("IronDust").setTabToDisplayOn(CreativeTabs.tabMaterials);
GoldDust = new ItemObsidian(11299).setItemName("GoldDust").setTabToDisplayOn(CreativeTabs.tabMaterials);
IronDust = new ItemObsidian(11298).setItemName("IronDust").setCreativeTab(CreativeTabs.tabMaterials);
GoldDust = new ItemObsidian(11299).setItemName("GoldDust").setCreativeTab(CreativeTabs.tabMaterials);
IronDust.setIconIndex(248);
GoldDust.setIconIndex(250);
LanguageRegistry.addName(IronDust, "Iron Dust");
@ -857,21 +899,26 @@ public class ObsidianIngots
ObsidianDust = hooks.RailcraftObsidianDust.getItem();
}
else {
ObsidianDust = new ItemObsidian(11297).setItemName("ObsidianDust").setTabToDisplayOn(CreativeTabs.tabMaterials);
ObsidianDust = new ItemObsidian(11297).setItemName("ObsidianDust").setCreativeTab(CreativeTabs.tabMaterials);
ObsidianDust.setIconIndex(241);
LanguageRegistry.addName(ObsidianDust, "Obsidian Dust");
}
MachineRecipes.addEnrichmentChamberRecipe(new ItemStack(Block.obsidian), new ItemStack(ObsidianDust));
MachineRecipes.addEnrichmentChamberRecipe(new ItemStack(Block.oreIron), new ItemStack(IronDust, 2));
MachineRecipes.addEnrichmentChamberRecipe(new ItemStack(Block.oreGold), new ItemStack(GoldDust, 2));
MachineRecipes.addPlatinumCompressorRecipe(new ItemStack(ObsidianDust), new ItemStack(ObsidianIngot));
MachineRecipes.addCombinerRecipe(new ItemStack(ObsidianDust), new ItemStack(Block.obsidian));
MachineRecipes.addCombinerRecipe(new ItemStack(IronDust, 2), new ItemStack(Block.oreIron));
MachineRecipes.addCombinerRecipe(new ItemStack(GoldDust, 2), new ItemStack(Block.oreGold));
MachineRecipes.addCrusherRecipe(new ItemStack(ObsidianIngot), new ItemStack(ObsidianDust));
MachineRecipes.addCrusherRecipe(new ItemStack(Item.ingotIron), new ItemStack(IronDust));
MachineRecipes.addCrusherRecipe(new ItemStack(Item.ingotGold), new ItemStack(GoldDust));
if(!hooks.RailcraftLoaded && hooks.IC2Loaded)
{
Ic2Recipes.addMaceratorRecipe(new ItemStack(Block.obsidian), new ItemStack(ObsidianIngots.ObsidianDust));
}
RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.obsidian), new ItemStack(ObsidianDust));
RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.oreIron), new ItemStack(IronDust, 2));
RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.oreGold), new ItemStack(GoldDust, 2));
RecipeHandler.addPlatinumCompressorRecipe(new ItemStack(ObsidianDust), new ItemStack(ObsidianIngot));
RecipeHandler.addCombinerRecipe(new ItemStack(ObsidianDust), new ItemStack(Block.obsidian));
RecipeHandler.addCombinerRecipe(new ItemStack(IronDust, 2), new ItemStack(Block.oreIron));
RecipeHandler.addCombinerRecipe(new ItemStack(GoldDust, 2), new ItemStack(Block.oreGold));
RecipeHandler.addCrusherRecipe(new ItemStack(ObsidianIngot), new ItemStack(ObsidianDust));
RecipeHandler.addCrusherRecipe(new ItemStack(Item.ingotIron), new ItemStack(IronDust));
RecipeHandler.addCrusherRecipe(new ItemStack(Item.ingotGold), new ItemStack(GoldDust));
GameRegistry.addShapelessRecipe(new ItemStack(EnrichedAlloy, 1), new Object[] {
Item.redstone, Item.lightStoneDust, IronDust, GoldDust, ObsidianDust, PlatinumDust
@ -899,6 +946,8 @@ public class ObsidianIngots
GameRegistry.registerTileEntity(TileEntityCombiner.class, "Combiner");
GameRegistry.registerTileEntity(TileEntityCrusher.class, "Crusher");
GameRegistry.registerTileEntity(TileEntityTheoreticalElementizer.class, "TheoreticalElementizer");
GameRegistry.registerTileEntity(TileEntityPowerUnit.class, "PowerUnit");
GameRegistry.registerTileEntity(TileEntityAdvancedPowerUnit.class, "AdvancedPowerUnit");
}
@PostInit

View file

@ -33,7 +33,7 @@ public class ObsidianUtils
{
if(!(ObsidianIngots.latestVersionNumber.equals("Error retrieving data.")) && !(ObsidianIngots.latestVersionNumber.equals(ObsidianIngots.versionNumber.toString())))
{
entityplayer.addChatMessage("Your version of ¤1Obsidian Ingots ¤7(¤8" + ObsidianIngots.versionNumber.toString() + "¤7) is outdated. Please update to version ¤8" + ObsidianIngots.latestVersionNumber);
entityplayer.addChatMessage("Your version of Obsidian Ingots (" + ObsidianIngots.versionNumber.toString() + ") is outdated. Please update to version " + ObsidianIngots.latestVersionNumber);
}
else if(ObsidianIngots.latestVersionNumber.equals("Error retrieving data."))
{
@ -41,6 +41,33 @@ public class ObsidianUtils
}
}
public static String getDisplayedEnergy(int energy)
{
if(energy < 1000)
{
return energy + " u";
}
else if(energy >= 1000 && energy < 10000)
{
return energy/10 + " kU";
}
else if(energy >= 10000 && energy < 100000)
{
return energy/100 + " mU";
}
else if(energy >= 100000 && energy < 1000000)
{
return energy/1000 + " gU";
}
else if(energy >= 1000000)
{
return energy/100000 + " tU";
}
else {
return null;
}
}
/**
* Gets the latest version using getHTML and returns it as a string.
* @return latest version
@ -104,7 +131,7 @@ public class ObsidianUtils
Packet3Chat chatPacket = new Packet3Chat(msg);
if(player != null)
{
((EntityPlayerMP)player).serverForThisPlayer.sendPacketToPlayer(chatPacket);
((EntityPlayerMP)player).playerNetServerHandler.sendPacketToPlayer(chatPacket);
}
}

View file

@ -12,7 +12,7 @@ public class OreHandler implements IWorldGenerator
{
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider)
{
switch(world.provider.worldType)
switch(world.provider.dimensionId)
{
case 0:
generateSurface(world, random, chunkX*16, chunkZ*16);

View file

@ -16,6 +16,7 @@ import net.minecraft.src.Packet;
import net.minecraft.src.Packet250CustomPayload;
import net.minecraft.src.TileEntity;
import net.minecraft.src.World;
import net.uberkat.obsidian.api.INetworkedMachine;
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.network.IPacketHandler;
@ -77,9 +78,9 @@ public class PacketHandler implements IPacketHandler
World world = ((EntityPlayer)player).worldObj;
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if(tileEntity instanceof TileEntityMachine)
if(tileEntity instanceof INetworkedMachine)
{
((TileEntityMachine)tileEntity).handlePacketData(manager, packet, ((EntityPlayer)player), dataStream);
((INetworkedMachine)tileEntity).handlePacketData(manager, packet, ((EntityPlayer)player), dataStream);
}
} catch (Exception e)
{
@ -101,21 +102,20 @@ public class PacketHandler implements IPacketHandler
* x, y, and z coordinates, along with it's active state, burn time, cook time, and item burn time.
* @param sender - tile entity who is sending the packet
*/
public static void sendMachinePacket(TileEntityMachine sender)
public static void sendElectricMachinePacket(TileEntityElectricMachine sender)
{
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(bytes);
try {
output.writeInt(2);
output.writeInt(EnumPacketType.TILE_ENTITY.id);
output.writeInt(sender.xCoord);
output.writeInt(sender.yCoord);
output.writeInt(sender.zCoord);
output.writeInt(sender.facing);
output.writeByte(sender.isActive ? 1 : 0);
output.writeInt(sender.machineBurnTime);
output.writeInt(sender.machineCookTime);
output.writeInt(sender.currentItemBurnTime);
output.writeInt(sender.operatingTicks);
output.writeInt(sender.energyStored);
} catch (IOException e)
{
System.err.println("[ObsidianIngots] Error while writing tile entity packet.");
@ -133,21 +133,20 @@ public class PacketHandler implements IPacketHandler
}
}
public static void sendMachinePacketWithRange(TileEntityMachine sender, double distance)
public static void sendElectricMachinePacketWithRange(TileEntityElectricMachine sender, double distance)
{
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(bytes);
try {
output.writeInt(2);
output.writeInt(EnumPacketType.TILE_ENTITY.id);
output.writeInt(sender.xCoord);
output.writeInt(sender.yCoord);
output.writeInt(sender.zCoord);
output.writeInt(sender.facing);
output.writeByte(sender.isActive ? 1 : 0);
output.writeInt(sender.machineBurnTime);
output.writeInt(sender.machineCookTime);
output.writeInt(sender.currentItemBurnTime);
output.writeInt(sender.operatingTicks);
output.writeInt(sender.energyStored);
} catch (IOException e)
{
System.err.println("[ObsidianIngots] Error while writing tile entity packet.");
@ -159,7 +158,123 @@ public class PacketHandler implements IPacketHandler
packet.data = bytes.toByteArray();
packet.length = packet.data.length;
PacketDispatcher.sendPacketToAllAround(sender.xCoord, sender.yCoord, sender.zCoord, distance, sender.worldObj.provider.worldType, packet);
PacketDispatcher.sendPacketToAllAround(sender.xCoord, sender.yCoord, sender.zCoord, distance, sender.worldObj.provider.dimensionId, packet);
}
public static void sendAdvancedElectricMachinePacket(TileEntityAdvancedElectricMachine sender)
{
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(bytes);
try {
output.writeInt(EnumPacketType.TILE_ENTITY.id);
output.writeInt(sender.xCoord);
output.writeInt(sender.yCoord);
output.writeInt(sender.zCoord);
output.writeInt(sender.facing);
output.writeByte(sender.isActive ? 1 : 0);
output.writeInt(sender.operatingTicks);
output.writeInt(sender.energyStored);
output.writeInt(sender.secondaryEnergyStored);
} catch (IOException e)
{
System.err.println("[ObsidianIngots] Error while writing tile entity packet.");
e.printStackTrace();
}
Packet250CustomPayload packet = new Packet250CustomPayload();
packet.channel = "ObsidianIngots";
packet.data = bytes.toByteArray();
packet.length = packet.data.length;
if(FMLCommonHandler.instance().getMinecraftServerInstance() != null)
{
FMLCommonHandler.instance().getMinecraftServerInstance().getConfigurationManager().sendPacketToAllPlayers(packet);
}
}
public static void sendAdvancedElectricMachinePacketWithRange(TileEntityAdvancedElectricMachine sender, double distance)
{
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(bytes);
try {
output.writeInt(EnumPacketType.TILE_ENTITY.id);
output.writeInt(sender.xCoord);
output.writeInt(sender.yCoord);
output.writeInt(sender.zCoord);
output.writeInt(sender.facing);
output.writeByte(sender.isActive ? 1 : 0);
output.writeInt(sender.operatingTicks);
output.writeInt(sender.energyStored);
output.writeInt(sender.secondaryEnergyStored);
} catch (IOException e)
{
System.err.println("[ObsidianIngots] Error while writing tile entity packet.");
e.printStackTrace();
}
Packet250CustomPayload packet = new Packet250CustomPayload();
packet.channel = "ObsidianIngots";
packet.data = bytes.toByteArray();
packet.length = packet.data.length;
PacketDispatcher.sendPacketToAllAround(sender.xCoord, sender.yCoord, sender.zCoord, distance, sender.worldObj.provider.dimensionId, packet);
}
public static void sendPowerUnitPacket(TileEntityPowerUnit sender)
{
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(bytes);
try {
output.writeInt(EnumPacketType.TILE_ENTITY.id);
output.writeInt(sender.xCoord);
output.writeInt(sender.yCoord);
output.writeInt(sender.zCoord);
output.writeInt(sender.facing);
output.writeInt(sender.energyStored);
} catch (IOException e)
{
System.err.println("[ObsidianIngots] Error while writing tile entity packet.");
e.printStackTrace();
}
Packet250CustomPayload packet = new Packet250CustomPayload();
packet.channel = "ObsidianIngots";
packet.data = bytes.toByteArray();
packet.length = packet.data.length;
if(FMLCommonHandler.instance().getMinecraftServerInstance() != null)
{
FMLCommonHandler.instance().getMinecraftServerInstance().getConfigurationManager().sendPacketToAllPlayers(packet);
}
}
public static void sendPowerUnitPacketWithRange(TileEntityPowerUnit sender, double distance)
{
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(bytes);
try {
output.writeInt(EnumPacketType.TILE_ENTITY.id);
output.writeInt(sender.xCoord);
output.writeInt(sender.yCoord);
output.writeInt(sender.zCoord);
output.writeInt(sender.facing);
output.writeInt(sender.energyStored);
} catch (IOException e)
{
System.err.println("[ObsidianIngots] Error while writing tile entity packet.");
e.printStackTrace();
}
Packet250CustomPayload packet = new Packet250CustomPayload();
packet.channel = "ObsidianIngots";
packet.data = bytes.toByteArray();
packet.length = packet.data.length;
PacketDispatcher.sendPacketToAllAround(sender.xCoord, sender.yCoord, sender.zCoord, distance, sender.worldObj.provider.dimensionId, packet);
}
/**

View file

@ -8,7 +8,7 @@ import net.minecraft.src.*;
* @author AidanBrady
*
*/
public final class MachineRecipes
public final class RecipeHandler
{
/**
* Add an Enrichment Chamber recipe.
@ -50,6 +50,16 @@ public final class MachineRecipes
TileEntityCrusher.recipes.add(new AbstractMap.SimpleEntry(input, output));
}
/**
* Add a Theoretical Elementizer recipe.
* @param input - input ItemStack
* @param output - output ItemStack
*/
public static void addTheoreticalElementizerRecipe(ItemStack input, ItemStack output)
{
TileEntityTheoreticalElementizer.recipes.add(new AbstractMap.SimpleEntry(input, output));
}
/**
* Gets the output ItemStack of the ItemStack in the parameters.
* @param itemstack - input ItemStack

View file

@ -0,0 +1,19 @@
package net.uberkat.obsidian.common;
import universalelectricity.implement.IItemElectric;
import ic2.api.IElectricItem;
import net.minecraft.src.*;
import net.uberkat.obsidian.api.IEnergizedItem;
public class SlotEnergy extends Slot
{
public SlotEnergy(IInventory inventory, int x, int y, int z)
{
super(inventory, x, y, z);
}
public boolean isItemValid(ItemStack itemstack)
{
return itemstack.getItem() instanceof IEnergizedItem || itemstack.getItem() instanceof IElectricItem || itemstack.getItem() instanceof IItemElectric || itemstack.itemID == Item.redstone.shiftedIndex;
}
}

View file

@ -1,17 +0,0 @@
package net.uberkat.obsidian.common;
public class Sound
{
public String name;
public int x;
public int y;
public int z;
public Sound(String s, int i, int j, int k)
{
name = s;
x = i;
y = j;
z = k;
}
}

View file

@ -0,0 +1,486 @@
package net.uberkat.obsidian.common;
import java.util.List;
import universalelectricity.UniversalElectricity;
import universalelectricity.implement.IItemElectric;
import com.google.common.io.ByteArrayDataInput;
import ic2.api.ElectricItem;
import ic2.api.EnergyNet;
import ic2.api.IElectricItem;
import ic2.api.IWrenchable;
import net.minecraft.src.*;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.common.ISidedInventory;
import net.uberkat.obsidian.api.IEnergizedItem;
public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicMachine
{
/** The inventory slot itemstacks used by this machine. */
public ItemStack[] inventory = new ItemStack[4];
/** The full name of this machine. */
public String fullName;
/** How much energy this machine uses per tick. */
public int ENERGY_PER_TICK;
/** How much secondary energy (fuel) this machine uses per tick. */
public int SECONDARY_ENERGY_PER_TICK;
/** Ticks required to operate -- or smelt an item. */
public int TICKS_REQUIRED;
/** Maximum amount of energy this machine can hold. */
public int MAX_ENERGY;
/** Maximum amount of secondary energy (fuel) this machine can hold. */
public int MAX_SECONDARY_ENERGY;
/** How many ticks this machine has operated for. */
public int operatingTicks = 0;
/** How much energy is stored in this machine. */
public int energyStored = 0;
/** How much secondary energy (fuel) is stored in this machine. */
public int secondaryEnergyStored = 0;
/**
* Advanced Electric Machine -- a machine like this has a total of 4 slots. Input slot (0), fuel slot (1), output slot (2),
* and the energy slot (3). The machine will not run if it does not have enough electricity, or if it doesn't have enough
* fuel ticks.
*
* @param name - display name of the machine.
* @param perTick - how much energy this machine uses per tick.
* @param secondaryPerTick - how much secondary energy (fuel) this machine uses per tick.
* @param ticksRequired - how many ticks it takes to smelt an item.
* @param maxEnergy - maximum amount of energy this machine can hold.
* @param maxSecondaryEnergy - maximum amount of secondary energy (fuel) this machine can hold.
*/
public TileEntityAdvancedElectricMachine(String name, int perTick, int secondaryPerTick, int ticksRequired, int maxEnergy, int maxSecondaryEnergy)
{
fullName = name;
ENERGY_PER_TICK = perTick;
SECONDARY_ENERGY_PER_TICK = secondaryPerTick;
TICKS_REQUIRED = ticksRequired;
MAX_ENERGY = maxEnergy;
MAX_SECONDARY_ENERGY = maxSecondaryEnergy;
}
/**
* Gets the amount of ticks the declared itemstack can fuel this machine.
* @param itemstack - itemstack to check with
* @return fuel ticks
*/
public abstract int getFuelTicks(ItemStack itemstack);
public void onUpdate()
{
boolean testActive = operatingTicks > 0;
if(inventory[3] != null)
{
if(energyStored < MAX_ENERGY)
{
if(inventory[3].getItem() instanceof IEnergizedItem)
{
int received = 0;
int energyNeeded = MAX_ENERGY - energyStored;
IEnergizedItem item = (IEnergizedItem)inventory[3].getItem();
if(item.getRate() <= energyNeeded)
{
received = item.discharge(inventory[3], item.getRate());
}
else if(item.getRate() > energyNeeded)
{
item.setEnergy(inventory[3], (item.getEnergy(inventory[3]) - energyNeeded));
received = energyNeeded;
}
setEnergy(energyStored + received);
}
else if(inventory[3].getItem() instanceof IItemElectric)
{
int received = 0;
int energyNeeded = MAX_ENERGY - energyStored;
IItemElectric item = (IItemElectric)inventory[3].getItem();
if((item.getTransferRate()*UniversalElectricity.Wh_IC2_RATIO) <= energyNeeded)
{
received = (int)(item.onUseElectricity(item.getTransferRate(), inventory[3])*UniversalElectricity.Wh_IC2_RATIO);
}
else if(item.getTransferRate() > energyNeeded)
{
item.setWattHours((item.getWattHours(inventory[3]) - (energyNeeded*UniversalElectricity.IC2_RATIO)), inventory[3]);
}
}
else if(inventory[3].getItem() instanceof IElectricItem)
{
IElectricItem item = (IElectricItem)inventory[3].getItem();
if(item.canProvideEnergy())
{
int gain = ElectricItem.discharge(inventory[3], energyStored, 3, false, false);
setEnergy(energyStored + gain);
}
}
}
if(inventory[3].itemID == Item.redstone.shiftedIndex && energyStored <= (MAX_ENERGY-1000))
{
setEnergy(energyStored + 1000);
--inventory[3].stackSize;
if (inventory[3].stackSize <= 0)
{
inventory[3] = null;
}
}
}
if(canOperate() && inventory[1] != null && secondaryEnergyStored == 0)
{
int fuelTicks = getFuelTicks(inventory[1]);
if(fuelTicks > 0)
{
int energyNeeded = MAX_SECONDARY_ENERGY - secondaryEnergyStored;
if(fuelTicks <= energyNeeded)
{
setSecondaryEnergy(secondaryEnergyStored + fuelTicks);
}
else if(fuelTicks > energyNeeded)
{
setSecondaryEnergy(secondaryEnergyStored + energyNeeded);
}
--inventory[1].stackSize;
if(inventory[1].stackSize == 0)
{
inventory[1] = null;
}
}
}
if(canOperate() && (operatingTicks+1) < TICKS_REQUIRED && secondaryEnergyStored >= SECONDARY_ENERGY_PER_TICK)
{
++operatingTicks;
secondaryEnergyStored -= SECONDARY_ENERGY_PER_TICK;
energyStored -= ENERGY_PER_TICK;
}
else if((operatingTicks+1) == TICKS_REQUIRED)
{
if(!worldObj.isRemote)
{
operate();
}
operatingTicks = 0;
secondaryEnergyStored -= SECONDARY_ENERGY_PER_TICK;
energyStored -= ENERGY_PER_TICK;
}
if(energyStored < 0)
{
energyStored = 0;
}
if(secondaryEnergyStored < 0)
{
secondaryEnergyStored = 0;
}
if(energyStored > MAX_ENERGY)
{
energyStored = MAX_ENERGY;
}
if(secondaryEnergyStored > MAX_SECONDARY_ENERGY)
{
secondaryEnergyStored = MAX_SECONDARY_ENERGY;
}
if(!canOperate())
{
operatingTicks = 0;
}
if(!worldObj.isRemote)
{
if(testActive != operatingTicks > 0)
{
if(operatingTicks > 0)
{
setActive(true);
}
else if(!canOperate())
{
setActive(false);
}
}
}
}
public void operate()
{
if (!canOperate())
{
return;
}
ItemStack itemstack;
if (inventory[0].getItem().hasContainerItem())
{
itemstack = RecipeHandler.getOutput(inventory[0], false, getRecipes()).copy();
inventory[0] = new ItemStack(inventory[0].getItem().getContainerItem());
}
else
{
itemstack = RecipeHandler.getOutput(inventory[0], true, getRecipes()).copy();
}
if (inventory[0].stackSize <= 0)
{
inventory[0] = null;
}
if (inventory[2] == null)
{
inventory[2] = itemstack;
}
else
{
inventory[2].stackSize += itemstack.stackSize;
}
}
public boolean canOperate()
{
if (inventory[0] == null)
{
return false;
}
if(energyStored < ENERGY_PER_TICK)
{
return false;
}
ItemStack itemstack = RecipeHandler.getOutput(inventory[0], false, getRecipes());
if (itemstack == null)
{
return false;
}
if (inventory[2] == null)
{
return true;
}
if (!inventory[2].isItemEqual(itemstack))
{
return false;
}
else
{
return inventory[2].stackSize + itemstack.stackSize <= inventory[2].getMaxStackSize();
}
}
public void sendPacket()
{
PacketHandler.sendAdvancedElectricMachinePacket(this);
}
public void sendPacketWithRange()
{
PacketHandler.sendAdvancedElectricMachinePacketWithRange(this, 50);
}
public void handlePacketData(NetworkManager network, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream)
{
try {
facing = dataStream.readInt();
isActive = dataStream.readByte() != 0;
operatingTicks = dataStream.readInt();
energyStored = dataStream.readInt();
secondaryEnergyStored = dataStream.readInt();
worldObj.markBlockAsNeedsUpdate(xCoord, yCoord, zCoord);
} catch (Exception e)
{
System.out.println("[ObsidianIngots] Error while handling tile entity packet.");
e.printStackTrace();
}
}
public void readFromNBT(NBTTagCompound par1NBTTagCompound)
{
super.readFromNBT(par1NBTTagCompound);
NBTTagList var2 = par1NBTTagCompound.getTagList("Items");
inventory = new ItemStack[getSizeInventory()];
for (int var3 = 0; var3 < var2.tagCount(); ++var3)
{
NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3);
byte var5 = var4.getByte("Slot");
if (var5 >= 0 && var5 < inventory.length)
{
inventory[var5] = ItemStack.loadItemStackFromNBT(var4);
}
}
operatingTicks = par1NBTTagCompound.getInteger("operatingTicks");
energyStored = par1NBTTagCompound.getInteger("energyStored");
secondaryEnergyStored = par1NBTTagCompound.getInteger("secondaryEnergyStored");
prevActive = isActive = par1NBTTagCompound.getBoolean("isActive");
facing = par1NBTTagCompound.getInteger("facing");
}
public void writeToNBT(NBTTagCompound par1NBTTagCompound)
{
super.writeToNBT(par1NBTTagCompound);
par1NBTTagCompound.setInteger("operatingTicks", operatingTicks);
par1NBTTagCompound.setInteger("energyStored", energyStored);
par1NBTTagCompound.setInteger("secondaryEnergyStored", secondaryEnergyStored);
par1NBTTagCompound.setBoolean("isActive", isActive);
par1NBTTagCompound.setInteger("facing", facing);
NBTTagList var2 = new NBTTagList();
for (int var3 = 0; var3 < inventory.length; ++var3)
{
if (inventory[var3] != null)
{
NBTTagCompound var4 = new NBTTagCompound();
var4.setByte("Slot", (byte)var3);
inventory[var3].writeToNBT(var4);
var2.appendTag(var4);
}
}
par1NBTTagCompound.setTag("Items", var2);
}
public int getStartInventorySide(ForgeDirection side)
{
if (side == ForgeDirection.DOWN) return 1;
if (side == ForgeDirection.UP) return 0;
return 2;
}
public int getSizeInventorySide(ForgeDirection side)
{
return 1;
}
public int getSizeInventory()
{
return inventory.length;
}
public ItemStack getStackInSlot(int var1)
{
return inventory[var1];
}
public ItemStack decrStackSize(int par1, int par2)
{
if (inventory[par1] != null)
{
ItemStack var3;
if (inventory[par1].stackSize <= par2)
{
var3 = inventory[par1];
inventory[par1] = null;
return var3;
}
else
{
var3 = inventory[par1].splitStack(par2);
if (inventory[par1].stackSize == 0)
{
inventory[par1] = null;
}
return var3;
}
}
else
{
return null;
}
}
public ItemStack getStackInSlotOnClosing(int par1)
{
if (inventory[par1] != null)
{
ItemStack var2 = inventory[par1];
inventory[par1] = null;
return var2;
}
else
{
return null;
}
}
public void setInventorySlotContents(int par1, ItemStack par2ItemStack)
{
inventory[par1] = par2ItemStack;
if (par2ItemStack != null && par2ItemStack.stackSize > getInventoryStackLimit())
{
par2ItemStack.stackSize = getInventoryStackLimit();
}
}
public String getInvName()
{
return fullName;
}
public int getInventoryStackLimit()
{
return 64;
}
public boolean isUseableByPlayer(EntityPlayer var1)
{
return worldObj.getBlockTileEntity(xCoord, yCoord, zCoord) != this ? false : var1.getDistanceSq((double)xCoord + 0.5D, (double)yCoord + 0.5D, (double)zCoord + 0.5D) <= 64.0D;
}
public void openChest() {}
public void closeChest() {}
/**
* Sets the energy to a new amount.
* @param energy - amount to store
*/
public void setEnergy(int energy)
{
energyStored = Math.max(Math.min(energy, MAX_ENERGY), 0);
}
/**
* Sets the secondary energy to a new amount
* @param energy - amount to store
*/
public void setSecondaryEnergy(int energy)
{
secondaryEnergyStored = Math.max(Math.min(energy, getFuelTicks(inventory[1])), 0);
}
public int getScaledChargeLevel(int i)
{
return secondaryEnergyStored*i / MAX_SECONDARY_ENERGY;
}
public int getScaledProgress(int i)
{
return operatingTicks*i / TICKS_REQUIRED;
}
}

View file

@ -0,0 +1,9 @@
package net.uberkat.obsidian.common;
public class TileEntityAdvancedPowerUnit extends TileEntityPowerUnit
{
public TileEntityAdvancedPowerUnit()
{
super(50000000, 1024);
}
}

View file

@ -0,0 +1,142 @@
package net.uberkat.obsidian.common;
import com.google.common.io.ByteArrayDataInput;
import cpw.mods.fml.common.Side;
import cpw.mods.fml.common.asm.SideOnly;
import ic2.api.EnergyNet;
import ic2.api.IWrenchable;
import net.minecraft.src.*;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.common.ISidedInventory;
import net.uberkat.obsidian.api.IElectricMachine;
public abstract class TileEntityBasicMachine extends TileEntity implements IElectricMachine
{
/** The direction this block is facing. */
public int facing;
/** A timer used to update the block's texture. */
public int textureTick = 0;
/** An integer that cycles between 0-15, used to update the block's texture. */
public int textureIndex = 0;
/** A timer used to send packets to clients. */
public int packetTick = 0;
/** Whether or not this block is in it's active state. */
public boolean isActive;
/** The previous active state for this block. */
public boolean prevActive;
/** Whether or not this machine has initialized and registered with other mods. */
public boolean initialized;
/**
* The most basic of machines - a simple tile entity with a facing, active state, initialized state, and animated texture.
*/
public TileEntityBasicMachine()
{
isActive = false;
}
public void updateEntity()
{
if(!initialized)
{
if(ObsidianIngots.hooks.IC2Loaded)
{
EnergyNet.getForWorld(worldObj).addTileEntity(this);
}
initialized = true;
}
onUpdate();
if(worldObj.isRemote)
{
updateTexture();
}
if(!worldObj.isRemote)
{
if(packetTick == 5)
{
sendPacket();
}
if(packetTick % 100 == 0)
{
sendPacketWithRange();
}
packetTick++;
}
}
@SideOnly(Side.CLIENT)
public void updateTexture()
{
if(textureTick % 5 == 0)
{
textureIndex = (++textureIndex)%15;
worldObj.markBlockNeedsUpdate(xCoord, yCoord, zCoord);
}
textureTick++;
}
public boolean wrenchCanSetFacing(EntityPlayer entityPlayer, int side)
{
return true;
}
public short getFacing()
{
return (short)facing;
}
public void setFacing(short direction)
{
if(initialized)
{
if(ObsidianIngots.hooks.IC2Loaded)
{
EnergyNet.getForWorld(worldObj).removeTileEntity(this);
}
}
initialized = false;
facing = direction;
sendPacket();
if(ObsidianIngots.hooks.IC2Loaded)
{
EnergyNet.getForWorld(worldObj).addTileEntity(this);
}
initialized = true;
}
public boolean wrenchCanRemove(EntityPlayer entityPlayer)
{
return true;
}
public float getWrenchDropRate()
{
return 1.0F;
}
public void setActive(boolean active)
{
isActive = active;
if(prevActive != active)
{
sendPacket();
}
prevActive = active;
}
}

View file

@ -7,155 +7,26 @@ import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.common.ISidedInventory;
import net.minecraft.src.*;
public class TileEntityCombiner extends TileEntityMachine
public class TileEntityCombiner extends TileEntityAdvancedElectricMachine
{
public static List recipes = new Vector();
public TileEntityCombiner()
{
super(200, "Combiner");
super("Combiner", 5, 1, 200, 1000, 200);
}
public List getRecipes()
{
return recipes;
}
public int getFuelTicks(ItemStack itemstack)
{
if(itemstack.getItem() instanceof ItemBlock && itemstack.itemID == Block.cobblestone.blockID)
{
return 200;
}
return 0;
}
public void onUpdate()
{
boolean var1 = machineBurnTime > 0;
boolean var2 = false;
if (machineBurnTime > 0)
{
--machineBurnTime;
}
if (!worldObj.isRemote)
{
if (machineBurnTime == 0 && canSmelt())
{
currentItemBurnTime = machineBurnTime = getItemBurnTime(inventory[1]);
if (machineBurnTime > 0)
{
var2 = true;
if (inventory[1] != null)
{
--inventory[1].stackSize;
if (inventory[1].stackSize == 0)
{
inventory[1] = null;
}
}
}
}
if (isBurning() && canSmelt())
{
++machineCookTime;
if (machineCookTime == maxBurnTime)
{
machineCookTime = 0;
smeltItem();
var2 = true;
}
}
else
{
machineCookTime = 0;
}
if (var1 != machineBurnTime > 0)
{
var2 = true;
setActive(isBurning());
}
}
if (var2)
{
onInventoryChanged();
}
}
public boolean canSmelt()
{
if (inventory[0] == null)
{
return false;
}
ItemStack itemstack = MachineRecipes.getOutput(inventory[0], false, recipes);
if (itemstack == null)
{
return false;
}
if (inventory[2] == null)
{
return true;
}
if (!inventory[2].isItemEqual(itemstack))
{
return false;
}
else
{
return inventory[2].stackSize + itemstack.stackSize <= inventory[2].getMaxStackSize();
}
}
public void smeltItem()
{
if (!canSmelt())
{
return;
}
ItemStack itemstack;
if (inventory[0].getItem().hasContainerItem())
{
itemstack = MachineRecipes.getOutput(inventory[0], false, recipes).copy();
inventory[0] = new ItemStack(inventory[0].getItem().getContainerItem());
}
else
{
itemstack = MachineRecipes.getOutput(inventory[0], true, recipes).copy();
}
if (inventory[0].stackSize <= 0)
{
inventory[0] = null;
}
if (inventory[2] == null)
{
inventory[2] = itemstack;
}
else
{
inventory[2].stackSize += itemstack.stackSize;
}
}
public static int getItemBurnTime(ItemStack par1ItemStack)
{
if (par1ItemStack == null)
{
return 0;
}
else
{
int var1 = par1ItemStack.getItem().shiftedIndex;
if (par1ItemStack.getItem() instanceof ItemBlock && var1 == Block.cobblestone.blockID) return 200;
}
return 0;
}
public static boolean isItemFuel(ItemStack par0ItemStack)
{
return getItemBurnTime(par0ItemStack) > 0;
}
}

View file

@ -7,157 +7,17 @@ import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.common.ISidedInventory;
import net.minecraft.src.*;
public class TileEntityCrusher extends TileEntityMachine
public class TileEntityCrusher extends TileEntityElectricMachine
{
public static List recipes = new Vector();
public TileEntityCrusher()
{
super(200, "Crusher");
super("Crusher", 5, 200, 1000);
}
public List getRecipes()
{
return recipes;
}
public void onUpdate()
{
boolean var1 = machineBurnTime > 0;
boolean var2 = false;
if (machineBurnTime > 0)
{
--machineBurnTime;
}
if (!worldObj.isRemote)
{
if (machineBurnTime == 0 && canSmelt())
{
currentItemBurnTime = machineBurnTime = getItemBurnTime(inventory[1]);
if (machineBurnTime > 0)
{
var2 = true;
if (inventory[1] != null)
{
--inventory[1].stackSize;
if (inventory[1].stackSize == 0)
{
inventory[1] = null;
}
}
}
}
if (isBurning() && canSmelt())
{
++machineCookTime;
if (machineCookTime == maxBurnTime)
{
machineCookTime = 0;
smeltItem();
var2 = true;
}
}
else
{
machineCookTime = 0;
}
if (var1 != machineBurnTime > 0)
{
var2 = true;
setActive(isBurning());
}
}
if (var2)
{
onInventoryChanged();
}
}
public boolean canSmelt()
{
if (inventory[0] == null)
{
return false;
}
ItemStack itemstack = MachineRecipes.getOutput(inventory[0], false, recipes);
if (itemstack == null)
{
return false;
}
if (inventory[2] == null)
{
return true;
}
if (!inventory[2].isItemEqual(itemstack))
{
return false;
}
else
{
return inventory[2].stackSize + itemstack.stackSize <= inventory[2].getMaxStackSize();
}
}
public void smeltItem()
{
if (!canSmelt())
{
return;
}
ItemStack itemstack;
if (inventory[0].getItem().hasContainerItem())
{
itemstack = MachineRecipes.getOutput(inventory[0], false, recipes).copy();
inventory[0] = new ItemStack(inventory[0].getItem().getContainerItem());
}
else
{
itemstack = MachineRecipes.getOutput(inventory[0], true, recipes).copy();
}
if (inventory[0].stackSize <= 0)
{
inventory[0] = null;
}
if (inventory[2] == null)
{
inventory[2] = itemstack;
}
else
{
inventory[2].stackSize += itemstack.stackSize;
}
}
public static int getItemBurnTime(ItemStack par1ItemStack)
{
if (par1ItemStack == null)
{
return 0;
}
else
{
int var1 = par1ItemStack.getItem().shiftedIndex;
if (var1 == Item.redstone.shiftedIndex) return 600;
if (var1 == ObsidianIngots.RedstoneIngot.shiftedIndex)
if (var1 == new ItemStack(ObsidianIngots.MultiBlock, 1, 2).itemID) return 5400;
}
return 0;
}
public static boolean isItemFuel(ItemStack par0ItemStack)
{
return getItemBurnTime(par0ItemStack) > 0;
}
}

View file

@ -0,0 +1,420 @@
package net.uberkat.obsidian.common;
import java.util.List;
import universalelectricity.UniversalElectricity;
import universalelectricity.implement.IItemElectric;
import com.google.common.io.ByteArrayDataInput;
import ic2.api.ElectricItem;
import ic2.api.EnergyNet;
import ic2.api.IElectricItem;
import ic2.api.IWrenchable;
import net.minecraft.src.*;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.common.ISidedInventory;
import net.uberkat.obsidian.api.IEnergizedItem;
public abstract class TileEntityElectricMachine extends TileEntityBasicMachine
{
/** The inventory slot itemstacks used by this machine. */
public ItemStack[] inventory = new ItemStack[3];
/** The full name of this machine. */
public String fullName;
/** How much energy this machine uses per tick. */
public int ENERGY_PER_TICK;
/** Ticks required to operate -- or smelt an item. */
public int TICKS_REQUIRED;
/** Maximum amount of energy this machine can hold. */
public int MAX_ENERGY;
/** How many ticks this machine has operated for. */
public int operatingTicks = 0;
/** How much energy is stored in this machine. */
public int energyStored = 0;
/**
* A simple electrical machine. This has 3 slots - the input slot (0), the energy slot (1),
* and the output slot (2). It will not run if it does not have enough energy.
*
* @param name - full name of the machine.
* @param perTick - energy used per tick.
* @param ticksRequired - ticks required to operate -- or smelt an item.
* @param maxEnergy - maximum energy this machine can hold.
*/
public TileEntityElectricMachine(String name, int perTick, int ticksRequired, int maxEnergy)
{
fullName = name;
ENERGY_PER_TICK = perTick;
TICKS_REQUIRED = ticksRequired;
MAX_ENERGY = maxEnergy;
}
public void onUpdate()
{
boolean testActive = operatingTicks > 0;
if(inventory[1] != null)
{
if(energyStored < MAX_ENERGY)
{
if(inventory[1].getItem() instanceof IEnergizedItem)
{
int received = 0;
int energyNeeded = MAX_ENERGY - energyStored;
IEnergizedItem item = (IEnergizedItem)inventory[1].getItem();
if(item.getRate() <= energyNeeded)
{
received = item.discharge(inventory[1], item.getRate());
}
else if(item.getRate() > energyNeeded)
{
item.setEnergy(inventory[1], (item.getEnergy(inventory[1]) - energyNeeded));
received = energyNeeded;
}
setEnergy(energyStored + received);
}
else if(inventory[1].getItem() instanceof IItemElectric)
{
int received = 0;
int energyNeeded = MAX_ENERGY - energyStored;
IItemElectric item = (IItemElectric)inventory[1].getItem();
if((item.getTransferRate()*UniversalElectricity.Wh_IC2_RATIO) <= energyNeeded)
{
received = (int)(item.onUseElectricity(item.getTransferRate(), inventory[1])*UniversalElectricity.Wh_IC2_RATIO);
}
else if(item.getTransferRate() > energyNeeded)
{
item.setWattHours((item.getWattHours(inventory[1]) - (energyNeeded*UniversalElectricity.IC2_RATIO)), inventory[1]);
}
}
else if(inventory[1].getItem() instanceof IElectricItem)
{
IElectricItem item = (IElectricItem)inventory[1].getItem();
if(item.canProvideEnergy())
{
int gain = ElectricItem.discharge(inventory[1], energyStored, 3, false, false);
setEnergy(energyStored + gain);
}
}
}
if(inventory[1].itemID == Item.redstone.shiftedIndex && energyStored <= (MAX_ENERGY-1000))
{
setEnergy(energyStored + 1000);
--inventory[1].stackSize;
if (inventory[1].stackSize <= 0)
{
inventory[1] = null;
}
}
}
if(canOperate() && (operatingTicks+1) < TICKS_REQUIRED)
{
++operatingTicks;
energyStored -= ENERGY_PER_TICK;
}
else if(canOperate() && (operatingTicks+1) == TICKS_REQUIRED)
{
if(!worldObj.isRemote)
{
operate();
}
operatingTicks = 0;
energyStored -= ENERGY_PER_TICK;
}
if(energyStored < 0)
{
energyStored = 0;
}
if(energyStored > MAX_ENERGY)
{
energyStored = MAX_ENERGY;
}
if(!canOperate())
{
operatingTicks = 0;
}
if(!worldObj.isRemote)
{
if(testActive != operatingTicks > 0)
{
if(operatingTicks > 0)
{
setActive(true);
}
else if(!canOperate())
{
setActive(false);
}
}
}
}
public void operate()
{
if (!canOperate())
{
return;
}
ItemStack itemstack;
if (inventory[0].getItem().hasContainerItem())
{
itemstack = RecipeHandler.getOutput(inventory[0], false, getRecipes()).copy();
inventory[0] = new ItemStack(inventory[0].getItem().getContainerItem());
}
else
{
itemstack = RecipeHandler.getOutput(inventory[0], true, getRecipes()).copy();
}
if (inventory[0].stackSize <= 0)
{
inventory[0] = null;
}
if (inventory[2] == null)
{
inventory[2] = itemstack;
}
else
{
inventory[2].stackSize += itemstack.stackSize;
}
}
public boolean canOperate()
{
if (inventory[0] == null)
{
return false;
}
if(energyStored < ENERGY_PER_TICK)
{
return false;
}
ItemStack itemstack = RecipeHandler.getOutput(inventory[0], false, getRecipes());
if (itemstack == null)
{
return false;
}
if (inventory[2] == null)
{
return true;
}
if (!inventory[2].isItemEqual(itemstack))
{
return false;
}
else
{
return inventory[2].stackSize + itemstack.stackSize <= inventory[2].getMaxStackSize();
}
}
public abstract List getRecipes();
public void sendPacket()
{
PacketHandler.sendElectricMachinePacket(this);
}
public void sendPacketWithRange()
{
PacketHandler.sendElectricMachinePacketWithRange(this, 50);
}
public void handlePacketData(NetworkManager network, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream)
{
try {
facing = dataStream.readInt();
isActive = dataStream.readByte() != 0;
operatingTicks = dataStream.readInt();
energyStored = dataStream.readInt();
worldObj.markBlockAsNeedsUpdate(xCoord, yCoord, zCoord);
} catch (Exception e)
{
System.out.println("[ObsidianIngots] Error while handling tile entity packet.");
e.printStackTrace();
}
}
public void readFromNBT(NBTTagCompound par1NBTTagCompound)
{
super.readFromNBT(par1NBTTagCompound);
NBTTagList var2 = par1NBTTagCompound.getTagList("Items");
inventory = new ItemStack[getSizeInventory()];
for (int var3 = 0; var3 < var2.tagCount(); ++var3)
{
NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3);
byte var5 = var4.getByte("Slot");
if (var5 >= 0 && var5 < inventory.length)
{
inventory[var5] = ItemStack.loadItemStackFromNBT(var4);
}
}
operatingTicks = par1NBTTagCompound.getInteger("operatingTicks");
energyStored = par1NBTTagCompound.getInteger("energyStored");
isActive = par1NBTTagCompound.getBoolean("isActive");
facing = par1NBTTagCompound.getInteger("facing");
}
public void writeToNBT(NBTTagCompound par1NBTTagCompound)
{
super.writeToNBT(par1NBTTagCompound);
par1NBTTagCompound.setInteger("operatingTicks", operatingTicks);
par1NBTTagCompound.setInteger("energyStored", energyStored);
par1NBTTagCompound.setBoolean("isActive", isActive);
par1NBTTagCompound.setInteger("facing", facing);
NBTTagList var2 = new NBTTagList();
for (int var3 = 0; var3 < inventory.length; ++var3)
{
if (inventory[var3] != null)
{
NBTTagCompound var4 = new NBTTagCompound();
var4.setByte("Slot", (byte)var3);
inventory[var3].writeToNBT(var4);
var2.appendTag(var4);
}
}
par1NBTTagCompound.setTag("Items", var2);
}
public int getStartInventorySide(ForgeDirection side)
{
if (side == ForgeDirection.DOWN) return 1;
if (side == ForgeDirection.UP) return 0;
return 2;
}
public int getSizeInventorySide(ForgeDirection side)
{
return 1;
}
public int getSizeInventory()
{
return inventory.length;
}
public ItemStack getStackInSlot(int var1)
{
return inventory[var1];
}
public ItemStack decrStackSize(int par1, int par2)
{
if (inventory[par1] != null)
{
ItemStack var3;
if (inventory[par1].stackSize <= par2)
{
var3 = inventory[par1];
inventory[par1] = null;
return var3;
}
else
{
var3 = inventory[par1].splitStack(par2);
if (inventory[par1].stackSize == 0)
{
inventory[par1] = null;
}
return var3;
}
}
else
{
return null;
}
}
public ItemStack getStackInSlotOnClosing(int par1)
{
if (inventory[par1] != null)
{
ItemStack var2 = inventory[par1];
inventory[par1] = null;
return var2;
}
else
{
return null;
}
}
public void setInventorySlotContents(int par1, ItemStack par2ItemStack)
{
inventory[par1] = par2ItemStack;
if (par2ItemStack != null && par2ItemStack.stackSize > getInventoryStackLimit())
{
par2ItemStack.stackSize = getInventoryStackLimit();
}
}
public String getInvName()
{
return fullName;
}
public int getInventoryStackLimit()
{
return 64;
}
public boolean isUseableByPlayer(EntityPlayer var1)
{
return worldObj.getBlockTileEntity(xCoord, yCoord, zCoord) != this ? false : var1.getDistanceSq((double)xCoord + 0.5D, (double)yCoord + 0.5D, (double)zCoord + 0.5D) <= 64.0D;
}
public void openChest() {}
public void closeChest() {}
/**
* Sets the energy to a new amount.
* @param energy - amount to store
*/
public void setEnergy(int energy)
{
energyStored = Math.max(Math.min(energy, MAX_ENERGY), 0);
}
public int getScaledChargeLevel(int i)
{
return energyStored*i / MAX_ENERGY;
}
public int getScaledProgress(int i)
{
return operatingTicks*i / TICKS_REQUIRED;
}
}

View file

@ -9,155 +9,17 @@ import net.minecraftforge.common.ISidedInventory;
import net.minecraftforge.common.ForgeDirection;
import net.minecraft.src.*;
public class TileEntityEnrichmentChamber extends TileEntityMachine
public class TileEntityEnrichmentChamber extends TileEntityElectricMachine
{
public static List recipes = new Vector();
public TileEntityEnrichmentChamber()
{
super(200, "Enrichment Chamber");
super("Enrichment Chamber", 5, 200, 1000);
}
public void onUpdate()
{
boolean var1 = machineBurnTime > 0;
boolean var2 = false;
if (machineBurnTime > 0)
{
--machineBurnTime;
}
if (!worldObj.isRemote)
{
if (machineBurnTime == 0 && canSmelt())
{
currentItemBurnTime = machineBurnTime = getItemBurnTime(inventory[1]);
if (machineBurnTime > 0)
{
var2 = true;
if (inventory[1] != null)
{
--inventory[1].stackSize;
if (inventory[1].stackSize == 0)
{
inventory[1] = null;
}
}
}
}
if (isBurning() && canSmelt())
{
++machineCookTime;
if (machineCookTime == maxBurnTime)
{
machineCookTime = 0;
smeltItem();
var2 = true;
}
}
else
{
machineCookTime = 0;
}
if (var1 != machineBurnTime > 0)
{
var2 = true;
setActive(isBurning());
}
}
if (var2)
{
onInventoryChanged();
}
}
public boolean canSmelt()
{
if (inventory[0] == null)
{
return false;
}
ItemStack itemstack = MachineRecipes.getOutput(inventory[0], false, recipes);
if (itemstack == null)
{
return false;
}
if (inventory[2] == null)
{
return true;
}
if (!inventory[2].isItemEqual(itemstack))
{
return false;
}
else
{
return inventory[2].stackSize + itemstack.stackSize <= inventory[2].getMaxStackSize();
}
}
public void smeltItem()
{
if (!canSmelt())
{
return;
}
ItemStack itemstack;
if (inventory[0].getItem().hasContainerItem())
{
itemstack = MachineRecipes.getOutput(inventory[0], false, recipes).copy();
inventory[0] = new ItemStack(inventory[0].getItem().getContainerItem());
}
else
{
itemstack = MachineRecipes.getOutput(inventory[0], true, recipes).copy();
}
if (inventory[0].stackSize <= 0)
{
inventory[0] = null;
}
if (inventory[2] == null)
{
inventory[2] = itemstack;
}
else
{
inventory[2].stackSize += itemstack.stackSize;
}
}
public static int getItemBurnTime(ItemStack par1ItemStack)
{
if (par1ItemStack == null)
{
return 0;
}
else
{
int var1 = par1ItemStack.getItem().shiftedIndex;
if (var1 == Item.redstone.shiftedIndex) return 600;
}
return 0;
}
public static boolean isItemFuel(ItemStack par0ItemStack)
{
return getItemBurnTime(par0ItemStack) > 0;
}
public List getRecipes()
{
return recipes;
}
}

View file

@ -12,13 +12,14 @@ import cpw.mods.fml.server.FMLServerHandler;
import net.minecraft.src.*;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.common.ISidedInventory;
import net.uberkat.obsidian.api.INetworkedMachine;
public abstract class TileEntityMachine extends TileEntity implements IInventory, ISidedInventory, INetworkedMachine, IWrenchable
{
/** The ItemStacks that hold the items currently being used in the furnace */
protected ItemStack[] inventory = new ItemStack[3];
/** The number of ticks that the furnace will keep burning */
/** The number of ticks that this machine will keep running */
public int machineBurnTime = 0;
/** The number of ticks that a fresh copy of the currently-burning item would keep the furnace burning for */
@ -46,7 +47,7 @@ public abstract class TileEntityMachine extends TileEntity implements IInventory
public int textureTick = 0;
/** The amount of update ticks have passed since the game started */
public byte updateTicks = 0;
public boolean hasInitialized;
/** An integer that constantly cycles from 0 to 15. Used for animated textures. */
public int textureIndex = 0;
@ -91,13 +92,22 @@ public abstract class TileEntityMachine extends TileEntity implements IInventory
public void updateEntity()
{
onUpdate();
if(FMLCommonHandler.instance().getSidedDelegate().getSide().isClient())
if(worldObj.isRemote)
{
updateTextureTick();
}
updateTick();
updatePacketTick();
if(!worldObj.isRemote)
{
if(!hasInitialized)
{
//PacketHandler.sendMachinePacket(this);
hasInitialized = true;
}
updatePacketTick();
}
if(machineCookTime == 0 || machineCookTime == maxBurnTime && currentItemBurnTime != 0)
{
@ -110,25 +120,12 @@ public abstract class TileEntityMachine extends TileEntity implements IInventory
*/
public abstract void onUpdate();
/**
* Synchronizes the client with the server on startup by sending two packets.
* Not exactly sure why it needs 5 packets, but it wouldn't work with only 4!
*/
public void updateTick()
{
if(updateTicks < 5)
{
PacketHandler.sendMachinePacket(this);
updateTicks++;
}
}
public void updatePacketTick()
{
if(packetTick % 100 == 0)
{
//PacketHandler.sendMachinePacketWithRange(this, 50);
packetTick++;
PacketHandler.sendMachinePacketWithRange(this, 50);
}
else {
packetTick++;
@ -247,7 +244,7 @@ public abstract class TileEntityMachine extends TileEntity implements IInventory
if(prevActive != active)
{
PacketHandler.sendMachinePacket(this);
//PacketHandler.sendMachinePacket(this);
}
prevActive = active;
@ -257,7 +254,7 @@ public abstract class TileEntityMachine extends TileEntity implements IInventory
{
facing = direction;
PacketHandler.sendMachinePacket(this);
//PacketHandler.sendMachinePacket(this);
}
public void updateTexture(World world, int x, int y, int z)

View file

@ -11,161 +11,23 @@ import net.minecraft.src.*;
import net.minecraftforge.common.ISidedInventory;
import net.minecraftforge.common.ForgeDirection;
public class TileEntityPlatinumCompressor extends TileEntityMachine
public class TileEntityPlatinumCompressor extends TileEntityAdvancedElectricMachine
{
public static List recipes = new Vector();
public TileEntityPlatinumCompressor()
{
super(200, "Platinum Compressor");
super("Platinum Compressor", 5, 1, 200, 1000, 200);
}
public void onUpdate()
{
boolean var1 = machineBurnTime > 0;
boolean var2 = false;
public List getRecipes()
{
return recipes;
}
if (machineBurnTime > 0)
{
--machineBurnTime;
}
if (!worldObj.isRemote)
{
if (machineBurnTime == 0 && canSmelt())
{
currentItemBurnTime = machineBurnTime = getItemBurnTime(inventory[1]);
if (machineBurnTime > 0)
{
var2 = true;
if (inventory[1] != null)
{
--inventory[1].stackSize;
if (inventory[1].stackSize == 0)
{
inventory[1] = null;
}
}
}
}
if (isBurning() && canSmelt())
{
++machineCookTime;
if (machineCookTime == maxBurnTime)
{
machineCookTime = 0;
smeltItem();
var2 = true;
}
}
else
{
machineCookTime = 0;
}
if (var1 != machineBurnTime > 0)
{
var2 = true;
setActive(isBurning());
}
}
if (var2)
{
onInventoryChanged();
}
}
public boolean canSmelt()
{
if (inventory[0] == null)
{
return false;
}
ItemStack itemstack = MachineRecipes.getOutput(inventory[0], false, recipes);
if (itemstack == null)
{
return false;
}
if (inventory[2] == null)
{
return true;
}
if (!inventory[2].isItemEqual(itemstack))
{
return false;
}
else
{
return inventory[2].stackSize + itemstack.stackSize <= inventory[2].getMaxStackSize();
}
}
public void smeltItem()
{
if (!canSmelt())
{
return;
}
ItemStack itemstack;
if (inventory[0].getItem().hasContainerItem())
{
itemstack = MachineRecipes.getOutput(inventory[0], false, recipes).copy();
inventory[0] = new ItemStack(inventory[0].getItem().getContainerItem());
}
else
{
itemstack = MachineRecipes.getOutput(inventory[0], true, recipes).copy();
}
if (inventory[0].stackSize <= 0)
{
inventory[0] = null;
}
if (inventory[2] == null)
{
inventory[2] = itemstack;
}
else
{
inventory[2].stackSize += itemstack.stackSize;
}
}
public static int getItemBurnTime(ItemStack par1ItemStack)
{
if (par1ItemStack == null)
{
return 0;
}
else
{
int var1 = par1ItemStack.getItem().shiftedIndex;
if (var1 == ObsidianIngots.PlatinumIngot.shiftedIndex) return 200;
if (var1 == new ItemStack(ObsidianIngots.MultiBlock, 1, 1).itemID) return 1800;
}
return 0;
}
public void getBurnTime()
{
currentItemBurnTime = getItemBurnTime(inventory[1]);
}
public static boolean isItemFuel(ItemStack par0ItemStack)
{
return getItemBurnTime(par0ItemStack) > 0;
}
public int getFuelTicks(ItemStack itemstack)
{
if (itemstack.itemID == ObsidianIngots.PlatinumIngot.shiftedIndex) return 200;
return 0;
}
}

View file

@ -0,0 +1,563 @@
package net.uberkat.obsidian.common;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import universalelectricity.UniversalElectricity;
import universalelectricity.electricity.ElectricInfo;
import universalelectricity.electricity.ElectricityManager;
import universalelectricity.implement.IConductor;
import universalelectricity.implement.IElectricityReceiver;
import universalelectricity.implement.IElectricityStorage;
import universalelectricity.implement.IItemElectric;
import universalelectricity.network.ConnectionHandler;
import universalelectricity.network.ConnectionHandler.ConnectionType;
import universalelectricity.network.ISimpleConnectionHandler;
import universalelectricity.prefab.TileEntityConductor;
import universalelectricity.prefab.TileEntityDisableable;
import universalelectricity.prefab.Vector3;
import buildcraft.api.power.IPowerProvider;
import buildcraft.api.power.IPowerReceptor;
import buildcraft.api.power.PowerFramework;
import buildcraft.api.power.PowerProvider;
import buildcraft.api.core.Orientations;
import com.google.common.io.ByteArrayDataInput;
import ic2.api.Direction;
import ic2.api.ElectricItem;
import ic2.api.EnergyNet;
import ic2.api.IEnergySink;
import ic2.api.IEnergySource;
import ic2.api.IEnergyStorage;
import ic2.api.IWrenchable;
import ic2.api.IElectricItem;
import net.minecraft.src.*;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.common.ISidedInventory;
import net.uberkat.obsidian.api.IEnergizedItem;
import net.uberkat.obsidian.api.INetworkedMachine;
public class TileEntityPowerUnit extends TileEntityDisableable implements IInventory, ISidedInventory, INetworkedMachine, IWrenchable, IEnergySink, IEnergySource, IEnergyStorage, IPowerReceptor, IElectricityStorage, IElectricityReceiver
{
public ItemStack[] inventory = new ItemStack[2];
/** Maximum amount of energy this unit can hold. */
public int maxEnergy;
/** Output per tick this machine can transfer. */
public int output;
/** The amount of energy this unit is storing. */
public int energyStored = 0;
/** Direction this block is facing. */
public int facing;
/** A timer used to send packets to clients. */
public int packetTick = 0;
/** BuildCraft power provider. */
public IPowerProvider powerProvider;
/** Whether or not this machine has initialized and registered with other mods. */
public boolean initialized = false;
/**
* A block used to store and transfer electricity.
*/
public TileEntityPowerUnit()
{
this(500000, 256);
}
/**
* A block used to store and transfer electricity.
* @param energy - maximum energy this block can hold.
* @param i - output per tick this block can handle.
*/
public TileEntityPowerUnit(int energy, int i)
{
ElectricityManager.instance.registerElectricUnit(this);
maxEnergy = energy;
output = i;
if(PowerFramework.currentFramework != null)
{
powerProvider = PowerFramework.currentFramework.createPowerProvider();
powerProvider.configure(20, 25, 25, 25, maxEnergy/10);
}
}
public Packet getDescriptionPacket()
{
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(bytes);
try {
output.writeInt(EnumPacketType.TILE_ENTITY.id);
output.writeInt(xCoord);
output.writeInt(yCoord);
output.writeInt(zCoord);
output.writeInt(facing);
output.writeInt(energyStored);
} catch (IOException e)
{
System.err.println("[ObsidianIngots] Error while writing tile entity packet.");
e.printStackTrace();
}
Packet250CustomPayload packet = new Packet250CustomPayload();
packet.channel = "ObsidianIngots";
packet.data = bytes.toByteArray();
packet.length = packet.data.length;
return packet;
}
public void updateEntity()
{
if(!worldObj.isRemote)
{
if(packetTick == 5)
{
PacketHandler.sendPowerUnitPacket(this);
}
if(packetTick % 100 == 0)
{
PacketHandler.sendPowerUnitPacketWithRange(this, 50);
packetTick++;
}
else {
packetTick++;
}
}
if(!initialized)
{
if(ObsidianIngots.hooks.IC2Loaded)
{
EnergyNet.getForWorld(worldObj).addTileEntity(this);
}
initialized = true;
}
if(powerProvider != null)
{
int received = (int)(powerProvider.useEnergy(25, 25, true)*100);
setEnergy(energyStored + received);
}
if(inventory[0] != null && energyStored > 0)
{
if(inventory[0].getItem() instanceof IEnergizedItem)
{
IEnergizedItem item = (IEnergizedItem)inventory[0].getItem();
int rejects = item.charge(inventory[0], item.getRate());
setEnergy(energyStored - (item.getRate() - rejects));
}
else if(inventory[0].getItem() instanceof IItemElectric)
{
IItemElectric item = (IItemElectric)inventory[0].getItem();
int rejects = (int)(item.onReceiveElectricity(item.getTransferRate(), inventory[0])*UniversalElectricity.Wh_IC2_RATIO);
setEnergy(energyStored - ((int)(item.getTransferRate()*UniversalElectricity.Wh_IC2_RATIO) - rejects));
}
else if(inventory[0].getItem() instanceof IElectricItem)
{
int sent = ElectricItem.charge(inventory[0], energyStored, 3, false, false);
setEnergy(energyStored - sent);
}
}
if(inventory[1] != null && energyStored < maxEnergy)
{
if(inventory[1].getItem() instanceof IEnergizedItem)
{
IEnergizedItem item = (IEnergizedItem)inventory[1].getItem();
int received = item.discharge(inventory[1], item.getRate());
setEnergy(energyStored + received);
}
else if(inventory[1].getItem() instanceof IItemElectric)
{
IItemElectric item = (IItemElectric)inventory[1].getItem();
int received = (int)(item.onUseElectricity(item.getTransferRate(), inventory[1])*UniversalElectricity.Wh_IC2_RATIO);
setEnergy(energyStored + received);
}
else if(inventory[1].getItem() instanceof IElectricItem)
{
IElectricItem item = (IElectricItem)inventory[1].getItem();
if(item.canProvideEnergy())
{
int gain = ElectricItem.discharge(inventory[1], energyStored, 3, false, false);
setEnergy(energyStored + gain);
}
}
else if(inventory[1].itemID == Item.redstone.shiftedIndex)
{
setEnergy(energyStored + 1000);
--inventory[1].stackSize;
if (inventory[1].stackSize <= 0)
{
inventory[1] = null;
}
}
}
if(energyStored > 0)
{
TileEntity tileEntity = Vector3.getTileEntityFromSide(worldObj, Vector3.get(this), ForgeDirection.getOrientation(facing));
if(ObsidianIngots.hooks.IC2Loaded)
{
if(energyStored >= output)
{
setEnergy(energyStored - (output - EnergyNet.getForWorld(worldObj).emitEnergyFrom(this, output)));
}
}
if(isPowerReceptor(tileEntity))
{
IPowerReceptor receptor = (IPowerReceptor)tileEntity;
int energyNeeded = Math.min(receptor.getPowerProvider().getMinEnergyReceived(), receptor.getPowerProvider().getMaxEnergyReceived())*10;
float transferEnergy = Math.max(Math.min(Math.min(energyNeeded, energyStored), 54000), 0);
receptor.getPowerProvider().receiveEnergy((float)(transferEnergy/10), Orientations.dirs()[ForgeDirection.getOrientation(facing).getOpposite().ordinal()]);
setEnergy(energyStored - (int)transferEnergy);
}
TileEntity connector = Vector3.getConnectorFromSide(worldObj, Vector3.get(this), ForgeDirection.getOrientation(facing));
if(connector != null && connector instanceof TileEntityConductor)
{
double wattsNeeded = ElectricityManager.instance.getElectricityRequired(((IConductor)connector).getConnectionID());
double transferAmps = Math.max(Math.min(Math.min(ElectricInfo.getAmps(wattsNeeded, getVoltage()), ElectricInfo.getAmpsFromWattHours(energyStored*UniversalElectricity.IC2_RATIO, getVoltage()) ), 15), 0);
ElectricityManager.instance.produceElectricity(this, (IConductor)connector, transferAmps, getVoltage());
setEnergy(energyStored - (int)(ElectricInfo.getWattHours(transferAmps, getVoltage())*UniversalElectricity.Wh_IC2_RATIO));
}
}
worldObj.markBlockNeedsUpdate(xCoord, yCoord, zCoord);
}
public void setEnergy(int energy)
{
energyStored = Math.max(Math.min(energy, maxEnergy), 0);
}
public int getStartInventorySide(ForgeDirection side)
{
return 1;
}
public int getSizeInventorySide(ForgeDirection side)
{
return 1;
}
public int getSizeInventory()
{
return inventory.length;
}
public ItemStack getStackInSlot(int par1)
{
return inventory[par1];
}
public ItemStack decrStackSize(int par1, int par2)
{
if (inventory[par1] != null)
{
ItemStack var3;
if (inventory[par1].stackSize <= par2)
{
var3 = inventory[par1];
inventory[par1] = null;
return var3;
}
else
{
var3 = inventory[par1].splitStack(par2);
if (inventory[par1].stackSize == 0)
{
inventory[par1] = null;
}
return var3;
}
}
else
{
return null;
}
}
public ItemStack getStackInSlotOnClosing(int par1)
{
if (inventory[par1] != null)
{
ItemStack var2 = inventory[par1];
inventory[par1] = null;
return var2;
}
else
{
return null;
}
}
public void setInventorySlotContents(int par1, ItemStack par2ItemStack)
{
inventory[par1] = par2ItemStack;
if (par2ItemStack != null && par2ItemStack.stackSize > getInventoryStackLimit())
{
par2ItemStack.stackSize = getInventoryStackLimit();
}
}
public String getInvName()
{
return output == 1024 ? "Advanced Power Unit" : "Power Unit";
}
public int getInventoryStackLimit()
{
return 64;
}
public void openChest() {}
public void closeChest() {}
public void readFromNBT(NBTTagCompound par1NBTTagCompound)
{
super.readFromNBT(par1NBTTagCompound);
PowerFramework.currentFramework.loadPowerProvider(this, par1NBTTagCompound);
NBTTagList var2 = par1NBTTagCompound.getTagList("Items");
inventory = new ItemStack[getSizeInventory()];
for (int var3 = 0; var3 < var2.tagCount(); ++var3)
{
NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3);
byte var5 = var4.getByte("Slot");
if (var5 >= 0 && var5 < inventory.length)
{
inventory[var5] = ItemStack.loadItemStackFromNBT(var4);
}
}
energyStored = par1NBTTagCompound.getInteger("energyStored");
facing = par1NBTTagCompound.getInteger("facing");
}
public void writeToNBT(NBTTagCompound par1NBTTagCompound)
{
super.writeToNBT(par1NBTTagCompound);
if(PowerFramework.currentFramework != null)
{
PowerFramework.currentFramework.savePowerProvider(this, par1NBTTagCompound);
}
par1NBTTagCompound.setInteger("energyStored", energyStored);
par1NBTTagCompound.setInteger("facing", facing);
NBTTagList var2 = new NBTTagList();
for (int var3 = 0; var3 < inventory.length; ++var3)
{
if (inventory[var3] != null)
{
NBTTagCompound var4 = new NBTTagCompound();
var4.setByte("Slot", (byte)var3);
inventory[var3].writeToNBT(var4);
var2.appendTag(var4);
}
}
par1NBTTagCompound.setTag("Items", var2);
}
public void handlePacketData(NetworkManager network, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream)
{
try {
facing = dataStream.readInt();
energyStored = dataStream.readInt();
worldObj.markBlockAsNeedsUpdate(xCoord, yCoord, zCoord);
} catch (Exception e)
{
System.out.println("[ObsidianIngots] Error while handling tile entity packet.");
e.printStackTrace();
}
}
public boolean wrenchCanSetFacing(EntityPlayer entityPlayer, int side)
{
return facing != side;
}
public short getFacing()
{
return (short)facing;
}
public void setFacing(short direction)
{
if(initialized)
{
if(ObsidianIngots.hooks.IC2Loaded)
{
EnergyNet.getForWorld(worldObj).removeTileEntity(this);
}
}
initialized = false;
facing = direction;
PacketHandler.sendPowerUnitPacket(this);
if(ObsidianIngots.hooks.IC2Loaded)
{
EnergyNet.getForWorld(worldObj).addTileEntity(this);
}
initialized = true;
}
public boolean wrenchCanRemove(EntityPlayer entityPlayer)
{
return true;
}
public float getWrenchDropRate()
{
return 1.0F;
}
public boolean acceptsEnergyFrom(TileEntity emitter, Direction direction)
{
return direction.toForgeDirection() != ForgeDirection.getOrientation(facing);
}
public boolean isAddedToEnergyNet()
{
return initialized;
}
public int getStored()
{
return energyStored;
}
public int getCapacity()
{
return maxEnergy;
}
public int getOutput()
{
return output;
}
public boolean demandsEnergy()
{
return energyStored < maxEnergy;
}
public int injectEnergy(Direction direction, int i)
{
int j = i;
if (energyStored + i >= maxEnergy + output)
{
j = (maxEnergy + output) - energyStored - 1;
}
energyStored += j;
return i - j;
}
public boolean emitsEnergyTo(TileEntity receiver, Direction direction)
{
return direction.toForgeDirection() == ForgeDirection.getOrientation(facing);
}
public int getMaxEnergyOutput()
{
return output;
}
public double getWattHours(Object... data)
{
return energyStored*UniversalElectricity.IC2_RATIO;
}
public void setWattHours(double wattHours, Object... data)
{
setEnergy((int)(wattHours*UniversalElectricity.Wh_IC2_RATIO));
}
public double getMaxWattHours()
{
return maxEnergy*UniversalElectricity.IC2_RATIO;
}
public void setPowerProvider(IPowerProvider provider)
{
powerProvider = provider;
}
public IPowerProvider getPowerProvider()
{
return powerProvider;
}
public void doWork() {}
public int powerRequest()
{
return getPowerProvider().getMaxEnergyReceived();
}
public boolean canConnect(ForgeDirection side)
{
return true;
}
public double getVoltage()
{
return 120;
}
public boolean isPowerReceptor(TileEntity tileEntity)
{
if(tileEntity instanceof IPowerReceptor)
{
IPowerReceptor receptor = (IPowerReceptor) tileEntity;
IPowerProvider provider = receptor.getPowerProvider();
return provider != null && provider.getClass().getSuperclass().equals(PowerProvider.class);
}
return false;
}
public void onReceive(TileEntity sender, double amps, double voltage, ForgeDirection side)
{
System.out.println("Received " + amps + " " + voltage);
setEnergy(energyStored + (int)(ElectricInfo.getWattHours(amps, voltage)*UniversalElectricity.Wh_IC2_RATIO));
}
public double wattRequest()
{
return ElectricInfo.getWatts(maxEnergy*UniversalElectricity.IC2_RATIO) - ElectricInfo.getWatts(energyStored*UniversalElectricity.IC2_RATIO);
}
public boolean canReceiveFromSide(ForgeDirection side)
{
return side != ForgeDirection.getOrientation(facing);
}
public boolean isUseableByPlayer(EntityPlayer var1)
{
return worldObj.getBlockTileEntity(xCoord, yCoord, zCoord) != this ? false : var1.getDistanceSq((double)xCoord + 0.5D, (double)yCoord + 0.5D, (double)zCoord + 0.5D) <= 64.0D;
}
}

View file

@ -11,132 +11,27 @@ import cpw.mods.fml.common.Side;
import cpw.mods.fml.common.asm.SideOnly;
import net.minecraft.src.*;
public class TileEntityTheoreticalElementizer extends TileEntityMachine
public class TileEntityTheoreticalElementizer extends TileEntityAdvancedElectricMachine
{
public static List recipes = new Vector();
public TileEntityTheoreticalElementizer()
{
super(1000, "Theoretical Elementizer");
super("Theoretical Elementizer", 50, 1, 1000, 10000, 1000);
}
public void onUpdate()
{
boolean var1 = machineBurnTime > 0;
boolean var2 = false;
public List getRecipes()
{
return recipes;
}
if (machineBurnTime > 0)
{
--machineBurnTime;
}
if (!worldObj.isRemote)
{
if (machineBurnTime == 0 && canSmelt())
{
currentItemBurnTime = machineBurnTime = getItemBurnTime(inventory[1]);
if (machineBurnTime > 0)
{
var2 = true;
if (inventory[1] != null)
{
--inventory[1].stackSize;
if (inventory[1].stackSize == 0)
{
inventory[1] = null;
}
}
}
}
if (isBurning() && canSmelt())
{
++machineCookTime;
if (machineCookTime == maxBurnTime)
{
machineCookTime = 0;
smeltItem();
var2 = true;
}
}
else
{
machineCookTime = 0;
}
if (var1 != machineBurnTime > 0)
{
var2 = true;
setActive(isBurning());
}
}
if (var2)
{
onInventoryChanged();
}
}
public boolean canSmelt()
{
if (inventory[0] == null)
{
return false;
}
else if(inventory[2] != null)
{
return false;
}
else
{
if (inventory[0].getItem().shiftedIndex != ObsidianIngots.EnrichedAlloy.shiftedIndex) return false;
if (inventory[2] == null) return true;
}
return false;
}
public void smeltItem()
{
if (canSmelt())
{
ItemStack itemstack = new ItemStack(getRandomMagicItem(), 1);
if (inventory[2] == null)
{
inventory[2] = itemstack.copy();
}
--inventory[0].stackSize;
if (inventory[0].stackSize <= 0)
{
inventory[0] = null;
}
}
}
public static int getItemBurnTime(ItemStack par1ItemStack)
{
if (par1ItemStack == null)
{
return 0;
}
else
{
int var1 = par1ItemStack.getItem().shiftedIndex;
if (var1 == Item.diamond.shiftedIndex) return 1000;
}
return 0;
}
public static boolean isItemFuel(ItemStack par0ItemStack)
{
return getItemBurnTime(par0ItemStack) > 0;
}
public Item getRandomMagicItem()
public int getFuelTicks(ItemStack itemstack)
{
if (itemstack.itemID == Item.diamond.shiftedIndex) return 1000;
return 0;
}
public static Item getRandomMagicItem()
{
Random rand = new Random();
int random = rand.nextInt(3);

View file

@ -22,7 +22,6 @@ import net.minecraft.src.RenderBlocks;
import net.minecraft.src.World;
import net.minecraftforge.client.MinecraftForgeClient;
import net.uberkat.obsidian.common.CommonProxy;
import net.uberkat.obsidian.common.ContainerTheoreticalElementizer;
import net.uberkat.obsidian.common.EntityKnife;
import net.uberkat.obsidian.common.EntityObsidianArrow;
import net.uberkat.obsidian.common.EntityObsidianTNT;
@ -32,6 +31,7 @@ import net.uberkat.obsidian.common.TileEntityCombiner;
import net.uberkat.obsidian.common.TileEntityCrusher;
import net.uberkat.obsidian.common.TileEntityEnrichmentChamber;
import net.uberkat.obsidian.common.TileEntityPlatinumCompressor;
import net.uberkat.obsidian.common.TileEntityPowerUnit;
import net.uberkat.obsidian.common.TileEntityTheoreticalElementizer;
/**
@ -100,6 +100,9 @@ public class ClientProxy extends CommonProxy
case 7:
TileEntityTheoreticalElementizer tileentity4 = (TileEntityTheoreticalElementizer)world.getBlockTileEntity(x, y, z);
return new GuiTheoreticalElementizer(player.inventory, tileentity4);
case 8:
TileEntityPowerUnit tileentity5 = (TileEntityPowerUnit)world.getBlockTileEntity(x, y, z);
return new GuiPowerUnit(player.inventory, tileentity5);
}
return null;
}

View file

@ -2,7 +2,7 @@ package net.uberkat.obsidian.client;
import org.lwjgl.opengl.GL11;
import net.minecraft.src.*;
import net.uberkat.obsidian.common.ContainerCombiner;
import net.uberkat.obsidian.common.ContainerAdvancedElectricMachine;
import net.uberkat.obsidian.common.TileEntityCombiner;
public class GuiCombiner extends GuiContainer
@ -11,7 +11,7 @@ public class GuiCombiner extends GuiContainer
public GuiCombiner(InventoryPlayer par1InventoryPlayer, TileEntityCombiner par2TileEntityCombiner)
{
super(new ContainerCombiner(par1InventoryPlayer, par2TileEntityCombiner));
super(new ContainerAdvancedElectricMachine(par1InventoryPlayer, par2TileEntityCombiner));
machineInventory = par2TileEntityCombiner;
}
@ -29,21 +29,18 @@ public class GuiCombiner extends GuiContainer
*/
protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3)
{
int var4 = this.mc.renderEngine.getTexture("/gui/GuiCombiner.png");
int var4 = mc.renderEngine.getTexture("/gui/GuiCombiner.png");
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
mc.renderEngine.bindTexture(var4);
int var5 = (this.width - this.xSize) / 2;
int var6 = (this.height - this.ySize) / 2;
drawTexturedModalRect(var5, var6, 0, 0, this.xSize, this.ySize);
int var5 = (width - xSize) / 2;
int var6 = (height - ySize) / 2;
drawTexturedModalRect(var5, var6, 0, 0, xSize, ySize);
int var7;
var7 = machineInventory.getScaledChargeLevel(12);
drawTexturedModalRect(var5 + 56, var6 + 36 + 12 - var7, 176, 12 - var7, 14, var7 + 2);
if (this.machineInventory.isBurning())
{
var7 = this.machineInventory.getBurnTimeRemainingScaled(12);
this.drawTexturedModalRect(var5 + 56, var6 + 36 + 12 - var7, 176, 12 - var7, 14, var7 + 2);
}
var7 = this.machineInventory.getCookProgressScaled(24);
this.drawTexturedModalRect(var5 + 79, var6 + 34, 176, 14, var7 + 1, 16);
var7 = machineInventory.getScaledProgress(24);
drawTexturedModalRect(var5 + 79, var6 + 34, 176, 14, var7 + 1, 16);
}
}

View file

@ -32,7 +32,7 @@ public class GuiCredits extends GuiScreen {
public static void onErrorDownloading()
{
updateProgress = "¤4Error updating.";
updateProgress = "Error updating.";
}
protected void actionPerformed(GuiButton guibutton)
@ -67,13 +67,13 @@ public class GuiCredits extends GuiScreen {
public void drawScreen(int i, int j, float f)
{
drawDefaultBackground();
drawCenteredString(fontRenderer, "¤1Obsidian Ingots ¤7by aidancbrady", width / 2, (height / 4 - 60) + 20, 0xffffff);
writeText("¤7Your version: " + (ObsidianUtils.isClientLatestVersion() ? ObsidianIngots.versionNumber.toString() : "¤4" + ObsidianIngots.versionNumber.toString()) + "¤7 -- OUTDATED", 36);
writeText("¤7Newest version: " + ObsidianIngots.latestVersionNumber, 45);
writeText("¤7*Developed on Mac OS X 10.8 Mountain Lion", 63);
writeText("¤7*Code, textures, and ideas by aidancbrady", 72);
writeText("¤7Recent news: ¤1" + ObsidianIngots.recentNews, 81);
writeText("¤7" + updateProgress, 99);
drawCenteredString(fontRenderer, "Obsidian Ingots by aidancbrady", width / 2, (height / 4 - 60) + 20, 0xffffff);
writeText("Your version: " + (ObsidianUtils.isClientLatestVersion() ? ObsidianIngots.versionNumber.toString() : ObsidianIngots.versionNumber.toString()) + " -- OUTDATED", 36);
writeText("Newest version: " + ObsidianIngots.latestVersionNumber, 45);
writeText("*Developed on Mac OS X 10.8 Mountain Lion", 63);
writeText("*Code, textures, and ideas by aidancbrady", 72);
writeText("Recent news: " + ObsidianIngots.recentNews, 81);
writeText(updateProgress, 99);
super.drawScreen(i, j, f);
}
}

View file

@ -2,7 +2,7 @@ package net.uberkat.obsidian.client;
import org.lwjgl.opengl.GL11;
import net.minecraft.src.*;
import net.uberkat.obsidian.common.ContainerCrusher;
import net.uberkat.obsidian.common.ContainerElectricMachine;
import net.uberkat.obsidian.common.TileEntityCrusher;
public class GuiCrusher extends GuiContainer
@ -11,7 +11,7 @@ public class GuiCrusher extends GuiContainer
public GuiCrusher(InventoryPlayer par1InventoryPlayer, TileEntityCrusher par2TileEntityCrusher)
{
super(new ContainerCrusher(par1InventoryPlayer, par2TileEntityCrusher));
super(new ContainerElectricMachine(par1InventoryPlayer, par2TileEntityCrusher));
machineInventory = par2TileEntityCrusher;
}
@ -29,21 +29,18 @@ public class GuiCrusher extends GuiContainer
*/
protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3)
{
int var4 = this.mc.renderEngine.getTexture("/gui/GuiCrusher.png");
int var4 = mc.renderEngine.getTexture("/gui/GuiCrusher.png");
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
mc.renderEngine.bindTexture(var4);
int var5 = (this.width - this.xSize) / 2;
int var6 = (this.height - this.ySize) / 2;
drawTexturedModalRect(var5, var6, 0, 0, this.xSize, this.ySize);
int var5 = (width - xSize) / 2;
int var6 = (height - ySize) / 2;
drawTexturedModalRect(var5, var6, 0, 0, xSize, ySize);
int var7;
var7 = machineInventory.getScaledChargeLevel(12);
drawTexturedModalRect(var5 + 56, var6 + 36 + 12 - var7, 176, 12 - var7, 14, var7 + 2);
if (this.machineInventory.isBurning())
{
var7 = this.machineInventory.getBurnTimeRemainingScaled(12);
this.drawTexturedModalRect(var5 + 56, var6 + 36 + 12 - var7, 176, 12 - var7, 14, var7 + 2);
}
var7 = this.machineInventory.getCookProgressScaled(24);
this.drawTexturedModalRect(var5 + 79, var6 + 34, 176, 14, var7 + 1, 16);
var7 = machineInventory.getScaledProgress(24);
drawTexturedModalRect(var5 + 79, var6 + 34, 176, 14, var7 + 1, 16);
}
}

View file

@ -2,7 +2,7 @@ package net.uberkat.obsidian.client;
import org.lwjgl.opengl.GL11;
import net.minecraft.src.*;
import net.uberkat.obsidian.common.ContainerEnrichmentChamber;
import net.uberkat.obsidian.common.ContainerElectricMachine;
import net.uberkat.obsidian.common.TileEntityEnrichmentChamber;
public class GuiEnrichmentChamber extends GuiContainer
@ -11,7 +11,7 @@ public class GuiEnrichmentChamber extends GuiContainer
public GuiEnrichmentChamber(InventoryPlayer par1InventoryPlayer, TileEntityEnrichmentChamber par2TileEntityEnrichmentChamber)
{
super(new ContainerEnrichmentChamber(par1InventoryPlayer, par2TileEntityEnrichmentChamber));
super(new ContainerElectricMachine(par1InventoryPlayer, par2TileEntityEnrichmentChamber));
machineInventory = par2TileEntityEnrichmentChamber;
}
@ -29,21 +29,18 @@ public class GuiEnrichmentChamber extends GuiContainer
*/
protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3)
{
int var4 = this.mc.renderEngine.getTexture("/gui/GuiChamber.png");
int var4 = mc.renderEngine.getTexture("/gui/GuiChamber.png");
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
mc.renderEngine.bindTexture(var4);
int var5 = (this.width - this.xSize) / 2;
int var6 = (this.height - this.ySize) / 2;
drawTexturedModalRect(var5, var6, 0, 0, this.xSize, this.ySize);
int var5 = (width - xSize) / 2;
int var6 = (height - ySize) / 2;
drawTexturedModalRect(var5, var6, 0, 0, xSize, ySize);
int var7;
if (this.machineInventory.isBurning())
{
var7 = this.machineInventory.getBurnTimeRemainingScaled(12);
this.drawTexturedModalRect(var5 + 56, var6 + 36 + 12 - var7, 176, 12 - var7, 14, var7 + 2);
}
var7 = machineInventory.getScaledChargeLevel(12);
drawTexturedModalRect(var5 + 56, var6 + 36 + 12 - var7, 176, 12 - var7, 14, var7 + 2);
var7 = this.machineInventory.getCookProgressScaled(24);
this.drawTexturedModalRect(var5 + 79, var6 + 34, 176, 14, var7 + 1, 16);
var7 = machineInventory.getScaledProgress(24);
drawTexturedModalRect(var5 + 79, var6 + 34, 176, 14, var7 + 1, 16);
}
}

View file

@ -2,7 +2,7 @@ package net.uberkat.obsidian.client;
import org.lwjgl.opengl.GL11;
import net.minecraft.src.*;
import net.uberkat.obsidian.common.ContainerPlatinumCompressor;
import net.uberkat.obsidian.common.ContainerAdvancedElectricMachine;
import net.uberkat.obsidian.common.TileEntityPlatinumCompressor;
public class GuiPlatinumCompressor extends GuiContainer
@ -11,7 +11,7 @@ public class GuiPlatinumCompressor extends GuiContainer
public GuiPlatinumCompressor(InventoryPlayer par1InventoryPlayer, TileEntityPlatinumCompressor par2TileEntityPlatinumCompressor)
{
super(new ContainerPlatinumCompressor(par1InventoryPlayer, par2TileEntityPlatinumCompressor));
super(new ContainerAdvancedElectricMachine(par1InventoryPlayer, par2TileEntityPlatinumCompressor));
machineInventory = par2TileEntityPlatinumCompressor;
}
@ -36,14 +36,11 @@ public class GuiPlatinumCompressor extends GuiContainer
int var6 = (this.height - this.ySize) / 2;
drawTexturedModalRect(var5, var6, 0, 0, this.xSize, this.ySize);
int var7;
var7 = this.machineInventory.getScaledChargeLevel(12);
this.drawTexturedModalRect(var5 + 56, var6 + 36 + 12 - var7, 176, 12 - var7, 14, var7 + 2);
if (this.machineInventory.isBurning())
{
var7 = this.machineInventory.getBurnTimeRemainingScaled(12);
this.drawTexturedModalRect(var5 + 56, var6 + 36 + 12 - var7, 176, 12 - var7, 14, var7 + 2);
}
var7 = this.machineInventory.getCookProgressScaled(24);
var7 = this.machineInventory.getScaledProgress(24);
this.drawTexturedModalRect(var5 + 79, var6 + 34, 176, 14, var7 + 1, 16);
}
}

View file

@ -0,0 +1,45 @@
package net.uberkat.obsidian.client;
import org.lwjgl.opengl.GL11;
import net.minecraft.src.*;
import net.uberkat.obsidian.common.ContainerPowerUnit;
import net.uberkat.obsidian.common.ObsidianUtils;
import net.uberkat.obsidian.common.TileEntityPowerUnit;
public class GuiPowerUnit extends GuiContainer
{
private TileEntityPowerUnit tileEntity;
private int guiWidth;
private int guiHeight;
public GuiPowerUnit(InventoryPlayer inventory, TileEntityPowerUnit unit)
{
super(new ContainerPowerUnit(inventory, unit));
tileEntity = unit;
}
protected void drawGuiContainerForegroundLayer()
{
String capacityInfo = "Stored: " + ObsidianUtils.getDisplayedEnergy(tileEntity.energyStored) + "/" + ObsidianUtils.getDisplayedEnergy(tileEntity.maxEnergy);
String outputInfo = "Output: " + ObsidianUtils.getDisplayedEnergy(tileEntity.output) + "/t";
fontRenderer.drawString(tileEntity.getInvName(), 43, 6, 0x404040);
fontRenderer.drawString(capacityInfo, 45, 42, 0x404040);
fontRenderer.drawString(outputInfo, 45, 52, 0x404040);
fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, ySize - 96 + 2, 0x404040);
}
protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3)
{
int var4 = mc.renderEngine.getTexture("/gui/GuiPowerUnit.png");
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
mc.renderEngine.bindTexture(var4);
guiWidth = (width - xSize) / 2;
guiHeight = (height - ySize) / 2;
drawTexturedModalRect(guiWidth, guiHeight, 0, 0, xSize, ySize);
int scale = (int)(((double)tileEntity.energyStored / tileEntity.maxEnergy) * 72);
drawTexturedModalRect(guiWidth + 65, guiHeight + 17, 176, 0, scale, 20);
}
}

View file

@ -2,7 +2,8 @@ package net.uberkat.obsidian.client;
import org.lwjgl.opengl.GL11;
import net.minecraft.src.*;
import net.uberkat.obsidian.common.ContainerTheoreticalElementizer;
import net.uberkat.obsidian.common.ContainerAdvancedElectricMachine;
import net.uberkat.obsidian.common.ObsidianUtils;
import net.uberkat.obsidian.common.TileEntityTheoreticalElementizer;
public class GuiTheoreticalElementizer extends GuiContainer
@ -11,7 +12,7 @@ public class GuiTheoreticalElementizer extends GuiContainer
public GuiTheoreticalElementizer(InventoryPlayer par1InventoryPlayer, TileEntityTheoreticalElementizer par2TileEntityTheoreticalElementizer)
{
super(new ContainerTheoreticalElementizer(par1InventoryPlayer, par2TileEntityTheoreticalElementizer));
super(new ContainerAdvancedElectricMachine(par1InventoryPlayer, par2TileEntityTheoreticalElementizer));
machineInventory = par2TileEntityTheoreticalElementizer;
}
@ -23,12 +24,12 @@ public class GuiTheoreticalElementizer extends GuiContainer
String displayText = "";
fontRenderer.drawString("Theoretical Elementizer", 32, 6, 0x404040);
fontRenderer.drawString("Inventory", 8, (ySize - 96) + 2, 0x404040);
if(machineInventory.machineBurnTime > 0)
if(machineInventory.isActive)
{
displayText = "Status: " + Integer.toString(machineInventory.machineCookTime/10) + "%";
displayText = "Status: " + Integer.toString(machineInventory.operatingTicks/10) + "%";
}
else {
displayText = "Status: ¤4Off";
displayText = "Status: Off";
}
fontRenderer.drawString(displayText, 80, 60, 0x404040);
}
@ -45,14 +46,11 @@ public class GuiTheoreticalElementizer extends GuiContainer
int var6 = (this.height - this.ySize) / 2;
drawTexturedModalRect(var5, var6, 0, 0, this.xSize, this.ySize);
int var7;
var7 = this.machineInventory.getScaledChargeLevel(12);
this.drawTexturedModalRect(var5 + 56, var6 + 36 + 12 - var7, 176, 12 - var7, 14, var7 + 2);
if (this.machineInventory.isBurning())
{
var7 = this.machineInventory.getBurnTimeRemainingScaled(12);
this.drawTexturedModalRect(var5 + 56, var6 + 36 + 12 - var7, 176, 12 - var7, 14, var7 + 2);
}
var7 = this.machineInventory.getCookProgressScaled(24);
var7 = this.machineInventory.getScaledProgress(24);
this.drawTexturedModalRect(var5 + 79, var6 + 34, 176, 14, var7 + 1, 16);
}
}