Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 5 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 5 KiB |
BIN
bin/minecraft/gui/GuiPowerUnit.png
Executable file
After Width: | Height: | Size: 4 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
67
src/common/net/uberkat/obsidian/api/IElectricMachine.java
Normal 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);
|
||||
}
|
59
src/common/net/uberkat/obsidian/api/IEnergizedItem.java
Normal 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();
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package net.uberkat.obsidian.common;
|
||||
package net.uberkat.obsidian.api;
|
||||
|
||||
import net.minecraft.src.EntityPlayer;
|
||||
import net.minecraft.src.NetworkManager;
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
214
src/common/net/uberkat/obsidian/common/BlockPowerUnit.java
Normal 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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
||||
}
|
||||
}
|
186
src/common/net/uberkat/obsidian/common/ItemEnergized.java
Normal 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;
|
||||
}
|
||||
}
|
|
@ -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)
|
||||
|
|
|
@ -8,7 +8,7 @@ public class ItemObsidian extends Item
|
|||
{
|
||||
super(i);
|
||||
itemsList[256 + i] = this;
|
||||
setTabToDisplayOn(CreativeTabs.tabAllSearch);
|
||||
setCreativeTab(CreativeTabs.tabAllSearch);
|
||||
}
|
||||
|
||||
public String getTextureFile() {
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -10,7 +10,7 @@ public class ItemObsidianBow extends ItemObsidian
|
|||
super(par1);
|
||||
maxStackSize = 1;
|
||||
setMaxDamage(750);
|
||||
setTabToDisplayOn(CreativeTabs.tabCombat);
|
||||
setCreativeTab(CreativeTabs.tabCombat);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -9,7 +9,7 @@ public class ItemObsidianHoe extends ItemObsidian
|
|||
super(par1);
|
||||
maxStackSize = 1;
|
||||
setMaxDamage(par2EnumToolMaterial.getMaxUses());
|
||||
setTabToDisplayOn(CreativeTabs.tabTools);
|
||||
setCreativeTab(CreativeTabs.tabTools);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -25,7 +25,7 @@ public class ItemObsidianKnife extends ItemObsidian
|
|||
entityDamage = 2;
|
||||
blockDamage = 2;
|
||||
enchantability = enumtoolmaterial.getEnchantability();
|
||||
setTabToDisplayOn(CreativeTabs.tabCombat);
|
||||
setCreativeTab(CreativeTabs.tabCombat);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -23,7 +23,7 @@ public class ItemObsidianSword extends ItemObsidian
|
|||
maxStackSize = 1;
|
||||
setMaxDamage(par2EnumToolMaterial.getMaxUses());
|
||||
weaponDamage = 4 + par2EnumToolMaterial.getDamageVsEntity();
|
||||
setTabToDisplayOn(CreativeTabs.tabCombat);
|
||||
setCreativeTab(CreativeTabs.tabCombat);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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.");
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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
|
19
src/common/net/uberkat/obsidian/common/SlotEnergy.java
Normal 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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
package net.uberkat.obsidian.common;
|
||||
|
||||
public class TileEntityAdvancedPowerUnit extends TileEntityPowerUnit
|
||||
{
|
||||
public TileEntityAdvancedPowerUnit()
|
||||
{
|
||||
super(50000000, 1024);
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
563
src/common/net/uberkat/obsidian/common/TileEntityPowerUnit.java
Normal 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;
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
45
src/minecraft/net/uberkat/obsidian/client/GuiPowerUnit.java
Normal 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);
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|