From 2b9a2b5c1accad242d312d8487097ebd75f8ff43 Mon Sep 17 00:00:00 2001 From: Lex Manos Date: Wed, 29 Jan 2014 18:34:23 -0800 Subject: [PATCH] Inital Fluid system update, untested. Still in progress. --- .../FluidIdRegistryMessageHandler.java | 5 +- .../common/network/ForgeMessage.java | 14 +- .../minecraftforge/fluids/BlockFluidBase.java | 166 +++++++++--------- .../fluids/BlockFluidClassic.java | 71 ++++---- .../fluids/BlockFluidFinite.java | 89 +++++----- .../java/net/minecraftforge/fluids/Fluid.java | 2 - .../fluids/FluidContainerRegistry.java | 73 +++++--- .../fluids/FluidIdMapPacket.java | 53 ------ .../minecraftforge/fluids/FluidRegistry.java | 31 ++-- .../net/minecraftforge/fluids/FluidStack.java | 19 +- .../net/minecraftforge/fluids/FluidTank.java | 11 +- .../fluids/ItemFluidContainer.java | 9 +- .../fluids/RenderBlockFluid.java | 66 +++---- .../fluids/TileFluidHandler.java | 29 ++- 14 files changed, 295 insertions(+), 343 deletions(-) delete mode 100644 src/main/java/net/minecraftforge/fluids/FluidIdMapPacket.java diff --git a/src/main/java/net/minecraftforge/common/network/FluidIdRegistryMessageHandler.java b/src/main/java/net/minecraftforge/common/network/FluidIdRegistryMessageHandler.java index 8694113b1d..032ff758e3 100644 --- a/src/main/java/net/minecraftforge/common/network/FluidIdRegistryMessageHandler.java +++ b/src/main/java/net/minecraftforge/common/network/FluidIdRegistryMessageHandler.java @@ -1,6 +1,9 @@ package net.minecraftforge.common.network; +import net.minecraftforge.fluids.FluidRegistry; + import org.apache.logging.log4j.Level; + import cpw.mods.fml.common.FMLLog; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; @@ -9,7 +12,7 @@ public class FluidIdRegistryMessageHandler extends SimpleChannelInboundHandler entry : FluidRegistry.fluidIDs.entrySet()) + Map ids = FluidRegistry.getRegisteredFluidIDs(); + bytes.writeInt(ids.size()); + for (Map.Entry entry : ids.entrySet()) { ByteBufUtils.writeUTF8String(bytes,entry.getKey()); bytes.writeInt(entry.getValue()); } - */ } @Override void fromBytes(ByteBuf bytes) { - /* int listSize = bytes.readInt(); for (int i = 0; i < listSize; i++) { String fluidName = ByteBufUtils.readUTF8String(bytes); int fluidId = bytes.readInt(); fluidIds.put(fluidName, fluidId); } - */ } } diff --git a/src/main/java/net/minecraftforge/fluids/BlockFluidBase.java b/src/main/java/net/minecraftforge/fluids/BlockFluidBase.java index 885921e20f..f5ed005340 100644 --- a/src/main/java/net/minecraftforge/fluids/BlockFluidBase.java +++ b/src/main/java/net/minecraftforge/fluids/BlockFluidBase.java @@ -4,9 +4,13 @@ import java.util.HashMap; import java.util.Map; import java.util.Random; +import com.google.common.collect.Maps; + import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; @@ -23,18 +27,17 @@ import net.minecraft.world.World; @SuppressWarnings("unused") public abstract class BlockFluidBase extends Block implements IFluidBlock { - /* - protected final static Map defaultDisplacementIds = new HashMap(); + protected final static Map defaultDisplacements = Maps.newHashMap(); static { - defaultDisplacementIds.put(Block.doorWood.blockID, false); - defaultDisplacementIds.put(Block.doorIron.blockID, false); - defaultDisplacementIds.put(Block.signPost.blockID, false); - defaultDisplacementIds.put(Block.signWall.blockID, false); - defaultDisplacementIds.put(Block.reed.blockID, false); + defaultDisplacements.put(Blocks.wooden_door, false); + defaultDisplacements.put(Blocks.iron_door, false); + defaultDisplacements.put(Blocks.standing_sign, false); + defaultDisplacements.put(Blocks.wall_sign, false); + defaultDisplacements.put(Blocks.reeds, false); } - protected Map displacementIds = new HashMap(); + protected Map displacements = Maps.newHashMap(); protected int quantaPerBlock = 8; protected float quantaPerBlockFloat = 8F; @@ -47,14 +50,13 @@ public abstract class BlockFluidBase extends Block implements IFluidBlock protected int maxScaledLight = 0; protected final String fluidName; - */ - public BlockFluidBase(int id, Fluid fluid, Material material) + + public BlockFluidBase(Fluid fluid, Material material) { super(material); - /* - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - this.setTickRandomly(true); - this.disableStats(); + this.func_149676_a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + this.func_149675_a(true); + this.func_149649_H(); this.fluidName = fluid.getName(); this.density = fluid.density; @@ -62,12 +64,11 @@ public abstract class BlockFluidBase extends Block implements IFluidBlock this.maxScaledLight = fluid.luminosity; this.tickRate = fluid.viscosity / 200; this.densityDir = fluid.density > 0 ? -1 : 1; - fluid.setBlockID(id); + fluid.setBlock(this); - displacementIds.putAll(defaultDisplacementIds); - */ + displacements.putAll(defaultDisplacements); } - /* + public BlockFluidBase setQuantaPerBlock(int quantaPerBlock) { if (quantaPerBlock > 16 || quantaPerBlock < 1) quantaPerBlock = 8; @@ -111,25 +112,25 @@ public abstract class BlockFluidBase extends Block implements IFluidBlock /** * Returns true if the block at (x, y, z) is displaceable. Does not displace the block. - * / + */ public boolean canDisplace(IBlockAccess world, int x, int y, int z) { - if (world.isAirBlock(x, y, z)) return true; + if (world.func_147439_a(x, y, z).isAir(world, x, y, z)) return true; - int bId = world.getBlockId(x, y, z); + Block block = world.func_147439_a(x, y, z); - if (bId == blockID) + if (block == this) { return false; } - if (displacementIds.containsKey(bId)) + if (displacements.containsKey(block)) { - return displacementIds.get(bId); + return displacements.get(block); } - Material material = Block.blocksList[bId].blockMaterial; - if (material.blocksMovement() || material == Material.portal) + Material material = block.func_149688_o(); + if (material.blocksMovement() || material == Material.field_151567_E) { return false; } @@ -152,32 +153,32 @@ public abstract class BlockFluidBase extends Block implements IFluidBlock /** * Attempt to displace the block at (x, y, z), return true if it was displaced. - * / + */ public boolean displaceIfPossible(World world, int x, int y, int z) { - if (world.isAirBlock(x, y, z)) + if (world.func_147439_a(x, y, z).isAir(world, x, y, z)) { return true; } - int bId = world.getBlockId(x, y, z); - if (bId == blockID) + Block block = world.func_147439_a(x, y, z); + if (block == this) { return false; } - if (displacementIds.containsKey(bId)) + if (displacements.containsKey(block)) { - if (displacementIds.get(bId)) + if (displacements.get(block)) { - Block.blocksList[bId].dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); + block.func_149697_b(world, x, y, z, world.getBlockMetadata(x, y, z), 0); return true; } return false; } - Material material = Block.blocksList[bId].blockMaterial; - if (material.blocksMovement() || material == Material.portal) + Material material = block.func_149688_o(); + if (material.blocksMovement() || material == Material.field_151567_E) { return false; } @@ -185,7 +186,7 @@ public abstract class BlockFluidBase extends Block implements IFluidBlock int density = getDensity(world, x, y, z); if (density == Integer.MAX_VALUE) { - Block.blocksList[bId].dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); + block.func_149697_b(world, x, y, z, world.getBlockMetadata(x, y, z), 0); return true; } @@ -202,62 +203,62 @@ public abstract class BlockFluidBase extends Block implements IFluidBlock public abstract int getQuantaValue(IBlockAccess world, int x, int y, int z); @Override - public abstract boolean canCollideCheck(int meta, boolean fullHit); + public abstract boolean func_149678_a(int meta, boolean fullHit); public abstract int getMaxRenderHeightMeta(); - /* BLOCK FUNCTIONS * / + /* BLOCK FUNCTIONS */ @Override - public void onBlockAdded(World world, int x, int y, int z) + public void func_149726_b(World world, int x, int y, int z) { - world.scheduleBlockUpdate(x, y, z, blockID, tickRate); + world.func_147464_a(x, y, z, this, tickRate); } @Override - public void onNeighborBlockChange(World world, int x, int y, int z, int blockId) + public void func_149695_a(World world, int x, int y, int z, Block block) { - world.scheduleBlockUpdate(x, y, z, blockID, tickRate); + world.func_147464_a(x, y, z, this, tickRate); } // Used to prevent updates on chunk generation @Override - public boolean func_82506_l() + public boolean func_149698_L() { return false; } @Override - public boolean getBlocksMovement(IBlockAccess world, int x, int y, int z) + public boolean func_149655_b(IBlockAccess world, int x, int y, int z) { return true; } @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) + public AxisAlignedBB func_149668_a(World world, int x, int y, int z) { return null; } @Override - public int idDropped(int par1, Random par2Random, int par3) + public Item func_149650_a(int par1, Random par2Random, int par3) + { + return null; + } + + @Override + public int func_149745_a(Random par1Random) { return 0; } @Override - public int quantityDropped(Random par1Random) - { - return 0; - } - - @Override - public int tickRate(World world) + public int func_149738_a(World world) { return tickRate; } @Override - public void velocityToAddToEntity(World world, int x, int y, int z, Entity entity, Vec3 vec) + public void func_149640_a(World world, int x, int y, int z, Entity entity, Vec3 vec) { if (densityDir > 0) return; Vec3 vec_flow = this.getFlowVector(world, x, y, z); @@ -278,33 +279,35 @@ public abstract class BlockFluidBase extends Block implements IFluidBlock } @Override - public int getRenderType() + public int func_149645_b() { return FluidRegistry.renderIdFluid; } @Override - public boolean isOpaqueCube() + public boolean func_149662_c() { return false; } @Override - public boolean renderAsNormalBlock() + public boolean func_149686_d() { return false; } + /* Never used...? @Override - public float getBlockBrightness(IBlockAccess world, int x, int y, int z) + public float getBlockBrightness(World world, int x, int y, int z) { float lightThis = world.getLightBrightness(x, y, z); float lightUp = world.getLightBrightness(x, y + 1, z); return lightThis > lightUp ? lightThis : lightUp; } + */ @Override - public int getMixedBrightnessForBlock(IBlockAccess world, int x, int y, int z) + public int func_149677_c(IBlockAccess world, int x, int y, int z) { int lightThis = world.getLightBrightnessForSkyBlocks(x, y, z, 0); int lightUp = world.getLightBrightnessForSkyBlocks(x, y + 1, z, 0); @@ -317,26 +320,26 @@ public abstract class BlockFluidBase extends Block implements IFluidBlock } @Override - public int getRenderBlockPass() + public int func_149701_w() { return renderPass; } @Override - public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) + public boolean func_149646_a(IBlockAccess world, int x, int y, int z, int side) { - if (world.getBlockId(x, y, z) != blockID) + Block block = world.func_147439_a(x, y, z); + if (block != this) { - return !world.isBlockOpaqueCube(x, y, z); + return !block.func_149662_c(); } - Material mat = world.getBlockMaterial(x, y, z); - return mat == this.blockMaterial ? false : super.shouldSideBeRendered(world, x, y, z, side); + return block.func_149688_o() == this.func_149688_o() ? false : super.func_149646_a(world, x, y, z, side); } - /* FLUID FUNCTIONS * / + /* FLUID FUNCTIONS */ public static final int getDensity(IBlockAccess world, int x, int y, int z) { - Block block = Block.blocksList[world.getBlockId(x, y, z)]; + Block block = world.func_147439_a(x, y, z); if (!(block instanceof BlockFluidBase)) { return Integer.MAX_VALUE; @@ -346,7 +349,7 @@ public abstract class BlockFluidBase extends Block implements IFluidBlock public static final int getTemperature(IBlockAccess world, int x, int y, int z) { - Block block = Block.blocksList[world.getBlockId(x, y, z)]; + Block block = world.func_147439_a(x, y, z); if (!(block instanceof BlockFluidBase)) { return Integer.MAX_VALUE; @@ -356,8 +359,8 @@ public abstract class BlockFluidBase extends Block implements IFluidBlock public static double getFlowDirection(IBlockAccess world, int x, int y, int z) { - Block block = Block.blocksList[world.getBlockId(x, y, z)]; - if (!world.getBlockMaterial(x, y, z).isLiquid()) + Block block = world.func_147439_a(x, y, z); + if (!block.func_149688_o().isLiquid()) { return -1000.0; } @@ -412,7 +415,7 @@ public abstract class BlockFluidBase extends Block implements IFluidBlock int otherDecay = quantaPerBlock - getQuantaValue(world, x2, y, z2); if (otherDecay >= quantaPerBlock) { - if (!world.getBlockMaterial(x2, y, z2).blocksMovement()) + if (!world.func_147439_a(x2, y, z2).func_149688_o().blocksMovement()) { otherDecay = quantaPerBlock - getQuantaValue(world, x2, y - 1, z2); if (otherDecay >= 0) @@ -429,17 +432,17 @@ public abstract class BlockFluidBase extends Block implements IFluidBlock } } - if (world.getBlockId(x, y + 1, z) == blockID) + if (world.func_147439_a(x, y + 1, z) == this) { boolean flag = - isBlockSolid(world, x, y, z - 1, 2) || - isBlockSolid(world, x, y, z + 1, 3) || - isBlockSolid(world, x - 1, y, z, 4) || - isBlockSolid(world, x + 1, y, z, 5) || - isBlockSolid(world, x, y + 1, z - 1, 2) || - isBlockSolid(world, x, y + 1, z + 1, 3) || - isBlockSolid(world, x - 1, y + 1, z, 4) || - isBlockSolid(world, x + 1, y + 1, z, 5); + func_149747_d(world, x, y, z - 1, 2) || + func_149747_d(world, x, y, z + 1, 3) || + func_149747_d(world, x - 1, y, z, 4) || + func_149747_d(world, x + 1, y, z, 5) || + func_149747_d(world, x, y + 1, z - 1, 2) || + func_149747_d(world, x, y + 1, z + 1, 3) || + func_149747_d(world, x - 1, y + 1, z, 4) || + func_149747_d(world, x + 1, y + 1, z, 5); if (flag) { @@ -450,7 +453,7 @@ public abstract class BlockFluidBase extends Block implements IFluidBlock return vec; } - /* IFluidBlock * / + /* IFluidBlock */ @Override public Fluid getFluid() { @@ -465,5 +468,4 @@ public abstract class BlockFluidBase extends Block implements IFluidBlock if (remaining > 1) remaining = 1.0f; return remaining * (density > 0 ? 1 : -1); } - */ } diff --git a/src/main/java/net/minecraftforge/fluids/BlockFluidClassic.java b/src/main/java/net/minecraftforge/fluids/BlockFluidClassic.java index 663d93a70a..fedf3c2f9e 100644 --- a/src/main/java/net/minecraftforge/fluids/BlockFluidClassic.java +++ b/src/main/java/net/minecraftforge/fluids/BlockFluidClassic.java @@ -4,6 +4,7 @@ import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -15,21 +16,18 @@ import net.minecraft.world.World; * @author King Lemming * */ -@SuppressWarnings("unused") public class BlockFluidClassic extends BlockFluidBase { - /* protected boolean[] isOptimalFlowDirection = new boolean[4]; protected int[] flowCost = new int[4]; protected FluidStack stack; - */ - public BlockFluidClassic(int id, Fluid fluid, Material material) + public BlockFluidClassic(Fluid fluid, Material material) { - super(id, fluid, material); - //stack = new FluidStack(fluid, FluidContainerRegistry.BUCKET_VOLUME); + super(fluid, material); + stack = new FluidStack(fluid, FluidContainerRegistry.BUCKET_VOLUME); } - /* + public BlockFluidClassic setFluidStack(FluidStack stack) { this.stack = stack; @@ -45,12 +43,12 @@ public class BlockFluidClassic extends BlockFluidBase @Override public int getQuantaValue(IBlockAccess world, int x, int y, int z) { - if (world.getBlockId(x, y, z) == 0) + if (world.func_147439_a(x, y, z) == Blocks.air) { return 0; } - if (world.getBlockId(x, y, z) != blockID) + if (world.func_147439_a(x, y, z) != this) { return -1; } @@ -60,7 +58,7 @@ public class BlockFluidClassic extends BlockFluidBase } @Override - public boolean canCollideCheck(int meta, boolean fullHit) + public boolean func_149678_a(int meta, boolean fullHit) { return fullHit && meta == 0; } @@ -83,7 +81,7 @@ public class BlockFluidClassic extends BlockFluidBase } @Override - public void updateTick(World world, int x, int y, int z, Random rand) + public void func_149674_a(World world, int x, int y, int z, Random rand) { int quantaRemaining = quantaPerBlock - world.getBlockMetadata(x, y, z); int expQuanta = -101; @@ -93,11 +91,11 @@ public class BlockFluidClassic extends BlockFluidBase { int y2 = y - densityDir; - if (world.getBlockId(x, y2, z ) == blockID || - world.getBlockId(x - 1, y2, z ) == blockID || - world.getBlockId(x + 1, y2, z ) == blockID || - world.getBlockId(x, y2, z - 1) == blockID || - world.getBlockId(x, y2, z + 1) == blockID) + if (world.func_147439_a(x, y2, z ) == this || + world.func_147439_a(x - 1, y2, z ) == this || + world.func_147439_a(x + 1, y2, z ) == this || + world.func_147439_a(x, y2, z - 1) == this || + world.func_147439_a(x, y2, z + 1) == this) { expQuanta = quantaPerBlock - 1; } @@ -119,13 +117,13 @@ public class BlockFluidClassic extends BlockFluidBase if (expQuanta <= 0) { - world.setBlockToAir(x, y, z); + world.func_147449_b(x, y, z, Blocks.air); } else { world.setBlockMetadataWithNotify(x, y, z, quantaPerBlock - expQuanta, 3); - world.scheduleBlockUpdate(x, y, z, blockID, tickRate); - world.notifyBlocksOfNeighborChange(x, y, z, blockID); + world.func_147464_a(x, y, z, this, tickRate); + world.func_147459_d(x, y, z, this); } } } @@ -151,7 +149,7 @@ public class BlockFluidClassic extends BlockFluidBase if (isSourceBlock(world, x, y, z) || !isFlowingVertically(world, x, y, z)) { - if (world.getBlockId(x, y - densityDir, z) == blockID) + if (world.func_147439_a(x, y - densityDir, z) == this) { flowMeta = 1; } @@ -166,13 +164,13 @@ public class BlockFluidClassic extends BlockFluidBase public boolean isFlowingVertically(IBlockAccess world, int x, int y, int z) { - return world.getBlockId(x, y + densityDir, z) == blockID || - (world.getBlockId(x, y, z) == blockID && canFlowInto(world, x, y + densityDir, z)); + return world.func_147439_a(x, y + densityDir, z) == this || + (world.func_147439_a(x, y, z) == this && canFlowInto(world, x, y + densityDir, z)); } public boolean isSourceBlock(IBlockAccess world, int x, int y, int z) { - return world.getBlockId(x, y, z) == blockID && world.getBlockMetadata(x, y, z) == 0; + return world.func_147439_a(x, y, z) == this && world.getBlockMetadata(x, y, z) == 0; } protected boolean[] getOptimalFlowDirections(World world, int x, int y, int z) @@ -277,30 +275,30 @@ public class BlockFluidClassic extends BlockFluidBase if (meta < 0) return; if (displaceIfPossible(world, x, y, z)) { - world.setBlock(x, y, z, this.blockID, meta, 3); + world.func_147465_d(x, y, z, this, meta, 3); } } protected boolean canFlowInto(IBlockAccess world, int x, int y, int z) { - if (world.isAirBlock(x, y, z)) return true; + if (world.func_147439_a(x, y, z).isAir(world, x, y, z)) return true; - int bId = world.getBlockId(x, y, z); - if (bId == blockID) + Block block = world.func_147439_a(x, y, z); + if (block == this) { return true; } - if (displacementIds.containsKey(bId)) + if (displacements.containsKey(block)) { - return displacementIds.get(bId); + return displacements.get(block); } - Material material = Block.blocksList[bId].blockMaterial; + Material material = block.func_149688_o(); if (material.blocksMovement() || - material == Material.water || - material == Material.lava || - material == Material.portal) + material == Material.field_151586_h || + material == Material.field_151587_i || + material == Material.field_151567_E) { return false; } @@ -330,12 +328,11 @@ public class BlockFluidClassic extends BlockFluidBase } return quantaRemaining >= compare ? quantaRemaining : compare; } - */ + /* IFluidBlock */ @Override public FluidStack drain(World world, int x, int y, int z, boolean doDrain) { - /* if (!isSourceBlock(world, x, y, z)) { return null; @@ -343,12 +340,10 @@ public class BlockFluidClassic extends BlockFluidBase if (doDrain) { - world.setBlockToAir(x, y, z); + world.func_147449_b(x, y, z, Blocks.air); } return stack.copy(); - */ - return null; } @Override diff --git a/src/main/java/net/minecraftforge/fluids/BlockFluidFinite.java b/src/main/java/net/minecraftforge/fluids/BlockFluidFinite.java index 4bbbe8fa9b..92fbf95533 100644 --- a/src/main/java/net/minecraftforge/fluids/BlockFluidFinite.java +++ b/src/main/java/net/minecraftforge/fluids/BlockFluidFinite.java @@ -3,8 +3,8 @@ package net.minecraftforge.fluids; import java.util.Random; -import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -16,23 +16,22 @@ import net.minecraft.world.World; * @author OvermindDL1, KingLemming * */ -@SuppressWarnings("unused") public class BlockFluidFinite extends BlockFluidBase { - public BlockFluidFinite(int id, Fluid fluid, Material material) + public BlockFluidFinite(Fluid fluid, Material material) { - super(id, fluid, material); + super(fluid, material); } - /* + @Override public int getQuantaValue(IBlockAccess world, int x, int y, int z) { - if (world.isAirBlock(x, y, z)) + if (world.func_147439_a(x, y, z).isAir(world, x, y, z)) { return 0; } - if (world.getBlockId(x, y, z) != blockID) + if (world.func_147439_a(x, y, z) != this) { return -1; } @@ -42,7 +41,7 @@ public class BlockFluidFinite extends BlockFluidBase } @Override - public boolean canCollideCheck(int meta, boolean fullHit) + public boolean func_149678_a(int meta, boolean fullHit) { return fullHit && meta == quantaPerBlock - 1; } @@ -54,7 +53,7 @@ public class BlockFluidFinite extends BlockFluidBase } @Override - public void updateTick(World world, int x, int y, int z, Random rand) + public void func_149674_a(World world, int x, int y, int z, Random rand) { boolean changed = false; int quantaRemaining = world.getBlockMetadata(x, y, z) + 1; @@ -83,10 +82,10 @@ public class BlockFluidFinite extends BlockFluidBase // Flow out if possible int lowerthan = quantaRemaining - 1; - if (displaceIfPossible(world, x, y, z - 1)) world.setBlock(x, y, z - 1, 0); - if (displaceIfPossible(world, x, y, z + 1)) world.setBlock(x, y, z + 1, 0); - if (displaceIfPossible(world, x - 1, y, z )) world.setBlock(x - 1, y, z, 0); - if (displaceIfPossible(world, x + 1, y, z )) world.setBlock(x + 1, y, z, 0); + if (displaceIfPossible(world, x, y, z - 1)) world.func_147449_b(x, y, z - 1, Blocks.air); + if (displaceIfPossible(world, x, y, z + 1)) world.func_147449_b(x, y, z + 1, Blocks.air); + if (displaceIfPossible(world, x - 1, y, z )) world.func_147449_b(x - 1, y, z, Blocks.air); + if (displaceIfPossible(world, x + 1, y, z )) world.func_147449_b(x + 1, y, z, Blocks.air); int north = getQuantaValueBelow(world, x, y, z - 1, lowerthan); int south = getQuantaValueBelow(world, x, y, z + 1, lowerthan); int west = getQuantaValueBelow(world, x - 1, y, z, lowerthan); @@ -142,13 +141,13 @@ public class BlockFluidFinite extends BlockFluidBase { if (newnorth == 0) { - world.setBlock(x, y, z - 1, 0); + world.func_147449_b(x, y, z - 1, Blocks.air); } else { - world.setBlock(x, y, z - 1, blockID, newnorth - 1, 2); + world.func_147465_d(x, y, z - 1, this, newnorth - 1, 2); } - world.scheduleBlockUpdate(x, y, z - 1, blockID, tickRate); + world.func_147464_a(x, y, z - 1, this, tickRate); } --count; } @@ -166,13 +165,13 @@ public class BlockFluidFinite extends BlockFluidBase { if (newsouth == 0) { - world.setBlock(x, y, z + 1, 0); + world.func_147449_b(x, y, z + 1, Blocks.air); } else { - world.setBlock(x, y, z + 1, blockID, newsouth - 1, 2); + world.func_147465_d(x, y, z + 1, this, newsouth - 1, 2); } - world.scheduleBlockUpdate(x, y, z + 1, blockID, tickRate); + world.func_147464_a(x, y, z + 1, this, tickRate); } --count; } @@ -189,13 +188,13 @@ public class BlockFluidFinite extends BlockFluidBase { if (newwest == 0) { - world.setBlock(x - 1, y, z, 0); + world.func_147449_b(x - 1, y, z, Blocks.air); } else { - world.setBlock(x - 1, y, z, blockID, newwest - 1, 2); + world.func_147465_d(x - 1, y, z, this, newwest - 1, 2); } - world.scheduleBlockUpdate(x - 1, y, z, blockID, tickRate); + world.func_147464_a(x - 1, y, z, this, tickRate); } --count; } @@ -213,13 +212,13 @@ public class BlockFluidFinite extends BlockFluidBase { if (neweast == 0) { - world.setBlock(x + 1, y, z, 0); + world.func_147449_b(x + 1, y, z, Blocks.air); } else { - world.setBlock(x + 1, y, z, blockID, neweast - 1, 2); + world.func_147465_d(x + 1, y, z, this, neweast - 1, 2); } - world.scheduleBlockUpdate(x + 1, y, z, blockID, tickRate); + world.func_147464_a(x + 1, y, z, this, tickRate); } --count; } @@ -236,7 +235,7 @@ public class BlockFluidFinite extends BlockFluidBase int otherY = y + densityDir; if (otherY < 0 || otherY >= world.getHeight()) { - world.setBlockToAir(x, y, z); + world.func_147449_b(x, y, z, Blocks.air); return 0; } @@ -246,15 +245,15 @@ public class BlockFluidFinite extends BlockFluidBase amt += amtToInput; if (amt > quantaPerBlock) { - world.setBlock(x, otherY, z, blockID, quantaPerBlock - 1, 3); - world.scheduleBlockUpdate(x, otherY, z, blockID, tickRate); + world.func_147465_d(x, otherY, z, this, quantaPerBlock - 1, 3); + world.func_147464_a(x, otherY, z, this, tickRate); return amt - quantaPerBlock; } else if (amt > 0) { - world.setBlock(x, otherY, z, blockID, amt - 1, 3); - world.scheduleBlockUpdate(x, otherY, z, blockID, tickRate); - world.setBlockToAir(x, y, z); + world.func_147465_d(x, otherY, z, this, amt - 1, 3); + world.func_147464_a(x, otherY, z, this, tickRate); + world.func_147449_b(x, y, z, Blocks.air); return 0; } return amtToInput; @@ -266,9 +265,9 @@ public class BlockFluidFinite extends BlockFluidBase { if (displaceIfPossible(world, x, otherY, z)) { - world.setBlock(x, otherY, z, blockID, amtToInput - 1, 3); - world.scheduleBlockUpdate(x, otherY, z, blockID, tickRate); - world.setBlockToAir(x, y, z); + world.func_147465_d(x, otherY, z, this, amtToInput - 1, 3); + world.func_147464_a(x, otherY, z, this, tickRate); + world.func_147449_b(x, y, z, Blocks.air); return 0; } else @@ -281,13 +280,12 @@ public class BlockFluidFinite extends BlockFluidBase { if (density_other < density) // then swap { - int bId = world.getBlockId(x, otherY, z); - BlockFluidBase block = (BlockFluidBase) Block.blocksList[bId]; + BlockFluidBase block = (BlockFluidBase)world.func_147439_a(x, otherY, z); int otherData = world.getBlockMetadata(x, otherY, z); - world.setBlock(x, otherY, z, blockID, amtToInput - 1, 3); - world.setBlock(x, y, z, bId, otherData, 3); - world.scheduleBlockUpdate(x, otherY, z, blockID, tickRate); - world.scheduleBlockUpdate(x, y, z, bId, block.tickRate(world)); + world.func_147465_d(x, otherY, z, this, amtToInput - 1, 3); + world.func_147465_d(x, y, z, block, otherData, 3); + world.func_147464_a(x, otherY, z, this, tickRate); + world.func_147464_a(x, y, z, block, block.func_149738_a(world)); return 0; } } @@ -295,13 +293,12 @@ public class BlockFluidFinite extends BlockFluidBase { if (density_other > density) { - int bId = world.getBlockId(x, otherY, z); - BlockFluidBase block = (BlockFluidBase) Block.blocksList[bId]; + BlockFluidBase block = (BlockFluidBase)world.func_147439_a(x, otherY, z); int otherData = world.getBlockMetadata(x, otherY, z); - world.setBlock(x, otherY, z, blockID, amtToInput - 1, 3); - world.setBlock(x, y, z, bId, otherData, 3); - world.scheduleBlockUpdate(x, otherY, z, blockID, tickRate); - world.scheduleBlockUpdate(x, y, z, bId, block.tickRate(world)); + world.func_147465_d(x, otherY, z, this, amtToInput - 1, 3); + world.func_147465_d(x, y, z, block, otherData, 3); + world.func_147464_a(x, otherY, z, this, tickRate); + world.func_147464_a(x, y, z, block, block.func_149738_a(world)); return 0; } } diff --git a/src/main/java/net/minecraftforge/fluids/Fluid.java b/src/main/java/net/minecraftforge/fluids/Fluid.java index bbc955579b..d47dfb4c94 100644 --- a/src/main/java/net/minecraftforge/fluids/Fluid.java +++ b/src/main/java/net/minecraftforge/fluids/Fluid.java @@ -172,12 +172,10 @@ public class Fluid return this.fluidName; } - /* public final int getID() { return FluidRegistry.getFluidID(this.fluidName); } - */ public final Block getBlock() { diff --git a/src/main/java/net/minecraftforge/fluids/FluidContainerRegistry.java b/src/main/java/net/minecraftforge/fluids/FluidContainerRegistry.java index 80c24cafc0..4eec8b979d 100644 --- a/src/main/java/net/minecraftforge/fluids/FluidContainerRegistry.java +++ b/src/main/java/net/minecraftforge/fluids/FluidContainerRegistry.java @@ -8,6 +8,9 @@ import java.util.List; import java.util.Map; import java.util.Set; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; + import cpw.mods.fml.common.eventhandler.Event; import net.minecraft.init.Items; import net.minecraft.item.Item; @@ -26,10 +29,37 @@ import net.minecraftforge.common.MinecraftForge; @SuppressWarnings("unused") public abstract class FluidContainerRegistry { - /* - private static Map containerFluidMap = new HashMap(); - private static Map filledContainerMap = new HashMap(); - private static Set emptyContainers = new HashSet(); + // Holder object that implements HashCode for an ItemStack, + // the local maps are not guaranteed to have the same internal generic structure, + // but the external interface for checking ItemStacks will still exist. + private static class ContainerKey + { + ItemStack container; + FluidStack fluid; + private ContainerKey(ItemStack container) + { + this.container = container; + } + private ContainerKey(ItemStack container, FluidStack fluid) + { + this(container); + this.fluid = fluid; + } + @Override + public int hashCode() + { + int code = 1; + code = 31*code + container.hashCode(); + code = 31*code + container.getItemDamage(); + if (fluid != null) + code = 31*code + fluid.fluidID; + return code; + } + } + + private static Map containerFluidMap = Maps.newHashMap(); + private static Map filledContainerMap = Maps.newHashMap(); + private static Set emptyContainers = Sets.newHashSet(); public static final int BUCKET_VOLUME = 1000; public static final ItemStack EMPTY_BUCKET = new ItemStack(Items.bucket); @@ -55,7 +85,7 @@ public abstract class FluidContainerRegistry * @param emptyContainer * ItemStack representing the container when it is empty. * @return True if container was successfully registered; false if it already is. - * / + */ public static boolean registerFluidContainer(FluidStack stack, ItemStack filledContainer, ItemStack emptyContainer) { return registerFluidContainer(new FluidContainerData(stack, filledContainer, emptyContainer)); @@ -72,7 +102,7 @@ public abstract class FluidContainerRegistry * @param emptyContainer * ItemStack representing the container when it is empty. * @return True if container was successfully registered; false if it already is. - * / + */ public static boolean registerFluidContainer(Fluid fluid, ItemStack filledContainer, ItemStack emptyContainer) { if (!FluidRegistry.isFluidRegistered(fluid)) @@ -90,7 +120,7 @@ public abstract class FluidContainerRegistry * @param filledContainer * ItemStack representing the container when it is full. * @return True if container was successfully registered; false if it already is. - * / + */ public static boolean registerFluidContainer(FluidStack stack, ItemStack filledContainer) { return registerFluidContainer(new FluidContainerData(stack, filledContainer, null, true)); @@ -105,7 +135,7 @@ public abstract class FluidContainerRegistry * @param filledContainer * ItemStack representing the container when it is full. * @return True if container was successfully registered; false if it already is. - * / + */ public static boolean registerFluidContainer(Fluid fluid, ItemStack filledContainer) { if (!FluidRegistry.isFluidRegistered(fluid)) @@ -121,19 +151,19 @@ public abstract class FluidContainerRegistry * @param data * See {@link FluidContainerData}. * @return True if container was successfully registered; false if it already is. - * / + */ public static boolean registerFluidContainer(FluidContainerData data) { if (isFilledContainer(data.filledContainer)) { return false; } - containerFluidMap.put(Arrays.asList(data.filledContainer, data.filledContainer.getItemDamage()), data); + containerFluidMap.put(new ContainerKey(data.filledContainer), data); if (data.emptyContainer != null && data.emptyContainer != NULL_EMPTYCONTAINER) { - filledContainerMap.put(Arrays.asList(data.emptyContainer, data.emptyContainer.getItemDamage(), data.fluid.fluidID), data); - emptyContainers.add(Arrays.asList(data.emptyContainer, data.emptyContainer.getItemDamage())); + filledContainerMap.put(new ContainerKey(data.emptyContainer, data.fluid), data); + emptyContainers.add(new ContainerKey(data.emptyContainer)); } MinecraftForge.EVENT_BUS.post(new FluidContainerRegisterEvent(data)); @@ -146,7 +176,7 @@ public abstract class FluidContainerRegistry * @param container * The fluid container. * @return FluidStack representing stored fluid. - * / + */ public static FluidStack getFluidForFilledItem(ItemStack container) { if (container == null) @@ -154,7 +184,7 @@ public abstract class FluidContainerRegistry return null; } - FluidContainerData data = containerFluidMap.get(Arrays.asList(container, container.getItemDamage())); + FluidContainerData data = containerFluidMap.get(new ContainerKey(container)); return data == null ? null : data.fluid.copy(); } @@ -168,7 +198,7 @@ public abstract class FluidContainerRegistry * @param container * ItemStack representing the empty container. * @return Filled container if successful, otherwise null. - * / + */ public static ItemStack fillFluidContainer(FluidStack fluid, ItemStack container) { if (container == null || fluid == null) @@ -176,7 +206,7 @@ public abstract class FluidContainerRegistry return null; } - FluidContainerData data = filledContainerMap.get(Arrays.asList(container, container.getItemDamage(), fluid.fluidID)); + FluidContainerData data = filledContainerMap.get(new ContainerKey(container, fluid)); if (data != null && fluid.amount >= data.fluid.amount) { return data.filledContainer.copy(); @@ -186,7 +216,7 @@ public abstract class FluidContainerRegistry /** * Determines if a container holds a specific fluid. - * / + */ public static boolean containsFluid(ItemStack container, FluidStack fluid) { if (container == null || fluid == null) @@ -194,7 +224,7 @@ public abstract class FluidContainerRegistry return false; } - FluidContainerData data = filledContainerMap.get(Arrays.asList(container, container.getItemDamage(), fluid.fluidID)); + FluidContainerData data = filledContainerMap.get(new ContainerKey(container, fluid)); return data == null ? false : data.fluid.isFluidEqual(fluid); } @@ -210,7 +240,7 @@ public abstract class FluidContainerRegistry return true; } - FluidContainerData data = containerFluidMap.get(Arrays.asList(container, container.getItemDamage())); + FluidContainerData data = containerFluidMap.get(new ContainerKey(container)); return data != null && data.emptyContainer.isItemEqual(EMPTY_BUCKET); } @@ -221,7 +251,7 @@ public abstract class FluidContainerRegistry public static boolean isEmptyContainer(ItemStack container) { - return container != null && emptyContainers.contains(Arrays.asList(container, container.getItemDamage())); + return container != null && emptyContainers.contains(new ContainerKey(container)); } public static boolean isFilledContainer(ItemStack container) @@ -237,7 +267,7 @@ public abstract class FluidContainerRegistry /** * Wrapper class for the registry entries. Ensures that none of the attempted registrations * contain null references unless permitted. - * / + */ public static class FluidContainerData { public final FluidStack fluid; @@ -277,5 +307,4 @@ public abstract class FluidContainerRegistry this.data = data.copy(); } } - */ } diff --git a/src/main/java/net/minecraftforge/fluids/FluidIdMapPacket.java b/src/main/java/net/minecraftforge/fluids/FluidIdMapPacket.java deleted file mode 100644 index 9ee287dafa..0000000000 --- a/src/main/java/net/minecraftforge/fluids/FluidIdMapPacket.java +++ /dev/null @@ -1,53 +0,0 @@ - -package net.minecraftforge.fluids; - -import java.util.Map; - -import net.minecraft.entity.player.EntityPlayer; - -import com.google.common.collect.BiMap; -import com.google.common.collect.HashBiMap; -import com.google.common.io.ByteArrayDataInput; -import com.google.common.io.ByteArrayDataOutput; -import com.google.common.io.ByteStreams; - -@SuppressWarnings("unused") -public class FluidIdMapPacket// extends ForgePacket -{ - /* - private BiMap fluidIds = HashBiMap.create(); - - @Override - public byte[] generatePacket() - { - ByteArrayDataOutput dat = ByteStreams.newDataOutput(); - - dat.writeInt(FluidRegistry.maxID); - for (Map.Entry entry : FluidRegistry.fluidIDs.entrySet()) - { - dat.writeUTF(entry.getKey()); - dat.writeInt(entry.getValue()); - } - return dat.toByteArray(); - } - - @Override - public ForgePacket consumePacket(byte[] data) - { - ByteArrayDataInput dat = ByteStreams.newDataInput(data); - int listSize = dat.readInt(); - for (int i = 0; i < listSize; i++) { - String fluidName = dat.readUTF(); - int fluidId = dat.readInt(); - fluidIds.put(fluidName, fluidId); - } - return this; - } - - @Override - public void execute(INetworkManager network, EntityPlayer player) - { - FluidRegistry.initFluidIDs(fluidIds); - } - */ -} diff --git a/src/main/java/net/minecraftforge/fluids/FluidRegistry.java b/src/main/java/net/minecraftforge/fluids/FluidRegistry.java index 78d49a9592..f66135cfb6 100644 --- a/src/main/java/net/minecraftforge/fluids/FluidRegistry.java +++ b/src/main/java/net/minecraftforge/fluids/FluidRegistry.java @@ -4,12 +4,14 @@ import java.util.HashMap; import java.util.Map; import net.minecraft.block.Block; +import net.minecraft.init.Blocks; import net.minecraft.util.StatCollector; import net.minecraftforge.common.MinecraftForge; import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; import cpw.mods.fml.common.eventhandler.Event; @@ -19,13 +21,11 @@ import cpw.mods.fml.common.eventhandler.Event; * @author King Lemming, CovertJaguar (LiquidDictionary) * */ -@SuppressWarnings("unused") public abstract class FluidRegistry { - /* static int maxID = 0; - static HashMap fluids = new HashMap(); + static HashMap fluids = Maps.newHashMap(); static BiMap fluidIDs = HashBiMap.create(); static BiMap fluidBlocks; @@ -34,14 +34,14 @@ public abstract class FluidRegistry public String getLocalizedName() { return StatCollector.translateToLocal("tile.water.name"); } - }.setBlockID(Block.waterStill.blockID).setUnlocalizedName(Block.waterStill.getUnlocalizedName()); + }.setBlock(Blocks.water).setUnlocalizedName(Blocks.water.func_149739_a()); public static final Fluid LAVA = new Fluid("lava") { @Override public String getLocalizedName() { return StatCollector.translateToLocal("tile.lava.name"); } - }.setBlockID(Block.lavaStill.blockID).setLuminosity(15).setDensity(3000).setViscosity(6000).setTemperature(1300).setUnlocalizedName(Block.lavaStill.getUnlocalizedName()); + }.setBlock(Blocks.lava).setLuminosity(15).setDensity(3000).setViscosity(6000).setTemperature(1300).setUnlocalizedName(Blocks.lava.func_149739_a()); public static int renderIdFluid = -1; @@ -55,8 +55,9 @@ public abstract class FluidRegistry /** * Called by Forge to prepare the ID map for server -> client sync. - * / - static void initFluidIDs(BiMap newfluidIDs) + * Modders, DO NOT call this. + */ + public static void initFluidIDs(BiMap newfluidIDs) { maxID = newfluidIDs.size(); fluidIDs.clear(); @@ -69,7 +70,7 @@ public abstract class FluidRegistry * @param fluid * The fluid to register. * @return True if the fluid was successfully registered; false if there is a name clash. - * / + */ public static boolean registerFluid(Fluid fluid) { if (fluidIDs.containsKey(fluid.getName())) @@ -129,7 +130,7 @@ public abstract class FluidRegistry /** * Returns a read-only map containing Fluid Names and their associated Fluids. - * / + */ public static Map getRegisteredFluids() { return ImmutableMap.copyOf(fluids); @@ -137,7 +138,7 @@ public abstract class FluidRegistry /** * Returns a read-only map containing Fluid Names and their associated IDs. - * / + */ public static Map getRegisteredFluidIDs() { return ImmutableMap.copyOf(fluidIDs); @@ -150,9 +151,9 @@ public abstract class FluidRegistry fluidBlocks = HashBiMap.create(); for (Fluid fluid : fluids.values()) { - if (fluid.canBePlacedInWorld() && Block.blocksList[fluid.getBlockID()] != null) + if (fluid.canBePlacedInWorld() && fluid.getBlock() != null) { - fluidBlocks.put(Block.blocksList[fluid.getBlockID()], fluid); + fluidBlocks.put(fluid.getBlock(), fluid); } } } @@ -170,5 +171,9 @@ public abstract class FluidRegistry this.fluidID = fluidID; } } - */ + + public static int getMaxID() + { + return maxID; + } } diff --git a/src/main/java/net/minecraftforge/fluids/FluidStack.java b/src/main/java/net/minecraftforge/fluids/FluidStack.java index 76e796ba8c..c41a9fccc4 100644 --- a/src/main/java/net/minecraftforge/fluids/FluidStack.java +++ b/src/main/java/net/minecraftforge/fluids/FluidStack.java @@ -16,10 +16,8 @@ import net.minecraft.nbt.NBTTagCompound; * @author King Lemming, SirSengir (LiquidStack) * */ -@SuppressWarnings("unused") public class FluidStack { - /* public int fluidID; public int amount; public NBTTagCompound tag; @@ -54,7 +52,7 @@ public class FluidStack /** * This provides a safe method for retrieving a FluidStack - if the Fluid is invalid, the stack * will return as null. - * / + */ public static FluidStack loadFluidStackFromNBT(NBTTagCompound nbt) { if (nbt == null) @@ -104,7 +102,7 @@ public class FluidStack /** * @return A copy of this FluidStack - * / + */ public FluidStack copy() { return new FluidStack(fluidID, amount, tag); @@ -116,7 +114,7 @@ public class FluidStack * @param other * The FluidStack for comparison * @return true if the Fluids (IDs and NBT Tags) are the same - * / + */ public boolean isFluidEqual(FluidStack other) { return other != null && fluidID == other.fluidID && isFluidStackTagEqual(other); @@ -129,7 +127,7 @@ public class FluidStack /** * Determines if the NBT Tags are equal. Useful if the FluidIDs are known to be equal. - * / + */ public static boolean areFluidStackTagsEqual(FluidStack stack1, FluidStack stack2) { return stack1 == null && stack2 == null ? true : stack1 == null || stack2 == null ? false : stack1.isFluidStackTagEqual(stack2); @@ -140,7 +138,7 @@ public class FluidStack * * @param other * @return true if this FluidStack contains the other FluidStack (same fluid and >= amount) - * / + */ public boolean containsFluid(FluidStack other) { return isFluidEqual(other) && amount >= other.amount; @@ -152,7 +150,7 @@ public class FluidStack * @param other * - the FluidStack for comparison * @return true if the two FluidStacks are exactly the same - * / + */ public boolean isFluidStackIdentical(FluidStack other) { return isFluidEqual(other) && amount == other.amount; @@ -165,7 +163,7 @@ public class FluidStack * @param other * The ItemStack for comparison * @return true if the Fluids (IDs and NBT Tags) are the same - * / + */ public boolean isFluidEqual(ItemStack other) { if (other == null) @@ -191,7 +189,7 @@ public class FluidStack * Default equality comparison for a FluidStack. Same functionality as isFluidEqual(). * * This is included for use in data structures. - * / + */ @Override public final boolean equals(Object o) { @@ -202,5 +200,4 @@ public class FluidStack return isFluidEqual((FluidStack) o); } - */ } diff --git a/src/main/java/net/minecraftforge/fluids/FluidTank.java b/src/main/java/net/minecraftforge/fluids/FluidTank.java index 44398b7c14..ca5a5c19f9 100644 --- a/src/main/java/net/minecraftforge/fluids/FluidTank.java +++ b/src/main/java/net/minecraftforge/fluids/FluidTank.java @@ -10,16 +10,8 @@ import net.minecraft.tileentity.TileEntity; * @author King Lemming, cpw (LiquidTank) * */ -@SuppressWarnings("unused") public class FluidTank implements IFluidTank { - @Override public FluidStack getFluid() { return null; } - @Override public int getFluidAmount() { return 0; } - @Override public int getCapacity() { return 0; } - @Override public FluidTankInfo getInfo() { return null; } - @Override public int fill(FluidStack resource, boolean doFill) { return 0; } - @Override public FluidStack drain(int maxDrain, boolean doDrain){ return null; } - /* protected FluidStack fluid; protected int capacity; protected TileEntity tile; @@ -77,7 +69,7 @@ public class FluidTank implements IFluidTank this.capacity = capacity; } - /* IFluidTank * / + /* IFluidTank */ @Override public FluidStack getFluid() { @@ -193,5 +185,4 @@ public class FluidTank implements IFluidTank } return stack; } - */ } diff --git a/src/main/java/net/minecraftforge/fluids/ItemFluidContainer.java b/src/main/java/net/minecraftforge/fluids/ItemFluidContainer.java index f63f4f1c37..111777d0cf 100644 --- a/src/main/java/net/minecraftforge/fluids/ItemFluidContainer.java +++ b/src/main/java/net/minecraftforge/fluids/ItemFluidContainer.java @@ -10,14 +10,8 @@ import net.minecraft.nbt.NBTTagCompound; * @author King Lemming * */ -@SuppressWarnings("unused") public class ItemFluidContainer extends Item implements IFluidContainerItem { - @Override public FluidStack getFluid(ItemStack container){ return null; } - @Override public int getCapacity(ItemStack container){ return 0; } - @Override public int fill(ItemStack container, FluidStack resource, boolean doFill) { return 0; } - @Override public FluidStack drain(ItemStack container, int maxDrain, boolean doDrain){ return null; } - /* protected int capacity; public ItemFluidContainer(int itemID) @@ -37,7 +31,7 @@ public class ItemFluidContainer extends Item implements IFluidContainerItem return this; } - /* IFluidContainerItem * / + /* IFluidContainerItem */ @Override public FluidStack getFluid(ItemStack container) { @@ -161,5 +155,4 @@ public class ItemFluidContainer extends Item implements IFluidContainerItem } return stack; } - */ } diff --git a/src/main/java/net/minecraftforge/fluids/RenderBlockFluid.java b/src/main/java/net/minecraftforge/fluids/RenderBlockFluid.java index 3ac78ef1b8..a1783d5a6c 100644 --- a/src/main/java/net/minecraftforge/fluids/RenderBlockFluid.java +++ b/src/main/java/net/minecraftforge/fluids/RenderBlockFluid.java @@ -1,8 +1,10 @@ package net.minecraftforge.fluids; import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; @@ -14,14 +16,8 @@ import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; * @author King Lemming * */ -@SuppressWarnings("unused") public class RenderBlockFluid implements ISimpleBlockRenderingHandler { - @Override public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) {} - @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { return false; } - @Override public boolean shouldRender3DInInventory(int modelId) { return false; } - @Override public int getRenderId() { return 0; } - /* public static RenderBlockFluid instance = new RenderBlockFluid(); static final float LIGHT_Y_NEG = 0.5F; @@ -59,9 +55,9 @@ public class RenderBlockFluid implements ISimpleBlockRenderingHandler public float getFluidHeightForRender(IBlockAccess world, int x, int y, int z, BlockFluidBase block) { - if (world.getBlockId(x, y, z) == block.blockID) + if (world.func_147439_a(x, y, z) == block) { - if (world.getBlockMaterial(x, y - block.densityDir, z).isLiquid()) + if (world.func_147439_a(x, y - block.densityDir, z).func_149688_o().isLiquid()) { return 1; } @@ -71,10 +67,10 @@ public class RenderBlockFluid implements ISimpleBlockRenderingHandler return 0.875F; } } - return !world.getBlockMaterial(x, y, z).isSolid() && world.getBlockId(x, y - block.densityDir, z) == block.blockID ? 1 : block.getQuantaPercentage(world, x, y, z) * 0.875F; + return !world.func_147439_a(x, y, z).func_149688_o().isSolid() && world.func_147439_a(x, y - block.densityDir, z) == block ? 1 : block.getQuantaPercentage(world, x, y, z) * 0.875F; } - /* ISimpleBlockRenderingHandler * / + /* ISimpleBlockRenderingHandler */ @Override public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer){} @@ -87,7 +83,7 @@ public class RenderBlockFluid implements ISimpleBlockRenderingHandler } Tessellator tessellator = Tessellator.instance; - int color = block.colorMultiplier(world, x, y, z); + int color = block.func_149720_d(world, x, y, z); float red = (color >> 16 & 255) / 255.0F; float green = (color >> 8 & 255) / 255.0F; float blue = (color & 255) / 255.0F; @@ -95,16 +91,16 @@ public class RenderBlockFluid implements ISimpleBlockRenderingHandler BlockFluidBase theFluid = (BlockFluidBase) block; int bMeta = world.getBlockMetadata(x, y, z); - boolean renderTop = world.getBlockId(x, y - theFluid.densityDir, z) != theFluid.blockID; + boolean renderTop = world.func_147439_a(x, y - theFluid.densityDir, z) != theFluid; - boolean renderBottom = block.shouldSideBeRendered(world, x, y + theFluid.densityDir, z, 0) && world.getBlockId(x, y + theFluid.densityDir, z) != theFluid.blockID; + boolean renderBottom = block.func_149646_a(world, x, y + theFluid.densityDir, z, 0) && world.func_147439_a(x, y + theFluid.densityDir, z) != theFluid; boolean[] renderSides = new boolean[] { - block.shouldSideBeRendered(world, x, y, z - 1, 2), - block.shouldSideBeRendered(world, x, y, z + 1, 3), - block.shouldSideBeRendered(world, x - 1, y, z, 4), - block.shouldSideBeRendered(world, x + 1, y, z, 5) + block.func_149646_a(world, x, y, z - 1, 2), + block.func_149646_a(world, x, y, z + 1, 3), + block.func_149646_a(world, x - 1, y, z, 4), + block.func_149646_a(world, x + 1, y, z, 5) }; if (!renderTop && !renderBottom && !renderSides[0] && !renderSides[1] && !renderSides[2] && !renderSides[3]) @@ -142,15 +138,15 @@ public class RenderBlockFluid implements ISimpleBlockRenderingHandler } boolean rises = theFluid.densityDir == 1; - if (renderer.renderAllFaces || renderTop) + if (renderer.field_147837_f || renderTop) { rendered = true; - Icon iconStill = block.getIcon(1, bMeta); + IIcon iconStill = getIcon(block.func_149691_a(1, bMeta)); float flowDir = (float) BlockFluidBase.getFlowDirection(world, x, y, z); if (flowDir > -999.0F) { - iconStill = block.getIcon(2, bMeta); + iconStill = getIcon(block.func_149691_a(2, bMeta)); } heightNW -= RENDER_OFFSET; @@ -185,7 +181,7 @@ public class RenderBlockFluid implements ISimpleBlockRenderingHandler v3 = iconStill.getInterpolatedV(8.0F + (-zFlow - xFlow) * 16.0F); } - tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setBrightness(block.func_149677_c(world, x, y, z)); tessellator.setColorOpaque_F(LIGHT_Y_POS * red, LIGHT_Y_POS * green, LIGHT_Y_POS * blue); if (!rises) @@ -204,19 +200,19 @@ public class RenderBlockFluid implements ISimpleBlockRenderingHandler } } - if (renderer.renderAllFaces || renderBottom) + if (renderer.field_147837_f || renderBottom) { rendered = true; - tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y - 1, z)); + tessellator.setBrightness(block.func_149677_c(world, x, y - 1, z)); if (!rises) { tessellator.setColorOpaque_F(LIGHT_Y_NEG * red, LIGHT_Y_NEG * green, LIGHT_Y_NEG * blue); - renderer.renderFaceYNeg(block, x, y + RENDER_OFFSET, z, block.getIcon(0, bMeta)); + renderer.func_147768_a(block, x, y + RENDER_OFFSET, z, getIcon(block.func_149691_a(0, bMeta))); } else { tessellator.setColorOpaque_F(LIGHT_Y_POS * red, LIGHT_Y_POS * green, LIGHT_Y_POS * blue); - renderer.renderFaceYPos(block, x, y + RENDER_OFFSET, z, block.getIcon(1, bMeta)); + renderer.func_147806_b(block, x, y + RENDER_OFFSET, z, getIcon(block.func_149691_a(1, bMeta))); } } @@ -233,8 +229,8 @@ public class RenderBlockFluid implements ISimpleBlockRenderingHandler case 3: ++x2; break; } - Icon iconFlow = block.getIcon(side + 2, bMeta); - if (renderer.renderAllFaces || renderSides[side]) + IIcon iconFlow = getIcon(block.func_149691_a(side + 2, bMeta)); + if (renderer.field_147837_f || renderSides[side]) { rendered = true; @@ -287,7 +283,7 @@ public class RenderBlockFluid implements ISimpleBlockRenderingHandler float v1Flow = iconFlow.getInterpolatedV((1.0D - ty1) * 16.0D * 0.5D); float v2Flow = iconFlow.getInterpolatedV((1.0D - ty2) * 16.0D * 0.5D); float v3Flow = iconFlow.getInterpolatedV(8.0D); - tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x2, y, z2)); + tessellator.setBrightness(block.func_149677_c(world, x2, y, z2)); float sideLighting = 1.0F; if (side < 2) @@ -317,18 +313,24 @@ public class RenderBlockFluid implements ISimpleBlockRenderingHandler } } } - renderer.renderMinY = 0; - renderer.renderMaxY = 1; + renderer.field_147855_j = 0; + renderer.field_147857_k = 1; return rendered; } } @Override - public boolean shouldRender3DInInventory(){ return false; } + public boolean shouldRender3DInInventory(int modelId){ return false; } @Override public int getRenderId() { return FluidRegistry.renderIdFluid; } - */ + + + private IIcon getIcon(IIcon icon) + { + if (icon != null) return icon; + return ((TextureMap)Minecraft.getMinecraft().getTextureManager().getTexture(TextureMap.locationBlocksTexture)).getAtlasSprite("missingno"); + } } \ No newline at end of file diff --git a/src/main/java/net/minecraftforge/fluids/TileFluidHandler.java b/src/main/java/net/minecraftforge/fluids/TileFluidHandler.java index 62e5b64ede..a457df5386 100644 --- a/src/main/java/net/minecraftforge/fluids/TileFluidHandler.java +++ b/src/main/java/net/minecraftforge/fluids/TileFluidHandler.java @@ -11,33 +11,25 @@ import net.minecraftforge.common.util.ForgeDirection; * @author King Lemming * */ -@SuppressWarnings("unused") public class TileFluidHandler extends TileEntity implements IFluidHandler { - @Override public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { return 0; } - @Override public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) { return null; } - @Override public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) { return null; } - @Override public boolean canFill(ForgeDirection from, Fluid fluid) { return false; } - @Override public boolean canDrain(ForgeDirection from, Fluid fluid) { return false; } - @Override public FluidTankInfo[] getTankInfo(ForgeDirection from) { return null; } - /* protected FluidTank tank = new FluidTank(FluidContainerRegistry.BUCKET_VOLUME); @Override - public void readFromNBT(NBTTagCompound tag) + public void func_145839_a(NBTTagCompound tag) { - super.readFromNBT(tag); - tank.writeToNBT(tag); - } - - @Override - public void writeToNBT(NBTTagCompound tag) - { - super.writeToNBT(tag); + super.func_145839_a(tag); tank.readFromNBT(tag); } - /* IFluidHandler * / + @Override + public void func_145841_b(NBTTagCompound tag) + { + super.func_145841_b(tag); + tank.writeToNBT(tag); + } + + /* IFluidHandler */ @Override public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { @@ -77,5 +69,4 @@ public class TileFluidHandler extends TileEntity implements IFluidHandler { return new FluidTankInfo[] { tank.getInfo() }; } - */ }