Some more rewrite on thermal grid

This commit is contained in:
Calclavia 2015-01-24 17:38:01 +08:00
parent baa21f5f5a
commit 173224b2cb
16 changed files with 205 additions and 190 deletions

View File

@ -327,8 +327,8 @@ item.edx:uranium.0.name=Uranium-235
item.edx:uranium.0.tooltip=Enriched Uranium
item.edx:uranium.1.name=Uranium-238
item.edx:uranium.1.tooltip=Breeding Uranium
item.edx:fissileFuel.name=Fissile Fuel Rod
item.edx:fissileFuel.tooltip=The primary fuel source for fission reactors.
item.edx:fuelRod.name=Fissile Fuel Rod
item.edx:fuelRod.tooltip=The primary fuel source for fission reactors.
item.edx:breederFuel.name=Breeder Fuel Rod
item.edx:breederFuel.tooltip=The fuel source for re-breeding decayed fissile fuels.
item.edx:uraniumHexafluoride.name=Uranium Hexafluoride

View File

@ -186,11 +186,11 @@ class TileFirebox extends SpatialTile(Material.rock) with IFluidHandler with TIn
override def getSizeInventory = 1
def getMeltIronEnergy(volume: Float): Long =
def getMeltIronEnergy(volume: Float): Double =
{
val temperatureChange: Float = 1811 - ThermalPhysics.getDefaultTemperature(worldObj, xCoord, zCoord)
val temperatureChange: Float = 1811 - ThermalPhysics.getDefaultTemperature(toVectorWorld)
val mass: Float = ThermalPhysics.getMass(volume, 7.9f)
return (ThermalPhysics.getEnergyForTemperatureChange(mass, 450, temperatureChange) + ThermalPhysics.getEnergyForStateChange(mass, 272000)).asInstanceOf[Long]
return ThermalPhysics.getEnergyForTemperatureChange(mass, 450, temperatureChange) + ThermalPhysics.getEnergyForStateChange(mass, 272000)
}
override def isItemValidForSlot(i: Int, itemStack: ItemStack): Boolean =

View File

@ -42,8 +42,8 @@ object TextureHookHandler
@SideOnly(Side.CLIENT)
def postTextureHook(event: TextureStitchEvent.Post)
{
QuantumContent.FLUID_URANIUM_HEXAFLOURIDE.setIcons(RenderUtility.loadedIconMap.get(Reference.prefix + "uraniumHexafluoride"))
QuantumContent.FLUID_STEAM.setIcons(RenderUtility.loadedIconMap.get(Reference.prefix + "steam"))
QuantumContent.fluidUraniumHexaflouride.setIcons(RenderUtility.loadedIconMap.get(Reference.prefix + "uraniumHexafluoride"))
QuantumContent.fluidSteam.setIcons(RenderUtility.loadedIconMap.get(Reference.prefix + "steam"))
QuantumContent.FLUID_DEUTERIUM.setIcons(RenderUtility.loadedIconMap.get(Reference.prefix + "deuterium"))
QuantumContent.getFluidTritium.setIcons(RenderUtility.loadedIconMap.get(Reference.prefix + "tritium"))
QuantumContent.getFluidToxicWaste.setIcons(QuantumContent.blockToxicWaste.getIcon(0, 0))

View File

@ -18,7 +18,7 @@ import net.minecraft.item.crafting.FurnaceRecipes
import net.minecraft.item.{Item, ItemStack}
import net.minecraft.util.{IIcon, ResourceLocation}
import net.minecraftforge.client.event.TextureStitchEvent
import net.minecraftforge.fluids.{FluidContainerRegistry, FluidRegistry, FluidStack}
import net.minecraftforge.fluids.{Fluid, FluidContainerRegistry, FluidRegistry, FluidStack}
import net.minecraftforge.oredict.OreDictionary
import resonant.api.recipe.{MachineRecipes, RecipeType}
import resonant.lib.factory.resources.ResourceFactory
@ -77,6 +77,21 @@ object AutoResourceFactory
registerAutoMaterial("tin")
}
def registerAutoMaterial(material: String)
{
if (!materials.contains(material) && OreDictionary.getOres("ore" + material.capitalizeFirst).size > 0)
{
Settings.config.load()
val allowMaterial = Settings.config.get("Resource-Generator", "Enable " + material, true).getBoolean(true)
Settings.config.save()
if (allowMaterial && !blackList.contains(material))
{
materials += material
}
}
}
def postInit()
{
//Add vanilla ore processing recipes
@ -115,7 +130,7 @@ object AutoResourceFactory
}
//Generate molten fluid
val fluidMolten = new FluidColored("molten" + nameCaps).setDensity(7).setViscosity(5000).setTemperature(273 + 1538)
val fluidMolten = new Fluid("molten" + nameCaps).setDensity(7).setViscosity(5000).setTemperature(273 + 1538)
FluidRegistry.registerFluid(fluidMolten)
LanguageRegistry.instance.addStringLocalization(fluidMolten.getUnlocalizedName, LanguageUtility.getLocal("misc.molten") + " " + localizedName)
val blockFluidMaterial = new BlockFluidMaterial(fluidMolten)
@ -154,21 +169,6 @@ object AutoResourceFactory
}
}
def registerAutoMaterial(material: String)
{
if (!materials.contains(material) && OreDictionary.getOres("ore" + material.capitalizeFirst).size > 0)
{
Settings.config.load()
val allowMaterial = Settings.config.get("Resource-Generator", "Enable " + material, true).getBoolean(true)
Settings.config.save()
if (allowMaterial && !blackList.contains(material))
{
materials += material
}
}
}
@SubscribeEvent
@SideOnly(Side.CLIENT)
def reloadTextures(e: TextureStitchEvent.Post)

View File

@ -1,16 +0,0 @@
package edx.core.resource.content
import net.minecraftforge.fluids.Fluid
class FluidColored(fluidName: String) extends Fluid(fluidName)
{
var color = 0xFFFFFF
def setColor(color: Int): FluidColored =
{
this.color = color
return this
}
override def getColor = color
}

View File

@ -0,0 +1,31 @@
package edx.core.wrapper
import net.minecraft.nbt.NBTTagCompound
import net.minecraftforge.fluids.FluidStack
/**
* @author Calclavia
*/
object FluidStackWrapper
{
implicit class FluidStackWrapper(fluidStack: FluidStack)
{
def getTemperature: Int =
{
if (fluidStack.tag == null)
fluidStack.tag = new NBTTagCompound
fluidStack.tag.getInteger("temperature")
}
def setTemperature(temp: Int)
{
if (fluidStack.tag == null)
fluidStack.tag = new NBTTagCompound
fluidStack.tag.setInteger("temperature", temp)
}
}
}

View File

@ -132,11 +132,8 @@ class TileBattery extends SpatialTile(Material.iron) with TIO with TElectric wit
def updateConnectionMask()
{
electricNode.connectionMask = ForgeDirection.VALID_DIRECTIONS.filter(getIO(_) > 0).map(d => 1 << d.ordinal()).foldLeft(0)(_ | _)
electricNode.positiveTerminals.clear()
electricNode.negativeTerminals.clear()
electricNode.positiveTerminals.addAll(getInputDirections())
electricNode.negativeTerminals.addAll(getOutputDirections())
electricNode.setPositives(getInputDirections())
electricNode.setNegatives(getOutputDirections())
electricNode.reconstruct()
markUpdate()
notifyChange()

View File

@ -71,6 +71,15 @@ class TileMotor extends SpatialTile(Material.iron) with TIO with TElectric with
updateConnections()
}
def updateConnections()
{
electricNode.setPositives(getInputDirections())
electricNode.setNegatives(getOutputDirections())
electricNode.reconstruct()
notifyChange()
markUpdate()
}
override def update()
{
super.update()
@ -108,18 +117,6 @@ class TileMotor extends SpatialTile(Material.iron) with TIO with TElectric with
}
}
def updateConnections()
{
electricNode.connectionMask = ForgeDirection.VALID_DIRECTIONS.filter(getIO(_) > 0).map(d => 1 << d.ordinal()).foldLeft(0)(_ | _)
electricNode.positiveTerminals.clear()
electricNode.negativeTerminals.clear()
electricNode.positiveTerminals.addAll(getInputDirections())
electricNode.negativeTerminals.addAll(getOutputDirections())
electricNode.reconstruct()
notifyChange()
markUpdate()
}
@SideOnly(Side.CLIENT)
override def renderDynamic(pos: Vector3, frame: Float, pass: Int): Unit =
{

View File

@ -27,8 +27,8 @@ class TileSolarPanel extends SpatialTile(Material.iron) with TElectric with TSpa
edgeTexture = Reference.prefix + "tankEdge"
electricNode.dynamicTerminals = true
electricNode.positiveTerminals.addAll(Seq(ForgeDirection.NORTH, ForgeDirection.EAST))
electricNode.negativeTerminals.addAll(Seq(ForgeDirection.SOUTH, ForgeDirection.WEST))
electricNode.setPositives(Set(ForgeDirection.NORTH, ForgeDirection.EAST))
electricNode.setNegatives(Set(ForgeDirection.SOUTH, ForgeDirection.WEST))
nodes.add(electricNode)
@SideOnly(Side.CLIENT)

View File

@ -28,8 +28,8 @@ class TileThermopile extends SpatialTile(Material.rock) with TElectric with TSpa
nodes.add(electricNode)
electricNode.dynamicTerminals = true
electricNode.positiveTerminals.addAll(Seq(ForgeDirection.NORTH, ForgeDirection.EAST))
electricNode.negativeTerminals.addAll(Seq(ForgeDirection.SOUTH, ForgeDirection.WEST))
electricNode.setPositives(Set(ForgeDirection.NORTH, ForgeDirection.EAST))
electricNode.setNegatives(Set(ForgeDirection.SOUTH, ForgeDirection.WEST))
override def update()
{

View File

@ -5,6 +5,8 @@ import java.util.List
import cpw.mods.fml.common.Loader
import cpw.mods.fml.common.eventhandler.{Event, SubscribeEvent}
import cpw.mods.fml.common.registry.{EntityRegistry, GameRegistry}
import edx.basic.fluid.tank.TileTank
import edx.core.wrapper.FluidStackWrapper._
import edx.core.{EDXCreativeTab, Electrodynamics, Reference, Settings}
import edx.quantum.blocks._
import edx.quantum.items._
@ -30,13 +32,13 @@ import net.minecraft.world.World
import net.minecraftforge.common.ForgeChunkManager.Type
import net.minecraftforge.common.{ForgeChunkManager, MinecraftForge}
import net.minecraftforge.event.entity.player.FillBucketEvent
import net.minecraftforge.fluids.{Fluid, FluidContainerRegistry, FluidRegistry, FluidStack}
import net.minecraftforge.fluids._
import net.minecraftforge.oredict.{OreDictionary, ShapelessOreRecipe}
import resonant.api.event.PlasmaEvent
import resonant.api.recipe.QuantumAssemblerRecipes
import resonant.api.tile.IElectromagnet
import resonant.lib.factory.resources.block.OreGenerator
import resonant.lib.grid.thermal.EventThermal
import resonant.lib.grid.thermal.ThermalEvent
import resonant.lib.mod.content.{ContentHolder, ExplicitContentName}
import resonant.lib.transform.vector.VectorWorld
import resonant.lib.utility.recipe.UniversalRecipe
@ -44,9 +46,6 @@ import resonant.lib.world.schematic.SchematicRegistry
import scala.collection.JavaConversions._
/**
* Created by robert on 8/10/2014.
*/
object QuantumContent extends ContentHolder
{
//Constructor
@ -108,19 +107,18 @@ object QuantumContent extends ContentHolder
override def preInit()
{
MinecraftForge.EVENT_BUS.register(this)
MinecraftForge.EVENT_BUS.register(FulminationHandler.INSTANCE)
//Register Fluids
FluidRegistry.registerFluid(QuantumContent.FLUID_URANIUM_HEXAFLOURIDE)
FluidRegistry.registerFluid(QuantumContent.FLUID_STEAM)
FluidRegistry.registerFluid(QuantumContent.fluidUraniumHexaflouride)
FluidRegistry.registerFluid(QuantumContent.fluidSteam)
FluidRegistry.registerFluid(QuantumContent.getFluidTritium)
FluidRegistry.registerFluid(QuantumContent.FLUID_DEUTERIUM)
FluidRegistry.registerFluid(QuantumContent.getFluidToxicWaste)
FluidRegistry.registerFluid(QuantumContent.FLUID_PLASMA)
Settings.config.load
Settings.config.load()
super.preInit()
@ -167,7 +165,7 @@ object QuantumContent extends ContentHolder
{
for (ticket <- tickets)
{
if (ticket.getType eq Type.ENTITY)
if (ticket.getType == Type.ENTITY)
{
if (ticket.getEntity != null)
{
@ -186,6 +184,65 @@ object QuantumContent extends ContentHolder
def FLUID_PLASMA: Fluid = new Fluid("plasma").setGaseous(true)
def fluidUraniumHexaflouride: Fluid =
{
var fluid: Fluid = FluidRegistry.getFluid("uraniumhexafluoride")
if (fluid == null)
{
fluid = new Fluid("uraniumhexafluoride").setGaseous(true)
FluidRegistry.registerFluid(fluid)
}
return fluid
}
def fluidSteam: Fluid =
{
var fluid = FluidRegistry.getFluid("steam")
if (fluid == null)
{
fluid = new Fluid("steam").setGaseous(true)
FluidRegistry.registerFluid(fluid)
}
return fluid
}
def FLUID_DEUTERIUM: Fluid =
{
var fluid: Fluid = FluidRegistry.getFluid("deuterium")
if (fluid == null)
{
fluid = new Fluid("deuterium").setGaseous(true)
FluidRegistry.registerFluid(fluid)
}
return fluid
}
/** Gets the Fluid instance of Tritium */
def getFluidTritium: Fluid =
{
var fluid: Fluid = FluidRegistry.getFluid("tritium")
if (fluid == null)
{
fluid = new Fluid("tritium").setGaseous(true)
FluidRegistry.registerFluid(fluid)
}
return fluid
}
/** Gets the Fluid instance of Toxic Waste */
def getFluidToxicWaste: Fluid =
{
var fluid: Fluid = FluidRegistry.getFluid("toxicwaste")
if (fluid == null)
{
fluid = new Fluid("toxicwaste").setGaseous(true)
FluidRegistry.registerFluid(fluid)
}
return fluid
}
override def postInit()
{
super.postInit()
@ -274,13 +331,21 @@ object QuantumContent extends ContentHolder
}
@SubscribeEvent
def thermalEventHandler(evt: EventThermal.EventThermalUpdate)
def thermalEventHandler(evt: ThermalEvent.EventThermalUpdate)
{
val pos: VectorWorld = evt.position
val block: Block = pos.getBlock
if (block == QuantumContent.blockElectromagnet)
val pos = evt.position
val tile = pos.getTileEntity
/**
* Heat up fluid in containers
*/
if (tile.isInstanceOf[TileTank])
{
evt.heatLoss = evt.deltaTemperature * 0.6f
val fluidStack = tile.asInstanceOf[TileTank].fluidNode.getPrimaryTank.getFluid
if (fluidStack != null)
fluidStack.setTemperature(evt.temperature)
}
}
@ -328,6 +393,11 @@ object QuantumContent extends ContentHolder
return isItemStackOreDictionaryCompatible(itemStack, "dropUranium", "oreUranium")
}
def isItemStackDeuteriumCell(itemStack: ItemStack): Boolean =
{
return isItemStackOreDictionaryCompatible(itemStack, "molecule_1d", "molecule_1h2", "cellDeuterium")
}
/** Compare to Ore Dict
*
* @param itemStack
@ -349,11 +419,6 @@ object QuantumContent extends ContentHolder
return false
}
def isItemStackDeuteriumCell(itemStack: ItemStack): Boolean =
{
return isItemStackOreDictionaryCompatible(itemStack, "molecule_1d", "molecule_1h2", "cellDeuterium")
}
def isItemStackTritiumCell(itemStack: ItemStack): Boolean =
{
return isItemStackOreDictionaryCompatible(itemStack, "molecule_h3", "cellTritium")
@ -368,73 +433,16 @@ object QuantumContent extends ContentHolder
return 0
}
def FLUIDSTACK_WATER: FluidStack = new FluidStack(FluidRegistry.WATER, 0)
def fluidStackWater: FluidStack = new FluidStack(FluidRegistry.WATER, 0)
def FLUIDSTACK_URANIUM_HEXAFLOURIDE: FluidStack = new FluidStack(QuantumContent.FLUID_URANIUM_HEXAFLOURIDE, 0)
def fluidStackUraniumHexaflouride: FluidStack = new FluidStack(QuantumContent.fluidUraniumHexaflouride, 0)
def FLUID_URANIUM_HEXAFLOURIDE: Fluid =
{
var fluid: Fluid = FluidRegistry.getFluid("uraniumhexafluoride");
if (fluid == null)
{
fluid = new Fluid("uraniumhexafluoride").setGaseous(true)
FluidRegistry.registerFluid(fluid)
}
return fluid
}
def FLUIDSTACK_STEAM: FluidStack = new FluidStack(FLUID_STEAM, 0)
def FLUID_STEAM: Fluid =
{
var fluid: Fluid = FluidRegistry.getFluid("steam");
if (fluid == null)
{
fluid = new Fluid("steam").setGaseous(true)
FluidRegistry.registerFluid(fluid)
}
return fluid
}
def fluidStackSteam: FluidStack = new FluidStack(fluidSteam, 0)
def FLUIDSTACK_DEUTERIUM: FluidStack = new FluidStack(FLUID_DEUTERIUM, 0)
def FLUID_DEUTERIUM: Fluid =
{
var fluid: Fluid = FluidRegistry.getFluid("deuterium");
if (fluid == null)
{
fluid = new Fluid("deuterium").setGaseous(true)
FluidRegistry.registerFluid(fluid)
}
return fluid
}
def getFluidStackTritium: FluidStack = new FluidStack(getFluidTritium, 0)
/** Gets the Fluid instance of Tritium */
def getFluidTritium: Fluid =
{
var fluid: Fluid = FluidRegistry.getFluid("tritium");
if (fluid == null)
{
fluid = new Fluid("tritium").setGaseous(true)
FluidRegistry.registerFluid(fluid)
}
return fluid
}
/** Gets a FluidStack of Toxic Waste */
def getStackToxicWaste: FluidStack = new FluidStack(getFluidToxicWaste, 0)
/** Gets the Fluid instance of Toxic Waste */
def getFluidToxicWaste: Fluid =
{
var fluid: Fluid = FluidRegistry.getFluid("toxicwaste");
if (fluid == null)
{
fluid = new Fluid("toxicwaste").setGaseous(true)
FluidRegistry.registerFluid(fluid)
}
return fluid
}
}

View File

@ -18,7 +18,7 @@ import resonant.lib.wrapper.CollectionWrapper._
*/
object ItemFuelRod
{
final val decay: Int = 2500
final val decay = 2500
/**
* Temperature at which the fuel rod will begin to re-enrich itself.
*/
@ -31,7 +31,7 @@ object ItemFuelRod
/**
* Approximately 20,000,000J per tick. 400 MW.
*/
final val energyPerTick = energyDensity / 50000
final val energyPerTick = (energyDensity / 100000) / decay
}
class ItemFuelRod extends ItemRadioactive with IReactorComponent

View File

@ -50,7 +50,7 @@ class ContainerNuclearBoiler(player: EntityPlayer, tileEntity: TileNuclearBoiler
return null
}
}
else if (QuantumContent.FLUIDSTACK_WATER.isFluidEqual(FluidContainerRegistry.getFluidForFilledItem(itemStack)))
else if (QuantumContent.fluidStackWater.isFluidEqual(FluidContainerRegistry.getFluidForFilledItem(itemStack)))
{
if (!this.mergeItemStack(itemStack, 1, 2, false))
{

View File

@ -31,9 +31,9 @@ class TileNuclearBoiler extends TileElectricInventory(Material.iron) with IPacke
{
final val totalTime: Int = 20 * 15
final val waterTank: FluidTank = new FluidTank(QuantumContent.FLUIDSTACK_WATER.copy, FluidContainerRegistry.BUCKET_VOLUME * 5)
final val waterTank: FluidTank = new FluidTank(QuantumContent.fluidStackWater.copy, FluidContainerRegistry.BUCKET_VOLUME * 5)
final val gasTank: FluidTank = new FluidTank(QuantumContent.FLUIDSTACK_URANIUM_HEXAFLOURIDE.copy, FluidContainerRegistry.BUCKET_VOLUME * 5)
final val gasTank: FluidTank = new FluidTank(QuantumContent.fluidStackUraniumHexaflouride.copy, FluidContainerRegistry.BUCKET_VOLUME * 5)
var timer: Int = 0
@ -61,7 +61,7 @@ class TileNuclearBoiler extends TileElectricInventory(Material.iron) with IPacke
if (FluidContainerRegistry.isFilledContainer(getStackInSlot(1)))
{
val liquid: FluidStack = FluidContainerRegistry.getFluidForFilledItem(getStackInSlot(1))
if (liquid.isFluidEqual(QuantumContent.FLUIDSTACK_WATER))
if (liquid.isFluidEqual(QuantumContent.fluidStackWater))
{
if (this.fill(ForgeDirection.UNKNOWN, liquid, false) > 0)
{
@ -130,7 +130,7 @@ class TileNuclearBoiler extends TileElectricInventory(Material.iron) with IPacke
if (this.nengYong)
{
this.waterTank.drain(FluidContainerRegistry.BUCKET_VOLUME, true)
val liquid: FluidStack = QuantumContent.FLUIDSTACK_URANIUM_HEXAFLOURIDE.copy
val liquid: FluidStack = QuantumContent.fluidStackUraniumHexaflouride.copy
liquid.amount = Settings.uraniumHexaflourideRatio * 2
this.gasTank.fill(liquid, true)
this.decrStackSize(3, 1)
@ -163,7 +163,7 @@ class TileNuclearBoiler extends TileElectricInventory(Material.iron) with IPacke
*/
def fill(from: ForgeDirection, resource: FluidStack, doFill: Boolean): Int =
{
if (QuantumContent.FLUIDSTACK_WATER.isFluidEqual(resource))
if (QuantumContent.fluidStackWater.isFluidEqual(resource))
{
return this.waterTank.fill(resource, doFill)
}
@ -172,8 +172,8 @@ class TileNuclearBoiler extends TileElectricInventory(Material.iron) with IPacke
def read(data: ByteBuf, player: EntityPlayer, `type`: PacketType)
{
this.waterTank.setFluid(new FluidStack(QuantumContent.FLUIDSTACK_WATER.fluidID, data.readInt))
this.gasTank.setFluid(new FluidStack(QuantumContent.FLUIDSTACK_URANIUM_HEXAFLOURIDE.fluidID, data.readInt))
this.waterTank.setFluid(new FluidStack(QuantumContent.fluidStackWater.fluidID, data.readInt))
this.gasTank.setFluid(new FluidStack(QuantumContent.fluidStackUraniumHexaflouride.fluidID, data.readInt))
this.timer = data.readInt
}
@ -229,7 +229,7 @@ class TileNuclearBoiler extends TileElectricInventory(Material.iron) with IPacke
def drain(from: ForgeDirection, resource: FluidStack, doDrain: Boolean): FluidStack =
{
if (QuantumContent.FLUIDSTACK_URANIUM_HEXAFLOURIDE.isFluidEqual(resource))
if (QuantumContent.fluidStackUraniumHexaflouride.isFluidEqual(resource))
{
return this.gasTank.drain(resource.amount, doDrain)
}
@ -243,12 +243,12 @@ class TileNuclearBoiler extends TileElectricInventory(Material.iron) with IPacke
def canFill(from: ForgeDirection, fluid: Fluid): Boolean =
{
return QuantumContent.FLUIDSTACK_WATER.fluidID == fluid.getID
return QuantumContent.fluidStackWater.fluidID == fluid.getID
}
def canDrain(from: ForgeDirection, fluid: Fluid): Boolean =
{
return QuantumContent.FLUIDSTACK_URANIUM_HEXAFLOURIDE.fluidID == fluid.getID
return QuantumContent.fluidStackUraniumHexaflouride.fluidID == fluid.getID
}
def getTankInfo(from: ForgeDirection): Array[FluidTankInfo] =

View File

@ -62,7 +62,7 @@ class TileCentrifuge extends TileElectricInventory(Material.iron) with IPacketRe
val fluidHandler: IFluidHandler = (tileEntity.asInstanceOf[IFluidHandler])
if (fluidHandler != null)
{
val requestFluid: FluidStack = QuantumContent.FLUIDSTACK_URANIUM_HEXAFLOURIDE
val requestFluid: FluidStack = QuantumContent.fluidStackUraniumHexaflouride
requestFluid.amount = this.gasTank.getCapacity - QuantumContent.getFluidAmount(this.gasTank.getFluid)
val receiveFluid: FluidStack = fluidHandler.drain(direction.getOpposite, requestFluid, true)
if (receiveFluid != null)
@ -148,6 +148,22 @@ class TileCentrifuge extends TileElectricInventory(Material.iron) with IPacketRe
return false
}
override def isItemValidForSlot(i: Int, itemStack: ItemStack): Boolean =
{
i match
{
case 0 =>
return Compatibility.isHandler(itemStack.getItem, null)
case 1 =>
return true
case 2 =>
return itemStack.getItem eq QuantumContent.itemUranium
case 3 =>
return itemStack.getItem eq QuantumContent.itemUranium
}
return false
}
override def use(player: EntityPlayer, side: Int, hit: Vector3): Boolean =
{
openGui(player, QuantumContent)
@ -157,7 +173,7 @@ class TileCentrifuge extends TileElectricInventory(Material.iron) with IPacketRe
def read(data: ByteBuf, player: EntityPlayer, `type`: PacketType)
{
this.timer = data.readInt
this.gasTank.setFluid(new FluidStack(QuantumContent.FLUIDSTACK_URANIUM_HEXAFLOURIDE.fluidID, data.readInt))
this.gasTank.setFluid(new FluidStack(QuantumContent.fluidStackUraniumHexaflouride.fluidID, data.readInt))
}
@ -197,7 +213,7 @@ class TileCentrifuge extends TileElectricInventory(Material.iron) with IPacketRe
*/
def fill(from: ForgeDirection, resource: FluidStack, doFill: Boolean): Int =
{
if (QuantumContent.FLUIDSTACK_URANIUM_HEXAFLOURIDE.isFluidEqual(resource))
if (QuantumContent.fluidStackUraniumHexaflouride.isFluidEqual(resource))
{
return this.gasTank.fill(resource, doFill)
}
@ -216,7 +232,7 @@ class TileCentrifuge extends TileElectricInventory(Material.iron) with IPacketRe
def canFill(from: ForgeDirection, fluid: Fluid): Boolean =
{
return QuantumContent.FLUIDSTACK_URANIUM_HEXAFLOURIDE.fluidID == fluid.getID
return QuantumContent.fluidStackUraniumHexaflouride.fluidID == fluid.getID
}
def canDrain(from: ForgeDirection, fluid: Fluid): Boolean =
@ -242,22 +258,6 @@ class TileCentrifuge extends TileElectricInventory(Material.iron) with IPacketRe
return slotID == 1 && this.isItemValidForSlot(slotID, itemStack)
}
override def isItemValidForSlot(i: Int, itemStack: ItemStack): Boolean =
{
i match
{
case 0 =>
return Compatibility.isHandler(itemStack.getItem, null)
case 1 =>
return true
case 2 =>
return itemStack.getItem eq QuantumContent.itemUranium
case 3 =>
return itemStack.getItem eq QuantumContent.itemUranium
}
return false
}
override def canExtractItem(slotID: Int, itemstack: ItemStack, j: Int): Boolean =
{
return slotID == 2 || slotID == 3

View File

@ -120,6 +120,8 @@ class TileReactorCell extends TileInventory(Material.iron) with IMultiBlockStruc
return lowest
}
override def getMultiBlock: MultiBlockHandler[TileReactorCell] = multiBlock
override def update()
{
super.update()
@ -202,9 +204,10 @@ class TileReactorCell extends TileInventory(Material.iron) with IMultiBlockStruc
*/
val controlRodCount = ForgeDirection.VALID_DIRECTIONS.map(toVectorWorld + _).count(_.getBlock == QuantumContent.blockControlRod)
ThermalGrid.addHeat(toVectorWorld, internalEnergy / ((controlRodCount + 1) * 0.3))
val temperature = ThermalGrid.getTemperature(toVectorWorld)
internalEnergy = 0
/**
* Play sound effects
*/
@ -227,9 +230,8 @@ class TileReactorCell extends TileInventory(Material.iron) with IMultiBlockStruc
if (temperature > TileReactorCell.meltingPoint)
{
meltDown()
// meltDown()
}
internalEnergy = 0
}
else
{
@ -248,17 +250,6 @@ class TileReactorCell extends TileInventory(Material.iron) with IMultiBlockStruc
return worldObj
}
private def meltDown()
{
if (!worldObj.isRemote)
{
this.worldObj.setBlock(this.xCoord, this.yCoord, this.zCoord, Blocks.lava)
//val reactorExplosion: ReactorExplosion = new ReactorExplosion(worldObj, null, xCoord, yCoord, zCoord, 9f)
//reactorExplosion.doExplosionA
//reactorExplosion.doExplosionB(true)
}
}
def onMultiBlockChanged()
{
}
@ -294,8 +285,6 @@ class TileReactorCell extends TileInventory(Material.iron) with IMultiBlockStruc
getMultiBlock.load(nbt)
}
override def getMultiBlock: MultiBlockHandler[TileReactorCell] = multiBlock
override def writeToNBT(nbt: NBTTagCompound)
{
super.writeToNBT(nbt)
@ -452,4 +441,13 @@ class TileReactorCell extends TileInventory(Material.iron) with IMultiBlockStruc
return false
}
private def meltDown()
{
if (!world.isRemote)
{
world.setBlock(this.xCoord, this.yCoord, this.zCoord, Blocks.lava)
world.createExplosion(null, x + 0.5, y + 0.5, z + 0.5, 3, false)
}
}
}