Skip to content

Commit

Permalink
Made EnderTanks implement IFluidContainerItem
Browse files Browse the repository at this point in the history
  • Loading branch information
Chicken-Bones committed Apr 2, 2015
1 parent dce6dbf commit 45b2a5c
Show file tree
Hide file tree
Showing 5 changed files with 103 additions and 75 deletions.
2 changes: 1 addition & 1 deletion build/build.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ forge_version=10.13.0.1151
ccl_version=1.1.1.98
ccc_version=1.0.3.+
nei_version=1.0.3.+
mod_version=1.4.5
mod_version=1.4.6
97 changes: 70 additions & 27 deletions src/codechicken/enderstorage/common/ItemEnderStorage.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,51 +2,94 @@

import java.util.List;

import codechicken.enderstorage.api.EnderStorageManager;
import codechicken.enderstorage.storage.liquid.EnderLiquidStorage;
import cpw.mods.fml.common.FMLCommonHandler;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidContainerItem;

public class ItemEnderStorage extends ItemBlock
public class ItemEnderStorage extends ItemBlock implements IFluidContainerItem
{
public ItemEnderStorage(Block block)
{
public ItemEnderStorage(Block block) {
super(block);
setHasSubtypes(true);
}

@Override
public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata)
{
if(super.placeBlockAt(stack, player, world, x, y, z, side, hitX, hitY, hitZ, metadata))
{
TileFrequencyOwner tile = (TileFrequencyOwner)world.getTileEntity(x, y, z);
tile.setFreq(stack.getItemDamage() & 0xFFF);
if(stack.hasTagCompound())
tile.setOwner(stack.getTagCompound().getString("owner"));


@Override
public int getMetadata(int par1) {
return par1 >> 12;
}

public String getOwner(ItemStack stack) {
return stack.hasTagCompound() ? stack.getTagCompound().getString("owner") : "global";
}

public int getFreq(ItemStack stack) {
return stack.getItemDamage() & 0xFFF;
}

@Override
public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata) {
if (super.placeBlockAt(stack, player, world, x, y, z, side, hitX, hitY, hitZ, metadata)) {
TileFrequencyOwner tile = (TileFrequencyOwner) world.getTileEntity(x, y, z);
tile.setFreq(getFreq(stack));
tile.setOwner(getOwner(stack));

return true;
}
return false;
}

@Override
public int getMetadata(int par1)
{
return par1 >> 12;
public String getUnlocalizedName(ItemStack stack) {
return super.getUnlocalizedName() + "|" + getMetadata(stack.getItemDamage());
}

@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean extended) {
if (!getOwner(stack).equals("global"))
list.add(getOwner(stack));
}

private EnderLiquidStorage getLiquidStorage(ItemStack stack) {
return (EnderLiquidStorage) EnderStorageManager.instance(FMLCommonHandler.instance().getEffectiveSide().isClient())
.getStorage(getOwner(stack), getFreq(stack), "liquid");
}

@Override
public String getUnlocalizedName(ItemStack stack)
{
return super.getUnlocalizedName()+"|"+getMetadata(stack.getItemDamage());
public FluidStack getFluid(ItemStack container) {
if(getMetadata(container.getItemDamage()) == 1)
return getLiquidStorage(container).getFluid();

return null;
}

@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean extended)
{
if(stack.hasTagCompound() && !stack.getTagCompound().getString("owner").equals("global"))
list.add(stack.getTagCompound().getString("owner"));
public int getCapacity(ItemStack container) {
if(getMetadata(container.getItemDamage()) == 1)
return EnderLiquidStorage.CAPACITY;

return 0;
}

@Override
public int fill(ItemStack container, FluidStack resource, boolean doFill) {
if(getMetadata(container.getItemDamage()) == 1)
return getLiquidStorage(container).fill(null, resource, doFill);

return 0;
}

@Override
public FluidStack drain(ItemStack container, int maxDrain, boolean doDrain) {
if(getMetadata(container.getItemDamage()) == 1)
return getLiquidStorage(container).drain(null, maxDrain, doDrain);

return null;
}
}
20 changes: 8 additions & 12 deletions src/codechicken/enderstorage/storage/EnderLiquidStoragePlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,25 +10,21 @@
import codechicken.enderstorage.storage.liquid.EnderLiquidStorage;

public class EnderLiquidStoragePlugin implements EnderStoragePlugin
{
{
@Override
public AbstractEnderStorage createEnderStorage(EnderStorageManager manager, String owner, int freq)
{
public AbstractEnderStorage createEnderStorage(EnderStorageManager manager, String owner, int freq) {
return new EnderLiquidStorage(manager, owner, freq);
}

@Override
public String identifer()
{
public String identifer() {
return "liquid";
}

public void loadConfig(ConfigTag config)
{

public void loadConfig(ConfigTag config) {
}

@Override
public void sendClientInfo(EntityPlayer player, List<AbstractEnderStorage> list)
{
public void sendClientInfo(EntityPlayer player, List<AbstractEnderStorage> list) {
}
}
57 changes: 23 additions & 34 deletions src/codechicken/enderstorage/storage/liquid/EnderLiquidStorage.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,85 +13,74 @@

public class EnderLiquidStorage extends AbstractEnderStorage implements IFluidHandler
{
public static final int CAPACITY = 16 * FluidUtils.B;

private class Tank extends ExtendedFluidTank
{
public Tank(int capacity)
{
public Tank(int capacity) {
super(capacity);
}

@Override
public void onLiquidChanged()
{
public void onLiquidChanged() {
setDirty();
}
}

private Tank tank;

public EnderLiquidStorage(EnderStorageManager manager, String owner, int freq)
{
public EnderLiquidStorage(EnderStorageManager manager, String owner, int freq) {
super(manager, owner, freq);
tank = new Tank(16*FluidUtils.B);
tank = new Tank(CAPACITY);
}

public void loadFromTag(NBTTagCompound tag)
{
public void loadFromTag(NBTTagCompound tag) {
tank.fromTag(tag.getCompoundTag("tank"));
}

@Override
public String type()
{
public String type() {
return "liquid";
}

public NBTTagCompound saveToTag()
{
public NBTTagCompound saveToTag() {
NBTTagCompound compound = new NBTTagCompound();
compound.setTag("tank", tank.toTag());

return compound;
}

@Override
public int fill(ForgeDirection from, FluidStack resource, boolean doFill)
{
public int fill(ForgeDirection from, FluidStack resource, boolean doFill) {
return tank.fill(resource, doFill);
}

@Override
public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain)
{
public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) {
return tank.drain(maxDrain, doDrain);
}

@Override
public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain)
{
public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) {
return tank.drain(resource, doDrain);
}

@Override
public boolean canFill(ForgeDirection from, Fluid fluid)
{
public boolean canFill(ForgeDirection from, Fluid fluid) {
return true;
}

@Override
public boolean canDrain(ForgeDirection from, Fluid fluid)
{
public boolean canDrain(ForgeDirection from, Fluid fluid) {
return true;
}

@Override
public FluidTankInfo[] getTankInfo(ForgeDirection from)
{
public FluidTankInfo[] getTankInfo(ForgeDirection from) {
return new FluidTankInfo[]{tank.getInfo()};
}

public FluidStack getFluid()
{

public FluidStack getFluid() {
return tank.getFluid();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ public boolean canFill(ForgeDirection from, Fluid fluid) {
@Override
public FluidTankInfo[] getTankInfo(ForgeDirection from) {
if(worldObj.isRemote)
return new FluidTankInfo[]{new FluidTankInfo(liquid_state.s_liquid, 16 * FluidUtils.B)};
return new FluidTankInfo[]{new FluidTankInfo(liquid_state.s_liquid, EnderLiquidStorage.CAPACITY)};

return storage.getTankInfo(from);
}
Expand Down

0 comments on commit 45b2a5c

Please sign in to comment.