Fixed fluid errors
This commit is contained in:
parent
780250cda0
commit
c98e3ffe72
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue