Fixed tank connected texture rendering

This commit is contained in:
Calclavia 2014-11-04 10:45:29 +08:00
parent b060bb46db
commit 3fc25b8fc3
5 changed files with 481 additions and 475 deletions

View file

@ -144,7 +144,7 @@ class ItemBlockTank(block: Block) extends ItemBlock(block: Block) with IFluidCon
def getCapacity(container: ItemStack): Int =
{
return TileTank.VOLUME
return TileTank.volume
}
def drain(container: ItemStack, maxDrain: Int, doDrain: Boolean): FluidStack =

View file

@ -3,24 +3,23 @@ package resonantinduction.archaic.fluid.tank
import java.awt.Color
import java.util.{ArrayList, List}
import cpw.mods.fml.relauncher.{Side, SideOnly}
import net.minecraft.block.material.Material
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.nbt.NBTTagCompound
import net.minecraft.world.IBlockAccess
import net.minecraftforge.client.IItemRenderer
import net.minecraftforge.common.util.ForgeDirection
import net.minecraftforge.fluids.{FluidContainerRegistry, FluidStack, FluidTank, IFluidTank}
import org.lwjgl.opengl.GL11
import resonant.api.IRemovable.ISneakPickup
import resonant.content.prefab.scal.render.ISimpleItemRenderer
import resonant.content.prefab.RenderConnectedTexture
import resonant.lib.render.{FluidRenderUtility, RenderUtility}
import resonant.lib.transform.vector.Vector3
import resonant.lib.utility.FluidUtility
import resonant.lib.utility.render.RenderBlockUtility
import resonantinduction.archaic.ArchaicContent
import resonantinduction.core.Reference
import resonantinduction.core.prefab.node.TileTankNode
import resonant.lib.transform.vector.Vector3
/**
* Tile/Block class for basic Dynamic tanks
@ -29,77 +28,22 @@ import resonant.lib.transform.vector.Vector3
*/
object TileTank
{
final val VOLUME: Int = 16
class ItemRenderer extends ISimpleItemRenderer
{
def renderInventoryItem(`type`: IItemRenderer.ItemRenderType, itemStack: ItemStack, data: AnyRef*)
{
GL11.glPushMatrix()
RenderBlockUtility.tessellateBlockWithConnectedTextures(itemStack.getItemDamage, ArchaicContent.blockTank, null, RenderUtility.getIcon(Reference.prefix + "tankEdge"))
GL11.glPopMatrix()
GL11.glPushMatrix()
if (itemStack.getTagCompound != null && itemStack.getTagCompound.hasKey("fluid"))
{
renderTank(0, 0, 0, FluidStack.loadFluidStackFromNBT(itemStack.getTagCompound.getCompoundTag("fluid")), VOLUME * FluidContainerRegistry.BUCKET_VOLUME)
}
GL11.glPopMatrix()
}
def renderTank(x: Double, y: Double, z: Double, fluid: FluidStack, capacity: Int)
{
val tank: FluidTank = new FluidTank(fluid, capacity)
GL11.glPushMatrix()
GL11.glTranslated(0.02, 0.02, 0.02)
GL11.glScaled(0.92, 0.92, 0.92)
if (fluid != null)
{
GL11.glPushMatrix()
if (!fluid.getFluid.isGaseous)
{
val percentageFilled: Double = tank.getFluidAmount.asInstanceOf[Double] / tank.getCapacity.asInstanceOf[Double]
FluidRenderUtility.renderFluidTesselation(tank, percentageFilled, percentageFilled, percentageFilled, percentageFilled)
}
else
{
val filledPercentage: Double = fluid.amount.asInstanceOf[Double] / capacity.asInstanceOf[Double]
GL11.glPushAttrib(GL11.GL_ENABLE_BIT)
GL11.glEnable(GL11.GL_CULL_FACE)
GL11.glDisable(GL11.GL_LIGHTING)
GL11.glEnable(GL11.GL_BLEND)
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA)
val color: Color = new Color(fluid.getFluid.getColor)
RenderUtility.enableBlending()
GL11.glColor4d(color.getRed / 255f, color.getGreen / 255f, color.getBlue / 255f, if (fluid.getFluid.isGaseous) filledPercentage else 1)
RenderUtility.bind(FluidRenderUtility.getFluidSheet(fluid))
FluidRenderUtility.renderFluidTesselation(tank, 1, 1, 1, 1)
RenderUtility.disableBlending()
GL11.glPopAttrib()
}
GL11.glPopMatrix()
}
GL11.glPopMatrix()
}
}
object ItemRenderer
{
var instance: TileTank.ItemRenderer = new TileTank.ItemRenderer
}
final val volume: Int = 16
}
class TileTank extends TileTankNode(Material.iron) with ISneakPickup
class TileTank extends TileTankNode(Material.iron) with ISneakPickup with RenderConnectedTexture
{
isOpaqueCube(false)
normalRender(false)
isOpaqueCube = false
normalRender = false
forceStandardRender(true)
itemBlock(classOf[ItemBlockTank])
itemBlock = classOf[ItemBlockTank]
setCapacity(16 * FluidContainerRegistry.BUCKET_VOLUME)
override val edgeTexture = Reference.prefix + "tankEdge"
override def shouldSideBeRendered(access: IBlockAccess, x: Int, y: Int, z: Int, side: Int): Boolean =
{
return access.getBlock(x, y, z) ne getBlockType
return access.getBlock(x, y, z) != getBlockType
}
override def use(player: EntityPlayer, side: Int, vector3: Vector3): Boolean =
@ -120,12 +64,18 @@ class TileTank extends TileTankNode(Material.iron) with ISneakPickup
return super.getLightValue(access)
}
@SideOnly(Side.CLIENT)
override def renderDynamic(position: Vector3, frame: Float, pass: Int)
{
renderTank(position.x, position.y, position.z, getFluid)
super.renderDynamic(position, frame, pass)
renderTankFluid(position.x, position.y, position.z, getFluid)
}
def renderTank(x: Double, y: Double, z: Double, fluid: FluidStack)
/**
* Renders the fluid inside the tank
*/
@SideOnly(Side.CLIENT)
def renderTankFluid(x: Double, y: Double, z: Double, fluid: FluidStack)
{
if (world != null)
{
@ -151,6 +101,56 @@ class TileTank extends TileTankNode(Material.iron) with ISneakPickup
}
}
@SideOnly(Side.CLIENT)
override def renderInventory(itemStack: ItemStack)
{
super.renderInventory(itemStack)
GL11.glPushMatrix()
if (itemStack.getTagCompound != null && itemStack.getTagCompound.hasKey("fluid"))
{
renderTank(0, 0, 0, FluidStack.loadFluidStackFromNBT(itemStack.getTagCompound.getCompoundTag("fluid")), TileTank.volume * FluidContainerRegistry.BUCKET_VOLUME)
}
GL11.glPopMatrix()
}
def renderTank(x: Double, y: Double, z: Double, fluid: FluidStack, capacity: Int)
{
val tank: FluidTank = new FluidTank(fluid, capacity)
GL11.glPushMatrix()
GL11.glTranslated(0.02, 0.02, 0.02)
GL11.glScaled(0.92, 0.92, 0.92)
if (fluid != null)
{
GL11.glPushMatrix()
if (!fluid.getFluid.isGaseous)
{
val percentageFilled: Double = tank.getFluidAmount.asInstanceOf[Double] / tank.getCapacity.asInstanceOf[Double]
FluidRenderUtility.renderFluidTesselation(tank, percentageFilled, percentageFilled, percentageFilled, percentageFilled)
}
else
{
val filledPercentage: Double = fluid.amount.asInstanceOf[Double] / capacity.asInstanceOf[Double]
GL11.glPushAttrib(GL11.GL_ENABLE_BIT)
GL11.glEnable(GL11.GL_CULL_FACE)
GL11.glDisable(GL11.GL_LIGHTING)
GL11.glEnable(GL11.GL_BLEND)
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA)
val color: Color = new Color(fluid.getFluid.getColor)
RenderUtility.enableBlending()
GL11.glColor4d(color.getRed / 255f, color.getGreen / 255f, color.getBlue / 255f, if (fluid.getFluid.isGaseous) filledPercentage else 1)
RenderUtility.bind(FluidRenderUtility.getFluidSheet(fluid))
FluidRenderUtility.renderFluidTesselation(tank, 1, 1, 1, 1)
RenderUtility.disableBlending()
GL11.glPopAttrib()
}
GL11.glPopMatrix()
}
GL11.glPopMatrix()
}
def getRemovedItems(entity: EntityPlayer): List[ItemStack] =
{
val drops = new ArrayList[ItemStack]

View file

@ -5,7 +5,6 @@ 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 cpw.mods.fml.relauncher.{Side, SideOnly}
import ic2.api.item.IC2Items
import net.minecraft.block.Block
import net.minecraft.block.material.Material
@ -15,7 +14,6 @@ import net.minecraft.item.{Item, ItemBucket, ItemStack}
import net.minecraft.tileentity.TileEntity
import net.minecraft.util.MovingObjectPosition
import net.minecraft.world.World
import net.minecraftforge.client.event.TextureStitchEvent
import net.minecraftforge.common.ForgeChunkManager.Type
import net.minecraftforge.common.{ForgeChunkManager, MinecraftForge}
import net.minecraftforge.event.entity.player.FillBucketEvent
@ -29,8 +27,8 @@ import resonant.engine.grid.thermal.EventThermal
import resonant.lib.network.discriminator.PacketAnnotationManager
import resonant.lib.ore.OreGenerator
import resonant.lib.recipe.UniversalRecipe
import resonant.lib.render.RenderUtility
import resonant.lib.schematic.SchematicRegistry
import resonant.lib.transform.vector.VectorWorld
import resonantinduction.atomic.blocks._
import resonantinduction.atomic.items._
import resonantinduction.atomic.machine.TileFunnel
@ -44,8 +42,7 @@ import resonantinduction.atomic.machine.quantum.TileQuantumAssembler
import resonantinduction.atomic.machine.reactor.{TileControlRod, TileReactorCell}
import resonantinduction.atomic.machine.thermometer.TileThermometer
import resonantinduction.atomic.schematic.{SchematicAccelerator, SchematicBreedingReactor, SchematicFissionReactor, SchematicFusionReactor}
import resonantinduction.core.{Reference, ResonantInduction, RICreativeTab, Settings}
import resonant.lib.transform.vector.VectorWorld
import resonantinduction.core.{RICreativeTab, Reference, ResonantInduction, Settings}
import scala.collection.JavaConversions._
@ -54,427 +51,398 @@ import scala.collection.JavaConversions._
*/
object AtomicContent extends ContentHolder
{
//Constructor
manager.setTab(RICreativeTab).setPrefix(Reference.prefix)
//Constructor
manager.setTab(RICreativeTab).setPrefix(Reference.prefix)
val ENTITY_ID_PREFIX: Int = 49
val SECOND_IN_TICKS: Int = 20
val ENTITY_ID_PREFIX: Int = 49
val SECOND_IN_TICKS: Int = 20
// Blocks
var blockRadioactive: Block = new BlockRadioactive(Material.rock).setBlockTextureName(Reference.prefix + "radioactive").setCreativeTab(CreativeTabs.tabBlock)
var blockCentrifuge: Block = new TileCentrifuge
var blockNuclearBoiler: Block = new TileNuclearBoiler
var blockControlRod: Block = new TileControlRod
var blockThermometer: Block = new TileThermometer
var blockFusionCore: Block = new TilePlasmaHeater
var blockPlasma: Block = new TilePlasma
var blockElectromagnet: Block = new TileElectromagnet
var blockChemicalExtractor: Block = new TileChemicalExtractor
var blockSiren: Block = new TileSiren
var blockSteamFunnel: Block = new TileFunnel
var blockAccelerator: Block = new TileAccelerator
var blockFulmination: Block = new TileFulmination
var blockQuantumAssembler: Block = new TileQuantumAssembler
var blockReactorCell: Block = new TileReactorCell
var blockUraniumOre: Block = new BlockUraniumOre
var blockToxicWaste: Block = new BlockToxicWaste().setCreativeTab(null)
// Blocks
var blockRadioactive: Block = new BlockRadioactive(Material.rock).setBlockTextureName(Reference.prefix + "radioactive").setCreativeTab(CreativeTabs.tabBlock)
var blockCentrifuge: Block = new TileCentrifuge
var blockNuclearBoiler: Block = new TileNuclearBoiler
var blockControlRod: Block = new TileControlRod
var blockThermometer: Block = new TileThermometer
var blockFusionCore: Block = new TilePlasmaHeater
var blockPlasma: Block = new TilePlasma
var blockElectromagnet: Block = new TileElectromagnet
var blockChemicalExtractor: Block = new TileChemicalExtractor
var blockSiren: Block = new TileSiren
var blockSteamFunnel: Block = new TileFunnel
var blockAccelerator: Block = new TileAccelerator
var blockFulmination: Block = new TileFulmination
var blockQuantumAssembler: Block = new TileQuantumAssembler
var blockReactorCell: Block = new TileReactorCell
var blockUraniumOre: Block = new BlockUraniumOre
var blockToxicWaste: Block = new BlockToxicWaste().setCreativeTab(null)
//Cells
@ExplicitContentName(value = "cellEmpty")
var itemCell: Item = new ItemCell("cellEmpty")
var itemFissileFuel: Item = new ItemFissileFuel
var itemBreedingRod: Item = new ItemBreederFuel
@ExplicitContentName
var itemDarkMatter: Item = new ItemCell("darkMatter")
var itemAntimatter: Item = new ItemAntimatter
@ExplicitContentName(value = "cellDeuterium")
var itemDeuteriumCell: Item = new ItemCell("cellDeuterium")
@ExplicitContentName(value = "cellTritium")
var itemTritiumCell: Item = new ItemCell("cellTritium")
@ExplicitContentName(value = "cellWater")
var itemWaterCell: Item = new ItemCell("cellWater")
@ExplicitContentName
var itemYellowCake: Item = new ItemRadioactive().setTextureName(Reference.prefix + "yellowcake").setCreativeTab(RICreativeTab)
var itemUranium: Item = new ItemUranium().setCreativeTab(RICreativeTab)
//Cells
@ExplicitContentName(value = "cellEmpty")
var itemCell: Item = new ItemCell("cellEmpty")
var itemFissileFuel: Item = new ItemFissileFuel
var itemBreedingRod: Item = new ItemBreederFuel
@ExplicitContentName
var itemDarkMatter: Item = new ItemCell("darkMatter")
var itemAntimatter: Item = new ItemAntimatter
@ExplicitContentName(value = "cellDeuterium")
var itemDeuteriumCell: Item = new ItemCell("cellDeuterium")
@ExplicitContentName(value = "cellTritium")
var itemTritiumCell: Item = new ItemCell("cellTritium")
@ExplicitContentName(value = "cellWater")
var itemWaterCell: Item = new ItemCell("cellWater")
@ExplicitContentName
var itemYellowCake: Item = new ItemRadioactive().setTextureName(Reference.prefix + "yellowcake").setCreativeTab(RICreativeTab)
var itemUranium: Item = new ItemUranium().setCreativeTab(RICreativeTab)
//Buckets
var itemBucketToxic: Item = null
//Hazmat suit
@ExplicitContentName
var itemHazmatMask: Item = new ItemHazmat("hazmatMask", 0)
@ExplicitContentName
var itemHazmatBody: Item = new ItemHazmat("hazmatBody", 1)
@ExplicitContentName
var itemHazmatLeggings: Item = new ItemHazmat("hazmatLeggings", 2)
@ExplicitContentName
var itemHazmatBoots: Item = new ItemHazmat("hazmatBoots", 3)
var uraniumOreGeneration: OreGenerator = null
override def preInit()
{
MinecraftForge.EVENT_BUS.register(this)
MinecraftForge.EVENT_BUS.register(FulminationHandler.INSTANCE)
//Register Fluids
FluidRegistry.registerFluid(AtomicContent.FLUID_URANIUM_HEXAFLOURIDE)
FluidRegistry.registerFluid(AtomicContent.FLUID_STEAM)
FluidRegistry.registerFluid(AtomicContent.getFluidTritium)
FluidRegistry.registerFluid(AtomicContent.FLUID_DEUTERIUM)
FluidRegistry.registerFluid(AtomicContent.getFluidToxicWaste)
FluidRegistry.registerFluid(AtomicContent.FLUID_PLASMA)
Settings.config.load
super.preInit()
//Annotation Packet Users
PacketAnnotationManager.INSTANCE.register(classOf[TileThermometer])
PacketAnnotationManager.INSTANCE.register(classOf[TileReactorCell])
PacketAnnotationManager.INSTANCE.register(classOf[TileChemicalExtractor])
PacketAnnotationManager.INSTANCE.register(classOf[TileNuclearBoiler])
PacketAnnotationManager.INSTANCE.register(classOf[TileAccelerator])
//Buckets
var itemBucketToxic: Item = null
itemBucketToxic = manager.newItem("bucketToxicWaste", new ItemBucket(AtomicContent.blockPlasma)).setCreativeTab(RICreativeTab.tab).setContainerItem(Items.bucket).setTextureName(Reference.prefix + "bucketToxicWaste")
//Hazmat suit
@ExplicitContentName
var itemHazmatMask: Item = new ItemHazmat("hazmatMask", 0)
@ExplicitContentName
var itemHazmatBody: Item = new ItemHazmat("hazmatBody", 1)
@ExplicitContentName
var itemHazmatLeggings: Item = new ItemHazmat("hazmatLeggings", 2)
@ExplicitContentName
var itemHazmatBoots: Item = new ItemHazmat("hazmatBoots", 3)
//Schematics
SchematicRegistry.register("resonantInduction.atomic.accelerator", new SchematicAccelerator)
SchematicRegistry.register("resonantInduction.atomic.breedingReactor", new SchematicBreedingReactor)
SchematicRegistry.register("resonantInduction.atomic.fissionReactor", new SchematicFissionReactor)
SchematicRegistry.register("resonantInduction.atomic.fusionReactor", new SchematicFusionReactor)
//Fluid Containers
AtomicContent.FLUID_PLASMA.setBlock(AtomicContent.blockPlasma)
FluidContainerRegistry.registerFluidContainer(FluidRegistry.getFluid("toxicwaste"), new ItemStack(AtomicContent.itemBucketToxic), new ItemStack(Items.bucket))
FluidContainerRegistry.registerFluidContainer(FluidRegistry.WATER, new ItemStack(AtomicContent.itemWaterCell), new ItemStack(AtomicContent.itemCell))
FluidContainerRegistry.registerFluidContainer(new FluidStack(FluidRegistry.getFluid("deuterium"), 200), new ItemStack(AtomicContent.itemDeuteriumCell), new ItemStack(AtomicContent.itemCell))
FluidContainerRegistry.registerFluidContainer(new FluidStack(FluidRegistry.getFluid("tritium"), 200), new ItemStack(AtomicContent.itemTritiumCell), new ItemStack(AtomicContent.itemCell))
//Uranium ore Gen settings TODO re-enable
//AtomicContent.uraniumOreGeneration = new OreGenReplaceStone("Uranium Ore", new ItemStack(AtomicContent.blockUraniumOre), 25, 9, 3)
//AtomicContent.uraniumOreGeneration.enable(Settings.config)
//OreGenerator.addOre(AtomicContent.uraniumOreGeneration)
//Ore dictionary support
OreDictionary.registerOre("ingotUranium", itemUranium)
OreDictionary.registerOre("dustUranium", itemYellowCake)
OreDictionary.registerOre("breederUranium", new ItemStack(itemUranium, 1, 1))
OreDictionary.registerOre("blockRadioactive", blockRadioactive)
OreDictionary.registerOre("cellEmpty", itemCell)
OreDictionary.registerOre("cellUranium", itemFissileFuel)
OreDictionary.registerOre("cellTritium", itemTritiumCell)
OreDictionary.registerOre("cellDeuterium", itemDeuteriumCell)
OreDictionary.registerOre("cellWater", itemWaterCell)
OreDictionary.registerOre("strangeMatter", itemDarkMatter)
OreDictionary.registerOre("antimatterMilligram", new ItemStack(itemAntimatter, 1, 0))
OreDictionary.registerOre("antimatterGram", new ItemStack(itemAntimatter, 1, 1))
var uraniumOreGeneration: OreGenerator = null
override def preInit()
//Chunk loader for Accelerator
ForgeChunkManager.setForcedChunkLoadingCallback(this, new ForgeChunkManager.LoadingCallback
{
MinecraftForge.EVENT_BUS.register(this)
MinecraftForge.EVENT_BUS.register(FulminationHandler.INSTANCE)
//Register Fluids
FluidRegistry.registerFluid(AtomicContent.FLUID_URANIUM_HEXAFLOURIDE)
FluidRegistry.registerFluid(AtomicContent.FLUID_STEAM)
FluidRegistry.registerFluid(AtomicContent.getFluidTritium)
FluidRegistry.registerFluid(AtomicContent.FLUID_DEUTERIUM)
FluidRegistry.registerFluid(AtomicContent.getFluidToxicWaste)
FluidRegistry.registerFluid(AtomicContent.FLUID_PLASMA)
Settings.config.load
super.preInit()
//Annotation Packet Users
PacketAnnotationManager.INSTANCE.register(classOf[TileThermometer])
PacketAnnotationManager.INSTANCE.register(classOf[TileReactorCell])
PacketAnnotationManager.INSTANCE.register(classOf[TileChemicalExtractor])
PacketAnnotationManager.INSTANCE.register(classOf[TileNuclearBoiler])
PacketAnnotationManager.INSTANCE.register(classOf[TileAccelerator])
//Buckets
itemBucketToxic = manager.newItem("bucketToxicWaste", new ItemBucket(AtomicContent.blockPlasma)).setCreativeTab(RICreativeTab.tab).setContainerItem(Items.bucket).setTextureName(Reference.prefix + "bucketToxicWaste")
//Schematics
SchematicRegistry.register("resonantInduction.atomic.accelerator", new SchematicAccelerator)
SchematicRegistry.register("resonantInduction.atomic.breedingReactor",new SchematicBreedingReactor)
SchematicRegistry.register("resonantInduction.atomic.fissionReactor",new SchematicFissionReactor)
SchematicRegistry.register("resonantInduction.atomic.fusionReactor",new SchematicFusionReactor)
//Fluid Containers
AtomicContent.FLUID_PLASMA.setBlock(AtomicContent.blockPlasma)
FluidContainerRegistry.registerFluidContainer(FluidRegistry.getFluid("toxicwaste"), new ItemStack(AtomicContent.itemBucketToxic), new ItemStack(Items.bucket))
FluidContainerRegistry.registerFluidContainer(FluidRegistry.WATER, new ItemStack(AtomicContent.itemWaterCell), new ItemStack(AtomicContent.itemCell))
FluidContainerRegistry.registerFluidContainer(new FluidStack(FluidRegistry.getFluid("deuterium"), 200), new ItemStack(AtomicContent.itemDeuteriumCell), new ItemStack(AtomicContent.itemCell))
FluidContainerRegistry.registerFluidContainer(new FluidStack(FluidRegistry.getFluid("tritium"), 200), new ItemStack(AtomicContent.itemTritiumCell), new ItemStack(AtomicContent.itemCell))
//Uranium ore Gen settings TODO re-enable
//AtomicContent.uraniumOreGeneration = new OreGenReplaceStone("Uranium Ore", new ItemStack(AtomicContent.blockUraniumOre), 25, 9, 3)
//AtomicContent.uraniumOreGeneration.enable(Settings.config)
//OreGenerator.addOre(AtomicContent.uraniumOreGeneration)
//Ore dictionary support
OreDictionary.registerOre("ingotUranium", itemUranium)
OreDictionary.registerOre("dustUranium", itemYellowCake)
OreDictionary.registerOre("breederUranium", new ItemStack(itemUranium, 1, 1))
OreDictionary.registerOre("blockRadioactive", blockRadioactive)
OreDictionary.registerOre("cellEmpty", itemCell)
OreDictionary.registerOre("cellUranium", itemFissileFuel)
OreDictionary.registerOre("cellTritium", itemTritiumCell)
OreDictionary.registerOre("cellDeuterium", itemDeuteriumCell)
OreDictionary.registerOre("cellWater", itemWaterCell)
OreDictionary.registerOre("strangeMatter", itemDarkMatter)
OreDictionary.registerOre("antimatterMilligram", new ItemStack(itemAntimatter, 1, 0))
OreDictionary.registerOre("antimatterGram", new ItemStack(itemAntimatter, 1, 1))
//Chunk loader for Accelerator
ForgeChunkManager.setForcedChunkLoadingCallback(this, new ForgeChunkManager.LoadingCallback
def ticketsLoaded(tickets: List[ForgeChunkManager.Ticket], world: World)
{
for (ticket <- tickets)
{
def ticketsLoaded(tickets: List[ForgeChunkManager.Ticket], world: World)
if (ticket.getType eq Type.ENTITY)
{
if (ticket.getEntity != null)
{
for (ticket <- tickets)
{
if (ticket.getType eq Type.ENTITY)
{
if (ticket.getEntity != null)
{
if (ticket.getEntity.isInstanceOf[EntityParticle])
{
(ticket.getEntity.asInstanceOf[EntityParticle]).updateTicket = ticket
}
}
}
}
if (ticket.getEntity.isInstanceOf[EntityParticle])
{
(ticket.getEntity.asInstanceOf[EntityParticle]).updateTicket = ticket
}
}
})
Settings.config.save
RICreativeTab.itemStack(new ItemStack(AtomicContent.blockReactorCell))
}
override def postInit()
{
super.postInit()
if (Loader.isModLoaded("IC2") && Settings.allowAlternateRecipes)
{
OreDictionary.registerOre("cellEmpty", IC2Items.getItem("cell"))
val cellEmptyName: String = OreDictionary.getOreName(OreDictionary.getOreID("cellEmpty"))
if (cellEmptyName eq "Unknown")
{
}
GameRegistry.addRecipe(new ShapelessOreRecipe(AtomicContent.itemYellowCake, IC2Items.getItem("reactorUraniumSimple")))
GameRegistry.addRecipe(new ShapelessOreRecipe(IC2Items.getItem("cell"), AtomicContent.itemCell))
GameRegistry.addRecipe(new ShapelessOreRecipe(AtomicContent.itemCell, "cellEmpty"))
}
}
EntityRegistry.registerGlobalEntityID(classOf[EntityParticle], "ASParticle", EntityRegistry.findGlobalUniqueEntityId)
EntityRegistry.registerModEntity(classOf[EntityParticle], "ASParticle", ENTITY_ID_PREFIX, ResonantInduction, 80, 3, true)
Settings.config.load
for (oreName <- OreDictionary.getOreNames)
}
})
Settings.config.save
RICreativeTab.itemStack(new ItemStack(AtomicContent.blockReactorCell))
}
override def postInit()
{
super.postInit()
if (Loader.isModLoaded("IC2") && Settings.allowAlternateRecipes)
{
OreDictionary.registerOre("cellEmpty", IC2Items.getItem("cell"))
val cellEmptyName: String = OreDictionary.getOreName(OreDictionary.getOreID("cellEmpty"))
if (cellEmptyName eq "Unknown")
{
}
GameRegistry.addRecipe(new ShapelessOreRecipe(AtomicContent.itemYellowCake, IC2Items.getItem("reactorUraniumSimple")))
GameRegistry.addRecipe(new ShapelessOreRecipe(IC2Items.getItem("cell"), AtomicContent.itemCell))
GameRegistry.addRecipe(new ShapelessOreRecipe(AtomicContent.itemCell, "cellEmpty"))
}
EntityRegistry.registerGlobalEntityID(classOf[EntityParticle], "ASParticle", EntityRegistry.findGlobalUniqueEntityId)
EntityRegistry.registerModEntity(classOf[EntityParticle], "ASParticle", ENTITY_ID_PREFIX, ResonantInduction, 80, 3, true)
Settings.config.load
for (oreName <- OreDictionary.getOreNames)
{
if (oreName.startsWith("ingot"))
{
for (itemStack <- OreDictionary.getOres(oreName))
{
if (oreName.startsWith("ingot"))
{
for (itemStack <- OreDictionary.getOres(oreName))
{
if (itemStack != null)
{
QuantumAssemblerRecipes.addRecipe(itemStack)
}
}
}
if (itemStack != null)
{
QuantumAssemblerRecipes.addRecipe(itemStack)
}
}
Settings.config.save
recipes += shapeless(new ItemStack(itemAntimatter, 1, 1), itemAntimatter, itemAntimatter, itemAntimatter, itemAntimatter, itemAntimatter, AtomicContent.itemAntimatter, itemAntimatter, itemAntimatter)
recipes += shapeless(new ItemStack(itemAntimatter, 8, 0), new ItemStack(AtomicContent.itemAntimatter, 1, 1))
recipes += shaped(new ItemStack(blockSteamFunnel, 2), " B ", "B B", "B B", 'B', UniversalRecipe.SECONDARY_METAL.get)
recipes += shaped(new ItemStack(blockSteamFunnel, 2), " B ", "B B", "B B", 'B', "ingotIron")
recipes += shaped(blockQuantumAssembler, "CCC", "SXS", "SSS", 'X', blockCentrifuge, 'C', UniversalRecipe.CIRCUIT_T3.get, 'S', UniversalRecipe.PRIMARY_PLATE.get)
recipes += shaped(blockFulmination, "OSO", "SCS", "OSO", 'O', Blocks.obsidian, 'C', UniversalRecipe.CIRCUIT_T2.get, 'S', UniversalRecipe.PRIMARY_PLATE.get)
recipes += shaped(blockAccelerator, "SCS", "CMC", "SCS", 'M', UniversalRecipe.MOTOR.get, 'C', UniversalRecipe.CIRCUIT_T3.get, 'S', UniversalRecipe.PRIMARY_PLATE.get)
recipes += shaped(blockCentrifuge, "BSB", "MCM", "BSB", 'C', UniversalRecipe.CIRCUIT_T2.get, 'S', UniversalRecipe.PRIMARY_PLATE.get, 'B', UniversalRecipe.SECONDARY_METAL.get, 'M', UniversalRecipe.MOTOR.get)
recipes += shaped(blockNuclearBoiler, "S S", "FBF", "SMS", 'F', Blocks.furnace, 'S', UniversalRecipe.PRIMARY_PLATE.get, 'B', Items.bucket, 'M', UniversalRecipe.MOTOR.get)
recipes += shaped(blockChemicalExtractor, "BSB", "MCM", "BSB", 'C', UniversalRecipe.CIRCUIT_T3.get, 'S', UniversalRecipe.PRIMARY_PLATE.get, 'B', UniversalRecipe.SECONDARY_METAL.get, 'M', UniversalRecipe.MOTOR.get)
recipes += shaped(new ItemStack(blockSiren, 2), "NPN", 'N', Blocks.noteblock, 'P', UniversalRecipe.SECONDARY_PLATE.get)
recipes += shaped(blockReactorCell, "SCS", "MEM", "SCS", 'E', "cellEmpty", 'C', UniversalRecipe.CIRCUIT_T2.get, 'S', UniversalRecipe.PRIMARY_PLATE.get, 'M', UniversalRecipe.MOTOR.get)
recipes += shaped(blockFusionCore, "CPC", "PFP", "CPC", 'P', UniversalRecipe.PRIMARY_PLATE.get, 'F', AtomicContent.blockReactorCell, 'C', UniversalRecipe.CIRCUIT_T3.get)
recipes += shaped(new ItemStack(itemCell, 16), " T ", "TGT", " T ", 'T', "ingotTin", 'G', Blocks.glass)
recipes += shaped(blockThermometer, "SSS", "GCG", "GSG", 'S', UniversalRecipe.PRIMARY_METAL.get, 'G', Blocks.glass, 'C', UniversalRecipe.CIRCUIT_T1.get)
recipes += shaped(blockControlRod, "I", "I", "I", 'I', Items.iron_ingot)
recipes += shaped(itemFissileFuel, "CUC", "CUC", "CUC", 'U', "ingotUranium", 'C', "cellEmpty")
recipes += shaped(itemBreedingRod, "CUC", "CUC", "CUC", 'U', "breederUranium", 'C', "cellEmpty")
//Hazmat recipes
recipes += shaped(itemHazmatMask, "SSS", "BAB", "SCS", 'A', Items.leather_helmet, 'C', UniversalRecipe.CIRCUIT_T1.get, 'S', Blocks.wool)
recipes += shaped(itemHazmatBody, "SSS", "BAB", "SCS", 'A', Items.leather_chestplate, 'C', UniversalRecipe.CIRCUIT_T1.get, 'S', Blocks.wool)
recipes += shaped(itemHazmatLeggings, "SSS", "BAB", "SCS", 'A', Items.leather_leggings, 'C', UniversalRecipe.CIRCUIT_T1.get, 'S', Blocks.wool)
recipes += shaped(itemHazmatBoots, "SSS", "BAB", "SCS", 'A', Items.leather_boots, 'C', UniversalRecipe.CIRCUIT_T1.get, 'S', Blocks.wool)
//Electro magnets
recipes += shaped(new ItemStack(blockElectromagnet, 2, 0), "BBB", "BMB", "BBB", 'B', UniversalRecipe.SECONDARY_METAL.get, 'M', UniversalRecipe.MOTOR.get)
recipes += shapeless(new ItemStack(AtomicContent.blockElectromagnet, 1, 1), AtomicContent.blockElectromagnet, Blocks.glass)
recipes += shapeless(new ItemStack(AtomicContent.itemWaterCell), "cellEmpty", Items.water_bucket)
}
}
Settings.config.save
recipes += shapeless(new ItemStack(itemAntimatter, 1, 1), itemAntimatter, itemAntimatter, itemAntimatter, itemAntimatter, itemAntimatter, AtomicContent.itemAntimatter, itemAntimatter, itemAntimatter)
recipes += shapeless(new ItemStack(itemAntimatter, 8, 0), new ItemStack(AtomicContent.itemAntimatter, 1, 1))
@SubscribeEvent
@SideOnly(Side.CLIENT) def preTextureHook(event: TextureStitchEvent.Pre)
recipes += shaped(new ItemStack(blockSteamFunnel, 2), " B ", "B B", "B B", 'B', UniversalRecipe.SECONDARY_METAL.get)
recipes += shaped(new ItemStack(blockSteamFunnel, 2), " B ", "B B", "B B", 'B', "ingotIron")
recipes += shaped(blockQuantumAssembler, "CCC", "SXS", "SSS", 'X', blockCentrifuge, 'C', UniversalRecipe.CIRCUIT_T3.get, 'S', UniversalRecipe.PRIMARY_PLATE.get)
recipes += shaped(blockFulmination, "OSO", "SCS", "OSO", 'O', Blocks.obsidian, 'C', UniversalRecipe.CIRCUIT_T2.get, 'S', UniversalRecipe.PRIMARY_PLATE.get)
recipes += shaped(blockAccelerator, "SCS", "CMC", "SCS", 'M', UniversalRecipe.MOTOR.get, 'C', UniversalRecipe.CIRCUIT_T3.get, 'S', UniversalRecipe.PRIMARY_PLATE.get)
recipes += shaped(blockCentrifuge, "BSB", "MCM", "BSB", 'C', UniversalRecipe.CIRCUIT_T2.get, 'S', UniversalRecipe.PRIMARY_PLATE.get, 'B', UniversalRecipe.SECONDARY_METAL.get, 'M', UniversalRecipe.MOTOR.get)
recipes += shaped(blockNuclearBoiler, "S S", "FBF", "SMS", 'F', Blocks.furnace, 'S', UniversalRecipe.PRIMARY_PLATE.get, 'B', Items.bucket, 'M', UniversalRecipe.MOTOR.get)
recipes += shaped(blockChemicalExtractor, "BSB", "MCM", "BSB", 'C', UniversalRecipe.CIRCUIT_T3.get, 'S', UniversalRecipe.PRIMARY_PLATE.get, 'B', UniversalRecipe.SECONDARY_METAL.get, 'M', UniversalRecipe.MOTOR.get)
recipes += shaped(new ItemStack(blockSiren, 2), "NPN", 'N', Blocks.noteblock, 'P', UniversalRecipe.SECONDARY_PLATE.get)
recipes += shaped(blockReactorCell, "SCS", "MEM", "SCS", 'E', "cellEmpty", 'C', UniversalRecipe.CIRCUIT_T2.get, 'S', UniversalRecipe.PRIMARY_PLATE.get, 'M', UniversalRecipe.MOTOR.get)
recipes += shaped(blockFusionCore, "CPC", "PFP", "CPC", 'P', UniversalRecipe.PRIMARY_PLATE.get, 'F', AtomicContent.blockReactorCell, 'C', UniversalRecipe.CIRCUIT_T3.get)
recipes += shaped(new ItemStack(itemCell, 16), " T ", "TGT", " T ", 'T', "ingotTin", 'G', Blocks.glass)
recipes += shaped(blockThermometer, "SSS", "GCG", "GSG", 'S', UniversalRecipe.PRIMARY_METAL.get, 'G', Blocks.glass, 'C', UniversalRecipe.CIRCUIT_T1.get)
recipes += shaped(blockControlRod, "I", "I", "I", 'I', Items.iron_ingot)
recipes += shaped(itemFissileFuel, "CUC", "CUC", "CUC", 'U', "ingotUranium", 'C', "cellEmpty")
recipes += shaped(itemBreedingRod, "CUC", "CUC", "CUC", 'U', "breederUranium", 'C', "cellEmpty")
//Hazmat recipes
recipes += shaped(itemHazmatMask, "SSS", "BAB", "SCS", 'A', Items.leather_helmet, 'C', UniversalRecipe.CIRCUIT_T1.get, 'S', Blocks.wool)
recipes += shaped(itemHazmatBody, "SSS", "BAB", "SCS", 'A', Items.leather_chestplate, 'C', UniversalRecipe.CIRCUIT_T1.get, 'S', Blocks.wool)
recipes += shaped(itemHazmatLeggings, "SSS", "BAB", "SCS", 'A', Items.leather_leggings, 'C', UniversalRecipe.CIRCUIT_T1.get, 'S', Blocks.wool)
recipes += shaped(itemHazmatBoots, "SSS", "BAB", "SCS", 'A', Items.leather_boots, 'C', UniversalRecipe.CIRCUIT_T1.get, 'S', Blocks.wool)
//Electro magnets
recipes += shaped(new ItemStack(blockElectromagnet, 2, 0), "BBB", "BMB", "BBB", 'B', UniversalRecipe.SECONDARY_METAL.get, 'M', UniversalRecipe.MOTOR.get)
recipes += shapeless(new ItemStack(AtomicContent.blockElectromagnet, 1, 1), AtomicContent.blockElectromagnet, Blocks.glass)
recipes += shapeless(new ItemStack(AtomicContent.itemWaterCell), "cellEmpty", Items.water_bucket)
}
@SubscribeEvent
def fillBucketEvent(evt: FillBucketEvent)
{
if (!evt.world.isRemote && evt.target != null && evt.target.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK)
{
if (event.map.getTextureType == 0)
val pos: VectorWorld = new VectorWorld(evt.world, evt.target)
if (pos.getBlock eq AtomicContent.blockToxicWaste)
{
pos.setBlockToAir
evt.result = new ItemStack(AtomicContent.itemBucketToxic)
evt.setResult(Event.Result.ALLOW)
}
}
}
@SubscribeEvent
def thermalEventHandler(evt: EventThermal.EventThermalUpdate)
{
val pos: VectorWorld = evt.position
val block: Block = pos.getBlock
if (block == AtomicContent.blockElectromagnet)
{
evt.heatLoss = evt.deltaTemperature * 0.6f
}
}
@SubscribeEvent
def plasmaEvent(evt: PlasmaEvent.SpawnPlasmaEvent)
{
val block: Block = evt.world.getBlock(evt.x, evt.y, evt.z)
if (block != null && block.getBlockHardness(evt.world, evt.x, evt.y, evt.z) >= 0)
{
val tile: TileEntity = evt.world.getTileEntity(evt.x, evt.y, evt.z)
if (tile.isInstanceOf[TilePlasma])
{
(tile.asInstanceOf[TilePlasma]).setTemperature(evt.temperature)
return
}
else if (tile.isInstanceOf[IElectromagnet])
{
return
}
else
{
evt.world.setBlockToAir(evt.x, evt.y, evt.z)
evt.world.setBlock(evt.x, evt.y, evt.z, AtomicContent.blockPlasma)
}
}
}
/** Is this ItemStack a cell?
*
* @param itemStack
* @return
*/
def isItemStackEmptyCell(itemStack: ItemStack): Boolean =
{
return isItemStackOreDictionaryCompatible(itemStack, "cellEmpty")
}
/** Compare to Ore Dict
*
* @param itemStack
* @return
*/
def isItemStackOreDictionaryCompatible(itemStack: ItemStack, names: String*): Boolean =
{
if (itemStack != null && names != null && names.length > 0)
{
val name: String = OreDictionary.getOreName(OreDictionary.getOreID(itemStack))
for (compareName <- names)
{
if (name == compareName)
{
RenderUtility.registerIcon(Reference.prefix + "uraniumHexafluoride", event.map)
RenderUtility.registerIcon(Reference.prefix + "steam", event.map)
RenderUtility.registerIcon(Reference.prefix + "deuterium", event.map)
RenderUtility.registerIcon(Reference.prefix + "tritium", event.map)
RenderUtility.registerIcon(Reference.prefix + "atomic_edge", event.map)
RenderUtility.registerIcon(Reference.prefix + "funnel_edge", event.map)
RenderUtility.registerIcon(Reference.prefix + "glass", event.map)
return true
}
}
}
return false
}
@SubscribeEvent
@SideOnly(Side.CLIENT) def postTextureHook(event: TextureStitchEvent.Post)
def isItemStackWaterCell(itemStack: ItemStack): Boolean =
{
return isItemStackOreDictionaryCompatible(itemStack, "cellWater")
}
def isItemStackUraniumOre(itemStack: ItemStack): Boolean =
{
return isItemStackOreDictionaryCompatible(itemStack, "dropUranium", "oreUranium")
}
def isItemStackDeuteriumCell(itemStack: ItemStack): Boolean =
{
return isItemStackOreDictionaryCompatible(itemStack, "molecule_1d", "molecule_1h2", "cellDeuterium")
}
def isItemStackTritiumCell(itemStack: ItemStack): Boolean =
{
return isItemStackOreDictionaryCompatible(itemStack, "molecule_h3", "cellTritium")
}
def getFluidAmount(fluid: FluidStack): Int =
{
if (fluid != null)
{
AtomicContent.FLUID_URANIUM_HEXAFLOURIDE.setIcons(RenderUtility.loadedIconMap.get(Reference.prefix + "uraniumHexafluoride"))
AtomicContent.FLUID_STEAM.setIcons(RenderUtility.loadedIconMap.get(Reference.prefix + "steam"))
AtomicContent.FLUID_DEUTERIUM.setIcons(RenderUtility.loadedIconMap.get(Reference.prefix + "deuterium"))
AtomicContent.getFluidTritium.setIcons(RenderUtility.loadedIconMap.get(Reference.prefix + "tritium"))
AtomicContent.getFluidToxicWaste.setIcons(AtomicContent.blockToxicWaste.getIcon(0, 0))
AtomicContent.FLUID_PLASMA.setIcons(AtomicContent.blockPlasma.getIcon(0, 0))
return fluid.amount
}
return 0
}
@SubscribeEvent def fillBucketEvent(evt: FillBucketEvent)
def FLUID_PLASMA: Fluid = new Fluid("plasma").setGaseous(true)
def FLUIDSTACK_WATER: FluidStack = new FluidStack(FluidRegistry.WATER, 0)
def FLUIDSTACK_URANIUM_HEXAFLOURIDE: FluidStack = new FluidStack(AtomicContent.FLUID_URANIUM_HEXAFLOURIDE, 0)
def FLUID_URANIUM_HEXAFLOURIDE: Fluid =
{
var fluid: Fluid = FluidRegistry.getFluid("uraniumhexafluoride");
if (fluid == null)
{
if (!evt.world.isRemote && evt.target != null && evt.target.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK)
{
val pos: VectorWorld = new VectorWorld(evt.world, evt.target)
if (pos.getBlock eq AtomicContent.blockToxicWaste)
{
pos.setBlockToAir
evt.result = new ItemStack(AtomicContent.itemBucketToxic)
evt.setResult(Event.Result.ALLOW)
}
}
fluid = new Fluid("uraniumhexafluoride").setGaseous(true)
FluidRegistry.registerFluid(fluid)
}
return fluid
}
def FLUIDSTACK_STEAM: FluidStack = new FluidStack(FLUID_STEAM, 0)
@SubscribeEvent def thermalEventHandler(evt: EventThermal.EventThermalUpdate)
def FLUID_STEAM: Fluid =
{
var fluid: Fluid = FluidRegistry.getFluid("steam");
if (fluid == null)
{
val pos: VectorWorld = evt.position
val block: Block = pos.getBlock
if (block == AtomicContent.blockElectromagnet)
{
evt.heatLoss = evt.deltaTemperature * 0.6f
}
fluid = new Fluid("steam").setGaseous(true)
FluidRegistry.registerFluid(fluid)
}
return fluid
}
@SubscribeEvent def plasmaEvent(evt: PlasmaEvent.SpawnPlasmaEvent)
def FLUIDSTACK_DEUTERIUM: FluidStack = new FluidStack(FLUID_DEUTERIUM, 0)
def FLUID_DEUTERIUM: Fluid =
{
var fluid: Fluid = FluidRegistry.getFluid("deuterium");
if (fluid == null)
{
val block: Block = evt.world.getBlock(evt.x, evt.y, evt.z)
if (block != null && block.getBlockHardness(evt.world, evt.x, evt.y, evt.z) >= 0)
{
val tile: TileEntity = evt.world.getTileEntity(evt.x, evt.y, evt.z)
if (tile.isInstanceOf[TilePlasma])
{
(tile.asInstanceOf[TilePlasma]).setTemperature(evt.temperature)
return
}
else if (tile.isInstanceOf[IElectromagnet])
{
return
}
else
{
evt.world.setBlockToAir(evt.x, evt.y, evt.z)
evt.world.setBlock(evt.x, evt.y, evt.z, AtomicContent.blockPlasma)
}
}
fluid = new Fluid("deuterium").setGaseous(true)
FluidRegistry.registerFluid(fluid)
}
return fluid
}
def getFluidStackTritium: FluidStack = new FluidStack(getFluidTritium, 0)
/** Is this ItemStack a cell?
*
* @param itemStack
* @return
*/
def isItemStackEmptyCell(itemStack: ItemStack): Boolean =
/** Gets the Fluid instance of Tritium */
def getFluidTritium: Fluid =
{
var fluid: Fluid = FluidRegistry.getFluid("tritium");
if (fluid == null)
{
return isItemStackOreDictionaryCompatible(itemStack, "cellEmpty")
fluid = new Fluid("tritium").setGaseous(true)
FluidRegistry.registerFluid(fluid)
}
return fluid
}
/** Compare to Ore Dict
*
* @param itemStack
* @return
*/
def isItemStackOreDictionaryCompatible(itemStack: ItemStack, names: String*): Boolean =
/** 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)
{
if (itemStack != null && names != null && names.length > 0)
{
val name: String = OreDictionary.getOreName(OreDictionary.getOreID(itemStack))
for (compareName <- names)
{
if (name == compareName)
{
return true
}
}
}
return false
}
def isItemStackWaterCell(itemStack: ItemStack): Boolean =
{
return isItemStackOreDictionaryCompatible(itemStack, "cellWater")
}
def isItemStackUraniumOre(itemStack: ItemStack): Boolean =
{
return isItemStackOreDictionaryCompatible(itemStack, "dropUranium", "oreUranium")
}
def isItemStackDeuteriumCell(itemStack: ItemStack): Boolean =
{
return isItemStackOreDictionaryCompatible(itemStack, "molecule_1d", "molecule_1h2", "cellDeuterium")
}
def isItemStackTritiumCell(itemStack: ItemStack): Boolean =
{
return isItemStackOreDictionaryCompatible(itemStack, "molecule_h3", "cellTritium")
}
def getFluidAmount(fluid: FluidStack): Int =
{
if (fluid != null)
{
return fluid.amount
}
return 0
}
def FLUID_PLASMA: Fluid = new Fluid("plasma").setGaseous(true)
def FLUIDSTACK_WATER: FluidStack = new FluidStack(FluidRegistry.WATER, 0)
def FLUIDSTACK_URANIUM_HEXAFLOURIDE: FluidStack = new FluidStack(AtomicContent.FLUID_URANIUM_HEXAFLOURIDE, 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 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
fluid = new Fluid("toxicwaste").setGaseous(true)
FluidRegistry.registerFluid(fluid)
}
return fluid
}
}

View file

@ -1,18 +1,19 @@
package resonantinduction.core.handler
import cpw.mods.fml.common.Mod
import cpw.mods.fml.relauncher.Side
import cpw.mods.fml.relauncher.SideOnly
import cpw.mods.fml.common.eventhandler.SubscribeEvent
import cpw.mods.fml.relauncher.{Side, SideOnly}
import net.minecraftforge.client.event.TextureStitchEvent
import resonant.lib.render.RenderUtility
import resonantinduction.atomic.AtomicContent
import resonantinduction.core.Reference
/** Event handler for texture events
* @author Calclavia
*/
* @author Calclavia
*/
class TextureHookHandler
{
@Mod.EventHandler
@SubscribeEvent
@SideOnly(Side.CLIENT)
def preTextureHook(event: TextureStitchEvent.Pre)
{
@ -26,6 +27,27 @@ class TextureHookHandler
RenderUtility.registerIcon(Reference.prefix + "molten_flow", event.map)
RenderUtility.registerIcon(Reference.prefix + "multimeter_screen", event.map)
RenderUtility.registerIcon(Reference.prefix + "tankEdge", event.map)
RenderUtility.registerIcon(Reference.prefix + "uraniumHexafluoride", event.map)
RenderUtility.registerIcon(Reference.prefix + "steam", event.map)
RenderUtility.registerIcon(Reference.prefix + "deuterium", event.map)
RenderUtility.registerIcon(Reference.prefix + "tritium", event.map)
RenderUtility.registerIcon(Reference.prefix + "atomic_edge", event.map)
RenderUtility.registerIcon(Reference.prefix + "funnel_edge", event.map)
RenderUtility.registerIcon(Reference.prefix + "glass", event.map)
}
}
@SubscribeEvent
@SideOnly(Side.CLIENT) def postTextureHook(event: TextureStitchEvent.Post)
{
AtomicContent.FLUID_URANIUM_HEXAFLOURIDE.setIcons(RenderUtility.loadedIconMap.get(Reference.prefix + "uraniumHexafluoride"))
AtomicContent.FLUID_STEAM.setIcons(RenderUtility.loadedIconMap.get(Reference.prefix + "steam"))
AtomicContent.FLUID_DEUTERIUM.setIcons(RenderUtility.loadedIconMap.get(Reference.prefix + "deuterium"))
AtomicContent.getFluidTritium.setIcons(RenderUtility.loadedIconMap.get(Reference.prefix + "tritium"))
AtomicContent.getFluidToxicWaste.setIcons(AtomicContent.blockToxicWaste.getIcon(0, 0))
AtomicContent.FLUID_PLASMA.setIcons(AtomicContent.blockPlasma.getIcon(0, 0))
}
}

View file

@ -2,6 +2,7 @@ package resonantinduction.core.prefab.node
import cpw.mods.fml.common.network.ByteBufUtils
import io.netty.buffer.ByteBuf
import net.minecraft.block.Block
import net.minecraft.block.material.Material
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.nbt.NBTTagCompound
@ -31,6 +32,33 @@ class TileTankNode(material: Material) extends TileAdvanced(material) with INode
def getTank: IFluidTank = tankNode
override def start()
{
super.start()
tankNode.reconstruct()
}
override def invalidate()
{
tankNode.deconstruct()
super.invalidate()
}
override def onWorldJoin()
{
tankNode.reconstruct()
}
override def onNeighborChanged(block: Block)
{
tankNode.reconstruct()
}
override def onWorldSeparate()
{
tankNode.deconstruct()
}
override def readFromNBT(nbt: NBTTagCompound)
{
super.readFromNBT(nbt)
@ -67,7 +95,7 @@ class TileTankNode(material: Material) extends TileAdvanced(material) with INode
tankNode.save(tag)
packet <<< tag
sendPacket(packet)
return packet;
return packet
}
override def read(buf: ByteBuf, id: Int, player: EntityPlayer, t: PacketType): Boolean =
@ -102,18 +130,6 @@ class TileTankNode(material: Material) extends TileAdvanced(material) with INode
override def getTankInfo(from: ForgeDirection): Array[FluidTankInfo] = tankNode.getTankInfo(from)
override def start()
{
super.start()
tankNode.reconstruct()
}
override def invalidate()
{
tankNode.deconstruct()
super.invalidate()
}
def setCapacity(capacity: Int)
{
tankNode.setCapacity(capacity)