From 9a4acf902f09a52ce4eab87cec9c317a8de9e9ee Mon Sep 17 00:00:00 2001 From: Robert S Date: Fri, 8 Aug 2014 00:48:51 -0400 Subject: [PATCH] Removed errors from tesla tower and its effects --- .../resonantinduction/core/Reference.scala | 2 + .../electrical/CommonProxy.java | 27 +- .../electrical/Electrical.java | 237 ------------------ .../electrical/Electrical.scala | 153 +++++++++++ .../electrical/render/FXElectricBolt.java | 91 ++++--- .../electrical/tesla/BlockTesla.java | 166 ------------ .../electrical/tesla/ITesla.java | 2 +- .../electrical/tesla/RenderTesla.java | 12 +- .../electrical/tesla/TeslaGrid.java | 7 +- .../electrical/tesla/TileTesla.java | 236 ++++++++++------- 10 files changed, 371 insertions(+), 562 deletions(-) delete mode 100644 src/main/scala/resonantinduction/electrical/Electrical.java create mode 100644 src/main/scala/resonantinduction/electrical/Electrical.scala delete mode 100644 src/main/scala/resonantinduction/electrical/tesla/BlockTesla.java diff --git a/src/main/scala/resonantinduction/core/Reference.scala b/src/main/scala/resonantinduction/core/Reference.scala index 3e71ba58b..e23ff27f7 100644 --- a/src/main/scala/resonantinduction/core/Reference.scala +++ b/src/main/scala/resonantinduction/core/Reference.scala @@ -34,4 +34,6 @@ final object Reference final val itemTextureDirectory: String = textureDirectory + "items/" final val modelPath: String = "models/" final val modelDirectory: String = assetDirectory + modelPath + + def instance() : Unit = this } \ No newline at end of file diff --git a/src/main/scala/resonantinduction/electrical/CommonProxy.java b/src/main/scala/resonantinduction/electrical/CommonProxy.java index 3d400abf2..351a9a8fb 100644 --- a/src/main/scala/resonantinduction/electrical/CommonProxy.java +++ b/src/main/scala/resonantinduction/electrical/CommonProxy.java @@ -2,20 +2,27 @@ package resonantinduction.electrical; import java.awt.Color; +import cpw.mods.fml.common.network.IGuiHandler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -import resonant.lib.prefab.ProxyBase; -import resonantinduction.electrical.encoder.TileEncoder; -import resonantinduction.electrical.encoder.gui.ContainerEncoder; import resonantinduction.electrical.multimeter.ContainerMultimeter; import resonantinduction.electrical.multimeter.PartMultimeter; import universalelectricity.core.transform.vector.Vector3; import codechicken.multipart.TMultiPart; import codechicken.multipart.TileMultipart; -public class CommonProxy extends ProxyBase +public class CommonProxy implements IGuiHandler { + + public void preInit() { + } + + public void init() { + } + + public void postInit() { + } @Override public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) { @@ -29,15 +36,16 @@ public class CommonProxy extends ProxyBase return new ContainerMultimeter(player.inventory, ((PartMultimeter) part)); } } - else if (tileEntity instanceof TileEncoder) - { - return new ContainerEncoder(player.inventory, (TileEncoder) tileEntity); - } return null; } - public void renderElectricShock(World world, Vector3 start, Vector3 target, float r, float g, float b, boolean split) + @Override + public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { + return null; + } + + public void renderElectricShock(World world, Vector3 start, Vector3 target, float r, float g, float b, boolean split) { } @@ -67,4 +75,5 @@ public class CommonProxy extends ProxyBase this.renderElectricShock(world, start, target, 0.55f, 0.7f, 1f, b); } + } diff --git a/src/main/scala/resonantinduction/electrical/Electrical.java b/src/main/scala/resonantinduction/electrical/Electrical.java deleted file mode 100644 index 6822aa03a..000000000 --- a/src/main/scala/resonantinduction/electrical/Electrical.java +++ /dev/null @@ -1,237 +0,0 @@ -package resonantinduction.electrical; - -import ic2.api.item.Items; -import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraftforge.oredict.OreDictionary; -import net.minecraftforge.oredict.ShapedOreRecipe; -import net.minecraftforge.oredict.ShapelessOreRecipe; -import resonant.lib.content.ContentRegistry; -import resonant.lib.modproxy.ProxyHandler; -import resonant.lib.network.PacketHandler; -import resonant.lib.recipe.UniversalRecipe; -import resonantinduction.core.Reference; -import resonantinduction.core.ResonantInduction; -import resonantinduction.core.ResonantTab; -import resonantinduction.core.Settings; -import resonantinduction.core.resource.ItemResourcePart; -import resonantinduction.electrical.armbot.BlockArmbot; -import resonantinduction.electrical.armbot.TileArmbot; -import resonantinduction.electrical.battery.BlockBattery; -import resonantinduction.electrical.battery.ItemBlockBattery; -import resonantinduction.electrical.battery.TileBattery; -import resonantinduction.electrical.charger.ItemCharger; -import resonantinduction.electrical.generator.BlockMotor; -import resonantinduction.electrical.generator.TileMotor; -import resonantinduction.electrical.generator.TileSolarPanel; -import resonantinduction.electrical.generator.thermopile.BlockThermopile; -import resonantinduction.electrical.generator.TileThermopile; -import resonantinduction.electrical.laser.gun.ItemMiningLaser; -import resonantinduction.electrical.levitator.ItemLevitator; -import resonantinduction.electrical.multimeter.ItemMultimeter; -import resonantinduction.electrical.tesla.BlockTesla; -import resonantinduction.electrical.tesla.TileTesla; -import resonantinduction.electrical.transformer.ItemTransformer; -import resonantinduction.electrical.wire.EnumWireMaterial; -import resonantinduction.electrical.wire.ItemWire; -import resonantinduction.atomic.gate.ItemQuantumGlyph; -import cpw.mods.fml.common.Loader; -import cpw.mods.fml.common.Mod; -import cpw.mods.fml.common.Mod.EventHandler; -import cpw.mods.fml.common.Mod.Instance; -import cpw.mods.fml.common.ModMetadata; -import cpw.mods.fml.common.SidedProxy; -import cpw.mods.fml.common.event.FMLInitializationEvent; -import cpw.mods.fml.common.event.FMLPostInitializationEvent; -import cpw.mods.fml.common.event.FMLPreInitializationEvent; -import cpw.mods.fml.common.network.NetworkMod; -import cpw.mods.fml.common.network.NetworkRegistry; -import cpw.mods.fml.common.registry.GameRegistry; - -/** Resonant Induction Electrical Module - * - * @author Calclavia */ -@Mod(modid = Electrical.ID, name = Electrical.NAME, version = Reference.VERSION, dependencies = "before:ThermalExpansion;before:Mekanism;after:ResonantInduction|Mechanical;required-after:" + ResonantInduction.ID) -@NetworkMod(channels = Reference.CHANNEL, clientSideRequired = true, serverSideRequired = false, packetHandler = PacketHandler.class) -public class Electrical -{ - /** Mod Information */ - public static final String ID = "ResonantInduction|Electrical"; - public static final String NAME = Reference.NAME + " Electrical"; - - @Instance(ID) - public static Electrical INSTANCE; - - @SidedProxy(clientSide = "ClientProxy", serverSide = "CommonProxy") - public static CommonProxy proxy; - - @Mod.Metadata(ID) - public static ModMetadata metadata; - - public static final ContentRegistry contentRegistry = new ContentRegistry(Settings.config, Settings.idManager, ID).setPrefix(Reference.PREFIX).setTab(ResonantTab.DEFAULT); - - // Energy - public static Item itemWire; - public static Item itemMultimeter; - public static Item itemTransformer; - public static Item itemCharger; - public static Block blockTesla; - public static Block blockBattery; - public static Block blockEncoder; - - // Railings - public static Item itemRailing; - - // Generators - public static Block blockSolarPanel; - public static Block blockMotor; - public static Block blockThermopile; - - // Transport - public static Item itemLevitator; - public static Block blockArmbot; - public static Item itemDisk; - public static Item itemInsulation; - - // Quantum - public static Block blockQuantumGate; - public static Item itemQuantumGlyph; - - // Tools - public static Item itemLaserGun; - - public ProxyHandler modproxies; - - @EventHandler - public void preInit(FMLPreInitializationEvent evt) - { - modproxies = new ProxyHandler(); - NetworkRegistry.instance().registerGuiHandler(this, proxy); - - Settings.config.load(); - // Energy - itemWire = contentRegistry.createItem(ItemWire.class); - itemMultimeter = contentRegistry.createItem(ItemMultimeter.class); - itemTransformer = contentRegistry.createItem(ItemTransformer.class); - itemCharger = contentRegistry.createItem(ItemCharger.class); - blockTesla = contentRegistry.createTile(BlockTesla.class, TileTesla.class); - blockBattery = contentRegistry.createBlock(BlockBattery.class, ItemBlockBattery.class, TileBattery.class); - blockArmbot = contentRegistry.createBlock(BlockArmbot.class, null, TileArmbot.class); - - // Transport - itemLevitator = contentRegistry.createItem(ItemLevitator.class); - itemInsulation = contentRegistry.createItem("insulation", ItemResourcePart.class); - itemLaserGun = contentRegistry.createItem("laserDrill", ItemMiningLaser.class); - - // Generator - blockSolarPanel = contentRegistry.newBlock(TileSolarPanel.class); - blockMotor = contentRegistry.createTile(BlockMotor.class, TileMotor.class); - blockThermopile = contentRegistry.createTile(BlockThermopile.class, TileThermopile.class); - - // Quantum - itemQuantumGlyph = contentRegistry.createItem(ItemQuantumGlyph.class); - - //Railings - //itemRailing = contentRegistry.createItem(ItemItemRailing.class); - - Settings.config.save(); - - OreDictionary.registerOre("wire", itemWire); - OreDictionary.registerOre("motor", blockMotor); - OreDictionary.registerOre("battery", ItemBlockBattery.setTier(new ItemStack(blockBattery, 1, 0), (byte) 0)); - OreDictionary.registerOre("batteryBox", ItemBlockBattery.setTier(new ItemStack(blockBattery, 1, 0), (byte) 0)); - - /** Set reference itemstacks */ - ResonantTab.ITEMSTACK = new ItemStack(itemTransformer); - - for (EnumWireMaterial material : EnumWireMaterial.values()) - { - material.setWire(itemWire); - } - - proxy.preInit(); - modproxies.preInit(); - } - - @EventHandler - public void init(FMLInitializationEvent evt) - { - Settings.setModMetadata(metadata, ID, NAME, ResonantInduction.ID); - MultipartElectrical.INSTANCE = new MultipartElectrical(); - proxy.init(); - modproxies.init(); - } - - @EventHandler - public void postInit(FMLPostInitializationEvent evt) - { - /** Recipes */ - /** Tesla - by Jyzarc */ - GameRegistry.addRecipe(new ShapedOreRecipe(blockTesla, "WEW", " C ", "DID", 'W', "wire", 'E', Item.eyeOfEnder, 'C', UniversalRecipe.BATTERY.get(), 'D', Item.diamond, 'I', UniversalRecipe.PRIMARY_PLATE.get())); - - /** Multimeter */ - GameRegistry.addRecipe(new ShapedOreRecipe(itemMultimeter, "WWW", "ICI", 'W', "wire", 'C', UniversalRecipe.BATTERY.get(), 'I', UniversalRecipe.PRIMARY_METAL.get())); - - // GameRegistry.addRecipe(new ShapedOreRecipe(itemDisk, "PPP", "RRR", "WWW", 'W', "wire", - // 'P', Item.paper, 'R', Item.redstone)); - - /** Battery */ - ItemStack tierOneBattery = ItemBlockBattery.setTier(new ItemStack(blockBattery, 1, 0), (byte) 0); - ItemStack tierTwoBattery = ItemBlockBattery.setTier(new ItemStack(blockBattery, 1, 0), (byte) 1); - ItemStack tierThreeBattery = ItemBlockBattery.setTier(new ItemStack(blockBattery, 1, 0), (byte) 2); - - GameRegistry.addRecipe(new ShapedOreRecipe(tierOneBattery, "III", "IRI", "III", 'R', Block.blockRedstone, 'I', UniversalRecipe.PRIMARY_METAL.get())); - GameRegistry.addRecipe(new ShapedOreRecipe(tierTwoBattery, "RRR", "RIR", "RRR", 'R', tierOneBattery, 'I', UniversalRecipe.PRIMARY_PLATE.get())); - GameRegistry.addRecipe(new ShapedOreRecipe(tierThreeBattery, "RRR", "RIR", "RRR", 'R', tierTwoBattery, 'I', Block.blockDiamond)); - - /** Wires **/ - //GameRegistry.addRecipe(new ShapelessOreRecipe(itemInsulation, Item.slimeBall, new ItemStack(Block.cloth, 2, OreDictionary.WILDCARD_VALUE))); - //GameRegistry.addRecipe(new ShapelessOreRecipe(itemInsulation, "slimeball", new ItemStack(Block.cloth, 2, OreDictionary.WILDCARD_VALUE))); - - GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.COPPER.getWire(3), "MMM", 'M', "ingotCopper")); - GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.TIN.getWire(3), "MMM", 'M', "ingotTin")); - GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.IRON.getWire(3), "MMM", 'M', Item.ingotIron)); - GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.ALUMINUM.getWire(3), "MMM", 'M', "ingotAluminum")); - GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.SILVER.getWire(), "MMM", 'M', "ingotSilver")); - GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.SUPERCONDUCTOR.getWire(3), "MMM", 'M', "ingotSuperconductor")); - GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.SUPERCONDUCTOR.getWire(3), "MMM", "MEM", "MMM", 'M', Item.ingotGold, 'E', Item.eyeOfEnder)); - - GameRegistry.addRecipe(new ShapedOreRecipe(itemCharger, "WWW", "ICI", 'W', "wire", 'I', UniversalRecipe.PRIMARY_METAL.get(), 'C', UniversalRecipe.CIRCUIT_T1.get())); - GameRegistry.addRecipe(new ShapedOreRecipe(itemTransformer, "WWW", "WWW", "III", 'W', "wire", 'I', UniversalRecipe.PRIMARY_METAL.get())); - //GameRegistry.addRecipe(new ShapedOreRecipe(itemLevitator, " G ", "SDS", "SWS", 'W', "wire", 'G', Block.glass, 'D', Block.blockDiamond, 'S', UniversalRecipe.PRIMARY_METAL.get())); - - /** Quantum Gates */ - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(itemQuantumGlyph, 1, 0), " CT", "LBL", "TCT", 'B', Block.blockDiamond, 'L', itemLevitator, 'C', itemCharger, 'T', blockTesla)); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(itemQuantumGlyph, 1, 1), "TCT", "LBL", " CT", 'B', Block.blockDiamond, 'L', itemLevitator, 'C', itemCharger, 'T', blockTesla)); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(itemQuantumGlyph, 1, 2), "TC ", "LBL", "TCT", 'B', Block.blockDiamond, 'L', itemLevitator, 'C', itemCharger, 'T', blockTesla)); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(itemQuantumGlyph, 1, 3), "TCT", "LBL", "TC ", 'B', Block.blockDiamond, 'L', itemLevitator, 'C', itemCharger, 'T', blockTesla)); - - /** Generators **/ - GameRegistry.addRecipe(new ShapedOreRecipe(blockSolarPanel, "CCC", "WWW", "III", 'W', "wire", 'C', Item.coal, 'I', UniversalRecipe.PRIMARY_METAL.get())); - GameRegistry.addRecipe(new ShapedOreRecipe(blockMotor, "SRS", "SMS", "SWS", 'W', "wire", 'R', Item.redstone, 'M', Block.blockIron, 'S', UniversalRecipe.PRIMARY_METAL.get())); - GameRegistry.addRecipe(new ShapedOreRecipe(blockThermopile, "ORO", "OWO", "OOO", 'W', "wire", 'O', Block.obsidian, 'R', Item.redstone)); - - GameRegistry.addRecipe(new ShapedOreRecipe(itemLaserGun, "RDR", "RDR", "ICB", 'R', Item.redstone, 'D', Item.diamond, 'I', Item.ingotGold, 'C', UniversalRecipe.CIRCUIT_T2.get(), 'B', ItemBlockBattery.setTier(new ItemStack(blockBattery, 1, 0), (byte) 0))); - - /** Wire Compatiblity **/ - if (Loader.isModLoaded("IC2")) - { - GameRegistry.addRecipe(new ShapelessOreRecipe(EnumWireMaterial.COPPER.getWire(), Items.getItem("copperCableItem"))); - GameRegistry.addRecipe(new ShapelessOreRecipe(EnumWireMaterial.TIN.getWire(), Items.getItem("tinCableItem"))); - GameRegistry.addRecipe(new ShapelessOreRecipe(EnumWireMaterial.IRON.getWire(), Items.getItem("ironCableItem"))); - - GameRegistry.addRecipe(new ShapelessOreRecipe(Items.getItem("copperCableItem"), EnumWireMaterial.COPPER.getWire())); - GameRegistry.addRecipe(new ShapelessOreRecipe(Items.getItem("tinCableItem"), EnumWireMaterial.TIN.getWire())); - GameRegistry.addRecipe(new ShapelessOreRecipe(Items.getItem("ironCableItem"), EnumWireMaterial.IRON.getWire())); - } - - if (Loader.isModLoaded("Mekanism")) - { - GameRegistry.addRecipe(new ShapelessOreRecipe(EnumWireMaterial.COPPER.getWire(), "universalCable")); - } - - proxy.postInit(); - modproxies.postInit(); - } -} diff --git a/src/main/scala/resonantinduction/electrical/Electrical.scala b/src/main/scala/resonantinduction/electrical/Electrical.scala new file mode 100644 index 000000000..3f9a1b724 --- /dev/null +++ b/src/main/scala/resonantinduction/electrical/Electrical.scala @@ -0,0 +1,153 @@ +package resonantinduction.electrical + +import ic2.api.item.IC2Items +import net.minecraft.block.Block +import net.minecraft.init.Blocks +import net.minecraft.init.Items +import net.minecraft.item.Item +import net.minecraft.item.ItemStack +import net.minecraftforge.oredict.OreDictionary +import net.minecraftforge.oredict.ShapedOreRecipe +import net.minecraftforge.oredict.ShapelessOreRecipe +import resonant.content.loader.ModManager +import resonant.lib.loadable.LoadableHandler +import resonant.lib.recipe.UniversalRecipe +import resonantinduction.core.Reference +import resonantinduction.core.ResonantInduction +import resonantinduction.core.ResonantTab +import resonantinduction.core.Settings +import resonantinduction.core.resource.ItemResourcePart +import resonantinduction.electrical.battery.BlockBattery +import resonantinduction.electrical.battery.ItemBlockBattery +import resonantinduction.electrical.battery.TileBattery +import resonantinduction.electrical.generator.TileMotor +import resonantinduction.electrical.generator.TileSolarPanel +import resonantinduction.electrical.generator.TileThermopile +import resonantinduction.electrical.levitator.ItemLevitator +import resonantinduction.electrical.multimeter.ItemMultimeter +import resonantinduction.electrical.tesla.TileTesla +import resonantinduction.electrical.transformer.ItemTransformer +import resonantinduction.electrical.wire.EnumWireMaterial +import resonantinduction.electrical.wire.ItemWire +import resonantinduction.atomic.gate.ItemQuantumGlyph +import cpw.mods.fml.common.Loader +import cpw.mods.fml.common.Mod +import cpw.mods.fml.common.Mod.EventHandler +import cpw.mods.fml.common.Mod.Instance +import cpw.mods.fml.common.ModMetadata +import cpw.mods.fml.common.SidedProxy +import cpw.mods.fml.common.event.FMLInitializationEvent +import cpw.mods.fml.common.event.FMLPostInitializationEvent +import cpw.mods.fml.common.event.FMLPreInitializationEvent +import cpw.mods.fml.common.network.NetworkRegistry +import cpw.mods.fml.common.registry.GameRegistry + +/** Resonant Induction Electrical Module + * + * @author Calclavia */ +object Electrical { + /** Mod Information */ + final val ID: String = "ResonantInduction|Electrical" + final val NAME: String = Reference.name + " Electrical" + @Instance(ID) var INSTANCE: Electrical = null + @SidedProxy(clientSide = "ClientProxy", serverSide = "CommonProxy") var proxy: CommonProxy = null + @Mod.Metadata(ID) var metadata: ModMetadata = null + final val contentRegistry: ModManager = new ModManager().setPrefix(Reference.prefix).setTab(ResonantTab.tab) + var itemWire: Item = null + var itemMultimeter: Item = null + var itemTransformer: Item = null + var itemCharger: Item = null + var blockTesla: Block = null + var blockBattery: Block = null + var blockEncoder: Block = null + var itemRailing: Item = null + var blockSolarPanel: Block = null + var blockMotor: Block = null + var blockThermopile: Block = null + var itemLevitator: Item = null + var blockArmbot: Block = null + var itemDisk: Item = null + var itemInsulation: Item = null + var blockQuantumGate: Block = null + var itemQuantumGlyph: Item = null + var itemLaserGun: Item = null +} + +@Mod(modid = Electrical.ID, name = Electrical.NAME, version = Reference.version, dependencies = "before:ThermalExpansion;before:Mekanism;after:ResonantInduction|Mechanical;required-after:" + Reference.coreID) class Electrical { + @EventHandler def preInit(evt: FMLPreInitializationEvent) { + modproxies = new LoadableHandler + NetworkRegistry.INSTANCE.registerGuiHandler(this, Electrical.proxy) + Settings.config.load + Electrical.itemWire = Electrical.contentRegistry.newItem(classOf[ItemWire]) + Electrical.itemMultimeter = Electrical.contentRegistry.newItem(classOf[ItemMultimeter]) + Electrical.itemTransformer = Electrical.contentRegistry.newItem(classOf[ItemTransformer]) + Electrical.blockTesla = Electrical.contentRegistry.newBlock(classOf[TileTesla]) + Electrical.blockBattery = Electrical.contentRegistry.newBlock(classOf[BlockBattery], classOf[ItemBlockBattery], classOf[TileBattery]) + Electrical.itemLevitator = Electrical.contentRegistry.newItem(classOf[ItemLevitator]) + Electrical.itemInsulation = Electrical.contentRegistry.newItem("insulation", classOf[ItemResourcePart]) + Electrical.blockSolarPanel = Electrical.contentRegistry.newBlock(classOf[TileSolarPanel]) + Electrical.blockMotor = Electrical.contentRegistry.newBlock(classOf[TileMotor]) + Electrical.blockThermopile = Electrical.contentRegistry.newBlock(classOf[TileThermopile]) + Electrical.itemQuantumGlyph = Electrical.contentRegistry.newItem(classOf[ItemQuantumGlyph]) + Settings.config.save + OreDictionary.registerOre("wire", Electrical.itemWire) + OreDictionary.registerOre("motor", Electrical.blockMotor) + OreDictionary.registerOre("battery", ItemBlockBattery.setTier(new ItemStack(Electrical.blockBattery, 1, 0), 0.asInstanceOf[Byte])) + OreDictionary.registerOre("batteryBox", ItemBlockBattery.setTier(new ItemStack(Electrical.blockBattery, 1, 0), 0.asInstanceOf[Byte])) + ResonantTab.itemStack(new ItemStack(Electrical.itemTransformer)) + for (material <- EnumWireMaterial.values) { + material.setWire(Electrical.itemWire) + } + Electrical.proxy.preInit + modproxies.preInit + } + + @EventHandler def init(evt: FMLInitializationEvent) { + MultipartElectrical.INSTANCE = new MultipartElectrical + Electrical.proxy.init + modproxies.init + } + + @EventHandler def postInit(evt: FMLPostInitializationEvent) { + GameRegistry.addRecipe(new ShapedOreRecipe(Electrical.blockTesla, "WEW", " C ", "DID", 'W', "wire", 'E', Items.ender_eye, 'C', UniversalRecipe.BATTERY.get, 'D', Items.diamond, 'I', UniversalRecipe.PRIMARY_PLATE.get)) + GameRegistry.addRecipe(new ShapedOreRecipe(Electrical.itemMultimeter, "WWW", "ICI", 'W', "wire", 'C', UniversalRecipe.BATTERY.get, 'I', UniversalRecipe.PRIMARY_METAL.get)) + val tierOneBattery: ItemStack = ItemBlockBattery.setTier(new ItemStack(Electrical.blockBattery, 1, 0), 0.asInstanceOf[Byte]) + val tierTwoBattery: ItemStack = ItemBlockBattery.setTier(new ItemStack(Electrical.blockBattery, 1, 0), 1.asInstanceOf[Byte]) + val tierThreeBattery: ItemStack = ItemBlockBattery.setTier(new ItemStack(Electrical.blockBattery, 1, 0), 2.asInstanceOf[Byte]) + GameRegistry.addRecipe(new ShapedOreRecipe(tierOneBattery, "III", "IRI", "III", 'R', Blocks.redstone_block, 'I', UniversalRecipe.PRIMARY_METAL.get)) + GameRegistry.addRecipe(new ShapedOreRecipe(tierTwoBattery, "RRR", "RIR", "RRR", 'R', tierOneBattery, 'I', UniversalRecipe.PRIMARY_PLATE.get)) + GameRegistry.addRecipe(new ShapedOreRecipe(tierThreeBattery, "RRR", "RIR", "RRR", 'R', tierTwoBattery, 'I', Blocks.diamond_block)) + GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.COPPER.getWire(3), "MMM", 'M', "ingotCopper")) + GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.TIN.getWire(3), "MMM", 'M', "ingotTin")) + GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.IRON.getWire(3), "MMM", 'M', Items.iron_ingot)) + GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.ALUMINUM.getWire(3), "MMM", 'M', "ingotAluminum")) + GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.SILVER.getWire, "MMM", 'M', "ingotSilver")) + GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.SUPERCONDUCTOR.getWire(3), "MMM", 'M', "ingotSuperconductor")) + GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.SUPERCONDUCTOR.getWire(3), "MMM", "MEM", "MMM", 'M', Items.gold_ingot, 'E', Items.ender_eye)) + GameRegistry.addRecipe(new ShapedOreRecipe(Electrical.itemCharger, "WWW", "ICI", 'W', "wire", 'I', UniversalRecipe.PRIMARY_METAL.get, 'C', UniversalRecipe.CIRCUIT_T1.get)) + GameRegistry.addRecipe(new ShapedOreRecipe(Electrical.itemTransformer, "WWW", "WWW", "III", 'W', "wire", 'I', UniversalRecipe.PRIMARY_METAL.get)) + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Electrical.itemQuantumGlyph, 1, 0), " CT", "LBL", "TCT", 'B', Blocks.diamond_block, 'L', Electrical.itemLevitator, 'C', Electrical.itemCharger, 'T', Electrical.blockTesla)) + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Electrical.itemQuantumGlyph, 1, 1), "TCT", "LBL", " CT", 'B', Blocks.diamond_block, 'L', Electrical.itemLevitator, 'C', Electrical.itemCharger, 'T', Electrical.blockTesla)) + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Electrical.itemQuantumGlyph, 1, 2), "TC ", "LBL", "TCT", 'B', Blocks.diamond_block, 'L', Electrical.itemLevitator, 'C', Electrical.itemCharger, 'T', Electrical.blockTesla)) + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Electrical.itemQuantumGlyph, 1, 3), "TCT", "LBL", "TC ", 'B', Blocks.diamond_block, 'L', Electrical.itemLevitator, 'C', Electrical.itemCharger, 'T', Electrical.blockTesla)) + GameRegistry.addRecipe(new ShapedOreRecipe(Electrical.blockSolarPanel, "CCC", "WWW", "III", 'W', "wire", 'C', Items.coal, 'I', UniversalRecipe.PRIMARY_METAL.get)) + GameRegistry.addRecipe(new ShapedOreRecipe(Electrical.blockMotor, "SRS", "SMS", "SWS", 'W', "wire", 'R', Items.redstone, 'M', Blocks.iron_block, 'S', UniversalRecipe.PRIMARY_METAL.get)) + GameRegistry.addRecipe(new ShapedOreRecipe(Electrical.blockThermopile, "ORO", "OWO", "OOO", 'W', "wire", 'O', Blocks.obsidian, 'R', Items.redstone)) + GameRegistry.addRecipe(new ShapedOreRecipe(Electrical.itemLaserGun, "RDR", "RDR", "ICB", 'R', Items.redstone, 'D', Items.diamond, 'I', Items.gold_ingot, 'C', UniversalRecipe.CIRCUIT_T2.get, 'B', ItemBlockBattery.setTier(new ItemStack(Electrical.blockBattery, 1, 0), 0.asInstanceOf[Byte]))) + if (Loader.isModLoaded("IC2")) { + GameRegistry.addRecipe(new ShapelessOreRecipe(EnumWireMaterial.COPPER.getWire, IC2Items.getItem("copperCableItem"))) + GameRegistry.addRecipe(new ShapelessOreRecipe(EnumWireMaterial.TIN.getWire, IC2Items.getItem("tinCableItem"))) + GameRegistry.addRecipe(new ShapelessOreRecipe(EnumWireMaterial.IRON.getWire, IC2Items.getItem("ironCableItem"))) + GameRegistry.addRecipe(new ShapelessOreRecipe(IC2Items.getItem("copperCableItem"), EnumWireMaterial.COPPER.getWire)) + GameRegistry.addRecipe(new ShapelessOreRecipe(IC2Items.getItem("tinCableItem"), EnumWireMaterial.TIN.getWire)) + GameRegistry.addRecipe(new ShapelessOreRecipe(IC2Items.getItem("ironCableItem"), EnumWireMaterial.IRON.getWire)) + } + if (Loader.isModLoaded("Mekanism")) { + GameRegistry.addRecipe(new ShapelessOreRecipe(EnumWireMaterial.COPPER.getWire, "universalCable")) + } + Electrical.proxy.postInit + modproxies.postInit + } + + var modproxies: LoadableHandler = null +} \ No newline at end of file diff --git a/src/main/scala/resonantinduction/electrical/render/FXElectricBolt.java b/src/main/scala/resonantinduction/electrical/render/FXElectricBolt.java index a36311a84..073d826e6 100644 --- a/src/main/scala/resonantinduction/electrical/render/FXElectricBolt.java +++ b/src/main/scala/resonantinduction/electrical/render/FXElectricBolt.java @@ -27,6 +27,7 @@ import net.minecraft.world.World; import org.lwjgl.opengl.GL11; import resonantinduction.core.Reference; +import universalelectricity.core.transform.rotation.Quaternion; import universalelectricity.core.transform.vector.Vector3; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.relauncher.Side; @@ -41,7 +42,7 @@ import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class FXElectricBolt extends EntityFX { - public static final ResourceLocation TEXTURE = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "fadedSphere.png"); + public static final ResourceLocation TEXTURE = new ResourceLocation(Reference.domain(), Reference.modelPath() + "fadedSphere.png"); public static final ResourceLocation PARTICLE_RESOURCE = new ResourceLocation("textures/particle/particles.png"); /** The width of the electrical bolt. */ @@ -62,15 +63,15 @@ public class FXElectricBolt extends EntityFX public FXElectricBolt(World world, Vector3 startVec, Vector3 targetVec, boolean doSplits) { - super(world, startVec.x, startVec.y, startVec.z); + super(world, startVec.x(), startVec.y(), startVec.z()); this.rand = new Random(); this.start = new BoltPoint(startVec); this.end = new BoltPoint(targetVec); - if (this.end.y == Double.POSITIVE_INFINITY) + if (this.end.y() == Double.POSITIVE_INFINITY) { - this.end.y = Minecraft.getMinecraft().thePlayer.posY + 30; + this.end.y(Minecraft.getMinecraft().thePlayer.posY + 30); } /** By default, we do an electrical color */ @@ -106,18 +107,12 @@ public class FXElectricBolt extends EntityFX this.split(2, offsetRatio / 70, 0, 0, 0); this.recalculate(); - Collections.sort(this.segments, new Comparator() + Collections.sort(this.segments, new Comparator() { public int compare(BoltSegment bolt1, BoltSegment bolt2) { return Float.compare(bolt2.alpha, bolt1.alpha); } - - @Override - public int compare(Object obj1, Object obj2) - { - return compare((BoltSegment) obj1, (BoltSegment) obj2); - } }); } } @@ -151,7 +146,7 @@ public class FXElectricBolt extends EntityFX { prev = segment.prev; /** Length of each subsegment */ - Vector3 subSegment = segment.difference.clone().scale(1.0F / splitAmount); + Vector3 subSegment = segment.difference.clone().multiply(1.0F / splitAmount); /** * Creates an array of new bolt points. The first and last points of the bolts are the @@ -167,8 +162,8 @@ public class FXElectricBolt extends EntityFX */ for (int i = 1; i < splitAmount; i++) { - Vector3 newOffset = segment.difference.getPerpendicular().rotate(this.rand.nextFloat() * 360, segment.difference).scale((this.rand.nextFloat() - 0.5F) * offset); - Vector3 basePoint = startPoint.clone().add(subSegment.clone().scale(i)); + Vector3 newOffset = segment.difference.perpendicular().transform(new Quaternion(this.rand.nextFloat() * 360, segment.difference)).multiply((this.rand.nextFloat() - 0.5F) * offset); + Vector3 basePoint = startPoint.clone().add(subSegment.clone().multiply(i)); newPoints[i] = new BoltPoint(basePoint, newOffset); } @@ -185,8 +180,8 @@ public class FXElectricBolt extends EntityFX if ((i != 0) && (this.rand.nextFloat() < splitChance)) { - Vector3 splitrot = next.difference.xCrossProduct().rotate(this.rand.nextFloat() * 360, next.difference); - Vector3 diff = next.difference.clone().rotate((this.rand.nextFloat() * 0.66F + 0.33F) * splitAngle, splitrot).scale(splitLength); + Vector3 splitrot = next.difference.xCross().transform(new Quaternion(this.rand.nextFloat() * 360, next.difference)); + Vector3 diff = next.difference.clone().transform(new Quaternion((this.rand.nextFloat() * 0.66F + 0.33F) * splitAngle, splitrot)).multiply(splitLength); this.maxSplitID += 1; this.parentIDMap.put(this.maxSplitID, next.splitID); BoltSegment split = new BoltSegment(newPoints[i], new BoltPoint(newPoints[(i + 1)].base, newPoints[(i + 1)].offset.clone().add(diff)), segment.alpha / 2f, next.id, this.maxSplitID); @@ -313,24 +308,24 @@ public class FXElectricBolt extends EntityFX double renderWidth = this.boltWidth * ((new Vector3(player).distance(segment.start) / 5f + 1f) * (1 + segment.alpha) * 0.5f); renderWidth = Math.min(this.boltWidth, Math.max(renderWidth, 0)); - if (segment.difference.getMagnitude() > 0 && segment.difference.getMagnitude() != Double.NaN && segment.difference.getMagnitude() != Double.POSITIVE_INFINITY && renderWidth > 0 && renderWidth != Double.NaN && renderWidth != Double.POSITIVE_INFINITY) + if (segment.difference.magnitude() > 0 && segment.difference.magnitude() != Double.NaN && segment.difference.magnitude() != Double.POSITIVE_INFINITY && renderWidth > 0 && renderWidth != Double.NaN && renderWidth != Double.POSITIVE_INFINITY) { - Vector3 diffPrev = playerVector.crossProduct(segment.prevDiff).scale(renderWidth / segment.sinPrev); - Vector3 diffNext = playerVector.crossProduct(segment.nextDiff).scale(renderWidth / segment.sinNext); + Vector3 diffPrev = playerVector.cross(segment.prevDiff).multiply(renderWidth / segment.sinPrev); + Vector3 diffNext = playerVector.cross(segment.nextDiff).multiply(renderWidth / segment.sinNext); Vector3 startVec = segment.start; Vector3 endVec = segment.end; - float rx1 = (float) (startVec.x - interpPosX); - float ry1 = (float) (startVec.y - interpPosY); - float rz1 = (float) (startVec.z - interpPosZ); - float rx2 = (float) (endVec.x - interpPosX); - float ry2 = (float) (endVec.y - interpPosY); - float rz2 = (float) (endVec.z - interpPosZ); + float rx1 = (float) (startVec.x() - interpPosX); + float ry1 = (float) (startVec.y() - interpPosY); + float rz1 = (float) (startVec.z() - interpPosZ); + float rx2 = (float) (endVec.x() - interpPosX); + float ry2 = (float) (endVec.y() - interpPosY); + float rz2 = (float) (endVec.z() - interpPosZ); tessellator.setColorRGBA_F(this.particleRed, this.particleGreen, this.particleBlue, (1.0F - (this.particleAge >= 0 ? ((float) this.particleAge / (float) this.particleMaxAge) : 0.0F) * 0.6f) * segment.alpha); - tessellator.addVertexWithUV(rx2 - diffNext.x, ry2 - diffNext.y, rz2 - diffNext.z, 0.5D, 0.0D); - tessellator.addVertexWithUV(rx1 - diffPrev.x, ry1 - diffPrev.y, rz1 - diffPrev.z, 0.5D, 0.0D); - tessellator.addVertexWithUV(rx1 + diffPrev.x, ry1 + diffPrev.y, rz1 + diffPrev.z, 0.5D, 1.0D); - tessellator.addVertexWithUV(rx2 + diffNext.x, ry2 + diffNext.y, rz2 + diffNext.z, 0.5D, 1.0D); + tessellator.addVertexWithUV(rx2 - diffNext.x(), ry2 - diffNext.y(), rz2 - diffNext.z(), 0.5D, 0.0D); + tessellator.addVertexWithUV(rx1 - diffPrev.x(), ry1 - diffPrev.y(), rz1 - diffPrev.z(), 0.5D, 0.0D); + tessellator.addVertexWithUV(rx1 + diffPrev.x(), ry1 + diffPrev.y(), rz1 + diffPrev.z(), 0.5D, 1.0D); + tessellator.addVertexWithUV(rx2 + diffNext.x(), ry2 + diffNext.y(), rz2 + diffNext.z(), 0.5D, 1.0D); /** * Render the bolts balls. @@ -338,26 +333,26 @@ public class FXElectricBolt extends EntityFX if (segment.next == null) { - Vector3 roundEnd = segment.end.clone().add(segment.difference.clone().normalize().scale(renderWidth)); - float rx3 = (float) (roundEnd.x - interpPosX); - float ry3 = (float) (roundEnd.y - interpPosY); - float rz3 = (float) (roundEnd.z - interpPosZ); - tessellator.addVertexWithUV(rx3 - diffNext.x, ry3 - diffNext.y, rz3 - diffNext.z, 0.0D, 0.0D); - tessellator.addVertexWithUV(rx2 - diffNext.x, ry2 - diffNext.y, rz2 - diffNext.z, 0.5D, 0.0D); - tessellator.addVertexWithUV(rx2 + diffNext.x, ry2 + diffNext.y, rz2 + diffNext.z, 0.5D, 1.0D); - tessellator.addVertexWithUV(rx3 + diffNext.x, ry3 + diffNext.y, rz3 + diffNext.z, 0.0D, 1.0D); + Vector3 roundEnd = segment.end.clone().add(segment.difference.clone().normalize().multiply(renderWidth)); + float rx3 = (float) (roundEnd.x() - interpPosX); + float ry3 = (float) (roundEnd.y() - interpPosY); + float rz3 = (float) (roundEnd.z() - interpPosZ); + tessellator.addVertexWithUV(rx3 - diffNext.x(), ry3 - diffNext.y(), rz3 - diffNext.z(), 0.0D, 0.0D); + tessellator.addVertexWithUV(rx2 - diffNext.x(), ry2 - diffNext.y(), rz2 - diffNext.z(), 0.5D, 0.0D); + tessellator.addVertexWithUV(rx2 + diffNext.x(), ry2 + diffNext.y(), rz2 + diffNext.z(), 0.5D, 1.0D); + tessellator.addVertexWithUV(rx3 + diffNext.x(), ry3 + diffNext.y(), rz3 + diffNext.z(), 0.0D, 1.0D); } if (segment.prev == null) { - Vector3 roundEnd = segment.start.clone().difference(segment.difference.clone().normalize().scale(renderWidth)); - float rx3 = (float) (roundEnd.x - interpPosX); - float ry3 = (float) (roundEnd.y - interpPosY); - float rz3 = (float) (roundEnd.z - interpPosZ); - tessellator.addVertexWithUV(rx1 - diffPrev.x, ry1 - diffPrev.y, rz1 - diffPrev.z, 0.5D, 0.0D); - tessellator.addVertexWithUV(rx3 - diffPrev.x, ry3 - diffPrev.y, rz3 - diffPrev.z, 0.0D, 0.0D); - tessellator.addVertexWithUV(rx3 + diffPrev.x, ry3 + diffPrev.y, rz3 + diffPrev.z, 0.0D, 1.0D); - tessellator.addVertexWithUV(rx1 + diffPrev.x, ry1 + diffPrev.y, rz1 + diffPrev.z, 0.5D, 1.0D); + Vector3 roundEnd = segment.start.clone().subtract(segment.difference.clone().normalize().multiply(renderWidth)); + float rx3 = (float) (roundEnd.x() - interpPosX); + float ry3 = (float) (roundEnd.y() - interpPosY); + float rz3 = (float) (roundEnd.z() - interpPosZ); + tessellator.addVertexWithUV(rx1 - diffPrev.x(), ry1 - diffPrev.y(), rz1 - diffPrev.z(), 0.5D, 0.0D); + tessellator.addVertexWithUV(rx3 - diffPrev.x(), ry3 - diffPrev.y(), rz3 - diffPrev.z(), 0.0D, 0.0D); + tessellator.addVertexWithUV(rx3 + diffPrev.x(), ry3 + diffPrev.y(), rz3 + diffPrev.z(), 0.0D, 1.0D); + tessellator.addVertexWithUV(rx1 + diffPrev.x(), ry1 + diffPrev.y(), rz1 + diffPrev.z(), 0.5D, 1.0D); } } } @@ -423,7 +418,7 @@ public class FXElectricBolt extends EntityFX this.alpha = alpha; this.id = id; this.splitID = splitID; - this.difference = this.end.clone().difference(this.start); + this.difference = this.end.clone().subtract(this.start); } public void recalculate() @@ -433,7 +428,7 @@ public class FXElectricBolt extends EntityFX Vector3 prevDiffNorm = this.prev.difference.clone().normalize(); Vector3 diffNorm = this.difference.clone().normalize(); this.prevDiff = diffNorm.clone().add(prevDiffNorm).normalize(); - this.sinPrev = Math.sin(diffNorm.anglePreNorm(prevDiffNorm.clone().scale(-1)) / 2); + this.sinPrev = Math.sin(diffNorm.anglePreNorm(prevDiffNorm.clone().multiply(-1)) / 2); } else { @@ -446,7 +441,7 @@ public class FXElectricBolt extends EntityFX Vector3 nextDiffNorm = this.next.difference.clone().normalize(); Vector3 diffNorm = this.difference.clone().normalize(); this.nextDiff = diffNorm.clone().add(nextDiffNorm).normalize(); - this.sinNext = Math.sin(diffNorm.anglePreNorm(nextDiffNorm.clone().scale(-1)) / 2); + this.sinNext = Math.sin(diffNorm.anglePreNorm(nextDiffNorm.clone().multiply(-1)) / 2); } else { diff --git a/src/main/scala/resonantinduction/electrical/tesla/BlockTesla.java b/src/main/scala/resonantinduction/electrical/tesla/BlockTesla.java deleted file mode 100644 index a64fce3eb..000000000 --- a/src/main/scala/resonantinduction/electrical/tesla/BlockTesla.java +++ /dev/null @@ -1,166 +0,0 @@ -/** - * - */ -package resonantinduction.electrical.tesla; - -import net.minecraft.block.ITileEntityProvider; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import resonant.lib.prefab.block.BlockSidedIO; -import resonant.lib.render.block.BlockRenderingHandler; -import resonant.lib.utility.LanguageUtility; -import resonant.lib.utility.LinkUtility; -import resonant.lib.utility.WrenchUtility; -import resonantinduction.core.prefab.part.MultipartUtility; -import resonantinduction.core.Reference; -import universalelectricity.api.UniversalElectricity; -import universalelectricity.api.vector.VectorWorld; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -/** - * @author Calclavia - * - */ -public class BlockTesla extends BlockSidedIO implements ITileEntityProvider -{ - public BlockTesla(int id) - { - super(id, UniversalElectricity.machine); - setTextureName(Reference.PREFIX + "material_metal_side"); - } - - @Override - public void onBlockAdded(World world, int x, int y, int z) - { - super.onBlockAdded(world, x, y, z); - TileEntity tileEntity = world.getTileEntity(x, y, z); - ((TileTesla) tileEntity).updatePositionStatus(); - } - - @Override - public boolean onMachineActivated(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ) - { - TileEntity t = world.getTileEntity(x, y, z); - TileTesla tileEntity = ((TileTesla) t).getMultiBlock().get(); - - if (entityPlayer.getCurrentEquippedItem() != null) - { - int dyeColor = MultipartUtility.isDye(entityPlayer.getCurrentEquippedItem()); - - if (dyeColor != -1) - { - tileEntity.setDye(dyeColor); - - if (!entityPlayer.capabilities.isCreativeMode) - { - entityPlayer.inventory.decrStackSize(entityPlayer.inventory.currentItem, 1); - } - - return true; - } - else if (entityPlayer.getCurrentEquippedItem().itemID == Item.redstone.itemID) - { - boolean status = tileEntity.toggleEntityAttack(); - - if (!entityPlayer.capabilities.isCreativeMode) - { - entityPlayer.inventory.decrStackSize(entityPlayer.inventory.currentItem, 1); - } - - if (!world.isRemote) - { - entityPlayer.addChatMessage(LanguageUtility.getLocal("message.tesla.toggleAttack").replace("%v", status + "")); - } - - return true; - } - } - else - { - boolean receiveMode = tileEntity.toggleReceive(); - - if (!world.isRemote) - { - entityPlayer.addChatMessage(LanguageUtility.getLocal("message.tesla.mode").replace("%v", receiveMode + "")); - } - - return true; - - } - - return false; - } - - @Override - public boolean onSneakUseWrench(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) - { - TileEntity tile = world.getTileEntity(x, y, z); - - if (tile instanceof TileTesla) - { - ItemStack itemStack = player.getCurrentEquippedItem(); - - if (WrenchUtility.isWrench(itemStack)) - { - if (((TileTesla) tile).tryLink(LinkUtility.getLink(itemStack))) - { - if (world.isRemote) - player.addChatMessage("Successfully linked devices."); - LinkUtility.clearLink(itemStack); - } - else - { - if (world.isRemote) - player.addChatMessage("Marked link for device."); - - LinkUtility.setLink(itemStack, new VectorWorld(world, x, y, z)); - } - - return true; - } - } - - return false; - } - - @Override - public void onNeighborBlockChange(World world, int x, int y, int z, int id) - { - TileEntity tile = world.getTileEntity(x, y, z); - - if (tile instanceof TileTesla) - { - ((TileTesla) tile).updatePositionStatus(); - } - } - - @Override - public TileEntity createNewTileEntity(World world) - { - return new TileTesla(); - } - - @SideOnly(Side.CLIENT) - @Override - public int getRenderType() - { - return BlockRenderingHandler.INSTANCE.getRenderId(); - } - - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - @Override - public boolean isOpaqueCube() - { - return false; - } - -} diff --git a/src/main/scala/resonantinduction/electrical/tesla/ITesla.java b/src/main/scala/resonantinduction/electrical/tesla/ITesla.java index 99da86026..72f659e38 100644 --- a/src/main/scala/resonantinduction/electrical/tesla/ITesla.java +++ b/src/main/scala/resonantinduction/electrical/tesla/ITesla.java @@ -16,7 +16,7 @@ public interface ITesla * @param doTransfer - Actually transfer * @return Energy actually transfered. */ - public long teslaTransfer(long transferEnergy, boolean doTransfer); + public double teslaTransfer(double transferEnergy, boolean doTransfer); public boolean canTeslaTransfer(TileEntity transferTile); diff --git a/src/main/scala/resonantinduction/electrical/tesla/RenderTesla.java b/src/main/scala/resonantinduction/electrical/tesla/RenderTesla.java index af183bb6f..04f3e171c 100644 --- a/src/main/scala/resonantinduction/electrical/tesla/RenderTesla.java +++ b/src/main/scala/resonantinduction/electrical/tesla/RenderTesla.java @@ -19,13 +19,13 @@ import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class RenderTesla extends TileEntitySpecialRenderer { - public static final ResourceLocation TEXTURE_BOTTOM = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "tesla_bottom.png"); - public static final ResourceLocation TEXTURE_MIDDLE = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "tesla_middle.png"); - public static final ResourceLocation TEXTURE_TOP = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "tesla_top.png"); + public static final ResourceLocation TEXTURE_BOTTOM = new ResourceLocation(Reference.domain(), Reference.modelPath() + "tesla_bottom.png"); + public static final ResourceLocation TEXTURE_MIDDLE = new ResourceLocation(Reference.domain(), Reference.modelPath() + "tesla_middle.png"); + public static final ResourceLocation TEXTURE_TOP = new ResourceLocation(Reference.domain(), Reference.modelPath() + "tesla_top.png"); - public static final IModelCustom MODEL_BOTTOM = AdvancedModelLoader.loadModel(Reference.MODEL_DIRECTORY + "teslaBottom.tcn"); - public static final IModelCustom MODEL_MIDDLE = AdvancedModelLoader.loadModel(Reference.MODEL_DIRECTORY + "teslaMiddle.tcn"); - public static final IModelCustom MODEL_TOP = AdvancedModelLoader.loadModel(Reference.MODEL_DIRECTORY + "teslaTop.tcn"); + public static final IModelCustom MODEL_BOTTOM = AdvancedModelLoader.loadModel(new ResourceLocation(Reference.domain(), Reference.modelDirectory() + "teslaBottom.tcn")); + public static final IModelCustom MODEL_MIDDLE = AdvancedModelLoader.loadModel(new ResourceLocation(Reference.domain(), Reference.modelDirectory() + "teslaMiddle.tcn")); + public static final IModelCustom MODEL_TOP = AdvancedModelLoader.loadModel(new ResourceLocation(Reference.domain(), Reference.modelDirectory() + "teslaTop.tcn")); @Override public void renderTileEntityAt(TileEntity t, double x, double y, double z, float f) diff --git a/src/main/scala/resonantinduction/electrical/tesla/TeslaGrid.java b/src/main/scala/resonantinduction/electrical/tesla/TeslaGrid.java index e7c383ddf..751d0e2f2 100644 --- a/src/main/scala/resonantinduction/electrical/tesla/TeslaGrid.java +++ b/src/main/scala/resonantinduction/electrical/tesla/TeslaGrid.java @@ -7,11 +7,8 @@ import java.util.Collections; import java.util.Iterator; import java.util.Set; import java.util.WeakHashMap; - -import net.minecraft.server.ServerListenThread; -import net.minecraft.server.ThreadMinecraftServer; import net.minecraft.tileentity.TileEntity; -import calclavia.api.mffs.fortron.IServerThread; +import resonant.api.mffs.fortron.IServerThread; /** * @author Calclavia @@ -61,7 +58,7 @@ public class TeslaGrid { Thread thr = Thread.currentThread(); - if ((thr instanceof ThreadMinecraftServer) || (thr instanceof ServerListenThread) || (thr instanceof IServerThread)) + if (thr instanceof IServerThread) { return INSTANCE_SERVER; } diff --git a/src/main/scala/resonantinduction/electrical/tesla/TileTesla.java b/src/main/scala/resonantinduction/electrical/tesla/TileTesla.java index f68f2b318..8229d7a3a 100644 --- a/src/main/scala/resonantinduction/electrical/tesla/TileTesla.java +++ b/src/main/scala/resonantinduction/electrical/tesla/TileTesla.java @@ -11,35 +11,42 @@ import java.util.List; import java.util.PriorityQueue; import java.util.Set; +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.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.packet.Packet; import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -import resonant.lib.multiblock.IMultiBlockStructure; -import resonant.lib.multiblock.MultiBlockHandler; -import resonant.lib.network.IPacketReceiver; -import resonant.lib.network.IPacketSender; -import resonant.lib.network.PacketHandler; +import resonant.lib.multiblock.reference.IMultiBlockStructure; +import resonant.lib.multiblock.reference.MultiBlockHandler; +import resonant.lib.network.discriminator.PacketTile; +import resonant.lib.network.discriminator.PacketType; +import resonant.lib.network.handle.IPacketReceiver; import resonant.lib.prefab.damage.ElectricalDamage; -import resonant.lib.prefab.tile.TileElectrical; import resonant.lib.render.EnumColor; +import resonant.lib.utility.LanguageUtility; +import resonant.lib.utility.LinkUtility; +import resonant.lib.utility.WrenchUtility; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction; import resonantinduction.core.Settings; +import resonantinduction.core.prefab.part.MultipartUtility; import resonantinduction.electrical.Electrical; -import universalelectricity.api.UniversalElectricity; -import universalelectricity.api.energy.EnergyStorageHandler; import universalelectricity.core.transform.vector.Vector3; -import universalelectricity.api.vector.VectorWorld; import com.google.common.io.ByteArrayDataInput; - -import cpw.mods.fml.common.network.PacketDispatcher; +import resonant.lib.content.prefab.java.TileElectric; +import universalelectricity.core.transform.vector.VectorWorld; /** * The Tesla TileEntity. @@ -49,10 +56,10 @@ import cpw.mods.fml.common.network.PacketDispatcher; * @author Calclavia * */ -public class TileTesla extends TileElectrical implements IMultiBlockStructure, ITesla, IPacketSender, IPacketReceiver +public class TileTesla extends TileElectric implements IMultiBlockStructure, ITesla, IPacketReceiver { public final static int DEFAULT_COLOR = 12; - public final long TRANSFER_CAP = 10000; + public final double TRANSFER_CAP = 10000D; private int dyeID = DEFAULT_COLOR; private boolean canReceive = true; @@ -65,6 +72,11 @@ public class TileTesla extends TileElectrical implements IMultiBlockStructure outputBlacklist = new HashSet(); private final Set connectedTeslas = new HashSet(); + /** + * Multiblock Methods. + */ + private MultiBlockHandler multiBlock; + /** * Quantum Tesla */ @@ -82,8 +94,13 @@ public class TileTesla extends TileElectrical implements IMultiBlockStructure 0; + boolean doPacketUpdate = energy().getEnergy() > 0; /** * Only transfer if it is the controlling Tesla tower. */ if (this.getMultiBlock().isPrimary()) { - this.produce(); - - if (this.ticks % (4 + this.worldObj.rand.nextInt(2)) == 0 && ((this.worldObj.isRemote && isTransfering) || (!this.energy.isEmpty() && !this.worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord)))) + if (this.ticks() % (4 + this.worldObj.rand.nextInt(2)) == 0 && ((this.worldObj.isRemote && isTransfering) || (!this.energy().isEmpty() && !this.worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord)))) { final TileTesla topTesla = this.getTopTelsa(); final Vector3 topTeslaVector = new Vector3(topTesla); @@ -127,18 +142,18 @@ public class TileTesla extends TileElectrical implements IMultiBlockStructure teslaToTransfer = new PriorityQueue(1024, new Comparator() + PriorityQueue teslaToTransfer = new PriorityQueue(1024, new Comparator() { public int compare(ITesla o1, ITesla o2) { @@ -164,12 +179,6 @@ public class TileTesla extends TileElectrical implements IMultiBlockStructure 0) { - long transferEnergy = this.energy.getEnergy() / teslaToTransfer.size(); + double transferEnergy = this.energy().getEnergy() / teslaToTransfer.size(); boolean sentPacket = false; @@ -208,9 +217,9 @@ public class TileTesla extends TileElectrical implements IMultiBlockStructure 0) { @@ -294,21 +289,15 @@ public class TileTesla extends TileElectrical implements IMultiBlockStructure 0); + data.add(this.energy().getEnergy() > 0); break; } } @@ -346,7 +334,7 @@ public class TileTesla extends TileElectrical implements IMultiBlockStructure 0) + if (this.energy().getEnergy() > 0) { - transferEnergy += this.energy.getEnergy(); - this.energy.setEnergy(0); + transferEnergy += this.energy().getEnergy(); + this.energy().setEnergy(0); } return getMultiBlock().get().teslaTransfer(transferEnergy, doTransfer); @@ -459,7 +447,7 @@ public class TileTesla extends TileElectrical implements IMultiBlockStructure multiBlock; + @Override public void onMultiBlockChanged() @@ -641,7 +626,7 @@ public class TileTesla extends TileElectrical implements IMultiBlockStructure getOutputDirections() - { - EnumSet dirs = super.getOutputDirections(); - dirs.remove(ForgeDirection.UP); - return dirs; - } + @Override + public boolean use(EntityPlayer entityPlayer, int side, Vector3 hit) + { + if (entityPlayer.getCurrentEquippedItem() != null) + { + int dyeColor = MultipartUtility.isDye(entityPlayer.getCurrentEquippedItem()); + + if (dyeColor != -1) + { + getMultiBlock().get().setDye(dyeColor); + + if (!entityPlayer.capabilities.isCreativeMode) + { + entityPlayer.inventory.decrStackSize(entityPlayer.inventory.currentItem, 1); + } + + return true; + } + else if (entityPlayer.getCurrentEquippedItem().getItem() == Items.redstone) + { + boolean status = getMultiBlock().get().toggleEntityAttack(); + + if (!entityPlayer.capabilities.isCreativeMode) + { + entityPlayer.inventory.decrStackSize(entityPlayer.inventory.currentItem, 1); + } + + if (!world().isRemote) + { + entityPlayer.addChatMessage(new ChatComponentText(LanguageUtility.getLocal("message.tesla.toggleAttack").replace("%v", status + ""))); + } + + return true; + } + } + else + { + boolean receiveMode = getMultiBlock().get().toggleReceive(); + + if (!world().isRemote) + { + entityPlayer.addChatMessage(new ChatComponentText(LanguageUtility.getLocal("message.tesla.mode").replace("%v", receiveMode + ""))); + } + + return true; + + } + + return false; + } + + @Override + public boolean configure(EntityPlayer player, int side, Vector3 hit) + { + ItemStack itemStack = player.getCurrentEquippedItem(); + + if (player.isSneaking()) { + if (tryLink(LinkUtility.getLink(itemStack))) { + if (world().isRemote) + player.addChatMessage(new ChatComponentText("Successfully linked devices.")); + LinkUtility.clearLink(itemStack); + } else { + if (world().isRemote) + player.addChatMessage(new ChatComponentText("Marked link for device.")); + + LinkUtility.setLink(itemStack, new VectorWorld(this)); + } + + return true; + } + return super.configure(player, side, hit); + } + + @Override + public void onNeighborChanged(Block id) + { + updatePositionStatus(); + } }