diff options
Diffstat (limited to 'src/main/java/GoodGenerator/Blocks')
-rw-r--r-- | src/main/java/GoodGenerator/Blocks/RegularBlock/TEBlock.java | 32 | ||||
-rw-r--r-- | src/main/java/GoodGenerator/Blocks/TEs/EssentiaHatch.java | 26 |
2 files changed, 47 insertions, 11 deletions
diff --git a/src/main/java/GoodGenerator/Blocks/RegularBlock/TEBlock.java b/src/main/java/GoodGenerator/Blocks/RegularBlock/TEBlock.java index ec23abde91..ffea651383 100644 --- a/src/main/java/GoodGenerator/Blocks/RegularBlock/TEBlock.java +++ b/src/main/java/GoodGenerator/Blocks/RegularBlock/TEBlock.java @@ -12,12 +12,14 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EnumCreatureType; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import thaumcraft.api.aspects.IEssentiaContainerItem; import java.util.List; @@ -27,7 +29,7 @@ public class TEBlock extends BlockContainer { protected IIcon[] texture; String[] textureNames; protected String name; - int index; + protected int index; public TEBlock(String name, String[] texture, CreativeTabs Tab){ super(Material.iron); @@ -63,6 +65,10 @@ public class TEBlock extends BlockContainer { GregTech_API.registerMachineBlock(this, -1); } + public int getIndex() { + return this.index; + } + @Override public int damageDropped(int meta) { return meta; @@ -135,6 +141,30 @@ public class TEBlock extends BlockContainer { } @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9) { + if (world.isRemote) { + return false; + } else { + TileEntity tile = world.getTileEntity(x, y, z); + if (index == 1) { + if (tile instanceof EssentiaHatch) { + ItemStack tItemStack = player.getHeldItem(); + if (tItemStack != null) { + Item tItem = tItemStack.getItem(); + if (tItem instanceof IEssentiaContainerItem) + ((EssentiaHatch) tile).setLockedAspect(((IEssentiaContainerItem) tItem).getAspects(player.getHeldItem()).getAspects()[0]); + } + else ((EssentiaHatch) tile).setLockedAspect(null); + world.markBlockForUpdate(x, y, z); + return true; + } + else return false; + } + else return false; + } + } + + @Override public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { return null; } diff --git a/src/main/java/GoodGenerator/Blocks/TEs/EssentiaHatch.java b/src/main/java/GoodGenerator/Blocks/TEs/EssentiaHatch.java index 2a86d374e8..13843ecb77 100644 --- a/src/main/java/GoodGenerator/Blocks/TEs/EssentiaHatch.java +++ b/src/main/java/GoodGenerator/Blocks/TEs/EssentiaHatch.java @@ -17,17 +17,19 @@ import java.util.ArrayList; public class EssentiaHatch extends TileEntity implements IAspectContainer, IEssentiaTransport { - public int facing; - public boolean isOn; + private Aspect mLocked; private AspectList current = new AspectList(); + public void setLockedAspect(Aspect aAspect) { + this.mLocked = aAspect; + } + @Override public void readFromNBT(NBTTagCompound tagCompound) { super.readFromNBT(tagCompound); - this.facing = tagCompound.getInteger("facing"); - this.isOn = tagCompound.getBoolean("isOn"); + this.mLocked = Aspect.getAspect(tagCompound.getString("mLocked")); current = new AspectList(); NBTTagList tlist = tagCompound.getTagList("Aspects", 10); @@ -43,8 +45,7 @@ public class EssentiaHatch extends TileEntity implements IAspectContainer, IEsse public void writeToNBT(NBTTagCompound tagCompound) { super.writeToNBT(tagCompound); - tagCompound.setInteger("facing", this.facing); - tagCompound.setBoolean("isOn", this.isOn); + tagCompound.setString("mLocked", this.mLocked == null ? "" : this.mLocked.getTag()); NBTTagList tlist = new NBTTagList(); Aspect[] aspectA = current.getAspects(); @@ -92,8 +93,12 @@ public class EssentiaHatch extends TileEntity implements IAspectContainer, IEsse if (!pipe.canOutputTo(ForgeDirection.VALID_DIRECTIONS[i])) { return; } - if ((pipe.getEssentiaType(ForgeDirection.VALID_DIRECTIONS[i]) != null) && (pipe.getSuctionAmount(ForgeDirection.VALID_DIRECTIONS[i]) < getSuctionAmount(ForgeDirection.VALID_DIRECTIONS[i]))) { - addToContainer(pipe.getEssentiaType(ForgeDirection.VALID_DIRECTIONS[i]), pipe.takeEssentia(pipe.getEssentiaType(ForgeDirection.VALID_DIRECTIONS[i]), 1, ForgeDirection.VALID_DIRECTIONS[i])); + if ((pipe.getEssentiaType(ForgeDirection.VALID_DIRECTIONS[i].getOpposite()) != null) && (pipe.getSuctionAmount(ForgeDirection.VALID_DIRECTIONS[i]) < getSuctionAmount(ForgeDirection.VALID_DIRECTIONS[i]))) { + if (mLocked != null && pipe.getEssentiaType(ForgeDirection.VALID_DIRECTIONS[i].getOpposite()) == mLocked) { + addToContainer(mLocked, pipe.takeEssentia(mLocked, 1, ForgeDirection.VALID_DIRECTIONS[i])); + } + if (mLocked == null) + addToContainer(pipe.getEssentiaType(ForgeDirection.VALID_DIRECTIONS[i]), pipe.takeEssentia(pipe.getEssentiaType(ForgeDirection.VALID_DIRECTIONS[i]), 1, ForgeDirection.VALID_DIRECTIONS[i])); } } } @@ -111,12 +116,13 @@ public class EssentiaHatch extends TileEntity implements IAspectContainer, IEsse @Override public boolean doesContainerAccept(Aspect aspect) { - return true; + return mLocked == null || mLocked.equals(aspect); } @Override public int addToContainer(Aspect aspect, int i) { current.add(aspect, i); + this.markDirty(); return 0; } @@ -168,7 +174,7 @@ public class EssentiaHatch extends TileEntity implements IAspectContainer, IEsse @Override public Aspect getSuctionType(ForgeDirection forgeDirection) { - return null; + return this.mLocked; } @Override |