diff --git a/src/main/scala/resonantinduction/archaic/fluid/grate/TileGrate.scala b/src/main/scala/resonantinduction/archaic/fluid/grate/TileGrate.scala index 5478acd67..5fbd6d7ae 100644 --- a/src/main/scala/resonantinduction/archaic/fluid/grate/TileGrate.scala +++ b/src/main/scala/resonantinduction/archaic/fluid/grate/TileGrate.scala @@ -13,15 +13,15 @@ import net.minecraftforge.common.util.ForgeDirection import net.minecraftforge.fluids.{Fluid, FluidContainerRegistry, FluidRegistry, FluidStack} import resonant.api.IRotatable import resonant.lib.config.Config +import resonant.lib.prefab.fluid.NodeFluid +import resonant.lib.transform.vector.Vector3 import resonant.lib.utility.FluidUtility import resonantinduction.archaic.fluid.grate.TileGrate._ import resonantinduction.core.Reference -import resonantinduction.core.prefab.node.TilePressureNode -import resonant.lib.transform.vector.Vector3 +import resonantinduction.core.prefab.node.{NodePressure, TileFluidProvider} object TileGrate { - @Config(comment = "The multiplier for the influence of the grate. Dependent on pressure.") private var grateEffectMultiplier: Double = 5 @@ -50,9 +50,9 @@ object TileGrate } -class TileGrate extends TilePressureNode(Material.rock) with IRotatable +class TileGrate extends TileFluidProvider(Material.rock) with IRotatable { - + override protected val fluidNode = new NodePressure(this) private var gratePath: GratePathfinder = _ private var fillOver: Boolean = true isOpaqueCube = false @@ -95,10 +95,10 @@ class TileGrate extends TilePressureNode(Material.rock) with IRotatable { if (ticks % 10 == 0) { - val pressure = getPressure(getDirection) + val pressure = fluidNode.pressure(getDirection) val blockEffect = Math.abs(pressure * grateEffectMultiplier).toInt setCapacity(Math.max(blockEffect * FluidContainerRegistry.BUCKET_VOLUME * grateDrainSpeedMultiplier, - FluidContainerRegistry.BUCKET_VOLUME).toInt) + FluidContainerRegistry.BUCKET_VOLUME).toInt) if (pressure > 0) { if (getFluidAmount >= FluidContainerRegistry.BUCKET_VOLUME) @@ -230,7 +230,7 @@ class TileGrate extends TilePressureNode(Material.rock) with IRotatable return 0 } val didFill = FluidUtility.fillBlock(TileGrate.this.worldObj, next.position, new FluidStack(fluidType, - amount), true) + amount), true) filled += didFill if (FluidUtility.getFluidAmountFromBlock(TileGrate.this.worldObj, next.position) > 0 || @@ -342,7 +342,7 @@ class TileGrate extends TilePressureNode(Material.rock) with IRotatable null || this.fluidType.getID != FluidUtility.getFluidFromBlock(TileGrate.this.worldObj, fluidCoord.position) - .getID) + .getID) { this.drainNodes.poll() } diff --git a/src/main/scala/resonantinduction/archaic/fluid/gutter/TileGutter.scala b/src/main/scala/resonantinduction/archaic/fluid/gutter/TileGutter.scala index c3d090bb3..522316c5f 100644 --- a/src/main/scala/resonantinduction/archaic/fluid/gutter/TileGutter.scala +++ b/src/main/scala/resonantinduction/archaic/fluid/gutter/TileGutter.scala @@ -14,18 +14,16 @@ import net.minecraftforge.client.model.{AdvancedModelLoader, IModelCustom} import net.minecraftforge.common.util.ForgeDirection import net.minecraftforge.fluids.{FluidRegistry, FluidStack, IFluidTank} import org.lwjgl.opengl.GL11 -import resonant.api.grid.INode import resonant.api.recipe.{MachineRecipes, RecipeResource} import resonant.content.factory.resources.RecipeType -import resonant.lib.prefab.fluid.NodeFluid import resonant.lib.render.{FluidRenderUtility, RenderUtility} +import resonant.lib.transform.region.Cuboid +import resonant.lib.transform.vector.Vector3 import resonant.lib.utility.FluidUtility import resonant.lib.utility.inventory.InventoryUtility import resonant.lib.wrapper.BitmaskWrapper._ import resonantinduction.core.Reference -import resonantinduction.core.prefab.node.TilePressureNode -import resonant.lib.transform.region.Cuboid -import resonant.lib.transform.vector.Vector3 +import resonantinduction.core.prefab.node.TileFluidProvider object TileGutter { @@ -38,16 +36,15 @@ object TileGutter * * @author Calclavia */ -class TileGutter extends TilePressureNode(Material.rock) +class TileGutter extends TileFluidProvider(Material.rock) { - fluidNode = new NodePressureGravity(this) - setTextureName("material_wood_surface") + override protected val fluidNode = new NodePressureGravity(this) + + textureName = "material_wood_surface" isOpaqueCube = false normalRender = false bounds = new Cuboid(0, 0, 0, 1, 0.99, 1) - override protected var fluidNode: NodeFluid = new NodePressureGravity(this) - override def getCollisionBoxes: java.lang.Iterable[Cuboid] = { val list: List[Cuboid] = new ArrayList[Cuboid] @@ -83,13 +80,13 @@ class TileGutter extends TilePressureNode(Material.rock) for (i <- 2 to 6) { val dir: ForgeDirection = ForgeDirection.getOrientation(i) - val pressure: Int = getPressure(dir) - val _position: Vector3 = asVector3.add(dir) - val checkTile: TileEntity = _position.getTileEntity(world) + val pressure: Int = fluidNode.pressure(dir) + val pos: Vector3 = asVector3.add(dir) + val checkTile: TileEntity = pos.getTileEntity(world) if (checkTile.isInstanceOf[TileGutter]) { - val deltaPressure: Int = pressure - (checkTile.asInstanceOf[TileGutter]).getPressure(dir.getOpposite) + val deltaPressure: Int = pressure - checkTile.asInstanceOf[TileGutter].fluidNode.pressure(dir.getOpposite) entity.motionX += 0.01 * dir.offsetX * deltaPressure entity.motionY += 0.01 * dir.offsetY * deltaPressure entity.motionZ += 0.01 * dir.offsetZ * deltaPressure @@ -101,7 +98,7 @@ class TileGutter extends TilePressureNode(Material.rock) } else { - entity.extinguish + entity.extinguish() } } if (entity.isInstanceOf[EntityItem]) @@ -121,8 +118,9 @@ class TileGutter extends TilePressureNode(Material.rock) if (!world.isRemote) { val drainAmount: Int = 50 + world.rand.nextInt(50) - val _drain: FluidStack = drain(ForgeDirection.UP, drainAmount, false) - if (_drain != null && _drain.amount > 0 && world.rand.nextFloat > 0.9) + val drain: FluidStack = fluidNode.drain(ForgeDirection.UP, drainAmount, false) + + if (drain != null && drain.amount > 0 && world.rand.nextFloat > 0.9) { if (world.rand.nextFloat > 0.1) { @@ -138,7 +136,8 @@ class TileGutter extends TilePressureNode(Material.rock) } player.inventory.setInventorySlotContents(player.inventory.currentItem, itemStack) } - drain(ForgeDirection.UP, drainAmount, true) + + fluidNode.drain(ForgeDirection.UP, drainAmount, true) world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "liquid.water", 0.5f, 1) } return true diff --git a/src/main/scala/resonantinduction/archaic/fluid/tank/TileTank.scala b/src/main/scala/resonantinduction/archaic/fluid/tank/TileTank.scala index e2e538b36..cbca46bfb 100644 --- a/src/main/scala/resonantinduction/archaic/fluid/tank/TileTank.scala +++ b/src/main/scala/resonantinduction/archaic/fluid/tank/TileTank.scala @@ -40,7 +40,7 @@ class TileTank extends TileFluidProvider(Material.iron) with ISneakPickup with R itemBlock = classOf[ItemBlockTank] setCapacity(TileTank.volume * FluidContainerRegistry.BUCKET_VOLUME) - override protected var fluidNode: NodeFluid = new NodePressure(this) + override protected val fluidNode = new NodePressure(this) override val edgeTexture = Reference.prefix + "tankEdge" override def shouldSideBeRendered(access: IBlockAccess, x: Int, y: Int, z: Int, side: Int): Boolean = access.getBlock(x, y, z) != getBlockType diff --git a/src/main/scala/resonantinduction/core/prefab/node/TileFluidProvider.scala b/src/main/scala/resonantinduction/core/prefab/node/TileFluidProvider.scala index 8e7734145..13b70d733 100644 --- a/src/main/scala/resonantinduction/core/prefab/node/TileFluidProvider.scala +++ b/src/main/scala/resonantinduction/core/prefab/node/TileFluidProvider.scala @@ -25,7 +25,7 @@ abstract class TileFluidProvider(material: Material) extends TileAdvanced(materi val descriptionPacket = 0 val renderPacket = 1 - protected var fluidNode: NodeFluid + protected val fluidNode: NodeFluid protected var colorID: Int = 0 protected var clientRenderMask = 0x00 diff --git a/src/main/scala/resonantinduction/core/prefab/node/TilePressureNode.scala b/src/main/scala/resonantinduction/core/prefab/node/TilePressureNode.scala deleted file mode 100644 index cd449747d..000000000 --- a/src/main/scala/resonantinduction/core/prefab/node/TilePressureNode.scala +++ /dev/null @@ -1,23 +0,0 @@ -package resonantinduction.core.prefab.node - -import net.minecraft.block.material.Material -import net.minecraftforge.common.util.ForgeDirection -import resonant.lib.prefab.fluid.NodeFluid - -class TilePressureNode(material: Material) extends TileFluidProvider(material: Material) -{ - //Constructor - fluidNode == new NodePressure(this) - - override protected var fluidNode: NodeFluid = new NodePressure(this) - - def getPressureNode: NodePressure = - { - return fluidNode.asInstanceOf[NodePressure] - } - - def getPressure(direction: ForgeDirection): Int = - { - return getPressureNode.pressure(direction) - } -} \ No newline at end of file