From 1a4d250a47122662c2ecb474b6f2700c8c024ebb Mon Sep 17 00:00:00 2001 From: LordMZTE Date: Fri, 21 Oct 2022 19:53:56 +0200 Subject: [PATCH] feat: start port --- .gitignore | 4 + build.gradle | 3 + .../java/atomicscience/AtomicScience.java | 675 ++++++++++++++++++ .../java/atomicscience/BAtomicAssembler.java | 48 ++ src/main/java/atomicscience/BAutoBuilder.java | 25 + src/main/java/atomicscience/BToxicWaste.java | 68 ++ src/main/java/atomicscience/ClientProxy.java | 105 +++ src/main/java/atomicscience/CommonProxy.java | 74 ++ .../java/atomicscience/MegaTNTExplusion.java | 39 + src/main/java/atomicscience/PAutoBuilder.java | 48 ++ .../java/atomicscience/PHAutoBuilder.java | 25 + src/main/java/atomicscience/SoundManager.java | 10 + .../java/atomicscience/TAtomicAssembler.java | 178 +++++ src/main/java/atomicscience/TAutoBuilder.java | 350 +++++++++ src/main/java/atomicscience/TabAS.java | 18 + src/main/java/atomicscience/accelerator.ogg | Bin 0 -> 18839 bytes src/main/java/atomicscience/alarm.ogg | Bin 0 -> 29849 bytes src/main/java/atomicscience/antimatter.ogg | Bin 0 -> 71881 bytes .../java/atomicscience/api/AtomicScience.java | 17 + .../atomicscience/api/BlockRadioactive.java | 141 ++++ .../atomicscience/api/IAntiPoisonArmor.java | 14 + .../atomicscience/api/IAntiPoisonBlock.java | 9 + .../atomicscience/api/IElectromagnet.java | 8 + .../atomicscience/api/IFissileMaterial.java | 8 + .../java/atomicscience/api/IHeatSource.java | 6 + src/main/java/atomicscience/api/IReactor.java | 7 + .../atomicscience/api/ISteamReceptor.java | 7 + .../java/atomicscience/api/ITemperature.java | 9 + src/main/java/atomicscience/api/Plasma.java | 17 + .../java/atomicscience/api/poison/Poison.java | 77 ++ .../api/poison/PoisonRadiation.java | 66 ++ .../api/poison/PotionRadiation.java | 38 + src/main/java/atomicscience/assembler.ogg | Bin 0 -> 468193 bytes .../atomicscience/fanwusu/BAccelerator.java | 34 + .../fanwusu/BFulminationGenerator.java | 18 + .../atomicscience/fanwusu/CAccelerator.java | 77 ++ .../java/atomicscience/fanwusu/EMatter.java | 316 ++++++++ .../fanwusu/FulminationEventHandler.java | 59 ++ .../fanwusu/ItAntimatterCell.java | 192 +++++ .../atomicscience/fanwusu/TAccelerator.java | 242 +++++++ .../fanwusu/TFulminationGenerator.java | 35 + .../atomicscience/fenlie/BCentrifuge.java | 52 ++ .../atomicscience/fenlie/BControlRod.java | 32 + .../atomicscience/fenlie/BFissionReactor.java | 98 +++ .../atomicscience/fenlie/BNuclearBoiler.java | 51 ++ .../atomicscience/fenlie/BReactorTap.java | 56 ++ .../java/atomicscience/fenlie/BSiren.java | 75 ++ .../atomicscience/fenlie/BUraniumOre.java | 47 ++ .../atomicscience/fenlie/CCentrifuge.java | 98 +++ .../atomicscience/fenlie/ItRadioactive.java | 21 + .../atomicscience/fenlie/ItStrangeMatter.java | 15 + .../java/atomicscience/fenlie/ItUranium.java | 37 + .../atomicscience/fenlie/TCentrifuge.java | 236 ++++++ .../atomicscience/fenlie/TFissionReactor.java | 430 +++++++++++ .../atomicscience/fenlie/TNuclearBoiler.java | 260 +++++++ .../atomicscience/fenlie/TReactorTap.java | 142 ++++ .../atomicscience/hecheng/BElectromagnet.java | 42 ++ .../hecheng/BElectromagnetGlass.java | 56 ++ .../atomicscience/hecheng/BFusionReactor.java | 63 ++ .../java/atomicscience/hecheng/BPlasma.java | 161 +++++ .../hecheng/CChemicalExtractor.java | 109 +++ .../atomicscience/hecheng/CNuclearBoiler.java | 108 +++ .../atomicscience/hecheng/IBAccelerator.java | 16 + .../java/atomicscience/hecheng/IBPlasma.java | 16 + .../java/atomicscience/hecheng/IBSiren.java | 16 + .../atomicscience/hecheng/TElectromagnet.java | 61 ++ .../atomicscience/hecheng/TFusionReactor.java | 209 ++++++ src/main/java/atomicscience/jiqi/BBase.java | 40 ++ .../atomicscience/jiqi/BBaseRotatable.java | 35 + .../jiqi/BChemicalExtractor.java | 49 ++ src/main/java/atomicscience/jiqi/BFunnel.java | 44 ++ .../java/atomicscience/jiqi/BThermometer.java | 111 +++ .../java/atomicscience/jiqi/BTurbine.java | 60 ++ .../java/atomicscience/jiqi/CAssembler.java | 87 +++ .../atomicscience/jiqi/ItHazmatSuite.java | 45 ++ .../atomicscience/jiqi/ItThermometer.java | 98 +++ .../jiqi/TChemicalExtractor.java | 245 +++++++ src/main/java/atomicscience/jiqi/TFunnel.java | 102 +++ .../java/atomicscience/jiqi/TInventory.java | 143 ++++ .../java/atomicscience/jiqi/TThermometer.java | 117 +++ .../java/atomicscience/jiqi/TTurbine.java | 275 +++++++ .../muoxing/MAtomicAssembler.java | 369 ++++++++++ .../atomicscience/muoxing/MCentrifuge.java | 132 ++++ .../java/atomicscience/muoxing/MCube.java | 24 + .../atomicscience/muoxing/MExtractor.java | 131 ++++ .../atomicscience/muoxing/MFusionReactor.java | 227 ++++++ .../atomicscience/muoxing/MLargeTurbine.java | 408 +++++++++++ .../atomicscience/muoxing/MNuclearBoiler.java | 132 ++++ .../muoxing/MReactorCellBottom.java | 186 +++++ .../muoxing/MReactorCellMiddle.java | 154 ++++ .../muoxing/MReactorCellTop.java | 280 ++++++++ .../java/atomicscience/muoxing/MTurbine.java | 221 ++++++ .../java/atomicscience/muoxing/MUnused.java | 159 +++++ .../render/RAtomicAssembler.java | 44 ++ .../atomicscience/render/RCentrifuge.java | 51 ++ .../java/atomicscience/render/RExtractor.java | 50 ++ .../atomicscience/render/RFusionReactor.java | 36 + src/main/java/atomicscience/render/RH.java | 74 ++ .../java/atomicscience/render/RMatter.java | 87 +++ .../atomicscience/render/RNuclearBoiler.java | 56 ++ .../atomicscience/render/RReactorCell.java | 67 ++ .../atomicscience/render/RThermometer.java | 101 +++ .../java/atomicscience/render/RTurbine.java | 47 ++ .../shimian/CFissionReactor.java | 56 ++ .../atomicscience/shimian/GAccelerator.java | 89 +++ .../shimian/GAtomicAssembler.java | 62 ++ .../atomicscience/shimian/GAutoBuilder.java | 81 +++ .../java/atomicscience/shimian/GBase.java | 156 ++++ .../atomicscience/shimian/GCentrifuge.java | 69 ++ .../shimian/GChemicalReactor.java | 58 ++ .../shimian/GFissionReactor.java | 74 ++ .../atomicscience/shimian/GNuclearBoiler.java | 70 ++ src/main/java/atomicscience/strangematter.ogg | Bin 0 -> 61451 bytes src/main/java/atomicscience/turbine.ogg | Bin 0 -> 19907 bytes src/main/java/atomicscience/wujian/ItAS.java | 12 + .../atomicscience/wujian/ItBreederFuel.java | 25 + .../java/atomicscience/wujian/ItCell.java | 7 + .../atomicscience/wujian/ItElectricAS.java | 12 + .../atomicscience/wujian/ItFissileFuel.java | 77 ++ src/main/java/calclavia/lib/Calclavia.java | 32 + .../java/calclavia/lib/CalculationHelper.java | 111 +++ src/main/java/calclavia/lib/IPlayerUsing.java | 8 + .../calclavia/lib/IUniversalEnergyTile.java | 7 + .../lib/TileEntityUniversalProducer.java | 25 + .../lib/TileEntityUniversalRunnable.java | 28 + .../lib/TileEntityUniversalStorable.java | 28 + .../java/calclavia/lib/UniversalRecipes.java | 102 +++ .../java/calclavia/lib/gui/ContainerBase.java | 96 +++ .../calclavia/lib/gui/GuiContainerBase.java | 296 ++++++++ .../java/calclavia/lib/gui/GuiScreenBase.java | 271 +++++++ .../java/calclavia/lib/gui/GuiSlotType.java | 23 + .../lib/render/CalclaviaRenderHelper.java | 111 +++ .../java/calclavia/lib/render/ITagRender.java | 9 + .../lib/render/RenderTaggedTile.java | 64 ++ src/main/java/icbm/api/IAmmunition.java | 10 + src/main/java/icbm/api/IBlockFrequency.java | 9 + src/main/java/icbm/api/ICBM.java | 41 ++ src/main/java/icbm/api/ICBMFlags.java | 15 + .../java/icbm/api/ICamouflageMaterial.java | 5 + src/main/java/icbm/api/IHackable.java | 10 + src/main/java/icbm/api/IItemFrequency.java | 10 + .../java/icbm/api/ILauncherContainer.java | 13 + .../java/icbm/api/ILauncherController.java | 28 + src/main/java/icbm/api/IMissile.java | 26 + src/main/java/icbm/api/IMissileLockable.java | 11 + src/main/java/icbm/api/LauncherType.java | 14 + src/main/java/icbm/api/RadarRegistry.java | 110 +++ .../icbm/api/explosion/ExplosionEvent.java | 36 + .../java/icbm/api/explosion/IEMPBlock.java | 10 + .../java/icbm/api/explosion/IEMPItem.java | 11 + .../java/icbm/api/explosion/IExplosive.java | 23 + .../api/explosion/IExplosiveContainer.java | 8 + .../icbm/api/explosion/IExplosiveIgnore.java | 8 + .../assets/atomicscience/sounds.json | 56 ++ 154 files changed, 12574 insertions(+) create mode 100644 src/main/java/atomicscience/AtomicScience.java create mode 100644 src/main/java/atomicscience/BAtomicAssembler.java create mode 100644 src/main/java/atomicscience/BAutoBuilder.java create mode 100644 src/main/java/atomicscience/BToxicWaste.java create mode 100644 src/main/java/atomicscience/ClientProxy.java create mode 100644 src/main/java/atomicscience/CommonProxy.java create mode 100644 src/main/java/atomicscience/MegaTNTExplusion.java create mode 100644 src/main/java/atomicscience/PAutoBuilder.java create mode 100644 src/main/java/atomicscience/PHAutoBuilder.java create mode 100644 src/main/java/atomicscience/SoundManager.java create mode 100644 src/main/java/atomicscience/TAtomicAssembler.java create mode 100644 src/main/java/atomicscience/TAutoBuilder.java create mode 100644 src/main/java/atomicscience/TabAS.java create mode 100644 src/main/java/atomicscience/accelerator.ogg create mode 100644 src/main/java/atomicscience/alarm.ogg create mode 100644 src/main/java/atomicscience/antimatter.ogg create mode 100644 src/main/java/atomicscience/api/AtomicScience.java create mode 100644 src/main/java/atomicscience/api/BlockRadioactive.java create mode 100644 src/main/java/atomicscience/api/IAntiPoisonArmor.java create mode 100644 src/main/java/atomicscience/api/IAntiPoisonBlock.java create mode 100644 src/main/java/atomicscience/api/IElectromagnet.java create mode 100644 src/main/java/atomicscience/api/IFissileMaterial.java create mode 100644 src/main/java/atomicscience/api/IHeatSource.java create mode 100644 src/main/java/atomicscience/api/IReactor.java create mode 100644 src/main/java/atomicscience/api/ISteamReceptor.java create mode 100644 src/main/java/atomicscience/api/ITemperature.java create mode 100644 src/main/java/atomicscience/api/Plasma.java create mode 100644 src/main/java/atomicscience/api/poison/Poison.java create mode 100644 src/main/java/atomicscience/api/poison/PoisonRadiation.java create mode 100644 src/main/java/atomicscience/api/poison/PotionRadiation.java create mode 100644 src/main/java/atomicscience/assembler.ogg create mode 100644 src/main/java/atomicscience/fanwusu/BAccelerator.java create mode 100644 src/main/java/atomicscience/fanwusu/BFulminationGenerator.java create mode 100644 src/main/java/atomicscience/fanwusu/CAccelerator.java create mode 100644 src/main/java/atomicscience/fanwusu/EMatter.java create mode 100644 src/main/java/atomicscience/fanwusu/FulminationEventHandler.java create mode 100644 src/main/java/atomicscience/fanwusu/ItAntimatterCell.java create mode 100644 src/main/java/atomicscience/fanwusu/TAccelerator.java create mode 100644 src/main/java/atomicscience/fanwusu/TFulminationGenerator.java create mode 100644 src/main/java/atomicscience/fenlie/BCentrifuge.java create mode 100644 src/main/java/atomicscience/fenlie/BControlRod.java create mode 100644 src/main/java/atomicscience/fenlie/BFissionReactor.java create mode 100644 src/main/java/atomicscience/fenlie/BNuclearBoiler.java create mode 100644 src/main/java/atomicscience/fenlie/BReactorTap.java create mode 100644 src/main/java/atomicscience/fenlie/BSiren.java create mode 100644 src/main/java/atomicscience/fenlie/BUraniumOre.java create mode 100644 src/main/java/atomicscience/fenlie/CCentrifuge.java create mode 100644 src/main/java/atomicscience/fenlie/ItRadioactive.java create mode 100644 src/main/java/atomicscience/fenlie/ItStrangeMatter.java create mode 100644 src/main/java/atomicscience/fenlie/ItUranium.java create mode 100644 src/main/java/atomicscience/fenlie/TCentrifuge.java create mode 100644 src/main/java/atomicscience/fenlie/TFissionReactor.java create mode 100644 src/main/java/atomicscience/fenlie/TNuclearBoiler.java create mode 100644 src/main/java/atomicscience/fenlie/TReactorTap.java create mode 100644 src/main/java/atomicscience/hecheng/BElectromagnet.java create mode 100644 src/main/java/atomicscience/hecheng/BElectromagnetGlass.java create mode 100644 src/main/java/atomicscience/hecheng/BFusionReactor.java create mode 100644 src/main/java/atomicscience/hecheng/BPlasma.java create mode 100644 src/main/java/atomicscience/hecheng/CChemicalExtractor.java create mode 100644 src/main/java/atomicscience/hecheng/CNuclearBoiler.java create mode 100644 src/main/java/atomicscience/hecheng/IBAccelerator.java create mode 100644 src/main/java/atomicscience/hecheng/IBPlasma.java create mode 100644 src/main/java/atomicscience/hecheng/IBSiren.java create mode 100644 src/main/java/atomicscience/hecheng/TElectromagnet.java create mode 100644 src/main/java/atomicscience/hecheng/TFusionReactor.java create mode 100644 src/main/java/atomicscience/jiqi/BBase.java create mode 100644 src/main/java/atomicscience/jiqi/BBaseRotatable.java create mode 100644 src/main/java/atomicscience/jiqi/BChemicalExtractor.java create mode 100644 src/main/java/atomicscience/jiqi/BFunnel.java create mode 100644 src/main/java/atomicscience/jiqi/BThermometer.java create mode 100644 src/main/java/atomicscience/jiqi/BTurbine.java create mode 100644 src/main/java/atomicscience/jiqi/CAssembler.java create mode 100644 src/main/java/atomicscience/jiqi/ItHazmatSuite.java create mode 100644 src/main/java/atomicscience/jiqi/ItThermometer.java create mode 100644 src/main/java/atomicscience/jiqi/TChemicalExtractor.java create mode 100644 src/main/java/atomicscience/jiqi/TFunnel.java create mode 100644 src/main/java/atomicscience/jiqi/TInventory.java create mode 100644 src/main/java/atomicscience/jiqi/TThermometer.java create mode 100644 src/main/java/atomicscience/jiqi/TTurbine.java create mode 100644 src/main/java/atomicscience/muoxing/MAtomicAssembler.java create mode 100644 src/main/java/atomicscience/muoxing/MCentrifuge.java create mode 100644 src/main/java/atomicscience/muoxing/MCube.java create mode 100644 src/main/java/atomicscience/muoxing/MExtractor.java create mode 100644 src/main/java/atomicscience/muoxing/MFusionReactor.java create mode 100644 src/main/java/atomicscience/muoxing/MLargeTurbine.java create mode 100644 src/main/java/atomicscience/muoxing/MNuclearBoiler.java create mode 100644 src/main/java/atomicscience/muoxing/MReactorCellBottom.java create mode 100644 src/main/java/atomicscience/muoxing/MReactorCellMiddle.java create mode 100644 src/main/java/atomicscience/muoxing/MReactorCellTop.java create mode 100644 src/main/java/atomicscience/muoxing/MTurbine.java create mode 100644 src/main/java/atomicscience/muoxing/MUnused.java create mode 100644 src/main/java/atomicscience/render/RAtomicAssembler.java create mode 100644 src/main/java/atomicscience/render/RCentrifuge.java create mode 100644 src/main/java/atomicscience/render/RExtractor.java create mode 100644 src/main/java/atomicscience/render/RFusionReactor.java create mode 100644 src/main/java/atomicscience/render/RH.java create mode 100644 src/main/java/atomicscience/render/RMatter.java create mode 100644 src/main/java/atomicscience/render/RNuclearBoiler.java create mode 100644 src/main/java/atomicscience/render/RReactorCell.java create mode 100644 src/main/java/atomicscience/render/RThermometer.java create mode 100644 src/main/java/atomicscience/render/RTurbine.java create mode 100644 src/main/java/atomicscience/shimian/CFissionReactor.java create mode 100644 src/main/java/atomicscience/shimian/GAccelerator.java create mode 100644 src/main/java/atomicscience/shimian/GAtomicAssembler.java create mode 100644 src/main/java/atomicscience/shimian/GAutoBuilder.java create mode 100644 src/main/java/atomicscience/shimian/GBase.java create mode 100644 src/main/java/atomicscience/shimian/GCentrifuge.java create mode 100644 src/main/java/atomicscience/shimian/GChemicalReactor.java create mode 100644 src/main/java/atomicscience/shimian/GFissionReactor.java create mode 100644 src/main/java/atomicscience/shimian/GNuclearBoiler.java create mode 100644 src/main/java/atomicscience/strangematter.ogg create mode 100644 src/main/java/atomicscience/turbine.ogg create mode 100644 src/main/java/atomicscience/wujian/ItAS.java create mode 100644 src/main/java/atomicscience/wujian/ItBreederFuel.java create mode 100644 src/main/java/atomicscience/wujian/ItCell.java create mode 100644 src/main/java/atomicscience/wujian/ItElectricAS.java create mode 100644 src/main/java/atomicscience/wujian/ItFissileFuel.java create mode 100644 src/main/java/calclavia/lib/Calclavia.java create mode 100644 src/main/java/calclavia/lib/CalculationHelper.java create mode 100644 src/main/java/calclavia/lib/IPlayerUsing.java create mode 100644 src/main/java/calclavia/lib/IUniversalEnergyTile.java create mode 100644 src/main/java/calclavia/lib/TileEntityUniversalProducer.java create mode 100644 src/main/java/calclavia/lib/TileEntityUniversalRunnable.java create mode 100644 src/main/java/calclavia/lib/TileEntityUniversalStorable.java create mode 100644 src/main/java/calclavia/lib/UniversalRecipes.java create mode 100644 src/main/java/calclavia/lib/gui/ContainerBase.java create mode 100644 src/main/java/calclavia/lib/gui/GuiContainerBase.java create mode 100644 src/main/java/calclavia/lib/gui/GuiScreenBase.java create mode 100644 src/main/java/calclavia/lib/gui/GuiSlotType.java create mode 100644 src/main/java/calclavia/lib/render/CalclaviaRenderHelper.java create mode 100644 src/main/java/calclavia/lib/render/ITagRender.java create mode 100644 src/main/java/calclavia/lib/render/RenderTaggedTile.java create mode 100644 src/main/java/icbm/api/IAmmunition.java create mode 100644 src/main/java/icbm/api/IBlockFrequency.java create mode 100644 src/main/java/icbm/api/ICBM.java create mode 100644 src/main/java/icbm/api/ICBMFlags.java create mode 100644 src/main/java/icbm/api/ICamouflageMaterial.java create mode 100644 src/main/java/icbm/api/IHackable.java create mode 100644 src/main/java/icbm/api/IItemFrequency.java create mode 100644 src/main/java/icbm/api/ILauncherContainer.java create mode 100644 src/main/java/icbm/api/ILauncherController.java create mode 100644 src/main/java/icbm/api/IMissile.java create mode 100644 src/main/java/icbm/api/IMissileLockable.java create mode 100644 src/main/java/icbm/api/LauncherType.java create mode 100644 src/main/java/icbm/api/RadarRegistry.java create mode 100644 src/main/java/icbm/api/explosion/ExplosionEvent.java create mode 100644 src/main/java/icbm/api/explosion/IEMPBlock.java create mode 100644 src/main/java/icbm/api/explosion/IEMPItem.java create mode 100644 src/main/java/icbm/api/explosion/IExplosive.java create mode 100644 src/main/java/icbm/api/explosion/IExplosiveContainer.java create mode 100644 src/main/java/icbm/api/explosion/IExplosiveIgnore.java create mode 100644 src/main/resources/assets/atomicscience/sounds.json diff --git a/.gitignore b/.gitignore index 8d16946..b629d71 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +bin +.classpath +.project +.settings .gradle .idea build diff --git a/build.gradle b/build.gradle index ee53ffc..6c93b29 100644 --- a/build.gradle +++ b/build.gradle @@ -17,6 +17,9 @@ buildscript { apply plugin: 'forge' +sourceCompatibility = JavaVersion.VERSION_1_8 +targetCompatibility = JavaVersion.VERSION_1_8 + version = "1.0" group= "modgroup" archivesBaseName = "modid" diff --git a/src/main/java/atomicscience/AtomicScience.java b/src/main/java/atomicscience/AtomicScience.java new file mode 100644 index 0000000..af5a540 --- /dev/null +++ b/src/main/java/atomicscience/AtomicScience.java @@ -0,0 +1,675 @@ +package atomicscience; + +import atomicscience.api.BlockRadioactive; +import atomicscience.api.ISteamReceptor; +import atomicscience.api.Plasma; +import atomicscience.api.poison.PoisonRadiation; +import atomicscience.api.poison.PotionRadiation; +import atomicscience.fanwusu.BAccelerator; +import atomicscience.fanwusu.BFulminationGenerator; +import atomicscience.fanwusu.EMatter; +import atomicscience.fanwusu.FulminationEventHandler; +import atomicscience.fanwusu.ItAntimatterCell; +import atomicscience.fanwusu.TAccelerator; +import atomicscience.fanwusu.TFulminationGenerator; +import atomicscience.fenlie.BCentrifuge; +import atomicscience.fenlie.BControlRod; +import atomicscience.fenlie.BFissionReactor; +import atomicscience.fenlie.BNuclearBoiler; +import atomicscience.fenlie.BReactorTap; +import atomicscience.fenlie.BSiren; +import atomicscience.fenlie.BUraniumOre; +import atomicscience.fenlie.ItRadioactive; +import atomicscience.fenlie.ItStrangeMatter; +import atomicscience.fenlie.ItUranium; +import atomicscience.fenlie.TCentrifuge; +import atomicscience.fenlie.TFissionReactor; +import atomicscience.fenlie.TNuclearBoiler; +import atomicscience.fenlie.TReactorTap; +import atomicscience.hecheng.BElectromagnet; +import atomicscience.hecheng.BElectromagnetGlass; +import atomicscience.hecheng.BFusionReactor; +import atomicscience.hecheng.BPlasma; +import atomicscience.hecheng.IBAccelerator; +import atomicscience.hecheng.IBPlasma; +import atomicscience.hecheng.IBSiren; +import atomicscience.hecheng.TElectromagnet; +import atomicscience.hecheng.TFusionReactor; +import atomicscience.jiqi.BChemicalExtractor; +import atomicscience.jiqi.BFunnel; +import atomicscience.jiqi.BThermometer; +import atomicscience.jiqi.BTurbine; +import atomicscience.jiqi.ItHazmatSuite; +import atomicscience.jiqi.ItThermometer; +import atomicscience.jiqi.TChemicalExtractor; +import atomicscience.jiqi.TFunnel; +import atomicscience.jiqi.TThermometer; +import atomicscience.jiqi.TTurbine; +import atomicscience.wujian.ItBreederFuel; +import atomicscience.wujian.ItCell; +import atomicscience.wujian.ItFissileFuel; +import calclavia.lib.UniversalRecipes; +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.Mod.Metadata; +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.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.network.NetworkRegistry; +import cpw.mods.fml.common.registry.EntityRegistry; +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import java.util.Arrays; +import java.util.logging.Logger; +import net.minecraft.block.Block; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemArmor.ArmorMaterial; +import net.minecraft.item.ItemBucket; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.client.event.TextureStitchEvent.Post; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.common.ForgeChunkManager.Ticket; +import net.minecraftforge.common.ForgeChunkManager.Type; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.config.Configuration; +import net.minecraftforge.common.util.EnumHelper; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidContainerRegistry.FluidContainerData; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.oredict.OreDictionary; +import net.minecraftforge.oredict.ShapedOreRecipe; +import net.minecraftforge.oredict.ShapelessOreRecipe; +import universalelectricity.core.item.ElectricItemHelper; +import universalelectricity.core.item.ItemElectric; +import universalelectricity.core.vector.Vector3; +import universalelectricity.prefab.TranslationHelper; +import universalelectricity.prefab.ore.OreGenBase; +import universalelectricity.prefab.ore.OreGenReplaceStone; +import universalelectricity.prefab.ore.OreGenerator; + +@Mod(modid = "AtomicScience", name = "Atomic Science", version = "0.6.2", + dependencies = "required-after:basiccomponents") +public class AtomicScience { + public static Configuration CONFIGURATION = + new Configuration(Loader.instance().getConfigDir(), "AtomicScience.cfg"); + public static final String ID = "AtomicScience"; + public static final String CHANNEL = "AtomicScience"; + public static final String PREFIX = "atomicscience:"; + @Instance("AtomicScience") public static AtomicScience instance; + @SidedProxy(clientSide = "atomicscience.ClientProxy", + serverSide = "atomicscience.CommonProxy") + public static CommonProxy proxy; + @Metadata("AtomicScience") public static ModMetadata metadata; + public static final String WEN_JIAN_NO_SLASH = "atomicscience/"; + public static final String WEN_JIAN = "/atomicscience/"; + public static final String DIR = "/mods/atomicscience/"; + public static final String TEXTURE_WEN_JIAN = "/mods/atomicscience/textures/"; + public static final String SHI_MIAN_WEN_JIAN = + "/mods/atomicscience/textures/gui/"; + public static final String BLOCK_WEN_JIAN = + "/mods/atomicscience/textures/blocks/"; + public static final String ITEM_WEN_JIAN = + "/mods/atomicscience/textures/items/"; + public static final String MODEL_WEN_JIAN = + "/mods/atomicscience/textures/models/"; + // private static final String YU_YAN_WEN_JIAN = "/mods/atomicscience/yuyan/"; + private static final String[] YU_YAN = new String[] {"en_US"}; + public static float WOLUN_MULTIPLIER_OUTPUT = 30.0F; + public static boolean ALLOW_LAYERED_TURBINES = true; + public static boolean ALLOW_TOXIC_WASTE = true; + public static boolean ALLOW_RADIOACTIVE_ORES = true; + public static final int BLOCK_ID_PREFIX = 3768; + public static final int ENTITY_ID_PREFIX = 49; + public static Block blockRadioactive; + public static Block bCentrifuge; + public static Block bTurbine; + public static Block bNuclearBoiler; + public static Block bControlRod; + public static Block bThermometer; + public static Block bFusionReactor; + public static BPlasma bPlasma; + public static Block bElectromagnet; + public static Block bChemicalExtractor; + public static Block bSiren; + public static Block bElectromagnetGlass; + public static Block bFunnel; + public static Block bAccelerator; + public static Block bAutoBuilder; + public static Block bFulminationGenerator; + public static Block bAtomicAssembler; + public static Block bFissionReactor; + public static Block bReactorTap; + public static final int ITEM_ID_PREFIX = 13768; + public static Item itCell; + public static Item itCellUranium; + public static Item itCellBreederFuel; + public static Item itCellStrangeMatter; + public static Item itCellAntimatter; + public static Item itCellDeuterium; + public static Item itCellWater; + public static Item itBucketToxic; + public static Block bUraniumOre; + public static Item itYellowcake; + public static Item itUranium; + public static ItemElectric itWenDuBiao; + public static Item itHazmatHelmet; + public static Item itHazmatChestplate; + public static Item itHazmanLeggings; + public static Item itHazmatBoots; + public static Block bToxicWaste; + public static Fluid FLUID_URANIUM_HEXAFLOURIDE; + public static Fluid FLUID_STEAM; + public static Fluid FLUID_TOXIC_WASTE; + public static final ArmorMaterial hazmatArmorMaterial = + EnumHelper.addArmorMaterial("HAZMAT", 0, new int[] {0, 0, 0, 0}, 0); + public static OreGenBase uraniumOreGeneration; + public static int URANIUM_HEXAFLOURIDE_RATIO = 200; + public static int STEAM_RATIO = 40; + // public static final String QIZI_FAN_WU_SU_BAO_ZHA = + // FlagRegistry.registerFlag("ban_antimatter_power"); + public static final Logger LOGGER = Logger.getLogger("AtomicScience"); + + @EventHandler + public void preInit(FMLPreInitializationEvent event) { + instance = this; + MinecraftForge.EVENT_BUS.register(this); + AtomicScience.CONFIGURATION.load(); + WOLUN_MULTIPLIER_OUTPUT = (float)AtomicScience.CONFIGURATION + .get("general", "Turbine Output Multiplier", + (double)WOLUN_MULTIPLIER_OUTPUT) + .getDouble((double)WOLUN_MULTIPLIER_OUTPUT); + ALLOW_LAYERED_TURBINES = + AtomicScience.CONFIGURATION + .get("general", "Allow Layered Turbines", ALLOW_LAYERED_TURBINES) + .getBoolean(ALLOW_LAYERED_TURBINES); + ALLOW_TOXIC_WASTE = + AtomicScience.CONFIGURATION + .get("general", "Allow Toxic Waste", ALLOW_TOXIC_WASTE) + .getBoolean(ALLOW_TOXIC_WASTE); + ALLOW_RADIOACTIVE_ORES = + AtomicScience.CONFIGURATION + .get("general", "Allow Radioactive Ores", ALLOW_RADIOACTIVE_ORES) + .getBoolean(ALLOW_RADIOACTIVE_ORES); + PoisonRadiation.disabled = + AtomicScience.CONFIGURATION + .get("general", "Disable Radiation", PoisonRadiation.disabled) + .getBoolean(PoisonRadiation.disabled); + URANIUM_HEXAFLOURIDE_RATIO = + AtomicScience.CONFIGURATION + .get("general", "Uranium Hexafluoride Ratio", + URANIUM_HEXAFLOURIDE_RATIO) + .getInt(URANIUM_HEXAFLOURIDE_RATIO); + STEAM_RATIO = + AtomicScience.CONFIGURATION.get("general", "Steam Ratio", STEAM_RATIO) + .getInt(STEAM_RATIO); + PotionRadiation.INSTANCE.getId(); + blockRadioactive = (new BlockRadioactive() + .setBlockName("atomicscience:radioactive") + .setCreativeTab(TabAS.INSTANCE)); + bUraniumOre = new BUraniumOre(); + bCentrifuge = new BCentrifuge(); + bFissionReactor = new BFissionReactor(); + bTurbine = new BTurbine(); + bNuclearBoiler = new BNuclearBoiler(); + bControlRod = new BControlRod(); + bThermometer = new BThermometer(); + bFusionReactor = new BFusionReactor(); + bPlasma = new BPlasma(); + bElectromagnet = new BElectromagnet(); + bChemicalExtractor = new BChemicalExtractor(); + bSiren = new BSiren(); + bElectromagnetGlass = new BElectromagnetGlass(); + bFunnel = new BFunnel(); + bAccelerator = new BAccelerator(); + bAutoBuilder = new BAutoBuilder(); + bFulminationGenerator = new BFulminationGenerator(); + bAtomicAssembler = new BAtomicAssembler(); + bReactorTap = new BReactorTap(); + itHazmatHelmet = + (new ItHazmatSuite( + + hazmatArmorMaterial, proxy.getArmorIndex("hazmat"), 0)) + .setUnlocalizedName("atomicscience:hazmatMask"); + itHazmatChestplate = (new ItHazmatSuite(hazmatArmorMaterial, + proxy.getArmorIndex("hazmat"), 1)) + .setUnlocalizedName("atomicscience:hazmatBody"); + itHazmanLeggings = (new ItHazmatSuite(hazmatArmorMaterial, + proxy.getArmorIndex("hazmat"), 2)) + .setUnlocalizedName("atomicscience:hazmatLeggings"); + itHazmatBoots = (new ItHazmatSuite(hazmatArmorMaterial, + proxy.getArmorIndex("hazmat"), 3)) + .setUnlocalizedName("atomicscience:hazmatBoots"); + itWenDuBiao = new ItThermometer(1); + itCell = new ItCell("cellEmpty"); + itCellUranium = new ItFissileFuel(); + itCellDeuterium = new ItCell("cellDeuterium"); + itCellStrangeMatter = new ItStrangeMatter(); + itCellAntimatter = new ItAntimatterCell(); + itCellWater = new ItCell("cellWater"); + itCellBreederFuel = new ItBreederFuel(); + itYellowcake = new ItRadioactive("yellowcake"); + itUranium = new ItUranium(0); + FLUID_URANIUM_HEXAFLOURIDE = getOrRegisterFluid("uranium_hexafluoride"); + FLUID_STEAM = getOrRegisterFluid("steam"); + FLUID_TOXIC_WASTE = getOrRegisterFluid("toxic_waste"); + bToxicWaste = + (new BToxicWaste("toxicWaste")).setCreativeTab((CreativeTabs)null); + itBucketToxic = (new ItemBucket(bToxicWaste)) + .setCreativeTab(TabAS.INSTANCE) + .setUnlocalizedName("atomicscience:bucketToxicWaste") + .setContainerItem(Items.bucket); + FluidContainerRegistry.registerFluidContainer(new FluidContainerData( + new FluidStack(FLUID_TOXIC_WASTE, 1000), new ItemStack(itBucketToxic), + new ItemStack(Items.bucket))); + NetworkRegistry.INSTANCE.registerGuiHandler(this, proxy); + GameRegistry.registerBlock(blockRadioactive, "blockRadioactive"); + GameRegistry.registerBlock(bUraniumOre, "bUraniumOre"); + GameRegistry.registerBlock(bCentrifuge, "bCentrifuge"); + GameRegistry.registerBlock(bFissionReactor, "bFissionReactor"); + GameRegistry.registerBlock(bTurbine, "bTurbine"); + GameRegistry.registerBlock(bNuclearBoiler, "bNuclearBoiler"); + GameRegistry.registerBlock(bControlRod, "bControlRod"); + GameRegistry.registerBlock(bThermometer, "bThermometer"); + GameRegistry.registerBlock(bFusionReactor, "bFusionReactor"); + GameRegistry.registerBlock(bPlasma, IBPlasma.class, "bPlasma"); + GameRegistry.registerBlock(bElectromagnet, "bElectromagnet"); + GameRegistry.registerBlock(bChemicalExtractor, "bChemicalExtractor"); + GameRegistry.registerBlock(bSiren, IBSiren.class, "bSiren"); + GameRegistry.registerBlock(bElectromagnetGlass, "bElectromagnetGlass"); + GameRegistry.registerBlock(bFunnel, "bFunnel"); + GameRegistry.registerBlock(bAccelerator, IBAccelerator.class, + "bAccelerator"); + GameRegistry.registerBlock(bAutoBuilder, "bAutoBuilder"); + GameRegistry.registerBlock(bFulminationGenerator, "bFulminationGenerator"); + GameRegistry.registerBlock(bAtomicAssembler, "bAtomicAssembler"); + GameRegistry.registerBlock(bToxicWaste, "bToxicWaste"); + GameRegistry.registerBlock(bReactorTap, "bReactorTap"); + uraniumOreGeneration = new OreGenReplaceStone("Uranium Ore", "oreUranium", + new ItemStack(bUraniumOre), 0, + 25, 9, 3, "pickaxe", 2); + if (OreDictionary.getOres("oreUranium").size() > 1 && + AtomicScience.CONFIGURATION + .get("general", "Auto Disable Uranium If Exist", false) + .getBoolean(false)) { + LOGGER.fine( + "Disabled Uranium Generation. Detected another uranium being generated: " + + OreDictionary.getOres("oreUranium").size()); + } else { + uraniumOreGeneration.enable(AtomicScience.CONFIGURATION); + OreGenerator.addOre(uraniumOreGeneration); + LOGGER.fine("Added Atomic Science uranium to ore generator."); + } + + AtomicScience.CONFIGURATION.save(); + MinecraftForge.EVENT_BUS.register(itCellAntimatter); + MinecraftForge.EVENT_BUS.register(FulminationEventHandler.INSTANCE); + OreDictionary.registerOre("ingotUranium", itUranium); + OreDictionary.registerOre("breederUranium", new ItemStack(itUranium, 1, 1)); + OreDictionary.registerOre("blockRadioactive", blockRadioactive); + OreDictionary.registerOre("cellEmpty", itCell); + OreDictionary.registerOre("cellUranium", itCellUranium); + OreDictionary.registerOre("cellDeuterium", itCellDeuterium); + OreDictionary.registerOre("cellWater", itCellWater); + OreDictionary.registerOre("strangeMatter", itCellStrangeMatter); + OreDictionary.registerOre("antimatterMilligram", + new ItemStack(itCellAntimatter, 1, 0)); + OreDictionary.registerOre("antimatterGram", + new ItemStack(itCellAntimatter, 1, 1)); + FluidContainerRegistry.registerFluidContainer(new FluidContainerData( + new FluidStack(FluidRegistry.WATER, 1000), new ItemStack(itCellWater), + new ItemStack(itCell))); + ForgeChunkManager.setForcedChunkLoadingCallback(this, (tickets, world) -> { + for (Ticket ticket : tickets) { + if (ticket.getType() == Type.ENTITY && ticket.getEntity() != null && + ticket.getEntity() instanceof EMatter) { + ((EMatter)ticket.getEntity()).youPiao = ticket; + } + } + }); + Plasma.blockPlasma = bPlasma; + GameRegistry.registerTileEntity(TCentrifuge.class, "ASCentrifuge"); + GameRegistry.registerTileEntity(TFusionReactor.class, "ASFusionReactor"); + GameRegistry.registerTileEntity(TTurbine.class, "ASTurbine"); + GameRegistry.registerTileEntity(TNuclearBoiler.class, "ASNuclearBoiler"); + GameRegistry.registerTileEntity(TThermometer.class, "ASThermometer"); + GameRegistry.registerTileEntity(TElectromagnet.class, "ASElectromagnet"); + GameRegistry.registerTileEntity(TChemicalExtractor.class, + "ASChemicalExtractor"); + GameRegistry.registerTileEntity(TFunnel.class, "ASFunnel"); + GameRegistry.registerTileEntity(TAccelerator.class, "ASAccelerator"); + GameRegistry.registerTileEntity(TFulminationGenerator.class, + "ASFulminationGenerator"); + GameRegistry.registerTileEntity(TAtomicAssembler.class, + "ASAtomicAssembler"); + GameRegistry.registerTileEntity(TAutoBuilder.class, "ASAutoBuilder"); + GameRegistry.registerTileEntity(TFissionReactor.class, "ASFissionReactor"); + GameRegistry.registerTileEntity(TReactorTap.class, "ASReactorTap"); + proxy.preInit(); + } + + @EventHandler + public void load(FMLInitializationEvent evt) { + metadata.modId = "AtomicScience"; + metadata.name = "Atomic Science"; + metadata.description = + "Electricity generation is always a burden. That\'s why we are here to bring in high tech nuclear power to solve all your electricity-lack problems. With our fission reactors, fusion reactors, and antimatter generators, you won\'t be lacking electricity ever again!"; + metadata.url = "http://www.universalelectricity.com/atomicscience"; + metadata.logoFile = "/as_logo.png"; + metadata.version = "0.6.2.117"; + metadata.authorList = Arrays.asList(new String[] {"Calclavia"}); + metadata.credits = "Please visit the website."; + metadata.autogenerated = false; + LOGGER.fine( + "Loaded Languages: " + + TranslationHelper.loadLanguages("/mods/atomicscience/yuyan/", YU_YAN)); + } + + @EventHandler + public void postInit(FMLPostInitializationEvent event) { + UniversalRecipes.init(); + if (Loader.isModLoaded("IC2")) { + OreDictionary.registerOre("cellEmpty", itCell); + GameRegistry.addRecipe(new ShapelessOreRecipe( + itYellowcake, GameRegistry.findItem("IC2", "reactorUraniumSimple"))); + Item ic2FluidCell = GameRegistry.findItem("IC2", "itemFluidCell"); + GameRegistry.addRecipe(new ShapelessOreRecipe(ic2FluidCell, itCell)); + GameRegistry.addRecipe(new ShapelessOreRecipe(itCell, "cellEmpty")); + } + + GameRegistry.addRecipe(new ShapelessOreRecipe( + new ItemStack(itCellAntimatter, 1, 1), itCellAntimatter, + itCellAntimatter, itCellAntimatter, itCellAntimatter, itCellAntimatter, + itCellAntimatter, itCellAntimatter, itCellAntimatter)); + GameRegistry.addRecipe(new ShapelessOreRecipe( + new ItemStack(itCellAntimatter, 8, 0), + new Object[] {new ItemStack(itCellAntimatter, 1, 1)})); + GameRegistry.addRecipe(new ShapedOreRecipe( + new ItemStack(bFunnel, 2), " B ", "B B", "B B", 'B', "ingotBronze")); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(bFunnel, 2), " B ", + "B B", "B B", 'B', "ingotIron")); + GameRegistry.addRecipe(new ShapedOreRecipe( + bAtomicAssembler, "CCC", "SXS", "SSS", 'X', bCentrifuge, 'C', + "calclavia:CIRCUIT_T3", 'S', "plateSteel")); + GameRegistry.addRecipe(new ShapedOreRecipe( + bFulminationGenerator, "OSO", "SCS", "OSO", 'O', Blocks.obsidian, 'C', + "calclavia:CIRCUIT_T2", 'S', "plateSteel")); + GameRegistry.addRecipe(new ShapedOreRecipe( + bAccelerator, "SCS", "CMC", "SCS", 'M', "calclavia:MOTOR", 'C', + "calclavia:CIRCUIT_T3", 'S', "plateSteel")); + GameRegistry.addRecipe(new ShapelessOreRecipe( + bElectromagnetGlass, new Object[] {bElectromagnet, Blocks.glass})); + GameRegistry.addRecipe(new ShapedOreRecipe( + bCentrifuge, + new Object[] {"BSB", "MCM", "BSB", Character.valueOf('C'), + "calclavia:CIRCUIT_T2", Character.valueOf('S'), + "plateSteel", Character.valueOf('B'), "ingotBronze", + Character.valueOf('M'), "calclavia:MOTOR"})); + GameRegistry.addRecipe(new ShapedOreRecipe( + bNuclearBoiler, + new Object[] {"S S", "FBF", "SMS", Character.valueOf('F'), + Blocks.furnace, Character.valueOf('S'), "plateSteel", + Character.valueOf('B'), Items.bucket, + Character.valueOf('M'), "calclavia:MOTOR"})); + GameRegistry.addRecipe(new ShapedOreRecipe( + bChemicalExtractor, + new Object[] {"BSB", "MCM", "BSB", Character.valueOf('C'), + "calclavia:CIRCUIT_T3", Character.valueOf('S'), + "plateSteel", Character.valueOf('B'), "ingotBronze", + Character.valueOf('M'), "calclavia:MOTOR"})); + GameRegistry.addRecipe(new ShapedOreRecipe( + new ItemStack(bSiren, 2), + new Object[] {"NPN", Character.valueOf('N'), Blocks.noteblock, + Character.valueOf('P'), "plateBronze"})); + GameRegistry.addRecipe(new ShapedOreRecipe( + bFissionReactor, + new Object[] {"SCS", "MEM", "SCS", Character.valueOf('E'), "cellEmpty", + Character.valueOf('C'), "calclavia:CIRCUIT_T2", + Character.valueOf('S'), "plateSteel", + Character.valueOf('M'), "calclavia:MOTOR"})); + GameRegistry.addRecipe(new ShapedOreRecipe( + bFusionReactor, + new Object[] {"CPC", "PFP", "CPC", Character.valueOf('P'), "plateSteel", + Character.valueOf('F'), bFissionReactor, + Character.valueOf('C'), "calclavia:CIRCUIT_T3"})); + GameRegistry.addRecipe(new ShapedOreRecipe( + bTurbine, new Object[] {" B ", "BMB", " B ", Character.valueOf('B'), + "plateBronze", Character.valueOf('M'), + "calclavia:MOTOR"})); + GameRegistry.addRecipe(new ShapedOreRecipe( + bReactorTap, + new Object[] {"SBS", "TMT", "SBS", Character.valueOf('S'), + "plateBronze", Character.valueOf('T'), "ingotBronze", + Character.valueOf('M'), "calclavia:MOTOR", + Character.valueOf('B'), Items.bucket})); + GameRegistry.addRecipe(new ShapedOreRecipe( + new ItemStack(itCell, 16), + new Object[] {" T ", "TGT", " T ", Character.valueOf('T'), "ingotTin", + Character.valueOf('G'), Blocks.glass})); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(itCellWater), + itCell, Items.water_bucket)); + GameRegistry.addRecipe(new ShapedOreRecipe( + ElectricItemHelper.getUncharged(new ItemStack(itWenDuBiao)), + new Object[] {"SSS", "GCG", "GSG", Character.valueOf('S'), "ingotSteel", + Character.valueOf('G'), Blocks.glass, + Character.valueOf('C'), "calclavia:CIRCUIT_T1"})); + GameRegistry.addRecipe(new ShapedOreRecipe( + bThermometer, new Object[] {"SSS", "SWS", "SSS", Character.valueOf('S'), + "ingotSteel", Character.valueOf('W'), + ElectricItemHelper.getUncharged( + new ItemStack(itWenDuBiao))})); + GameRegistry.addRecipe(new ShapedOreRecipe( + bControlRod, new Object[] {"I", "I", "I", Character.valueOf('I'), + Items.iron_ingot})); + GameRegistry.addRecipe(new ShapedOreRecipe( + itCellUranium, + new Object[] {"CUC", "CUC", "CUC", Character.valueOf('U'), + "ingotUranium", Character.valueOf('C'), "cellEmpty"})); + GameRegistry.addRecipe(new ShapedOreRecipe( + itCellBreederFuel, + new Object[] {"CUC", "CUC", "CUC", Character.valueOf('U'), + "breederUranium", Character.valueOf('C'), "cellEmpty"})); + GameRegistry.addRecipe(new ShapedOreRecipe( + new ItemStack(bElectromagnet, 2), + new Object[] {"BBB", "BMB", "BBB", Character.valueOf('B'), + "ingotBronze", Character.valueOf('M'), + "calclavia:MOTOR"})); + GameRegistry.addRecipe(new ShapedOreRecipe( + new ItemStack(bElectromagnet, 2), + new Object[] {"BBB", "BMB", "BBB", Character.valueOf('B'), "ingotIron", + Character.valueOf('M'), "calclavia:MOTOR"})); + GameRegistry.addRecipe(new ShapedOreRecipe( + itHazmatHelmet, + new Object[] {"SSS", "BAB", "SCS", Character.valueOf('A'), + Items.leather_helmet, Character.valueOf('C'), + "calclavia:CIRCUIT_T1", Character.valueOf('S'), + Blocks.wool})); + GameRegistry.addRecipe(new ShapedOreRecipe( + itHazmatChestplate, + new Object[] {"SSS", "BAB", "SCS", Character.valueOf('A'), + Items.leather, Character.valueOf('C'), + "calclavia:CIRCUIT_T1", Character.valueOf('S'), + Blocks.wool})); + GameRegistry.addRecipe(new ShapedOreRecipe( + itHazmanLeggings, + new Object[] {"SSS", "BAB", "SCS", Character.valueOf('A'), + Items.leather_leggings, Character.valueOf('C'), + "calclavia:CIRCUIT_T1", Character.valueOf('S'), + Blocks.wool})); + GameRegistry.addRecipe(new ShapedOreRecipe( + itHazmatBoots, + new Object[] {"SSS", "BAB", "SCS", Character.valueOf('A'), + Items.leather_boots, Character.valueOf('C'), + "calclavia:CIRCUIT_T1", Character.valueOf('S'), + Blocks.wool})); + EntityRegistry.registerGlobalEntityID( + EMatter.class, "ASParticle", EntityRegistry.findGlobalUniqueEntityId()); + EntityRegistry.registerModEntity(EMatter.class, "ASParticle", 49, this, 80, + 3, true); + proxy.init(); + AtomicScience.CONFIGURATION.load(); + if (Loader.isModLoaded("IC2") && + AtomicScience.CONFIGURATION + .get("general", "Disable IC2 Uranium Compression (Recommended)", + true) + .getBoolean(true)) { + try { + // TODO: WTF + // if (Recipes.compressor != null) { + // Map e = Recipes.compressor.getRecipes(); + // Iterator it = e.entrySet().iterator(); + // int i = 0; + + // while (it.hasNext()) { + // Entry entry = (Entry)it.next(); + // if (isUraniumOre((ItemStack)entry.getKey())) { + // ++i; + // it.remove(); + // } + // } + + // LOGGER.fine( + // "Removed " + i + + // " IC2 uranium compression recipe, use centrifuge instead."); + // } + } catch (Exception var6) { + LOGGER.fine("Failed to remove IC2 compressor recipes."); + var6.printStackTrace(); + } + } + + AtomicScience.CONFIGURATION.save(); + } + + public static boolean isCell(ItemStack itemStack) { + return is(itemStack, "cellEmpty"); + } + + public static boolean isCellWater(ItemStack itemStack) { + return is(itemStack, "cellWater"); + } + + public static boolean isUraniumOre(ItemStack itemStack) { + return is(itemStack, "dropUranium", "oreUranium"); + } + + public static boolean isFusionFuel(ItemStack itemStack) { + return is(itemStack, "molecule_1d", "molecule_1h2", "cellDeuterium"); + } + + public static boolean is(ItemStack itemStack, String... names) { + if (itemStack != null && names != null && names.length > 0) { + String name = OreDictionary.getOreName(OreDictionary.getOreID(itemStack)); + String[] arr$ = names; + int len$ = names.length; + + for (int i$ = 0; i$ < len$; ++i$) { + String compareName = arr$[i$]; + if (name.equals(compareName)) { + return true; + } + } + } + + return false; + } + + public static void boilWater(World worldObj, Vector3 pos, int height, + int rpm) { + Block blockID = pos.getBlock(worldObj); + if (blockID == Blocks.flowing_water || blockID == Blocks.water) { + if (!ALLOW_LAYERED_TURBINES) { + height = 1; + } + + if (worldObj.rand.nextInt(80) == 0) { + worldObj.playSoundEffect( + pos.x + 0.5D, pos.y + 0.5D, pos.z + 0.5D, "liquid.lava", 0.5F, + 2.1F + (worldObj.rand.nextFloat() - worldObj.rand.nextFloat()) * + 0.85F); + } + + if (worldObj.rand.nextInt(40) == 0) { + worldObj.playSoundEffect( + pos.x + 0.5D, pos.y + 0.5D, pos.z + 0.5D, "liquid.lavapop", 0.5F, + 2.6F + + (worldObj.rand.nextFloat() - worldObj.rand.nextFloat()) * 0.8F); + } + + worldObj.spawnParticle("bubble", pos.x + 0.5D, + pos.y + 0.20000000298023224D, pos.z + 0.5D, 0.0D, + 0.0D, 0.0D); + if (worldObj.rand.nextInt(5) == 0) { + worldObj.spawnParticle("smoke", pos.x + 0.5D, pos.y + 0.5D, + pos.z + 0.5D, 0.0D, 0.0D, 0.0D); + } + + for (int i = 1; i <= height; ++i) { + TileEntity tileEntity = + worldObj.getTileEntity(pos.intX(), pos.intY() + i, pos.intZ()); + if (tileEntity != null && tileEntity instanceof ISteamReceptor) { + ((ISteamReceptor)tileEntity).onReceiveSteam(rpm); + rpm /= 2; + } + } + } + } + + @SubscribeEvent + @SideOnly(Side.CLIENT) + public void textureHook(Post event) { + // TODO: WTF + // if (event.map == Minecraft.getMinecraft().renderEngine.field_94155_m) { + + FLUID_URANIUM_HEXAFLOURIDE.setIcons( + event.map.registerIcon("atomicscience:uraniumHexafluoride")); + // TODO: might override railcraft icon? + FLUID_STEAM.setIcons(event.map.registerIcon("atomicscience:steam")); + FLUID_TOXIC_WASTE.setIcons( + event.map.registerIcon("atomicscience:toxicWaste")); + } + + // TODO: WTF + // @EventHandler public void serverStarting(FMLServerStartingEvent event) { + // FlagRegistry.registerModFlag( + // "ModFlags", new ModFlag(NBTFileLoader.loadData("ModFlags"))); + // ICommandManager commandManager = FMLCommonHandler.instance() + // .getMinecraftServerInstance() + // .getCommandManager(); + // ServerCommandManager serverCommandManager = + // (ServerCommandManager)commandManager; + // serverCommandManager.registerCommand( + // new CommandFlag(FlagRegistry.getModFlag("ModFlags"))); + // } + + // TODO: WTF + // @ForgeSubscribe + // public void worldSave(Save evt) { + // if (!evt.world.isRemote) { + // NBTFileLoader.saveData("ModFlags", + // FlagRegistry.getModFlag("ModFlags").getNBT()); + // } + // } + + public static int getLiquidAmount(FluidStack liquid) { + return liquid != null ? liquid.amount : 0; + } + + static Fluid getOrRegisterFluid(String id) { + FluidRegistry.registerFluid(new Fluid(id)); + + return FluidRegistry.getFluid(id); + } +} diff --git a/src/main/java/atomicscience/BAtomicAssembler.java b/src/main/java/atomicscience/BAtomicAssembler.java new file mode 100644 index 0000000..6a3a172 --- /dev/null +++ b/src/main/java/atomicscience/BAtomicAssembler.java @@ -0,0 +1,48 @@ +package atomicscience; + +import atomicscience.jiqi.BBase; +import atomicscience.render.RH; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class BAtomicAssembler extends BBase { + + public BAtomicAssembler() { + super("atomicAssembler"); + } + + @Override + public boolean onMachineActivated(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer, int side, float hitX, float hitY, float hitZ) { + par1World.getBlockMetadata(x, y, z); + if(!par1World.isRemote) { + par5EntityPlayer.openGui(AtomicScience.instance, CommonProxy.GuiType.GOU_CHENG.ordinal(), par1World, x, y, z); + return true; + } else { + return true; + } + } + + @Override + public TileEntity createNewTileEntity(World var1, int meta) { + return new TAtomicAssembler(); + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderType() { + return RH.BLOCK_RENDER_ID; + } +} diff --git a/src/main/java/atomicscience/BAutoBuilder.java b/src/main/java/atomicscience/BAutoBuilder.java new file mode 100644 index 0000000..ad42e76 --- /dev/null +++ b/src/main/java/atomicscience/BAutoBuilder.java @@ -0,0 +1,25 @@ +package atomicscience; + +import atomicscience.jiqi.BBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class BAutoBuilder extends BBase { + public static final int BAN_JING = 30; + + public BAutoBuilder() { + super("instantBuilder"); + } + + @Override + public boolean onMachineActivated(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer, int side, float hitX, float hitY, float hitZ) { + par5EntityPlayer.openGui(AtomicScience.instance, -1, par1World, x, y, z); + return true; + } + + @Override + public TileEntity createNewTileEntity(World var1, int meta) { + return new TAutoBuilder(); + } +} diff --git a/src/main/java/atomicscience/BToxicWaste.java b/src/main/java/atomicscience/BToxicWaste.java new file mode 100644 index 0000000..9896515 --- /dev/null +++ b/src/main/java/atomicscience/BToxicWaste.java @@ -0,0 +1,68 @@ +package atomicscience; + +import atomicscience.api.poison.PoisonRadiation; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import java.util.Random; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.util.DamageSource; +import net.minecraft.world.World; +import net.minecraftforge.fluids.BlockFluidClassic; +import universalelectricity.core.vector.Vector3; + +public class BToxicWaste extends BlockFluidClassic { + public BToxicWaste(String name) { + super(AtomicScience.FLUID_TOXIC_WASTE, Material.water); + this.setBlockName("atomicscience:" + name); + this.setCreativeTab(TabAS.INSTANCE); + this.setHardness(100.0F); + this.setLightOpacity(3); + } + + @Override + public int tickRate(World par1World) { + return 20; + } + + @Override + public void randomDisplayTick(World par1World, int x, int y, int z, + Random par5Random) { + super.randomDisplayTick(par1World, x, y, z, par5Random); + if (par5Random.nextInt(100) == 0) { + double d5 = (double)((float)x + par5Random.nextFloat()); + double d7 = (double)y + this.maxY; + double d6 = (double)((float)z + par5Random.nextFloat()); + par1World.spawnParticle("suspended", d5, d7, d6, 0.0D, 0.0D, 0.0D); + par1World.playSound(d5, d7, d6, "liquid.lavapop", + 0.2F + par5Random.nextFloat() * 0.2F, + 0.9F + par5Random.nextFloat() * 0.15F, false); + } + + if (par5Random.nextInt(200) == 0) { + par1World.playSound((double)x, (double)y, (double)z, "liquid.lava", + 0.2F + par5Random.nextFloat() * 0.2F, + 0.9F + par5Random.nextFloat() * 0.15F, false); + } + } + + @Override + public void onEntityCollidedWithBlock(World par1World, int x, int y, int z, + Entity entity) { + if (entity instanceof EntityLiving) { + entity.attackEntityFrom(DamageSource.wither, 3); + PoisonRadiation.INSTANCE.poisonEntity( + new Vector3((double)x, (double)y, (double)z), (EntityLiving)entity, + 4); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.blockIcon = iconRegister.registerIcon("atomicscience:toxicWaste"); + AtomicScience.FLUID_TOXIC_WASTE.setIcons(this.blockIcon); + } +} diff --git a/src/main/java/atomicscience/ClientProxy.java b/src/main/java/atomicscience/ClientProxy.java new file mode 100644 index 0000000..29dcfa5 --- /dev/null +++ b/src/main/java/atomicscience/ClientProxy.java @@ -0,0 +1,105 @@ +package atomicscience; + +import atomicscience.fanwusu.EMatter; +import atomicscience.fanwusu.TAccelerator; +import atomicscience.fenlie.TCentrifuge; +import atomicscience.fenlie.TFissionReactor; +import atomicscience.fenlie.TNuclearBoiler; +import atomicscience.hecheng.TFusionReactor; +import atomicscience.jiqi.TChemicalExtractor; +import atomicscience.jiqi.TThermometer; +import atomicscience.jiqi.TTurbine; +import atomicscience.render.RAtomicAssembler; +import atomicscience.render.RCentrifuge; +import atomicscience.render.RExtractor; +import atomicscience.render.RFusionReactor; +import atomicscience.render.RH; +import atomicscience.render.RMatter; +import atomicscience.render.RNuclearBoiler; +import atomicscience.render.RReactorCell; +import atomicscience.render.RThermometer; +import atomicscience.render.RTurbine; +import atomicscience.shimian.GAccelerator; +import atomicscience.shimian.GAtomicAssembler; +import atomicscience.shimian.GAutoBuilder; +import atomicscience.shimian.GCentrifuge; +import atomicscience.shimian.GChemicalReactor; +import atomicscience.shimian.GFissionReactor; +import atomicscience.shimian.GNuclearBoiler; +import cpw.mods.fml.client.registry.ClientRegistry; +import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class ClientProxy extends CommonProxy { + + public void preInit() { + RenderingRegistry.registerBlockHandler(new RH()); + } + + public int getArmorIndex(String armor) { + return RenderingRegistry.addNewArmourRendererPrefix(armor); + } + + public void init() { + super.init(); + ClientRegistry.bindTileEntitySpecialRenderer(TCentrifuge.class, + new RCentrifuge()); + ClientRegistry.bindTileEntitySpecialRenderer(TFusionReactor.class, + new RFusionReactor()); + ClientRegistry.bindTileEntitySpecialRenderer(TNuclearBoiler.class, + new RNuclearBoiler()); + ClientRegistry.bindTileEntitySpecialRenderer(TTurbine.class, + new RTurbine()); + ClientRegistry.bindTileEntitySpecialRenderer(TThermometer.class, + new RThermometer()); + ClientRegistry.bindTileEntitySpecialRenderer(TChemicalExtractor.class, + new RExtractor()); + ClientRegistry.bindTileEntitySpecialRenderer(TAtomicAssembler.class, + new RAtomicAssembler()); + ClientRegistry.bindTileEntitySpecialRenderer(TFissionReactor.class, + new RReactorCell()); + RenderingRegistry.registerEntityRenderingHandler(EMatter.class, + new RMatter()); + } + + public Object getClientGuiElement(int ID, EntityPlayer player, World world, + int x, int y, int z) { + TileEntity tileEntity = world.getTileEntity(x, y, z); + if (tileEntity != null && ID < CommonProxy.GuiType.values().length) { + if (tileEntity instanceof TAutoBuilder) { + return new GAutoBuilder(tileEntity); + } + + if (tileEntity instanceof TCentrifuge) { + return new GCentrifuge(player.inventory, (TCentrifuge)tileEntity); + } + + if (tileEntity instanceof TChemicalExtractor) { + return new GChemicalReactor(player.inventory, + (TChemicalExtractor)tileEntity); + } + + if (tileEntity instanceof TAccelerator) { + return new GAccelerator(player.inventory, (TAccelerator)tileEntity); + } + + if (tileEntity instanceof TAtomicAssembler) { + return new GAtomicAssembler(player.inventory, + (TAtomicAssembler)tileEntity); + } + + if (tileEntity instanceof TNuclearBoiler) { + return new GNuclearBoiler(player.inventory, (TNuclearBoiler)tileEntity); + } + + if (tileEntity instanceof TFissionReactor) { + return new GFissionReactor(player.inventory, + (TFissionReactor)tileEntity); + } + } + + return null; + } +} diff --git a/src/main/java/atomicscience/CommonProxy.java b/src/main/java/atomicscience/CommonProxy.java new file mode 100644 index 0000000..c1a1408 --- /dev/null +++ b/src/main/java/atomicscience/CommonProxy.java @@ -0,0 +1,74 @@ +package atomicscience; + +import atomicscience.fanwusu.CAccelerator; +import atomicscience.fanwusu.TAccelerator; +import atomicscience.fenlie.CCentrifuge; +import atomicscience.fenlie.TCentrifuge; +import atomicscience.fenlie.TFissionReactor; +import atomicscience.fenlie.TNuclearBoiler; +import atomicscience.hecheng.CChemicalExtractor; +import atomicscience.hecheng.CNuclearBoiler; +import atomicscience.jiqi.CAssembler; +import atomicscience.jiqi.TChemicalExtractor; +import atomicscience.shimian.CFissionReactor; +import cpw.mods.fml.common.network.IGuiHandler; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class CommonProxy implements IGuiHandler { + + public void preInit() {} + + public void init() {} + + public int getArmorIndex(String armor) { return 0; } + + public Object getClientGuiElement(int ID, EntityPlayer player, World world, + int x, int y, int z) { + return null; + } + + public Object getServerGuiElement(int ID, EntityPlayer player, World world, + int x, int y, int z) { + TileEntity tileEntity = world.getTileEntity(x, y, z); + if (tileEntity != null && ID < CommonProxy.GuiType.values().length && + ID >= 0) { + if (tileEntity instanceof TCentrifuge) { + return new CCentrifuge(player.inventory, (TCentrifuge)tileEntity); + } + + if (tileEntity instanceof TChemicalExtractor) { + return new CChemicalExtractor(player.inventory, + (TChemicalExtractor)tileEntity); + } + + if (tileEntity instanceof TAccelerator) { + return new CAccelerator(player.inventory, (TAccelerator)tileEntity); + } + + if (tileEntity instanceof TAtomicAssembler) { + return new CAssembler(player.inventory, (TAtomicAssembler)tileEntity); + } + + if (tileEntity instanceof TNuclearBoiler) { + return new CNuclearBoiler(player.inventory, (TNuclearBoiler)tileEntity); + } + + if (tileEntity instanceof TFissionReactor) { + return new CFissionReactor(player, (TFissionReactor)tileEntity); + } + } + + return null; + } + + public static enum GuiType { + + CENTRIFUGE, + DAO_CHOU_QI, + JIA_SU_QI, + GOU_CHENG, + HE_QI; + } +} diff --git a/src/main/java/atomicscience/MegaTNTExplusion.java b/src/main/java/atomicscience/MegaTNTExplusion.java new file mode 100644 index 0000000..78e604d --- /dev/null +++ b/src/main/java/atomicscience/MegaTNTExplusion.java @@ -0,0 +1,39 @@ +package atomicscience; + +import java.util.Random; +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.init.Blocks; +import net.minecraft.world.ChunkPosition; +import net.minecraft.world.Explosion; +import net.minecraft.world.World; + +public class MegaTNTExplusion extends Explosion { + + private Random explosionRAND = new Random(); + private World worldObj; + + public MegaTNTExplusion(World world, Entity par2Entity, double par3, + double par5, double par7, float par9) { + super(world, par2Entity, par3, par5, par7, par9); + this.worldObj = world; + super.isFlaming = true; + } + + @Override + public void doExplosionB(boolean par1) { + super.doExplosionB(par1); + for (Object chunkposition_obj : super.affectedBlockPositions) { + ChunkPosition chunkposition = (ChunkPosition) chunkposition_obj; + Block id = this.worldObj.getBlock(chunkposition.chunkPosX, + chunkposition.chunkPosY, + chunkposition.chunkPosZ); + if (id == Blocks.air && id.isOpaqueCube() && + this.explosionRAND.nextInt(3) == 0) { + this.worldObj.setBlock(chunkposition.chunkPosX, chunkposition.chunkPosY, + chunkposition.chunkPosZ, + AtomicScience.blockRadioactive); + } + } + } +} diff --git a/src/main/java/atomicscience/PAutoBuilder.java b/src/main/java/atomicscience/PAutoBuilder.java new file mode 100644 index 0000000..74d9830 --- /dev/null +++ b/src/main/java/atomicscience/PAutoBuilder.java @@ -0,0 +1,48 @@ +package atomicscience; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.ByteBufInputStream; +import io.netty.buffer.ByteBufOutputStream; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import net.minecraft.nbt.CompressedStreamTools; +import net.minecraft.nbt.NBTTagCompound; +import universalelectricity.core.vector.Vector3; + +public class PAutoBuilder implements IMessage { + public Vector3 pos; + public TAutoBuilder.AutoBuilderType type; + public int radius; + + @Override + public void fromBytes(ByteBuf buf) { + try { + NBTTagCompound nbt = CompressedStreamTools.read( + new DataInputStream(new ByteBufInputStream(buf))); + + this.pos = Vector3.readFromNBT(nbt.getCompoundTag("pos")); + this.type = TAutoBuilder.AutoBuilderType.get(nbt.getInteger("type")); + this.radius = nbt.getInteger("radius"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void toBytes(ByteBuf buf) { + NBTTagCompound nbt = new NBTTagCompound(); + + nbt.setTag("pos", this.pos.writeToNBT(new NBTTagCompound())); + nbt.setInteger("type", this.type.ordinal()); + nbt.setInteger("radius", this.radius); + + try { + CompressedStreamTools.write( + nbt, new DataOutputStream(new ByteBufOutputStream(buf))); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/atomicscience/PHAutoBuilder.java b/src/main/java/atomicscience/PHAutoBuilder.java new file mode 100644 index 0000000..b3a7332 --- /dev/null +++ b/src/main/java/atomicscience/PHAutoBuilder.java @@ -0,0 +1,25 @@ +package atomicscience; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class PHAutoBuilder implements IMessageHandler { + + @Override + public IMessage onMessage(PAutoBuilder packet, MessageContext ctx) { + World world = ctx.getServerHandler().playerEntity.worldObj; + + TileEntity te = packet.pos.getTileEntity(world); + if (!(te instanceof TAutoBuilder)) + return null; + + TAutoBuilder ab = (TAutoBuilder)te; + + ab.onActivatePacket(packet.type, packet.radius); + + return null; + } +} diff --git a/src/main/java/atomicscience/SoundManager.java b/src/main/java/atomicscience/SoundManager.java new file mode 100644 index 0000000..4e48355 --- /dev/null +++ b/src/main/java/atomicscience/SoundManager.java @@ -0,0 +1,10 @@ +package atomicscience; + +public class SoundManager { + public static final String ANTIMATTER = "atomicscience:antimatter"; + public static final String STRANGE_MATTER = "atomicscience:strangematter"; + public static final String ALARM = "atomicscience:alarm"; + public static final String ACCELERATOR = "atomicscience:accelerator"; + public static final String TURBINE = "atomicscience:turbine"; + public static final String ASSEMBLER = "atomicscience:assembler"; +} diff --git a/src/main/java/atomicscience/TAtomicAssembler.java b/src/main/java/atomicscience/TAtomicAssembler.java new file mode 100644 index 0000000..b74e04a --- /dev/null +++ b/src/main/java/atomicscience/TAtomicAssembler.java @@ -0,0 +1,178 @@ +package atomicscience; + +import atomicscience.jiqi.TInventory; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import universalelectricity.core.UniversalElectricity; +import universalelectricity.core.electricity.ElectricityPack; + +public class TAtomicAssembler extends TInventory { + + public final int SMELTING_TICKS = 1200; + public final float DIAN = 10000.0F; + public int smeltingTicks = 0; + public float rotationYaw1; + public float rotationYaw2; + public float rotationYaw3; + public EntityItem entityItem; + + public void updateEntity() { + super.updateEntity(); + if (!this.isDisabled()) { + if (!this.worldObj.isRemote) { + if (this.canWork()) { + double var10000 = super.wattsReceived; + this.getClass(); + if (var10000 >= 10000.0D) { + if (this.smeltingTicks == 0) { + this.getClass(); + this.smeltingTicks = 1200; + } + + if (this.smeltingTicks > 0) { + --this.smeltingTicks; + if (this.smeltingTicks < 1) { + this.work(); + this.smeltingTicks = 0; + } + } else { + this.smeltingTicks = 0; + } + + super.wattsReceived = 0.0D; + } + } else { + this.smeltingTicks = 0; + } + + if (super.ticks % 10L == 0L) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, + this.zCoord); + } + } + + if (this.worldObj.isRemote && this.smeltingTicks > 0) { + if (super.ticks % 600L == 0L) { + this.worldObj.playSoundEffect( + (double)this.xCoord, (double)this.yCoord, (double)this.zCoord, + SoundManager.ASSEMBLER, 0.7F, 1.0F); + } + + this.rotationYaw1 += 3.0F; + this.rotationYaw2 += 2.0F; + ++this.rotationYaw3; + ItemStack var3 = this.getStackInSlot(6); + if (var3 != null) { + var3 = var3.copy(); + var3.stackSize = 1; + if (this.entityItem == null) { + this.entityItem = + new EntityItem(this.worldObj, 0.0D, 0.0D, 0.0D, var3); + } else if (!var3.isItemEqual(this.entityItem.getEntityItem())) { + this.entityItem = + new EntityItem(this.worldObj, 0.0D, 0.0D, 0.0D, var3); + } + + ++this.entityItem.age; + } else { + this.entityItem = null; + } + } + } + } + + public ElectricityPack getRequest() { + return this.canWork() + ? new ElectricityPack(10000.0D / this.getVoltage(), this.getVoltage()) + : new ElectricityPack(); + } + + @Override + public void onDataPacket(NetworkManager arg0, + S35PacketUpdateTileEntity arg1) { + NBTTagCompound nbt = arg1.func_148857_g(); + + this.smeltingTicks = nbt.getInteger("smeltingTicks"); + super.disabledTicks = nbt.getInteger("disabledTicks"); + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + + nbt.setInteger("smeltingTicks", this.smeltingTicks); + nbt.setInteger("disabledTicks", super.disabledTicks); + + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, + this.getBlockMetadata(), nbt); + } + + public void openInventory() { + if (!this.worldObj.isRemote) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + } + } + + public boolean canWork() { + if (super.containingItems[6] != null) { + for (int i = 0; i < 6; ++i) { + if (super.containingItems[i] == null) { + return false; + } + + if (super.containingItems[i].getItem() != + AtomicScience.itCellStrangeMatter) { + return false; + } + } + + return super.containingItems[6].stackSize < 64; + } else { + return false; + } + } + + public void work() { + if (this.canWork()) { + for (int i = 0; i < 5; ++i) { + if (super.containingItems[i] != null) { + super.containingItems[i].setItemDamage( + super.containingItems[i].getItemDamage() + 1); + if (super.containingItems[i].getItemDamage() >= 64) { + super.containingItems[i] = null; + } + } + } + + if (super.containingItems[6] != null) { + ++super.containingItems[6].stackSize; + } + } + } + + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.smeltingTicks = nbt.getInteger("smeltingTicks"); + } + + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("smeltingTicks", this.smeltingTicks); + } + + public double getVoltage() { + return UniversalElectricity.isVoltageSensitive ? 480.0D : 120.0D; + } + + public int getSizeInventory() { return 7; } + + public boolean isItemValidForSlot(int slotID, ItemStack itemStack) { + return slotID == 6 + ? true + : itemStack.getItem() == AtomicScience.itCellStrangeMatter; + } +} diff --git a/src/main/java/atomicscience/TAutoBuilder.java b/src/main/java/atomicscience/TAutoBuilder.java new file mode 100644 index 0000000..d9c1af0 --- /dev/null +++ b/src/main/java/atomicscience/TAutoBuilder.java @@ -0,0 +1,350 @@ +package atomicscience; + +import net.minecraft.init.Blocks; +import universalelectricity.core.vector.Vector3; +import universalelectricity.prefab.tile.TileEntityAdvanced; + +public class TAutoBuilder + extends TileEntityAdvanced { + public boolean canUpdate() { return false; } + + public void onActivatePacket(TAutoBuilder.AutoBuilderType type, int radius) { + if (!this.worldObj.isRemote) { + try { + Vector3 diDian = new Vector3(this); + if (radius > 0) { + int r; + int x; + int z; + Vector3 targetPosition; + Vector3 targetPosition1; + byte var16; + int var17; + switch (TAutoBuilder.NamelessClass2141744605 + .$SwitchMap$atomicscience$TJianLi$JianLiType + [type.ordinal()]) { + case 1: + r = radius; + + for (x = -radius; x < r; ++x) { + for (z = -r; z < r; ++z) { + for (var17 = -1; var17 <= 1; ++var17) { + targetPosition1 = diDian.clone(); + targetPosition1.add( + new Vector3((double)x, (double)var17, (double)z)); + if (x == -r || x == r - 1 || z == -r || z == r - 1) { + targetPosition1.setBlock( + this.worldObj, AtomicScience.bElectromagnet); + } + } + } + } + + r = radius - 2; + + for (x = -r; x < r; ++x) { + for (z = -r; z < r; ++z) { + for (var17 = -1; var17 <= 1; ++var17) { + if (x == -r || x == r - 1 || z == -r || z == r - 1) { + targetPosition1 = diDian.clone(); + targetPosition1.add( + new Vector3((double)x, (double)var17, (double)z)); + targetPosition1.setBlock( + this.worldObj, AtomicScience.bElectromagnet); + } + } + } + } + + r = radius - 1; + + for (x = -r; x < r; ++x) { + for (z = -r; z < r; ++z) { + for (var17 = -1; var17 <= 1; ++var17) { + if (x == -r || x == r - 1 || z == -r || z == r - 1) { + targetPosition1 = diDian.clone(); + targetPosition1.add( + new Vector3((double)x, (double)var17, (double)z)); + if (var17 != -1 && var17 != 1) { + if (var17 == 0) { + targetPosition1.setBlock(this.worldObj, Blocks.air); + } + } else { + targetPosition1.setBlock( + this.worldObj, + AtomicScience.bElectromagnetGlass); + } + } + } + } + } + + return; + case 2: + if (radius <= 1) { + var16 = 2; + + for (x = -var16; x <= var16; ++x) { + for (z = -var16; z <= var16; ++z) { + targetPosition = + (new Vector3((double)x, 0.0D, (double)z)).add(diDian); + targetPosition.setBlock(this.worldObj, + Blocks.water); + } + } + + r = var16 - 1; + + for (x = -r; x <= r; ++x) { + for (z = -r; z <= r; ++z) { + targetPosition = + (new Vector3((double)x, 1.0D, (double)z)).add(diDian); + targetPosition.setBlock(this.worldObj, + AtomicScience.bTurbine); + if ((x != -r && x != r || z != -r && z != r) && + (new Vector3((double)x, 0.0D, (double)z)) + .getMagnitude() <= 1.0D) { + targetPosition = + (new Vector3((double)x, -1.0D, (double)z)).add(diDian); + targetPosition.setBlock( + this.worldObj, + AtomicScience.bControlRod); + targetPosition.add(new Vector3(0.0D, -1.0D, 0.0D)); + targetPosition.setBlock( + this.worldObj, Blocks.sticky_piston, 1); + } + } + } + + Vector3.add(diDian, new Vector3(0.0D, -1.0D, 0.0D)) + .setBlock(this.worldObj, + AtomicScience.bThermometer); + Vector3.add(diDian, new Vector3(0.0D, -3.0D, 0.0D)) + .setBlock(this.worldObj, AtomicScience.bSiren); + Vector3.add(diDian, new Vector3(0.0D, -2.0D, 0.0D)) + .setBlock(this.worldObj, Blocks.redstone_wire); + diDian.setBlock(this.worldObj, + AtomicScience.bFissionReactor); + break; + } else { + var16 = 2; + + for (x = 0; x < radius; ++x) { + for (z = -var16; z <= var16; ++z) { + for (var17 = -var16; var17 <= var16; ++var17) { + targetPosition1 = + (new Vector3((double)z, (double)x, (double)var17)) + .add(diDian); + Vector3 leveledDiDian = + Vector3.add(diDian, new Vector3(0.0D, (double)x, 0.0D)); + if (x < radius - 1) { + if (targetPosition1.distanceTo(leveledDiDian) == 2.0D) { + targetPosition1.setBlock( + this.worldObj, + AtomicScience.bControlRod); + } else if (z != -var16 && z != var16 && var17 != -var16 && + var17 != var16) { + if (z == 0 && var17 == 0) { + targetPosition1.setBlock( + this.worldObj, + AtomicScience.bFissionReactor); + } else { + targetPosition1.setBlock( + this.worldObj, + Blocks.water); + } + } else { + targetPosition1.setBlock( + this.worldObj, Blocks.glass); + } + } else if (targetPosition1.distanceTo(leveledDiDian) < + 2.0D) { + targetPosition1.setBlock( + this.worldObj, AtomicScience.bTurbine); + } + } + } + } + + return; + } + case 3: + r = Math.max(radius, 2); + + for (x = -r; x <= r; ++x) { + for (z = -r; z <= r; ++z) { + targetPosition = + (new Vector3((double)x, 0.0D, (double)z)).add(diDian); + targetPosition.setBlock(this.worldObj, + Blocks.water); + } + } + + --r; + + for (x = -r; x <= r; ++x) { + for (z = -r; z <= r; ++z) { + targetPosition = + (new Vector3((double)x, 1.0D, (double)z)).add(diDian); + if ((new Vector3((double)x, 0.0D, (double)z)).getMagnitude() <= + 2.0D) { + if ((x == -r || x == r) && (z == -r || z == r)) { + targetPosition = + (new Vector3((double)x, -1.0D, (double)z)).add(diDian); + targetPosition.setBlock( + this.worldObj, + AtomicScience.bControlRod); + targetPosition.add(new Vector3(0.0D, -1.0D, 0.0D)); + targetPosition.setBlock( + this.worldObj, Blocks.sticky_piston, 1); + } else { + targetPosition = + (new Vector3((double)x, 0.0D, (double)z)).add(diDian); + targetPosition.setBlock(this.worldObj, + AtomicScience.bFissionReactor); + targetPosition = + (new Vector3((double)x, -1.0D, (double)z)).add(diDian); + targetPosition.setBlock( + this.worldObj, + AtomicScience.bThermometer); + targetPosition = + (new Vector3((double)x, -3.0D, (double)z)).add(diDian); + targetPosition.setBlock( + this.worldObj, AtomicScience.bSiren); + targetPosition = + (new Vector3((double)x, -2.0D, (double)z)).add(diDian); + targetPosition.setBlock( + this.worldObj, Blocks.redstone_wire); + } + } + } + } + + Vector3.add(diDian, new Vector3(0.0D, -3.0D, 0.0D)) + .setBlock(this.worldObj, Blocks.stone); + Vector3.add(diDian, new Vector3(0.0D, -2.0D, 0.0D)) + .setBlock(this.worldObj, Blocks.stone); + diDian.setBlock(this.worldObj, AtomicScience.bFissionReactor); + break; + case 4: + r = Math.max(radius, 1); + + for (x = -r; x <= r; ++x) { + for (z = -r; z <= r; ++z) { + targetPosition = new Vector3((double)x, 0.0D, (double)z); + if (targetPosition.getMagnitude() > 1.0D) { + if (targetPosition.getMagnitude() < (double)r) { + targetPosition = + (new Vector3((double)x, 1.0D, (double)z)).add(diDian); + targetPosition.setBlock( + this.worldObj, AtomicScience.bElectromagnet); + targetPosition = + (new Vector3((double)x, -1.0D, (double)z)).add(diDian); + targetPosition.setBlock( + this.worldObj, AtomicScience.bElectromagnet); + targetPosition = + (new Vector3((double)x, 2.0D, (double)z)).add(diDian); + targetPosition.setBlock(this.worldObj, + Blocks.water); + targetPosition = + (new Vector3((double)x, 3.0D, (double)z)).add(diDian); + targetPosition.setBlock( + this.worldObj, AtomicScience.bTurbine); + } else if (targetPosition.getMagnitude() - 0.7D < (double)r) { + targetPosition = + (new Vector3((double)x, 0.0D, (double)z)).add(diDian); + targetPosition.setBlock( + this.worldObj, + AtomicScience.bElectromagnetGlass); + targetPosition = + (new Vector3((double)x, 2.0D, (double)z)).add(diDian); + targetPosition.setBlock( + this.worldObj, + AtomicScience.bElectromagnetGlass); + } + } + } + } + + var16 = 1; + + for (x = -var16; x <= var16; ++x) { + for (z = -var16; z <= var16; ++z) { + targetPosition = + (new Vector3((double)x, 0.0D, (double)z)).add(diDian); + targetPosition.setBlock(this.worldObj, + AtomicScience.bElectromagnet); + } + } + + diDian.setBlock(this.worldObj, + AtomicScience.bFusionReactor); + } + } + } catch (Exception var15) { + var15.printStackTrace(); + } + } + } + + // $FF: synthetic class + static class NamelessClass2141744605 { + + // $FF: synthetic field + static final int[] $SwitchMap$atomicscience$TJianLi$JianLiType = + new int[TAutoBuilder.AutoBuilderType.values().length]; + + static { + try { + $SwitchMap$atomicscience$TJianLi$JianLiType[TAutoBuilder.AutoBuilderType + .JIA_SU_QI.ordinal()] = + 1; + } catch (NoSuchFieldError var4) { + ; + } + + try { + $SwitchMap$atomicscience$TJianLi$JianLiType[TAutoBuilder.AutoBuilderType + .FEN_LIE.ordinal()] = 2; + } catch (NoSuchFieldError var3) { + ; + } + + try { + $SwitchMap$atomicscience$TJianLi$JianLiType[TAutoBuilder.AutoBuilderType + .HUAN_YUAN.ordinal()] = + 3; + } catch (NoSuchFieldError var2) { + ; + } + + try { + $SwitchMap$atomicscience$TJianLi$JianLiType[TAutoBuilder.AutoBuilderType + .HE_CHENG.ordinal()] = + 4; + } catch (NoSuchFieldError var1) { + ; + } + } + } + + public static enum AutoBuilderType { + + JIA_SU_QI("Particle Accelerator"), + FEN_LIE("Fission Reactor"), + HE_CHENG("Fusion Reactor"), + HUAN_YUAN("Breeder Reactor"); + + public final String name; + + private AutoBuilderType(String name) { this.name = name; } + + public static TAutoBuilder.AutoBuilderType get(int id) { + return id >= 0 && id < values().length ? values()[id] : null; + } + + public TAutoBuilder.AutoBuilderType next() { + return values()[(this.ordinal() + 1) % values().length]; + } + } +} diff --git a/src/main/java/atomicscience/TabAS.java b/src/main/java/atomicscience/TabAS.java new file mode 100644 index 0000000..22ecc9e --- /dev/null +++ b/src/main/java/atomicscience/TabAS.java @@ -0,0 +1,18 @@ +package atomicscience; + +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; + +public class TabAS extends CreativeTabs { + + public static final TabAS INSTANCE = new TabAS("atomicscience"); + + + public TabAS(String par2Str) { + super(CreativeTabs.getNextID(), par2Str); + } + + public Item getTabIconItem() { + return Item.getItemFromBlock(AtomicScience.bFusionReactor); + } +} diff --git a/src/main/java/atomicscience/accelerator.ogg b/src/main/java/atomicscience/accelerator.ogg new file mode 100644 index 0000000000000000000000000000000000000000..66c7ddd587cb5c1a100d2bf3b561802fa694c9cb GIT binary patch literal 18839 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 literal 0 HcmV?d00001 diff --git a/src/main/java/atomicscience/alarm.ogg b/src/main/java/atomicscience/alarm.ogg new file mode 100644 index 0000000000000000000000000000000000000000..7ffd3a8416deb60d51117e7f289bcbd23c82ee4a GIT binary patch literal 29849 zcmeFZby!qi+bFzd=tepe2c!k1ON1e%8!0L2P?QuA7*QIPMjAmH=|*G}5v3bxqy}k0 zI_7Nj_dMtM-tWE6`L63+-+yPj*|YlI>+W^0wbgcT&Z(>r@jT^=S^LBH; z>*R4>1XnEir^&;=jq73B=RN;@o%e)6Ir|~Wt_%Fw|8n8{9qAI(z}V@5<27w}2ZXEB z-P?c0N2nr%1O&td#Ds*-hlAn$ZOkLDa2o~)p%Ot2L>sCv+7JLr0Ib+~$m8r)d2-|5 zaQnWFS2<6$3536n4{u|zi4y$suLnZJmKFe9fZ`^4nX{zo+#~70!1dBSOVUY8A|F8z zp*t%{^l6vV=6+svp3D6n9u7h>6Fg|50I9+nOrv-HxEsbA!T>!&FS>ta%};YD<}Jty zA{P3Jc%~ur^KG1#)X##Pmr^U-)qV0L{M7?$8iK>OZAzQ*&7XMmNMh3dc@X`X2LgH* zd3;7&N_oQb;lp_HUb{m>{hby9prC1jTQM}M6*Qd{7rXn}wYT|nsYUyRmGliX4WY}+ z+{oK*)Z1&++u!7MuvxvoNqw-{_h9q=U~7huf9?bSnf>$o&(skxkaa~eah@lejVXIh zG8^Z4NC_O+o}&ao6wAgFo1>a%?_BDXTI*O`d#|&Sud|Z$PZNlYxaV&JvYb-#{$IDf zNuu5V{zf`}KG&0XY{he*4JG<4tcRQwjN z(fwP4;$K8KCp!R0!HaDVFMfltp~pYyE^6d)bJRm~6hg&0M*i2=(?9$IO@uYwKG7LP zC>(A52Q4UQScW%*3Z#D_K@Gy*EFe<)Qg*r}$x{}y3TaXYKZYBmay1mbPW?kc*B-`s zh?YDZ$!%H5eJLJ2s-!8oe^b6xsRZu|2cR-WOd9zYMr){@(?AMA;g~Vh*Q76Hsi1)d zN`=R#a@8~#{2lKfwkWhn>-i}81L_ezp6b#-WDcbcZPPZoiO$RZEBhcJx>vxk z@PCPamxeWuHIBve6?t5i;8&ivEH7Rvs}(-e(PQMw^$hwma|8g-DgSWszaD>B`7am0 zjg8>#;I8Tt>f}3rl(hCpt(Lb^Dv%07T+Am5aq)|qr3{Z!Nfnpeni12hx$$~xJh^`* z3L+}PHd+p!@sE&%yms&4$%mxkKMA+R-h1Iv|9{-Qzb@)haX@#!5Wl|gO+y1iBky}A zNnR6m!RFt+W=8#IMqgOchx}K@`nTi&NNAq_k;(YGQG)Gh&$Q%;{u20KlJk(JJ?7%K z71yNu_Wrlz+;V4!Zb)*J+}Zy_a?pYo6(DJ<L-d0HC8u)&J-bT|NF`J<(x3enW$s|7(eXYKKKM2Sp&nCIG+)z{1)eX7AULvyCimplw2U%azb zk>juZqQ|;eKme&dLhyzWkhjAwYT{f}$AKj8{8AkRnl!L(>T_!WUFd!hB=t=swbI}0 z|Jf4)B%+H8-Tw>&0qQq^^^5!i3xa|cRziwEmgN8Z`fp(Aio&%20~S(56KSCNe-7#Y zj_`jm@V~_X#Nse==#NhR4eM1nN&*H#=aI1p)h!W}jmehuBPI>%Sz|hBiWGvue@O>q zV7Emcu}D+o5k-qoWDxW|bNaU@2oSzdMF!MZ<-7v(@n3umy~vgZbskawb7#2p;B%)> zBGyI!{mY>MK*0zA3Q%_-|NTxmDpUYS#M+ub{)I}c9SorCOfm=nh_&-&`R|AM|6clE z0K!n*0EA{6(>=J@34dv0f{f)Ou`&UgIFFc+G_do=@bkB07U7^H;1;pv0F-!O_5n@j zfQasbL}IQ}_Sc7e>Vt|gc90Vk&L#pSFJxeR^N4zPpm}pgWIMqj^8%qA?;P!7j%s}5 zI*wn}0D>K$e@G-Q`et)SK>kxv$3wo(9YtLlO?^Z2qC#YXzDIbo(-#lYhQPE0c>D5jEIZ$H>b|(0<=ebHg0A|rJfIt&U zeJiLWWY(imAgNikm0dj8& zX>87YocLHl$WPW%`}P_tHL0r?;4P!kwH{>65L ztCj$j!5?(f0`%-TxiYvQbgRbZ`DSoIeyelr+rK3#(!Kv+-#6nQ9J`xC)Hp{JN9Q?> z3X6(}q1+&ZsNi#dx2S0KQ|&qaN4=~k&XK>`h=%a)Wye^5Zoc_Q0MLE_0B^aq*YmjS z3N&Qs;OF-8xga4Abt4SyPDg8p(hvzY4ZGqa0z=l?Mr-mrb;S6NCZ(`E=+KlJw8@VjaEKNlA9wT(KOw^4Bt?y0Su4bAifigw<-G zGH5C;d}<9)Sw$Oz%L^s$RI~G1mv^E(iyrC~!=^SRHJmw7vFBwaH6v{CdO}}l^r2MB zbAd1W3^pZ#7}GeaPX{de{7_>Th!?Kdz9{@+3Na3mUDONy;dqZ8Jb=6@0gxOFa$Jmt zbk;dU^em`9glT}*kPz#AIp?r*zS4Wk-~q82;`#YX>@DG+3OUHVglNWS^RJ3G&tvsE zpdRNH5IBz9p}#%2&plza!hcuf#>eaZ=}Y*>MTVB5=bkDR#Jll&P`_XZ#$VqVLI^Pg z<4=Vev}C1`C;D3v9}Bh1{igx~1dabs1q28h=5G%uaqfaAoVPts{CO6hr=aZL=iiE4 z2oO~Gx9A)Yl>KMCKY-%(c>iW0^^0?^{jTuxf7TK%m4@G<5z;{Zky&VkMoCanJz`oM z<=&yH`c6TaX({XNcU1z`8e?@kgj|QJT6z#64}M{A6mRb9xJ3ER*LtLPuL^ob3Eq-i zG>~s+fK+x605}(fs0nG1PoI(k38YFi91xR`UTRfBBCoOLptBxmNN}Z#0U#IlCy?-u zhX%lTAmQ8!y}o`!5Ej!#86MV#5PZYL&6|gVYQqb80>1WrS81w8UBkK4*Je&2Pbg0r zWPA|`Ba)E#5yCaS^_)2^OW$Ax2@L@N3z&se+ZbSD%TAtO-Z}t87Z_Q21SRDz{HeYH z4ggTmLxqJoE=fp9%OK?yl~vR$ONB|=w{JR)E&l3{~lJhViU}nVxZhhOt zXkHN$rgp8~d(R^BlR;UNV3;K!{cuFZZfP_))Ag4G)nl0+W?72^oxB?1(Cd2)Bl1t} z=F4dMkBS2ZQ@&KTP(FQ1b&5kpXFzc2m#>Gc6r=3%)~oao{jB`=I=5#ZPLl*e^GB^d zdQba`kVKqGcV{F-E!P;oI0W&v{btmVR|pgV`1oVv^X|lc+VxDWS7HtU)1@-CGe6bE zM_0wYuD86B?UAetF0x+9XrCUsbaS?8^Sb!5y-W^VchV{YtI^A8AA}D!9J%_=uk(-B4Y+gBpIH@4~GBvSBBW0Fp znVHy0*h$9zw#=wm@2+qAJQQY%8o^WdCWwSs^77>!myN2<&7Q8ePtTgZV5!p9k5HNV z3k&uPd*2591{Q|C`I?VfH2HC>S3Gd;x^hu_jWKV!*11?rl2y`2W%KlgPe8-jiR?A_ zTAtsTAD4$mWyVj>+@>n2{jDk$Uygb*tu)eb-OWc?*B9j#j6U_fEnt-zGC=cLmTU@) zxCZvte2jGI(s6G)`Q5wdP}lwZaF?Bo)*zdAG_-1vOSSA1v5}+;0^kJc0Rj3?2qvA= zxsU^|=eW0moQkNj`<}^XRRm#VVTkCGZu`vz>v~^f1&Oug@a!&?XYTIoJbN^7`;bf1^&)!%S~AV<3dO$Kx~BD(JiNVSwO!*!*Tx7 zQ0Alls+_?SnT1gpPZ*~21i<-~EgLw@4GZhG$;^Q(Z(Fl>f`n9kcg0*66{cz*Dv+dLfSF!UpWj;mHt2AF`@UNJuUJ_RHRNydg8C>0<~( zq1_F>hCN~@3fBOr43??mN3x6Q{#u5Hx*O$CY}oSS6qh&#Q|{n~@96$mYr4NWFT-Un z^Y+Hg&8~&8+B6Ny!D}@}N}p=)jheQyk2W{$>F4NUi<_i{Qv=<+*E^(+%Tv3pd;NQ+ z{oL|YziaKsPal1691CmKe^**s`l&ywf_eL%@t~q}_6Mn^JQstVpD7DNHxcYG6-yJL z!!>30Z$gvuuVCsR;)}8h;u&t_aH3SkNY!V)MH63ue1fF%j4KkAb~5D++!kc^X$u#Z z4q~$)zJIRtGnTuG+~j^Y#k}7dP}t&-*%=8%sUBo|{AdlT7eB z;IW~waFt`dbBTs32dtVC34g^id}GwAXNODMHL<1Ei$rFLluS@~F3|oG2ksCv@4$0d z(w)(L&bXT4JB|ufuA3X`vaI|d8oY3Xq13G2BNJdcJYK6*8ijxD+ln;Zh9y8Q2F&@-oO#s zrt#JlnS1Hq^ap!y#ue&gE^3_$ovLqLpIv3E@;ghDNl0!;?gfLXxDjuyo-plEx>eL1 zJ>%hAfk!cw?>^4N)2$rgIZd52V^(Pv{ED(mHG0}r%hIE$1OLX!47WyV%PTzfq$s3% zaRvQCIGTqPs72vUb9XX|B1ANs4pW4q#zNywKTvl*O26_!_r*jZ8_6x-K3jprv!q~uKZ4iGclM@4 zu@W}!>KU)9-;U@tua#c)x`o$SO_}HwcS28%2PpFa+yf?xt8N#SP=e1ko`(m%kI3Nw zq(+<2;&NB6OnwpiqV=zoHGhZnKQ&2vDSHNMc?bVp~}l@F}W&`Yppf(@?Kyoavr5<(WrZr;dmG zJO`hfvvRbpZwG~G;arrJ%4`>pnH{3~61Bb*=SVUzIf|s?I z%me*^5(Zkz9Q^)YnD7~Gb}t-4MaQqHRlR=OfjyYf0_|Ur4^o@A-*4u>{&2Vua^DUL z5`;R9Kh-|XeK3n0k-36RnjdOd-|OgF2m49g`vx1$`%6-_jPG@SW~{Vm z-#1ckz@%TSc0!41U2(BzRs5XgX#GV1sFDxH`D7&bPPvJ1t_ETc=^Q3DHrI9}HQX4; zF9%ur$YLdD{ZfQ|A~~ zD92V35EY@XvLKbHO<4{vdRoc{U`^;4-Ifg+V|wKdITn6VTzYg>;b#C2Fy6$}%3deR zT$sl!!{fLS7o1FpUg-?#7}}58ebay!fb5`!!Ncjpv)@>kZLx+1u{(a>9E9t&{3?pM zIqz~m4Ege2H$3sa8=4Kgq;&GwdrVTm29T@Y`CuTOHPSG}8UQo%Vqj(KN&!$#E_4zA z5Cw~Vp=|9S^@hjwUeE0K^~<-Yt~!zy0mI#pZaS0A^axn&O&Uv1rcvq@?)|V^mbtv+ zLp#+6hy)4}ielBDTdO()tJ#L8Tn{FJ|au0w0C zA1jWx@wmEuW^js#p*1|bp)ssFYAWnqB{_vgJLy?d%Hr{A_rmD6jgj>zm`gK7^tL)9 ztMw|$Z1bBZQ?&AM&u1`OtIs&#i}D?@f}&4iP8qa=dOVuWw((sTPc0M%B-)tuzjYSF zSctmgEaA%Y?b)r&O*~Ud%hB5$iFd;+Ld6?+He@00LYrC9%T8Q^6Y8T>m}`_ZTZdMJ zs^Yr<9UcN0Yo{}Rv{d=k{hMxcrK_B1#YJ?jS&R%yCJ^x1F{RFO65( zdi%XE;ORIUt3wLfO5dCWkX&f&8=G?;E>ix?1W5X|x!Nlviz0^xhj1f%8rq+@ z&NLmnoSiZp|MvXZ{Pjeizg0{76qU{}w%;^AAL1QD=J3^~R+5SGJp;Y#XyzvIRPw#v zCi%X5NMkq=&Id98Y*B>q)Q#J38S7q`#`HO* zDsL&u;Yvk=GluRr+Axyp%jp#FFL3(^r6|qZ{Yp7Za^3j*pH)MhVoBV%KRfD!xiMNw zWZbkh%23VTC>A8*p@`8vqiN^?cN1S>a*xnSU7k5zc@=#w*Xkgc=&UI*nP1%%I_sTk zOnIErGmX%)8}l^PjoZ^e=p~8agQWaDp2DycuQ7E6VWl7dE*&*h0C4eW;as7k z+5K&>$l4?=85$bentXTWecCj=$%da#(hb^V(`$_$cZT^JA1CyyS5>sMWDf2muNR-B zXnM0OuVpOuT55FPIrTdAy!55hR#ftJli}2``9{gl)i)Z8K})l9oAfiKW&HCTTZfk|1bsv9uQ*$Yr&+tFTuq%M8>QJV%=|S^nn%(b zoP4i+4c+}TB}GMZYGeP*<95Rkij45JkQ$Rx0ebQoTlXO0aKy9fT)DS6L&apb^mpxB zhl2NYmtPSe0pOc}XQSGQXaEaiclPy)r^Fn?!LL$2`NuDPydi1B&%MgZU zKM_1=M4?PH&0MOAiYg&a*TF%;&?iTlXcPSi->G1}gkRndADg#6es^1!l2?>D_2mzj zs0;F;XJlYp4|lP5Nx6JB*lO#gt2o!mn&ai2ME;|9Bj2vC5 zgnp;eXX>s_U$4q|bn_1-%f({-0n>~ER=a~ew zjMu);A&sWSk1c*3pBlBS`--P_PuECR9e0&_ygpqLNEq~!nmHCIy}hKaVc4#zK|k88 zYh>{5XNR|Uvu*cUsPJ^^lx^JaCrcVVg{^DWMHtU%S=apqweT*6rpPasev*essOsF` zkG)(m`f8P|`(|rs2&d!?C;O(APL{xRF>}_OPg%Jxx3UQnNQpRt?;O$QQ4aiO5l1|C zjQf#Z%UGqqLxB`w^IiSqD)Bt6LMoQC7u*kme<19R$%KnV2kPxUbx@mDaa0K)UL=uK z!_ZFyw#R=MJ_(+25#*I$`4pw|Vk9M*QNM%t1?&#YRvr{$YvuimYFHDTb;=s46t2fI zQaWQiBYFijBmfzF0UDZ&kVBR_w_7OGP zdw?0wI(|K#dhfBrQR6%Hm_xA(*_CqF`CqfV5w4t=xj%!CPf}Xw{{<81?6D`~Am+8~ zgY_8AI5E=lI`SmvaIgKv)4BCGjDyyNxC^?@!#L*=6Cak%IJ&3UIBW>k9s2|dg}6e2 z5pO6w@*Hb#xmP_o^NWYH-&h=(1;4)9q))Pml9stQDdU)e7=7pd4V|amvYj88gt;RJOOYd zLAU~xd?+ytz|lnximqXhucMrp03F-Fe_ije>B7lM3Nz~&7?-SB8{L&2ChJofAtX@l z4dRX46JiTHB5x$Ulx`C(Y{P~#4l_kOe%p3Y$Wdg_jBxtfRr@6dd?<0I(5_~C26 z;{7XEuH13HI69eXJ33M3Tx{{OPOEv7Zso{*c{=^LGj00f-tS(g?+rV>85w2iN`(;5c9)#aQA$?m)ewXPjP>0OS0y0 zzZ=u=6{$*9F+kIFo2bT}{5gyy0KB1T_%UECF#LOfn@=+n9`&0-d*k~iH8DEJ>5~MR z7!kGYr4(D9^J6}eQkK>*on zhR3xC2C>?ewiQ%yg!RdEG_3!sdQHV*D}fFnJlX&#LT+2_Xi*}Nmf{$r7c7 z7Xa7TdE=&Ksx#M;Y=MI<{?7pIBWvwpNpnpS?l;DQw5RZDZ!_ zc<^k^687}?_yjxiyCl#u(6VWBF!^|VZBpaM`0!=%Di*t!aYOv6F7A&bokMT&w=R=-B|fDR=ZO~Cd5oGo`zUzQJe(q~5E7E9dR z?vQap6OqZ{dF?$>?7pN4D`j4!A}rfc`^Gnx(^JjUkT5F1&=4lp&7>O{!kfFMrdr7U zbbh$EaBKr}MVaK+^3mu)HATE+Z|Gz|AHaRj8zJ#+Xbs~DLs`B1NC&bQBWrPIeVLGY z{SDtooI$D>Ks|_l3Y(q$aH*V$m!?nuxNGk;^K`7Y6bF4RN~4m0>gZmo35zgjX^5i7 z+;vfPowx?LmwlCc=1+e0Y*aeP+o+t=6MFz+nIFd4aQ z-rOUN{u=XBNZi{^-~M*l7tsWV#|3MLY2#ADp7c+S8MlH@-Fl`Sj#H0C{6;0qF~V`F zn(`Iz?v)mXG=w!@UE8>&m&$XoW!WtK0_Wk3ioKX83- zwRK5~U_B`-8r$01zQi+dj03(CEGrdfaFUnoCtzfqL^G0cz|B;Fb+b?JUWBBOsx@9y zx2NI;iBD&pIU5D*HyJsmy7QCviL+S(5=TfM?FKQl&lD_%6wE3bX5cnS@z3kv!hYYG zBtk>#M=4bKBjCpA2vdB=L^whwsHVdO5D0HbabHE+>2+RV>w858E&4<`DrNomHg;|r z<};&$+`Xf6rfIvvrypm#logXj(WP!CDtS-h?@Hqs(KAeRXOA>;{&k0c9J*p;l|ZXjfT3n+*Kfc>Iewu%iAbtgB1)+DNkL<%ioXH%Y*KoXTK* zB0PG&lVT^{cTYTVI$UT%ObnckxE|mwm_iZ zGC#Y}`B@ciTmkiB*Ofkv%jgN8gnlQJKUoSUX;mGSg{X(V;c|NwgOSApjuV6B0x?R8 z#r9-29fo<(q8IexppIQG*T>!5bFMNaG7WRgqkKB@0rQ2P!5!XzF(jN#yHZWdOr6yP znn{M9o1_f*6=7-LEO29DH4G2Tb>httgZdcVZ!lj#IUTJE`yFjl*O0H zg@iqxrWqs2G}c>>TQf8DnI7O2)9aJYADh@r=d4S`3Q+?BiL^%*!`^B^9`*2TTf6n0 zYYvs2W~Uw-P2^KSK_QaJ%^4^nBonIX-^(K;nJ6fl9C5gL|8YKgbP)pU)4Tj+T+}4Q6d*TuGvV7)Ybm+DpEU& zZ2~k>8ZW8#wD8E0E|-t=XMX~|xIHqp5{%Qvxf`#6+f zGR^f9oG$q*leMT8zX}uDyEo%q`^x`V{8)C>6p*;O@6NcMcD6^lPSoCm1j6R7$+cueGaG*_t^jmU z3fVg^9cQ`u+Txt@Fvi>3|e)T~v) ziZAo6EO+Ja{3+ApR`nz#gGx783meXwL$}87C61Y3@-1)6FZtUK0t?mKG2P!1$!}Lb z({NZH2o!>4kUZt3AtgjH19>CZt7xAVA822^p5fV>dlRlb=(^}%^GiWx=c~2GE!c;H zt}XF5Pi8|yEe~+l)t}fOrbdU#Y`3}{uy11tAntxd53A$)Fa!F$QF8K;&UDFzA;G+% zm7d9}SriCfFt={~Ec2e$3a+e@d|x=|533x$dBjpp_{kXt6FYQ+$bh4A9|LH($Js0&|8W*-w^~4C~=3xQv|yY z<{yANDNUcYQ^a4@HA*94<-Z$uR-v$R?{#d?_RjUzD1!Zs6Ysz$C*0FHh183lKAc0? z`#+q8JiID=^z$!d-~*HtKsWG4$}d3+jAIEaSqilJSv3c7t`+KekAP{#$I--eany|$ zFq7GADqYm=MAgbp+YEa`if!6%Wt<%Wz!D8xXk%%1-q82RzOHER$OeO~=0}P*kA5f| z{T7szISlk%+6s*}vUqY3oRb|e13>po#i987TNe~hjyS;b1tT^pQ6}B0B2$$FJwqWB z5%TG)!i^F$i-c*vcn0c(i$Tk;xB`NCW?=^AU;RT?I(-ew11`H1(q>?OJi>XJ1SvPc zdy2Gx3a}wj%J_YN|b)QEY*+M!ela*K2=Drmt_o zz(=d6Yk~6cFs5d2KRjiPsemnZ!R3M_h8L1PyVv`pZ~o#d!1sT; zcI@g{k29a!)93TXdz0dXF!rR6gU8+cXFjsN#7irx z1Y0_m0F?%WW+kD2SaUe~<7ClxtRl76XqQ=49uY;0`O276M{vNJQ3>gG|< zp1&%R_2a(CAvwPIL(Yw2qdcO=KGF=*My&w_PfytiwDx{Z{kGRiIum9Yr;W8a5$RCn z92Abp&&F>tXN(z2?77`4;@j2CRW_A8S}1(~kwe4$4a?2Z-?oO&QX;BVVZ-WNc_>2^ zqCldu)BdpQrQrnY+H>xh&S3a5@(& z;xj_BggV4QKy~P=Zt8KDC-(K{Tz~6m%FWSh0NMb7RLU*(j0A9f`CGV%ZfFfzWLKA0 zvI&PUiWu=2eD`=Cl+G*uqXSQ}tl^X!FRgTLaal^`rg+P%v}^?xz1H?zslHu?q=a3O zAvE3%&8B`&COlAX0HXt_*k?j9@L4DMq1rZ7fuW0h{3Gaef9Y#GA%McWys5`yulycf zeg!W(3Rh6zZDCZt%j%<0TYGz{Zw*gcW$u`-6<%X#X*d*Iot~;0t#3+@lw_h2r&B)2 z)fd>^E6#TC(cJ5mO5M;m)ZZ*zn+)yt{r*7Wcjgn9K?A3<{IWNViXt7~UKI2^zTl`8 z=<0Xs^QF7~`1<~4TFU%ktOzrC)l9}r-?z7`Mo*b+WSXAABgQQ3w)<*Jjb5(Lj}9%4 zo@HiAKgfE0Y=0SkCi9`x6p520_a*476)ybN+YJTS$6I1#k1#PUy`N1|v|4QwS;T46 z!&vCIZ{-%j5AJMJkuQH`IEmWZl!&Fb**_a~X29w_g$htFMLca8C;g=0(pw@L#t&UG}rQ zMj5X<=GG*Z*-Kb1%Qqb#+A*|u(I(yU=5Gp|Bp-l$g^z>*T4uu7CD zJz{R+a)-?7!n<8MKp{rPD{)X<-z#&$`k`pq^~c-y@PjuB3#G5_HaZ0OR}Dob->b#q zda*R!Q=mDjJi#|VBu6Z&2|eX{z_ZqvHwLGAQZ z^jPsuMb>mxA|Dv)8dukMcuARS`01{IV&o^0#rEz!`;&l{ zWiING7y&Nk?+$wufjzAI0zl(-qQ-4ESxH0LjI`KA_gyr# zM|3_I#F_7=wgDR>!a`(8gj-3F8hSGBrFUM8!o1{4?pITI$i9o29E%YN*o1wd635@P6H2M zTx`hCn%(D+mfmum^Iyw2cl0+pjfi6gO1_$pq<7bUn`;op54@KLt=?uu;l@nVu?54PpxlYnD4xudwfF zf3hQvNPa#qi|bjqy_NpFP9$E*Kbi5<0ACDugX>$TA1*UP!EIe*Wt%x^9eQdsHCVE>2y4bJjhtHjVtU^f-fu}%vp}-3&%syv%_Dr10%XxWzqsB(yLxH_P{{^w zO+=WAik!dbnGBH50&YaS8hOBr&5VShF$&04!^LTKN(dF$t0mrg5YtF^qdqf%IPZI?QwolI^*{lweKgIR;LOx^$iWY6v#x^ z)OyNRWJ9rMP2LPWj5Sx^{d{$tveN9I*~2YNov{2Z#*Svtd&a;dw8jB@@a?qrdOd1f z`)SMld;IjC%vI)?Gpx}5X!=;XaEse$fX4b0k6%+G2Pa%rA7nUXylm$DA3ImcFXVh( z-^58bq`NSnP832!h~)WURA9>qIeR>0k406>a7dg~f?hw%zG@}MCcSmy?NTbHFWel& zjx}+?%)`M`0W?1@DHMk0_Bq&OJ{gxz-B1$3S!FHQ4p><6*l~>P5C@_DJ_hMD87*V+4!UZi%Grgy2y9f2W`Rfx^JS^(ywhWe+HIq%+fva+-Q_qw* z!|)#IQ1Rx8J|tuYsO@}KW+rG zGET{n@CTSN+2eAGOsNK+^g-LZi8jh*XQ}IB!;-^|(!+hHgXYM@qFWyZJG8PY%!S2= z1o{TAa{>LMBB?oWqyj*z>*f z_cTWbKU~SnFGwoYdh(6;5gH~X#@_u#ngu5WVM#7Y4`R;*d#Q5{_zbVlm$R5(DVt~i z!t*Tm`M2>+nC2N<6-AkEd+f!PuQZ43Z*2^HE=fUO(n)tu(jIO=akRc7Qc#bG@!~^Q zmxqLfgR2lgWHrt*C(O~<3g@UZM_9_^6F@*7npJ>|=;gA9Qr$J-dS6`SK)rotXZp28 zmR{00j_b03G)pq-k23JpPaJH`sX?qa~^A0_|`JjM55##;AtdZ zUd7BLpL(p*xg8x%3R*|LtYt;vf|4LDwW-!j5;!{Xhg_8kRfn6NDNrkA`{KrX%{rya zAnW>IM_Ys1_(l9YTHHV|=Vu{eG&dGOKFuyNn;BHv8`;x%$o=dzBa_EA zs8I=uD<|Ar%e)*o##~NBLb&Qor>j4l#hpN-t{RJK+1YdcX;G0)R^E9ph+B8UqT=@= zYCjwAC0cm+`*&S)RUFLS0-RcoU@_>BiF64&u!Od?>C%Z|XcR7zgM_~(R`52Jg3>Vb z4FK{thz!BSHTVJrjK;At4@McSz?&QLzkfb5uA{(U1D^y&ygmO;;>(bMxy;YOgdyfyz`x(vqA=f}&p1Zz& zbG~V2MdVIzjW<5aPPgw$cT};mM7rLl#L0aIyiK!dz9cg@|Ho^u_WgCc#!kwa5i3E+ zVD}HBWGZ%c2WhH9*+Iq1gpLc;%LS}4cDoso-po2LsDuWW!w0^YYVLOc}4O~RhSwv@AH zN$coduOC`uPHGWs7~AqvhJeg_q&6=^ThRi~J`RlzO_`{HEMlC*kBGsi8s;&Aq?yNi zhix?*Zb$cdBU-le=UgdNKPAM;p;Ess>5x|WWu6{31YWJbx%;F!^JaqSPS+UM_hJ2X zC-F^e%l_JlZJu`5u#&Z+7mk8FruMbC(tS>P{lO0}cNlsm9GGwOD)9#;;wdOSB)URG zqJc}kdvp5JvPBLVsuDFi7(zgrdo%1Lmwip)qeGsjyD`U>U{3%$z?o*KNl48q-@n2q z!*rQ!*DT6(QbFg_DYT;^U6ebGc|38OeJGt1`rf98bJ=c27H&MSp}|BLCNiiz%tU6S zrm9*EuJ*$h*;~KNy@>7m1WIhQ9ii08V;)ehWqQzyhjQt!> zSU5eO)0Vls>Z4AqTuA_}#RJYfC}8l_w)X7Tuyjhw;hbT7IM>s>S6^uInoARFhIK@F z4Am05053}Az*2JGqwPcHE8DC69hC$pb$OWE%}?`xAc^Np4zBY*kbd=`U4X`VtrGg$ z`Vf~=5TGm!L-CO&lnl?kTq)RB1(on{aKK|E@tdbw@9zrn$KzkHa3dZ{vHF;ANiM zvn(<2a-|DJJVl<9>}rbi?9@G%V^Ecmc?*O0nVi&TZUn*P?8y3*UYk$BiQLwy!{dMk z3?IU}(u$JK&$C}Y>OOjW^Py6U9esb}^NPpTo$TY}04biV61m!s5fe_@H_6ioqN#b* z3N+rmDJo*3(dRP}Le&lIRr#ITy~Pt|3L2lCIeB5!a52e=zlz9!F?xNc_enEhH5@R@8ka8!`G-g)9BStGr&?3%67e3Qr-p4b zJ>8-+BR5&wZR`^L=uV%Be(-^PJRO_qwGUv@_q!pxH!WM?(^h8rM)4+7VY~i(Aw4E} z)geoIML%F{?WnCQS(3DE=_Gn{`u$o1Gj{6E)Y_ft$=!hoA(H0H<9T|Bp7dV%3J!i@259qeO}r5_{(^ca^Etbixzfb`t-y{)JPFmN~M0&=~YHjl=1TExtp9p`lfJY1>s?S*U4@@ zWuqj?|KY7(R}!#HgT@EQVG|rELi>;qAjE74jcJJm!ENZxkpo1HOyDIRH;PrCie*vv zLqiRoB2IQelyjTbgiZ+Io8zI;$zHea#Wgbm0<0zdiR=M&pxMXOv4r6!k==zMrx;r#-X0^y_{4I=g3qTSZ*#KSU5%SG z&tHhs<10ak8gS;We^F6wmG29lwk?Ke^4by5%wsD1>?YY94(#lpieQGkNh3W?)Bao zz50@J<8X|;N%nom;4J{g@ogCadcKDWiIRh%jJwlxBZ#u7KqLeVWrP$^CP6)4e1q=I zym!$D7hT#t{@Z@4M|RXgs{Hw*A9v~H*ETwXl`cKt9K{~32lQk3b~iunw_Myy>bCZF z?`hckq@}58-krCebFn9QHA`_pa4dLg`po)%`Sl-urrs9kA^Ub+ zZgEp#k8o|_xKJw=W>U7m@FjJA7vpBUXtBOOKNT(nLx~LHQd0iZyE0zOUkrUECJbzb zzEr&VeO*&MXr)lf0W*B(o#pHNl_* zGX)XELpafp$BwHD1cItLsU$86pjadPIU3eo*QzKy5OWngmjz+;LSFj|^F{I%+Tre- z0j1Ut4c|*|{n9;?@$iRL^{!pjCj!-&Boi$5==jL3M>78igl9L8-M{O7ck@nu&D$Z~ zk#;BRwkj*72m)12-Fgh`Rln^uX^-7sQH`71=q})Z72v`wY_v|N%}-)`d&bH}rY*^S zn(5yXPMiLALr~@+y#xs@JX?sn_^xtJ)KO5$({!c1?mOv*Rr*uiKk%PMk>06&UdxsG zE8y}+qMQ}(SVf)@MJEuj z^{7VoxPalX9?eyKc9h`cO`i*KqkS*RB(mk!!}T7nC)<8mHLDBYob~S;QFlzQDk}ZJ zG(8XNHpSC`maQf(S@@KchQ$iF<`FM+wO|Nf4DIFJoxKKdN(7NOX~o!5-__GKDT+q~ zq@PVj-`K3uj}dQce|%AMpFKw?wy0?BQ^f}v=azPo>6Iq?y)|6))Xwg&PGSkyo^Pi! zeq6Tpack2F`&HUKrwc>jr8nmrA{lkQMF_fMIzB~buRVlqYAz-VYXqDet?$_e?oITf z(QfVS4fYjxI==KqoC^>mgJVu z5Ia8}IFOGx@E_`IUl7*#D9%XslO$umJ#=(|KT`FPEI<*HvI^yeAO52EJm;o@66UA>~HwlpCdD}TXFH=@`+oX!d&Hvf$ds(C@mjp6GIAZuf z35;gl6o3r|9YTN_hl~IcMhS%tG;S;25oUsCz!lFo^=e?A&<~j+Sd`S<(>G#+lu)pB z_g;;C9Tyw1)EY`jnPGosbN%Fdy;zA400QP#zO-VdiO<=Y0r%*p(XNGg)vmO^5sq8( zt1^mIhx6lUfd!eFJ9W)?C+^Lujl5~oudki0j~joSt{bXtw@{~@kP-8I{p$GD_|k_K znI_IA=Uxsk@$LEc*9kMpULND$H{rEqWcS^6^77A!^GAR841GVqnAWW~W;Tr%;TcjB z!{0`NZ8}Aj{`X^&zjL_MwN$Jk7KlhcSMYt-dzQF1xN^av#O2HCvLh*?2`?JRFm`Wg zAG8pBwAsmy%Bj_3D!LpLG)*s!f1Ul;5f%WUn9w`gTEEd(W6$2438HBzRXhttNyrTC z5{h^^a2(-bC?SEegbbIdoUoe4lIeY;uZBa2BXSNG6y=EPRgS(wgOBU$c%rvVa6njz z!2f9JyW`pV|L<>N)+n{NRP9=&D2k|2)E?E^t-Yx&M(CiWr6{F{(b}ujj9FE*_Fh3t z#VTqAk>q#ZpYJdKNGO3pF~bustlJ-cJPDEF)4Bz*-zQ`Wp9V$S zO)-Y-AQAoRM(HV3;+KGE&W2{H-!akJ2RFhzd6o^z?krKTqS)u0_AUOZ&QyK8TrL7K zFn*FrxK3qnfV!pmMe;lUL>ZrF_r`*=9t-O^&du&=8WA(9=VMh5kCnjny%_!3wF zO9_VzAafOf7O8+_qx<`v?0ch^+YaGlEcJK$c2Tz`<4Hj%b8WKx&G1H*^S2Ubdo*~<; z!7AUWRhdl;>B5O*H+TjCzFlL3{HMF_(pB_V&Pn^?w>TbKPZcDa@^(vENkuP5A%9gE z;5!?Wn-pq1OEKAQZ-Dm#gd}SvhjeNF#393r`rnqVyAX&zA?xB;m&<``BrUR&-MZbh@)BfTM z3p1l~WeE2`VHB-0mlrW&Z{Q{6{mL(Ox0`$~o^+B_a6hT$I^KAZBBpa4aDKUwS-xCc zJiAe?_v#AJGo@?UX91iWZ{%i2&`?s~^^oD5Bw((TsLGd zojI@B-n!j#xA*05o) z$2v`l{3#h|eJVr6#dYvMTn?+|zzmkst5d}8C4)9d^XL(k%D&k3EGLkk3^(9!YffMp z{iI-BRsO;v!&ioE!+wU};sDoJ)`V=wvfivNGmU2c;I^=s*Wgp(1+;`u9hl{YJlLk>a_qul!>BF@ zgJ(E_XIUxT9UH+6ZV1)#h)nI4qaCb2esyF|nm=VGtu{6)n?C+2=M%=`qQ7^P>dQB_ z{+g$c7@;c*?3+m?o}s8R(r$$c!z9B1gLkQ0|DzK5{B}&rb(@97$LbhO3xbRg{GFKLRd;*aVs!_gtHTdQ3;)!I%sRpO#`I>U=hqE13>dxfuz*%ia22fDo5e}p>W5S^yIX_3J2(D5(l7RK+t5hSgRDK zSIGTt+U}3ay(FJEEBIY6@%1e`1kM;EQSQkxU-cyMp;w*-&2g!4McqQZ3jc79lDv8Y z!v|%A6)MDtIPj=*ZE|w>PpJCBf{oqoE4?IGUYWxqp(G~F~e+$|`NFYPZb$}6OrV3iNQ9n7#OSM7#EM7jvi4F90VXhw^d6_>Yk9($jM z+=tZ#K@zTL0hGvDwUAr)+d8KvE#?D&KR(#kz-=HhwsW<+`sqv;Z8lZ2!#0^oLd4~F zYAvHcy%eKFBfl4vfwz5m26HlkWcufZh+I-M7DJRrxr z2QMXqUoqR&g+GvMxL?&{U@4YSNw>n_=2`G|w3V`;uIzRb9>F)!6Rx20EAf&>8;&;$ zllx`$n%LF^xD$E>Fi`>~+tAWGa4O0mYl!I=O4B|HiF}Bdi#sez<|(zGYl4sMc=sb;A<(u zv#LzVYg%S*DeCr|#qD~%FLSjO3MHhOvOL0iP;gY%@UQH1SCPKIOTCReHi?bFP5HS5 z!mp6}v!krG;f{FBoNCEBZAoZo^g;27b1*NBPQS22#2dfd8@!=SFp)Cn;^Ay`11h=D zv$SCE3`rm!>|w~x&AowIYWcX~JF;f_#uE=4C5E`uC*gp*P#RP|^ZVH42QGoaMfdMK z`OI=_4_#qv2z-3PVMqa#YJjkt{-wwwE_vrhIGM|Pd%>IEYHssueOYWX(fRj3tDmg_ zzpJd4g2lB-0Shy!d&TcL;mmLd#JP1@=1X27y}6Fo{%KbLO)EChhDLMby+CE3)ANV) zmV?UdcM}Me7rolwk3a5ePb5ELoWTuVdDB z7l5%7=EhKcc`{~Bxdx9v=s0p<^;19V+%+1RdB~kU0dq7~d01+1r@o<~;rZDf3As(` zR9iuzR{PRlSA);_gH%UCRVO+P1+9=6Ec`*0jmtxOmX2jjmd)Xxgdk!F(&UkL(L};Q zOXCbeeP2q_Wqu#_1kmxoa7r(Qw>hfwVL)$pjLq_uak5)sxtkS+>BR zzV3W2w>9t+*JkCEaRn9xrAN}LHkmycXc1d5|ixbBuZ^?&UX6`xvpLj-Z z?H@DJwkz@GL_)c|ftbFmTrU$G#F4N*)r2>xHMUpFk#04Q3L%?8tYco#hj#tXDI?)8 zjJDzxhyw<=99x@vHKRMO_s)iB6|Mta=S=+|Ac>F)hxm(M8ZC#GO${|>j z+7&0s%_-OQZDwI9mmXNc6GFpr$;_W=$$#d*Bgg3b+@#Z-*Rh)U*14QFM^x~~F@dWh z0`G9K8>;8>19enXK(PFBkVsWo5n*_G`Z*?1SlrE6`kQEbgs#?ZUdR&v=NQu7WOO$Q zf}gQv?)v}2jk*6W|9=F@e|HRhF?Wj%L3#-?B3`5@k~7I4WJg|*l1b?#+(|YL=i=Ha zwc>fxZR^SIR+(#SnsTmEeaPYs%hSi%TQ|)(%i`a6N5*uf6WkhIqaD=piHYrru^82G ztD%F?i(p|!AB%Hm1cHDpeYM|SqMjVmSR5fp>GSFJvPJD?^&XvUVU19O&yE%6#|hq~ zd~wJ1&~7HA@-4vr>`MYDb6S3u=@6Dy(3ocUA%^DnUi@(1idY2kzpr2O^Rhg*qwsNX znS0f1>k6qq`mg?zOad!|OSImSXlpvn$%Ag`Mq$!zDh z<>k#xDefkm!pBEJ%k1{i*|~B^h$HgHk8v9=^?U1Y)QnjAzxvFDiaM5bbP{Jy|Jf2O zrc8ig%4J;Vg&i*NWIe}~0kD`5!Xd^*N|gJKMSlz|%DpTXsiWy7XCCn3n8yv=#t#U4 zh5p^u%bl}2F^0$=M`PFYhSx7Vh&fB>Ed-ztgG5(IhYoMr9j`T)zq1W=GkCLPWvYAP zA3Uy2|1iyVXcuuBjY82-i*qbfM!7h1N&u$^BS9f4)P_4~xS!}^iOdGTf1SD(yecm1~x473H51s^3m~aDd zS;%{tFs9N+PiY=-(G+)q%2)b+F2M0u;w=nvLl+J>VmnDSc%hYL6e)5+lJ3rnFCAZx zgz*KZPg<95$)uQ@P6k`j&^r1L5vSJ9mpd`b9qq@c+2xtxgq}1`{#9PmX>MI#I0&o8b}qz(~ANo zB+wD1^kD5{VSC$UjqjGUe&;fGq zE%0M4G+H;{VP83UR~A+Z&ge9f`$STx)cH{IszDJVOOg1wV`SXm@NH?2ek0Y}=WOJ_ zjLt@eo@E30ly2320-B6@Fp4)BV*h9$(ql|A%&^)@k1^5^g==s+2E#d z#Tw#54$uOy|4r-dkJ6c1_mAXZwvuuSApvVzSls=fP+yf4e4?ErRAG;1aqc#S9p3KW){c*7ajNyqTfuj6#$2hv+a;XVuNoOi zyNpy-obFqk8(*Tw7b zz&`Zg-Sl!1Xh4HKs*V4yMdGmBar}$qX$n6Xn3kaKue_1 zB+(axI0@u$mNzHi#c1-SOE;sc(I>HTXa*E{|A^ZQNB@_ z>_-pib9r`HutiN9~CWw65I}9>;eoNW%$Af0{w$#E@+J{W7NPI8qZXC0qu+J4X z(!$$EDHjLG zxsWhT80i1r01xq#$(1ovCla z4+rAeTy~V#XMmRFUBh(@e)j@T{9jn&if8hzI^-nv# zfPXEK;dHNaF8a)E9qUkEnNNmvQ}9xM98&B?O7+Rf3JTq2lkhLBI@8{pvb4G7_>Hc% ze)zRKF1CJ|bkhmQ53hryQ9PS0b8YAfTjCjD1UvQ0X9J0##z$9>-ITyH+IqL43RSm!mH2N;7%6Ve&$1NPEmFoWomAf zxzjadI>JlxxdSidg)hD>+}?3s3NAKq>6Ku9Eg>rlOW&B}5eB;I=S5}KKp7qzoC28~ zYp`MYs6c}eBoDhBRcgnB5=zU=&4ngCQ+IAoXdctqxe(5huKSTm<%O#3eoc{D<6{#3 z5FOa#ZS7^H@i|S?Zq2_v-fm58YVAbXjn76`N&a;NOS0tzKDzl&r=quG@|NOSOhgAm z@MX<3B@0E-w+e?Tc>>&}nGt)WV_ZCJb?slQ20cd(-`3pPW?qnn%ierMiDO8yARd8` zdN2H_^r|tG0;9O|;~{^1oI>aIHM(A#`{daPfYc>8lVByt!T||MmJnI?aMhrjOyghK z;eqS{O9NY@1K+ElD_r@;@$**55|CssQ()_Esh|xOX z&g)zGAH2Nf6xGL>w(sLStsnTKkmR$lA)OOD0l)es0!X$}Xgb`G2x zR?gO@Bf{B!GoJ%IUAT$ubxUp2_h#BsKdb}FG^+&LSN&~%mDlhYbw}RrnkQBcCtW@4YZM|9KNL&9T+LUF`)JI-YS4O5Fzw%( z!7xmQ_t;`kwYEA{kkjCnO;H zlK_lmC)(ER8Z=?X$VdAS--Ux+C(q&|XIf`~NgmLGclj&~+^aDI9UPWm1rhqjfAKXj zz8gbr+5Z7{N=V=flOp>+u=3ozbflT7qv+9Cw!FjxF;`b%hy*(TL*|IsYP=3%FJuoy zjgO%#5C!i0&8W+i{auco4A{z5rn+LC>U@O7{QEKQ{y~Y7)Yy{TE37|FamPWy>d9k< zYkFW_Qv*owLa7~{ATJMTUYbi3NLu#B@a7X;2_D_%UNeM8rw4ScK#n6uSdn;!a*Nlx*oDJl(oW57k z@>pmfR(0suEbd*=nAtoFsSh2&N1f8iX6;_rTv119mQ+~vp-EYlr&mDJyoQ!O(7kOU zB!S--_K*oYggYRuYMJ{Z*Y zIsrdHROhJPPN{b5W>6|pinELRLraRv&4r*gR+yAGrw8RiAJ6i~@s#<4-zQ19N!ppz zY>_;>PW(Ccp4yCHee$ULty;DFy#4@i{}n)ugghoAchpLJ&gWQXLZJulHgrGT?p)tL z^B>+6PJ1u67QP+P**cBKOQddyOK|jl)u_Ioo~~Lgm=)=;&`F;|IB}~d2VKAsrXHa6fE%~j~(4i^1buX7<)_y~ z%j%DQcp9yh@o#MW@V}#IHtCsvL;bo@!Ba}oF57N^&QXb67l2RNXyLfNKRMJ0%*u3G zdx!8j>lmEVor`eu-L<^o+5MGG`^YB^%EUdi{PnxM@EcUn)*nI-0oAEAv~E;Z0X(Wu z28(^A285Ck-b@2WLZSY#8eN6@fH2zFvc;DSAQUji~39YmXKzDOgS}aC+SogGBQvyY}#q3#JRwHmZhzLP6ax8@fap{GI%3 zi@y88{mPwp*rDv(^-6j7jQKPDJcrdrvmA=Ehm;0m80O3^NPRI+ z{z+{`5x!V!Y3V(^eN~Q%v&YKhv9IUz%pcw_%$+rN3_}zy;3B=FYpC2a!t(sgk#OS2 z?AYrS!!KXF3qZ?AHVyd}INS%2GXH$7-L>`Lo^G9#%@A5ZVO{FrJKW zj<1Uy`B~#^Go*ig^x}l-cYP!z&`j0oWI)VZ5#%OLfe z6f)M@m33^~+LOG)*5?0XAt-#I|6z~+V&Uyll*f-LT= zK#~f8Bmd#OS*eFbVfuW=WEmOTgVv(S!3mloF+nKIWr2q<2#jip`cG9AviJA3hn1%a z$I@3`Rce}?5_Jh%UsZzWmi{*pPdG>iaw4SjA0Cd$b6qK*xBMZRkv>l62nr4I6PGfd z9X3vR?Hz3{97)k84bwRWCo|bETa#v z%A?B6EDgz!P)$!HrD#w&9D*!Nm>s2{=_>zEp19qaQlicmVs%7kX=iZjA6YyBzuO&^@^M9TTWPnUN-UmBk+vlfN;(0t+ zLW#qjkw{sncH_MmLJrv>uZ_1aTXfFf>GP=SzskmLj;gNpf4=IMJpOn9o0@7_?984` zUXGd1JHth1bYXt397%V|xM2s*@)n~mBgm#g`7P0*E^j9`x7=S1qaUM#KTkE>uxxht zQt^*a-MF;gn%x?`>^FlJw&mu^H!P>aK$jcDQ+Zi+VBF;TVIEE*y4q%BI>Cwz0Egpt z+f%_wX`?XUmHbuCRh8YMFE(M83RFWJp|B%%1afw_!O7_ATCi?G z(9lFkHxI)VzLiaL%IjRs)l*ElyDHyw-f-zSn{f3sF8ld=gilN-4Fn!VmM6S?me~r< zb9CgO`_6$Z=n|N$@RJMJ2-*w!^#1;Fx{}Pn+2L7Fjf3A7_ORvTzacLl3&xkVbYkn3 zmIFa@7J%nr@EOUC#@9hHvcxqTrq4dh)npewM29YCm5wNUeOCnZJrTc0BDvw!!VLG( zLnzY4e9SanIy$)F%rLfoNI4L7-_<@%N$)~G{KE~@;}@dcPUfz!wgQ9sN-;@q^r8~y zJ}T?=4@F`Hy_ZN}Yug)I?yR?7jL@8!5p&T~_fhJ@ zxWKEJuTUT?l5jveRzKtewdJa+s)PUsbId%#6)>`BvoQz@4_|?};f_jA%+ld|KT9JzeEp&UtmsJ&tJTg#6m&J08y7+XKOJg~91FqS( znWvns-rDu9-M7z@(RL9sL3eye1Mp;2Pp~4PsoL^T{XlGpoF$w&?yYPNukm%vv*7;o zr=L#?xR7!93K9LU9JVS~pE=8>$wIYTRdebfVW319aCBNip(;)7lnaO)tQXHtm#vtp z1Uq-EE`;uswda$FT!ojV3GX`oSBugLV_&Hlb-JE-E_9Gsqv5?+y@U2yb@oGyUXg6zX)Y_*5TJBy)D)lk=JgC`t3Cj{y1 zVruw{qaE`8Us4`_U`6qC_FWtj%#XGZ;+o!I`d?x*NC3xee@$sA$$X3WcR~hG;~{Bn z_Iy3GY=8u98I4PJN5v8u1vwCX`qB33aYq<>e>k!?#yM?F_+t;lLL8`IJt9E>$LII} zQgmAgpY7>lpL?O*bM2pl7IJd$($ghAIRnOi09^dC-3yt;icdua4R5SFLpvRni^p5% zcE}2=?0U5IB-1_xJsBF(^cIlrh~CL~B;MLwZp8e_#3e8~0Dwlgf|)r$K6y$KwLGtV zJ%vvK1ZeEe5q!Pdh)-GH86<(;wG&P2?`HA${6wccPgq@Tyjtr3(cmGP+{gDn3qg+-$`Gem?3iw zXhw@Ic5YckAwU+3>U0FV)JJ8-A2SmJ<-2t&CiryYY&S1_(~%Nb?BVB6c9@dF34*Lq zekrVN&Sm1(PrI}z1S7IR1s=MUdb#M}Itbz0wg*Dh_3kBzyfWoF{{=9~7^Ij#t%c28 zO}z@Y(s+d$r9G5&FZR=tCXFUijMCUYAfJ;;xJ|3kTVi#tO(`$#ugwTgcH95>zQ^#ydfr9LhjPba^>@N2Om*F9$ZM9y=5Ol?o?kYxFL z@^6Sd?r&AJ9#;!~DHF@U-uL+IboF!Vy)-@X*NZKUch*fdKxmDmAR~vl&$`t`z8K6_ zh(7GgT9W(2fi3rF>%S&x>14GOuH!b;u^c6dy~snIZC;!Oy5crTc^xRv%Towzzg%rZ zP4feUM3Rie*3~?&3s5=XDSQ}@`ZcJeiDEb;tNGBusBH^-6;w}G|9i{Y_`CGu9NO|t z8{e~~DkLU8u-MoT<(6GEpl%YcY?v!d-@fxp(qEo3!evy+@Q>;YxG9|>;cxZ)k|5>$ z5D=TIKQ49>D|2q@L2Ya6D91Db3O#{&V@dM!e|)hDI6o-Z^(c`qaHOqH-ZE{%5G7fu1H=c zR`XKLKQ6?Bg;({t#zV(B2ivM2$_SX8p^dlR`aKpX)y} zl;v-YY;fj=Va1F?a16_3h1{3<%SD#smkEEB4mOo@&5z`tqVuFoF_wkJHTM4|OKTFm zb$_HOPqN?#yi@ttSJC;$GlmY`yvK+sE`ms(W8Hn7ydT2yn%=J}4|e#GB8M!Y?UVAB z7fn*PNfI(iBM+bFN+}QU32)KkkEX7WWpX_OxZw%hwHmD!40M#&4!c<@D>USh6pI{; zNR2M4(WbuDXJk4X8CKAd7zV%*`1S=LhcZfoJRy=hFLd&!4M46IZjfJyTWqkX5+q5i zRm8kCFgB>IVHkSeG&_dDZZiw$ULA)5{@b+Qv#I*zM@H;0G*HAhbwT||z&Aag(Ub34b73*_% zMd-CYaF)2|%Q}An|1ofOJc*CZXsAv3l-PG1qmB?u3CVhZly>6l@^qS63&|$he8Gdp0H~eob^YwzSIB_vLx?=;Oap z(ZDSyHFJN07^(iy|JA(PtsX_i_zQEphe~IAk=L>Ai?-%MH#ffo3K=@p{oUE=p8TRn zfvxI{{%+^j@`AxF)Zt~^js=QjS8 zuAJ*bIE$C?1J@w$XZKAm0p$B+T3-QZl8a@7H((Dik^@AA%J933=VK54`T1Wi=C+#D z;Ps0y^cXUW+4!&(dQ^@G><$Pwz`YkZkb)0`rMc|dnx8& z1|h{j6(2<)xfuwVnC5)s2DDuEa(RQMDd84F^W`dEvYE_suy(&etN|2H5I*3kcBMg) z)4NQW2dF47E3&SW_i^tnUq1r>BqGfoq;lHPA>dDLr+x(cYt`j(-uneGc&4uU)~n;Z zMY)XY3NP=bb?CWli5K4_sFB=mo}Ch2-O$dnLu0Wsdn1ofS(;`8K`wU7c2=JdnZ*(8 z9^ozzf3$dpB12EYQ66q%4d@fOqZ|y7Vje;uxdgnm8R_`D@K63_QX&pwF5-J8UdO~0 zfz&UJI+D8%%3u63HE^JR> zKNLF11^VhhXcJDnq`|qL4vr&gtbu5-Qroy}sidhPXD_r2~|3oUzlT>u~W=Mm)j8<}u96v1P~ z^Kx;wa)9Bo@b4D=Q^oCXh%^N00IqtpL+kzUM$ z9sHI%L<}~U?~vfSf5nrV;tqE8cUtT~5I9ZX!5f-~u)#sXP8xrmC;r33T)Sr_4#?`Kh1Jh{D)@RT$SKv9^v-Ho{mL_>#vz+Kz`CO-nx7y+TcA@aX|f-mR=oCrsT zUDC54645xz3s{1{Zt1g0l*#{&1Xg&Jy}+LKBW<@&nlf$iT|NzR;7f!alDjTH1$nW8 zPW=q?;9Bx@r?$UK{gDRie@LE|^Ec*m6-iv2{|n4xK&Ml7Fj#{19Dbz{=Z_hJZH<1U zEq$t^0b>z~NbagSy}$kaLl*f@()+(i&w?!?ej^?0NX@|5u}%6$A1N;Hzmkt4xNerC z^c@)?>;W-ERx}*B90{x*v6Kn#gunBAWQ~rwubLnFNQZ$t$0Ouo=Ij9Q;_?L*|Lb)@ z%73Z&V|?W8?pu|;B0YS#S5aHP%xYQNWo2?ClBO`|6I5&PSh2apZ^h1+sxWmZ-U{c2*0kVyuO~k zf!A}RWY6)Mmu91$(<1@XBhlt`VgHq|{>?c6$TTl5crwu{O1LvURPzq$-v#~`=eW^y zzG3cq!>Lxmsqu@iZ%0gPSL`SCJ#8@!-D_q)uXzs8+UiP}4T#$g=-Uo?*^X7)n$!ds zRsX{#-p=A}gDy^2J?in$e$BUiiFN3?bLhjhe;boll4Yn#;xTJLnAIR4=i#1*1Aqn%ULQ41!hlcfPccPm zc}41bf0O@bZ*U+nZ2~a-(+xP#Pd&V!V*iW(5ne>0Z0IG)yjjHM{1 zp{S?ve?HRx?cx6-@V`X>Byl`S@R#;ZHU}?$kQ5#eKCc+h{%}hy$l7R2&YMx4dd84e zjw+3K;9uMU3fLVnZ&o>~T+%o(s!U>3sKdXtM}XZ2EXV{atKbUIU;ahc;D>CfQ|FTY zeDMrlZs3K(S24?i|Ni5G03ZmD7zhHWyA}WaO&?UQ0)SM!jS;9{sKndi0YSD#nZy7P zZ|lSQ-*@x>J@>y1h!=DV0K(rJ(z-JD;Kx`SDaP}WSr`Et5N}3B8a!NOeB9SDiQS|n zz9nXJ6SzzW%(&9@{1Ve%kV?vNc>mpvPi^4t8(UBbinuNYMz3U|eR4@ryWqTUMZR~y z2gM5rJ0T8siKnW3l#iZ%R|VKPf!0~6q(z_iw<1CPsi519uV?qJHjRd^zFG3TVG=sx z{jIdzf_edPAk>A30+qX`Y5&d^)1U!&VQ@D#qf1+g!1Yj2P(lXQ91zn0YmN}Uf0~w? zUjRxH#fyqVo@R8faCrrwbiv0}(l;ACWw&Z*`PZaz5&asPg9|=@4?fjaSWQ|EQzGLkI-1NP)kGBrn5?2!I_>+p|uz z>Xk-w-cc1^N{3zL$e{<-n|vB;oQ{(iFAVC*nyOtXU>ki6mpx7tx|coEg_*i0BwAt^y>a;HoRV z68^)P7_X{&?M{^Rt($L?j3bNhyb>nK`8a6oButBvCeHqtXdKB?JqIojmFYQi340UM=;M?RJ97s1E=E1r&3pPzfn>)10%wVR zB)KS10@X`!%^0lzRgnE6UZ)#ufhz!qyO}fix5X`-CajwO?}D7fM4gMaBo`_&Xo})A z)vF-wChCCgUV>x%)tx~=E`eiQ6sUqGE6p9!zXgf$V7;7w3c!KD{{JZe2LikK+X9T> zRPeXBy12;2J0BMVlYifT3v$4Lz|6l{xPidrKmA<{l&Ew2ZxY;oA-LV|#%=y@nxZ9g z_z!4A)D0LT>)Y7!d7;9znL>aAGkzD&eC>I zQBi>7L+d+Nbt&!)2>?)fb>V#YM?(Vuobv%Eg|?bxtMT6SUXFOx&MutIc9_zuaP%OQr$ig=__QnO*)Q(G^X(%1;sme@2jY)Yd!)$0PjLd zDgt;UB!7)jT$+UBuct(j_oDs9$Kv$b%*$7T7$0KGb+xe?SRt%3_+x-o1LFo*6|6Sa zW}k*Aq?Licz`iaN?<%)`4EAIV;Wcal>juiA**CjN1NzTDaesKJG*YVP9w;NYe~4K; zAAUiTQmuPw~T#N0`+!{9EQ?KbSAI(YKgfWeQ=hlyH zKaWxKqOXmZ40ZW+tjG{X)Z>z>~OP$BO0t~qP+_myvFYjd_ub&OH@x04FmL9CVjXu@G^A?@xh^#WfR7RO4 z3_jI7E;3(xn0FeX>hbPoYHgYQ6V(at`yX=_VzU)DDzBt{n^3v)4o}G9x-wpAc*Y(2 z+9dk&RStpRvdcHE_q9?!=93!&eY^K|&caYZ zX7r%t>!-Ta$OBKhO#c`=6igy+%ZCbTKdg2B$X_ut6~k>`QV=n=@&Zx5N%XNMVye&W zb^VO`23_F9vo9wtTAD*w37>2hO!)0$IE$u#*~I%{(gh9#1AjX`T6fSB9k3b=@b2>W zJg#CJ7?Ex`Y&6X}lTFp)-VmWhk;ZKF>=SF~I5zZqyx zDrC)yrXK!!E6_BBq*@o| z9uwPj{PYn`WA+e|Q^PodJY4u=sL&0Ng#RIo=uKnL z&OAe@>C%gmz2XS=AtPT@#CdYYEjAmMJ&(#f><3<1%#G3faH#QR%2cLiS-%mT-$==> z>cfTfWOU`FnZr{3?=&Vg89n)xr+k9;?+@p<(W~~TZ7DbBx#kB|fug$!Lq_80hhFnf zH z8buaVT!|M7>5!0VmKufVWk1-vW6SMn1M|TTm3l?ht{HDwq&PA-l*gkj=hFA~E^qu8 zjmi}W{^7zb9>Ea>Fy(Y!l}YS8#4$Gf!|6ODW{H{5X@&`Cy*v4JmLz4}R2)=lH415P z()Idy#@aOq*I}V!RrmSto@FoiqB;5J%2G37wN=}DFP>}d>_%AiVja)f@6)x&zJn`O z%MCVUj}UIWsQ%9qY*xI@8KtI4FeQd1r%$Pck_XVx z{Dy_K>58dh>z6MGARex6hs|Xr-&@Z5&}*be%wY=4K1JIJkuOvGx(4z1g8lhg@@MR% zi(;J{ocsj?Wz8}1sP^Ci7M1UFvFQQu96SvyGU}r4ye9=9(Z)rxNoC` zmScWL3EXiK3bYIkxlQ3p#Cn}niUx<^P=8z9H5>_+2KJ*%f^Zz`Awa{`z&k~#`iUZ? zI7?i=I4$kACKiC}IULAWiGjblqU6WjF z?bpD)!G5#Lme=QG8JYE*3vFQu8C{gE z7=1)hRb$Ag6>JbORob#X256K5toNtQvD37?imuZ;KSUbPeGt5K!=THpco(SpOkbdC zS1|4{+08yWe0v%IxTkE|JyY6PT)bOqmh{C%DfA!Wv^`D1DN6RTN#sN3Xw44u!dPO* z$+(P5heY61H$~$fJQJSxN(4vSi3m%@xGXD|qqxYY zMg5=D%F$rqUasm!%>CB78)t^rP65nQ+hnpNQYpdqjMtY5C{4aHVGfMwJL)s6s9yvJ z6Rhw6Yr-@l{jFJuTdW6bWbxW9c%4qZSb@@w+)HCeZA9kHhdI{MwWs2~k#VmQ#kQ$r z*~9UhFX;1FPf|sq49DRdVWi<3ax6ZpQ`oh?}>Jm=f2@@k18ojg#eK=aAy$Fi3Lezhl#01)*oaY|tU3t1mj?PGKwtEu7kxF^} z_0x(^U({@)r_IG-S;s!yu)qfseQ2Ho=G!ajY4E)-Y~EX1U%pihO2}sO#NV}&>|tfx z`8-{N&7kOU3iV%8Uo#)LuCTxpn%XRa>|s_Y@e;4y7?!QEllDXHJ9n!K%F+^SROY6x zBp}B-sC;)fcOg+2o8d|$k3Q~&n@_zS){*rDs;&Gvd7x4I-s*({h(aCVd2FT9tZuf ztKX+YsHFwFj{;ypX?NuruYXc?M{|wDIT~R#A>mM2Hj+E7O*;kerDItiQ ztn4~}-x=^9egNiOv_8ZynZgfF7iy2*6^48Ehd&!ZDy7iZ&jqOz_&N7`ox)OOoCU~I7S+iuHp<-*8 zm$38I$d9QDla-s;jKun`5~EV)idCC0n`ZO*D;O@S2k|03wX1?B=W|3{@T{~;-#>iJ zo#;h-ge0BsU6Vau*cY8X6<9wU*bVHmgZHQb{P z%5;!1XY83Xn&5bv1hMLGWrC(Or{@M{K@V!|THU@{<4A^#B;M%eGqS>oo z-vFE-0+k`?V2S$s=oC;JdNw}hJ6K@}0r$*Zy2>{PeSXuv6hn{n->QTAW$V`m3JM$2 zMXvB-?EZ>>?ikxh?xrBp_t$T3;&XR*S_psWQ<5dPW%)RqJZGv{yWY%`E z`xA|&4sIcSqqNx5SBuQ1@naA39z9mSyQwPS)K`WIlS7q?mPOFoWFCGJlXaf-u(fU4 zOo%$Y>FzaZmp7)GwTae{?>afCKUC{ywL!U!%eSEC_;a5JOtr{58uWReSeifH+~X>2 zFyck)6m9?BC)MO^p$EGclp@@Rj*b%;!vG;24YLHT=x%X-uboj+}*-ipu=5_Fm_>Ogi z2G5HffzKvh<*Q=svj^nz&UKN}J!_ZgKgi!-@Pdvmvz#4&X^@}(Z zOvz!DutbbR&&-vFAo5B==AG+nwYHWt)ZgSb!eIx`j6#YU);O){i6R-OawP>LeM+Z> zN--_TrrFIfbXAX!J}AB90d7G(CH79$~As~v>lLD$$JZ@-n*u( zn)JwY?6K&B+B#-F`QOyRIqH<|E< z!$m%JE$J~Cmb4)gR++u`Z}drNc%BK#`qi6KU<&4g1A+a9g|l;s@8UJ*O$NQwF;!^q zd97X&S9CnD91$^e#*m&~MwH6bL5Wg${z*%8lRRIp+(B&YVP~&65louAXm&k!I-3fE zh}w71pgY;!jzJi7I7Q#%mIOX3-O#p!H`A&?=t)B8aU?wNYh%z#6yJyRG9rzq#LQWKA<>!G%UsGTqetn|Zol z2x4eb5Wf7?Ut@FGJ)n$v`UMqCF6GRqRM_t@nVQ?1wecRey91~Gv%-ya|Klh}1lp;8 zXS&F|GCi|!Nx)zvx-~P9t8}c*{%78!uakbSwH!qPI;w6oJ>a~7^3%#`gg%jR>}QmX zyd)>kOkxq3j>+rN8Bx{RpRO6V&)XCf2z+v~eiHH+??*28lJQ}GUq@MJy>AbpU&=Bp za+#lgeokn-8JgmG*u~&D+1#lR90O@3@5%xYTlh`Vf$LHSlRi?R(Ic{y&2>yIY@(h) zP?=6T4H00Ut`GfLTol$2aGGkCcWgx;%s0$vq1f2Jg;G9z%1Evb0iA##j%z+?unW0w zm+YVbx4rLVdqf1>^8VA}8PIt9HvN8dSV34pfwnr18vAP8q-R>!jQ{jI!#jU>GBsfZ zF%OVaD`$1kyE^cOtVJ^>-C zja`q_o8+A=4ijZd(s}6Y?GcDo?lu?f)d^j!+ekmRJ$t?TNXE9Q-f<7>k8l@TF45`f zdJV$L4K`DX%H{L24i>I)c>2pK-elrtAprd)_#^WD3B;2rx0RU$VA|`b^Xm_AbtA=2 z#ljI?DXH$f?~eKr0;NSp%y3$2S4sNkPFq&1t3X+Eb;up^qagAdr#5~ul-WuogakO} zMp1x#uZb`X(^CnTVF&qx4;G`XRDcC*VHBLs&xsVX_SCT;&EaX{b=+ za{gT|I`nH;LAqt^=in7YU*^Va>KB4eH+$~Z-n>l|qTgvc%Q1KvOMwbKqdZzT(l`Z3 zl^S7D(l%S&t@$;AL8$HWQF2%B2HU49^?57mle=~E(jA?Bb?2s3`~DN3pE=8Jfq-^Q0DQXASgtp1Tf z?UPb6W}b4*d)7k(nroqU-f<^tESYT6G%l13`%hOpizYmOwri&gPnO57#a6`Trlewv zQuhuQy8@EOKND^=wz`C)a_C?uEz76BXOcKx$;OD9Zt-jC%dn}$jx_(l<_YZDCua*&A#etISN$+L&&sth!lwHi?pG z@7%3qKo#xHIm=_JrQl>R%W%ttF?*=p^`{{@jSWsK#FZBOtdx8bn`Cy#=jj1*2)yLO zT;bOoj#6F&Q7rT>Y?WR!A;HLChf13aXfDx}$y`I-H&<^0f<$fafJ~6f9qJ=KJjT%{ zRyMlx59rebZTXL@>ZR^%EX7o!EWd>=)F;JF|JpUkO!I6hGUbVU8gr_0!<5(?HAKa_ z{0Az=&%Hjo9>dEcnDIbozrX-_KU7{RRWk-PpLI$aAB={4eDX8XS2d?|{JM~<`Lfz+ z%FWlQqFD!nmwJcR-L_luKhB4ZQTtk1Ej4lMuq6~QyP8Mm^3wG;<@+W=P5qwj$hR>p zbvM!YnNEgha-G}VZFv}&hwRp%*gS+?O&JM{(cPFGwNr~Mc%4G~=-y`j^VKzBwnyVW zulYw|kO3NfL#hL0)qBq1G!E&PZapCwYu6|?1qpn1=F)}nEQ6b*LW*`)YeQd)?enCd z3}GSoB?Kbebt*T31`!^2kpx*X5|1KTZ}T4WZ5NnCLTiMGse>B$kJDN??mm>yH2`zPSR>Y|L}7a=Ugtw<;g&6Ns71p zk6Tg1_31htUltQnIJ02z z{Ik_3ea}D_s2V#We4-F$Dee7jD?HetHGQ_CIYZQ5z;+IHsKuDZ!K4DxVoXgjjXI90RWhS_Oas~Jj2vkT)F}Qc^X$_nvXU(C zjLt`BlbWMDZf7kx9=^6c{cIh>mjI2n53Ec(@_i6eblCVAlW81${9MLm?u0R*+cRnX zu^6S`S;e0}`p&cW&l+>`Vp3%Fn`X|kjRdTOtcPnGo}64BuWk{_)0~^P4rs9?%X3jc z>uFbRFW0=SSz+ZycB3^LGnYiQln(N4r}p;FAEwF-*ql1pp^L|a&UZ($FoLKh8@9Bm z&1~!$OZa39WNUAb%wwKQ>zATZlapwFEP4`q=-MH1nKJGdR4l zfzKO7KgcG$CW}dekgZ7(5l5yKkOAt7z|=mP&z##9aYD@&wP-%mF9>aynP|$e4No<* zYK~+d<>w($%&Aggy-FmchzBxtV~iw>2WbcHj@S;b6f?XF=SOURwf=y*zA}#zc%KBo z`1?;k522LX)`)Fc23Vq{&u=ts{*h2Djl>=;NoM*D@gFxBIn(XN8e@-p=4g3e3pyyw z72fFe-QBGZ&ug2%f;>>+w42M|XOEDVIJ89B4d-X<8SP{cq|z|6wX&;~to_ ztBqvy&KFi5CU@c5bNy8E6;8$U*kVSc)tQCdHKS5Cuxr%Y(YlW5&+US%SIGhEU3G@G z3gCxWrg_^q(#@+$ID`g|ioG?{!B4>3c_0QJ=DJof-%Y{XCd7wuNza~r6`ZFPO0dRP zgNQ)rwn0)=G)+?R@+Y3%xy(p(L4^lx#$ThP3bMyeV~w*)btWlrba=$9zv;OyY7AA^ zPX@0zaDo`l%o^hZ(`Uu)6;=^`wZEI6Z)mQnK(1afs4d*7+s^$=#sq&G7T$971}$6D zhc=iVoDa=+p;YiTCa=jixOwIIujR^OR?ny-5 zSN!INhHvABulDoMNKf`p6n?-5p8fmzv=-V-~AIuU|=NQ=Wgj>&07k9cRI%}-4C6T|R zwoQs~ZFj48XbGYS9J2LNziu;eUCu0zB!-2yv$&i?%w6cGLJpH8S5niyx-e|q7ln3M zMV$2?jh*Etw6PwYz}@9f-Y}_zF_D;kiYWa<4_cDv4|HWKF4RY8!SlzuV`agh*J$S$ zTDtl)dTU=n&l9{u5^n>7SnL0_inX=7XLsOm*o<;&ljYPnhAT}Cn`xAaV2jKBiH_{3 zzhpo@lDHhO^vj5|C&rj@gk^#`Qo)QWPaL5zMl%$5SiYOp5!^ZZ1UCl2$@pEW0xn_g4#1($*EDiKipyfOJtj)!GTcKVTaxzNmte8nH8h);qOBoC@kCI&=K@5WA1#(CHNiex#cG~x+! zWKfaahvJn-`ue0eCLY5)Ddm<0JlS+zIyZOaD zqZd)-o5@P&n8B0lSRXGx@HQrmXeaR)?{?mfEBlzXWGhi9CFEL7{Y)JBW@jc7h91gm zJ%H))^*$=6XeAdC>h#x`ilJi)!~c`b+VguIQcH!BhNsMYvS)+lk_)v8QO=)@Su7S^pxDM)iHg@e%w0unC-|*@a3MW_| zs)~I}hX?m%ddbU2@H*Ce&27{wLLsT0=s{>@A=4j)+z$ft)9vFE>v$qps|!(dDq0d5gp&pk(x&s{o}SqG2EqZ+d)ofaBO~n_db3io z+bD}&xf-^j@OA1|rZ%C37P1y`hdm!G9l90r+*w2ySh_~}uMoq5MsAA8|l?Xqz(aecUCvzZ24rwcR_ z?m37x`t6KSt+jm3rqF;|3-(F--5>$Cv3mrEx3u?c22P#1+OT5-%)75J&dX_O2UJW}h$ z4=jtKy#^hhetPyP5hr-&D%Mu*HK>I~Oc$S9cx>~xXpL9Zkhbi8NnUw^IbGYWFa0?< z_~u-6(|^vR>A62Q%c=8(-1zC;*|vqvQz#$~^*C1_K!=|l7V;T5ER`HnkqvU7_h>xr zrr*#7-y66h=5sZN3S%pR++>xR*4Q6h=DHDY1!LdcIO`wGTNxh@9DD7vnleI|B&Ah) zw!ZT=)hE9Bd~nR#pJHt+!0}L-A}y!U-oAgNtBcxc3m$@r56Gh!Sx={XgxL0JX2rwP z(^R6ujJMK~e_4Zdjad$eo07GoZD zY5Nt&{$B|So=45fG8SYPFybH#+TC&1THJUX)a6J$&AnLTIB~k7c~0pP`+KCKa!q3g zD>$;uT{{p{^yPca`s4d7&2N@-#(7zVTqZL?ha~5mpTv9A=iB4wcu;8G7@IrgO8)>x zX?J8_{l~rpMl4E}O-a{Q_(ej-=y6!euogGwW^5evFfNsG?o2>eBhaZqc2)|FQfteg zk1v2jHN2kH%jdn%oLcFv`^8qCATQk#8IpDSYtV~3LQ-7J=ZUg@TB(dlp(T#cXq8aH>`M5kLiy0>V5znzNKicteTc>YRssdE}=K1r=Nq9Jiu=K^a;eH%9+cZjDoV2TB}+zDvCw2Oq9j~EZvq`G8U4&$*S!PBlnhd z@_zel`sQ}Nq(AcLmkh3N=wjPXKk;$79(Hp{DAQ8%=SFREUUgY|-;8OqZioL(CekNe zh{{Iifz-~q!m&4Q@l*W*L@V7=D4U^l+d=tCWLN}IpgUYA_IT8vPL~cF7!Z%rt?2@9 zSkhtaU4{3BNZ=H-BxStb{E(-1RZ;vHPY4a?Be8U<(1r;S0}O%xP4YH!q4r_uLBmVQ za`^dkDdre6QAp_emEC4n-LS)$o8MvDm3az69;EDBfYZg+*WtTY!aS;2ah#>wlmk*A zsPZUFW?UjHEq)#jo;&L6+j4;?W$e({pGLD5hYj_ka=!FX&t@dn+XsnYZ9#mhjLCFp zG5hiLL&s4y2D^lg?QmUHo6H%Q7|D^Ts6?@H^7nn&^6DImYqhT{{53Wtc01nZ68EIo zYqvw`M{z?!Ml@?rs*{ye7JAp!hpuEspEPJ1aNdmlyf!2u;18rtvpzMJ4?6|CR zCMKt5EDgl0svCEHV}UsT^pJ~S!R&CQOV($6Kv!}ZD!hB|f&SD;|6^7+&U_V?8pNxpsGJ2@XD^i?*!vY zio(b;P})t`*1TV}65T&|C@G<3{*YoVzdN+l<$PCWtcp4?3@i8cJYG$_C066aWu#5x1h>ZzW;96%daS3D z+@iy`letV5aFQVKkkV) z5k%XkAK|k*Xz&ur0YvF(*PB5mHOVM_B*6^ohp~eDqjx~_4wMqXekk&~*#5`hWp;5r z9$Er$i$lN6h7gw=7$D8VLth_g&Nc;|?=hP4ThBpq{wc z;4LnkfH+l?#&eyYoocU|HBYWT`h&^RGU&waG(gbE6GuW{|79}Sji(LbNVZO|l7)nx zyHw*XOA!z9Zuj`R5z0EG<;(j3*(+vQr*W&ph>n=kbH(SkHZpXfXFwX)GU${jecH-E zt=#hQS^Pp#p2zo}%Pe#~UuAN-A2dIMHk^2nm}rq|3tleWFaE$NI)AQoEj1zlInrc= zJw6p#Iu%-tiq^6(5$~YY$nu;bc*+Rrsz-UH5Q}@o_|cX`F)6`T*1yacWuBA^>`gX^ zz19q(18%dN1MtA2EGFz4-QL@BK&bVHk2YH;(|JZf7Qz%IbVi!I)pH*p2WG1eu*-8Y*NUrg%TSXXI$tS_pspL5}= zPOqmTVt1Pn_d21eVWE&%&_MR3_J4%h?V!odg*!E#v^=kH-d^ey^_TPT_1n}NBdZJU z8ClNf?u`BUMD%iI#=R#{b1o_tJC8r=UhUK)?}!uI+-;=Q0!I5>mqREl(#rheqF~Kcck*8+;jbjLRP|LfgAoY5~bi=aVSw5J-yU|+}vqHOc|z* z`M0G_KDsO{i0=Jq@;SF+J6!spn4+O}FRZJtFuW@FG2d%>g&Mb2_aU}5`r#|C?iRpO zGuB9~{c)2**G13+YwBz`7 zJ^)T1lzJH2vp7A1InVm=aX*jvq@V@ybJ_5%BcGktpCZGd59V3h2(MGN(zY)*>c3EE z_#ab=v`EeO{IcK*h3_o*--wj!T(y{zHxey${7mqQ5?Acsipmn(?UVIcn9;ZF!i=@LxsR1f{gwk+ty zsl!W?s||VjonhBtbN1g;QeqjYHa5T7EFazLf}6^my*}H}Fsq9wSQ5vEQMJr28Z;tb zA`Ta=Pezwt4(uJ7)8>nyA;cVh$WNN*K1t~={Q~~yT;0!GoRs!Tp(Scg6K+$9LPfM?9NqtmsV3Se}JEX<9@1P7+l()KXtP z%~r5j!aM3rG$xO=Ah@jF!4?+|-NX;m_yzPfmio%k*OmdKoWwze={1zCmCJHeLIV@6 zC92gSjvXVgrWR|&oPD2>knmKhKfz&c(lP+{cQ5 zP6b2I$-oD?7KA`YgEV#;##!bQ&Pl}_<%aZrr;;WZH{&JH92z8BYZz<2(mE3(Pe7Ns zd+l?B!nBysqxOIlf}4_%ALKL2-FNvd`G9O9=4PDi@h!T_g>#3+R>4rbGJX-%t&m#2>J!X zYqhoABwEibdUjr2m4&4}&i*dU{rkMAsY}rO(5K_QAvd?p$Rz`WzeeCxf`+(Xcbf)0 z+T%=N@{!vYJ9+ybYheQej`1{-S{q95skva^EqfuH*zA;CwNAbbs_{ES$G>OY{M{)i zp*`FTwD3kh+jq-&gsu3)w?13wx(W5j{@mla zG5DcG-)D?etd*9MaHX?VXEQcM7?VHR3=n93aVAj2CnS){#2Lgc@`)6F}PEFqg(et6?^6ze7ZE~8m1@K8x7wz*<1a3u+P)Gt)8oI6e3gHU6iL; zil)u^(>!*(jn2?A=6%D)4T{rlq-G_3#gB|J)7SDOJwZ{C^XwP<4Y`@n0Pz$ul zcL8o~=zm5h-WJa(Xb(@*tR+A?s>AlW4}zJYTATt`txw~pV_+EBiglz zp?i3Ex=YmO)j@cyPbI@GcieOUuV1^)O+(bVaks=(EC2`)ePI`O`id&2mId4HV)w-M zA5r2Am9538*#oCeO-K5Xns+~A?25r-fiNPRZ%ayRb6oaM(D*fEyQ5}y`t7kA59dnb z^n9QFT_l zEoBR_H|X$+7CY_T1H>tsdy{FLzOqK+EIPT#9A$K>1?6QC2m7VaX?Sfm)h-=r~)Kgn<4!_pquXV26{S za{3`k)lNU*c-r2teudVTGNlXlvT`r1J}blq);Y$Fb&YrOnoHAdwCN0pKXWvfZnWLu zSPw5G^SZ`#MPoBRvpaZY-9bcB-k?9lGR60@-gLu^&b5YgsCsIboTMz~UE_i5rnJk+ zHHJ>E;n~xdRWXpBW6X7+zfPuczlu*3XoQn{5d>%m8`MMa4ouyBEH&I_&V2oZ;RXq| zlRjH~=NkikreBZuXh#(~0w1By%82lOMJg_M`m``y1Vz^ZpZI>}Tk)!=&b-h6dw8&b`X5AnXFS{g`*l=HYj&HZ zI_R`FL96|?TB}t>?b>^bnb1L7ic%$3=!n`XHG@zkMI_qTE7XXYAP6GK{n6k5^}6$f zhjMw3bIx_H^X^|j^Cqe1`aIItZ?vV$51siLw1ov5fnvur_*+}6R5A5P zyw$IB31$fpxjP#KzHHZ+@wP<9!lHzP(ihKsw2WjXGt6tazWDOpted!{pbUnEO*?xJ zaM{ukYoSp;Kz^IO=1G#zZEgqCcY?O$NmcOT1gWuUGNeV!V; zFEOy!mX#-iX^`=uj#4^;f19P)R$JijoZQ5;Bhm9kHd*-Sduf{bCV9if(SJh?*PQ%* zMXQHY2ilZ>?zd1~_Wf17l55+n65Qo}J|U7mhGc7`MgCoI@+(|h-g^`GLF6yVWl2-x zg{GMKClk4DJmhEjSgM;KY+m-OV%M*b-yy1R+@!*h)mnK6|o+zF0Th8 z!Xvzp)ZTpliG$ovn?iVb?_rJ8vT3 z@i9gBzZw%#G55z4A&QtR;~fBxLEvZa5Y zAjlH-d@bC8qni~gv9-p>*A@wpkawkk1-Lc+EfB1Vm=_$|&Ve0s0cI!+#4$gfLGUZX zDue7nDI80-QfIj*V}7pwv~jAg@=$;N!%LLYMbYcYExK6%rMv`*^8_V2*y-8)C0 zvgR7^3cS2u`O4*Tbl;J+=dZe2t#J|?*l$N1FIyBAfagca#`0l<*s|p7qjM8Gs2e8y6(`~j8V0niP6W2tMIMTSB(`$m9pws4$d1Z|yPKbq+{a^WKG4&ti7$;Y7zMP~}ybJx#C-QW~f zzR?ILmPJrJM7vjG!f z_Z-`*>)TDBW9$daRSnHn&+2^a83FJ}f69e@S*v#NvK2@2QcrA~=ie`OUM8bO@deNC z8$c?=#;t=^rlP^;YHMX1o{~wZtB?OWq6-E6YAbfu29iVt?x3%Itan};&Ru5P9gOg7 zc$H=Q_RS50JzMzPBfOHzPPU%KkC_y7Et zY^(0Z`2QVbuh%W(e`itU`OSb1`*A>l1`V?cAdf-E>0Pp4RYtHVO5Lw zri&!SibiHMwI^J68lbkdE0+?yS>YPk%YPrwI=@i#I>=4A;4`mbm!3i?wv;KNemQP#n=PcFbWaX3(~Yg&#Fwe0&PfdbtEpDy}>9k%4;%f+v3MR zEnaM*yw~;}^-8&n#jW_J!s0sJ9XTZ{cr@v@7b+-&dHG#Vmr=s3~LsyEe?q+EXg+6o#uok-F@8|uWSeY zUWDJHS@T+Tt!{r4Y*P4B-fT^UjtX>2Ri#NA79al^beuC_nbK)AJ2PXf=y9E~Y#2;b z?$gk6vk-85W5Ar*jf9PBb@Cpp#$ivS(pGMm`Rk7MkbB2zz3y?H_zLCnCe)2_c>`%e zY-BRIOl0?wD&D=yL}l{Zd1?j5Vf?Mu68>bHjcv0LCk)x!d^we?oa0g!D#uDpdNLBP zA?f`z6jb*_Tf#nk59`DYY37nU{eKby1Ner(XJ0}9VvImB9^M|J>TEf-CR+;-4jcdx z;XdF?xC#7J0(=Tf5_`D{XMeFoKENao)+aq1LnY8+>7l@gFOJ-z>^~CKY)`Ebqsg*f z+TFW2eDj{uQ9)4-1@(WmRyuR|khjC|p01bX*8k+1{G=wyS2X_0j<0IKb!(oE1O9+l z1cf+Ghlri;-?K%lhKJm>MH=Vc*j9zjS-5*d-qwWpxk$WUtAp6?Y=eYq=M2ohcdT3M z?6pe4V-k~NW}71;z^3R+zarH7t&q0|KN(crSMdw6%99I5-t8~cq6OD?)56(2hx3fy ze{-&(z6~yU)kmj(v1GTqFW!Us{c_+!6}_hwCxDX|azoCh5tbmM;p0Q|rb9q5Tli#n-49!AF2)VIrF?$ zotVQRsC8|zd9`ErcGWCaFE@<93$cSG1^IDXP;+>nSqwHr4}SH3Vg=`EaX5SM>_43q z*wGDFPwbCOVv_-}AFv?+qdzq|8I7uvJ|&{X#mLmB`xkEE7=fd-GAt_6(-L!q=45YS zq(+q)dnMQ?)ig-y+|A?kf(>V7pH^r6=}Ar#MMgz9uJ@<}H}#GRhI=)rA5AgjfY^Of zl0RV+UXUk3rS;il>d$>;6dj^qsTJ#r$z7|)o05UKlLh@kl7h#!X)UqAMQ{;5uR2!VTVAiEX)1ASvslx{d7 z9pC*8Csi^*QH?<|gAmvXwRY>%lVHoJXRT$kvS(x5NYg*E2!C(1C`GzW4o(srIZvxJ zdfOeF)Zrap&Xmh}%9H=NB_czsqcSPdM%HOa=Ct>7NLA7MU#3S+T6*Ol{U=Z-2j0KD zZ$*bi$*zpQ7yCD{Q)9Z}(XLwhkERtH>ZJmeBX*v~zNIAXNjBUQvp$ zA?sW!9CZKtnJ!_pkUf0cyxhj{R%;KRu8P>E;30HYY%_6GIpg3f0|9v z)nS3a8kSDs;JIJ8YjKBI%abt)A$yYLd00_J{z*rTI?RE+_CPl{@8PTy@+x`Uvi7lu zm6BrGr^2@&%jwK@zxWD|=5n50#jUGcZhaPi-ly0iS~$V-C)M{W2Q0ZqmpK0|Il0Zd zKn(%7;<`CBz$6 z`=IiNkL@=)9`bjge2;>ib+V~zP0}-%;gej-L<$%;5%kLf-cyM{!Rj=f@VZ6IxbxKH zQ^~$X3=?}9@lfU5^WQ$x!;z5LI;E*jW!*$Eh3vuaN`vRl(RT90C*lNP(x}bE)CW<# zV}bF<5#26xE3M>Z?cs^#!{Ke0gL!62*O9QS0t2C&X$#F+B`2u#6ry>O;2wKVUo=>nleH z3Eur(I`As%B_9A^`vZ0C#^;2l2kE!2c9Uq!*uu}@kt4mgRkEp? zjnvccR*bf2S45y|scRd%LC}Gp-f?-|L4bCBd^+J%53ZLM2C?{idm?B&n^mMCR~egE zD&EIycmmr^wy+mq`o#$^u=akQVIa_MnAyj&kEC*gvz_OJ0t~7Wwfl%&110YjM|z$5 zhQk)&W!l5AxsAx(N2H)odOrAA_KWGrA!{Gm8rXa~I{5y9#-N6mzu*zSu4<*Fi9=xH zJHZpGzCQ(-p~Oc7KK+}5Y$(XxK}k7nbs+dWQYuCXCqPu14p(c_4-G_8O4`Z_!sEEk z4p$0%76m=b`S#Ynh4IlW_(Q=mgQs$-Rog5kra)!3@J5r=#pY&@p5w<`&RZOAX*mx9 z9T$HaPZPg)3cxj3Ld4L0k$vwVz|eNgJpZ+abF88;8nzbY4B8vhOQ1NbXrRg7|LDv9 z*t7gxMg|8cyO93m`x>k!V6`b3#cc8xudlf8H-Rc_!c_b@imBhrTZ||W`X#!Dpz{*b zS6^qFz!9IrY3Wx^Ggi-eH&%In#%=V^rE$+o$q@T6K7Q*PLMD_}TBIN;*{Z^l6c0{o zD-gZaxMx@j00KDP)?%f(IHB1Dq8<(Xpvlpt$sWJ2F=KH{CM<<~B%wJDCR!MTr zNn|kA2-s^fXo>l9o$nJ|v=zZ=$DP<{ZB>l8()M)N=?PA;me;hGt@=IdEN!lMfy&HX z55H%E*ZjIGIV%Uex0{9qmmq%X1V0Oo8Kvc-lUvZTg<0?iD_QYxezxejpZX?&rt0pz zm%aj-Q5*-GZGfvIA`I}G?<-ah1dai{5@4F-J)PWacGr3!ln=m#DrJfQ!qJnH;xV zAt|wstfiqZx~w2)p5|X9ichmw9s3Ap?n%8Ld1r!bvW{^U(sHM$wq80R+Z#m}FpSH$ z1~GWp6|X$hA}n)nQ1DhU3e}YI)(fi9?xHBTT%w91bog$)hJEMLsQl2ZGOoGWjDfLy z0wbf`ZuWzMHC5|&9*+?Wg?gUGc+_+-M(flLO}w>2=Bj~HPTGJ|p3hRjoRg&44_5=|;UiFku~B`Zp!clZFrW4Eo4{Sn=&k6Lnm>9+!&U zc#ob3O`ghpe1r~~1f?CYn>@htkDGiklzGq34bWf0!@2A4Irp`{x~+$ou*iWVRe=9i zr|we|ho~X36P3pYSNnxBR{!b@Y2JUH{E@f&Onv98Hq2qQm6_i=pQV{-Hg$cw_%qEG zvw1m4;WULYZyFNax4JTjE$; z{N(aopy#0%C2{6V%ev2ahxnMKipv~xl3gaV7PuCWQL;*ju<}G&#$GMmNl4G89p4GF zBmP&TwKgpj+7J5@d*{*7UxU(-_cuC%8I&dsdBN(dQ$>3o1f-&ENanb_{V&6;D|f>( zRjUb)wnW@=Ys+uy>CE*+V&{A^y#Cn9{l%TXEO>2JpFct$b0p}7TGOM)gEO+E2cw76 zpG{0FMVt3i@#1;>LBd_|#dDoAGDXF>9IHyqHI|vUTS{8RVoqq=1+URe(1-D=Wj4y^ zx4~cwh{nekXCF3pU~J$}7<=GAsb+_ii8 zz{?GgpIwXh(X*aTzgR0zI-^&R-)Ff3qojdy!^xHSKV%L@5STOYuJ1&i zB;Rl(7OZvJ18Eoki!7;|96lBM$i-3&zwLa67|!}0TOa$^lYv=!cHZ4)7%>p5nZpdF zlwPUYDO%XY_ULw&cixVwS|}`u)VOVQ`u@fKtnt<3>ow7VIZmWk2ah%#d+S_l0yTAU zJu`RO+f|rgNr2y2k#ZfKH0voZiz{Oe zX@(NR$|Z!6Wt?2($&C0QKQMzR0D;uzxGYg=EOH>;2 zVpfNaG0&_fO-AUoo=fSQ%RBCne|Dc9W9gbpU-%ihoisA? z8joHK{@p__(=hF%Ub3R(BtqAn-ClyjG3X-Rtp)Pw2rV%A##SeV&`SGoMFlsNw}=cH zaTVZ$n>NOGyYc=}x8pUC1Eyl@fc%}Ub z@1D6>=4pb@=Pbl`+XY=~d#5-0i^H$t zApYrL_|@{wK_~kdaPlwxB7v3*r#l8^T2jn0Th|A+29!WimgpAll{t+$@$C`iA&%*! zGnsa+BHLI0c+BJ64jLUWe9OisHVsMG-(f5Hu}dMxw7c!5OMNA(1}+(brtn zq(`;4V}mrhe*U+VaqVlTs_#Xt8+$e`cq>qperC%=hIpt&W8%u>Vo?I~jy_R)!ndO{ zbbCnB`Ia=|4&-LVxaKXYNR0Ll(}l%%qvBqJ zZrKMr9$bv!*5hn8WZ9Q*z5>)REIgJ~_qcfFaVd9`pRu|4vG41(5X_In-Q`s?Hi zw4D2&@#P%%ppM&{<*}3=hO)T{z8oHhB)~&;X+9=Uyz@_}SB27`$#_mIe@>%JcH!_C zBA0koe2vpJ$qL#QKUEmIW`-N+hwG@Q7^<3GM22gL)C8iKjfgQ-4&Z9Dm!;(mN4$~7DmFdiBvmS`Ac7MSam3sE*|0LqOdV)FT9$W zZ9X$I_uu#aC#DOl5(Wo3whjvGodiw+M3bT4rAbit9Bl8J8pQ11DIlW+lr%MAPni2{ZDv?$nuZ{%-JQQQ@YMF5Xn8xgD=IGWFN?*XN7H zNPk2l<6=3LW=dRl+9Iv*DBDUXon;Kb-%)aMNAw7OCaQD&{VM!#xxXG1-d)H!fKeci zx-?H~JRe=+dczPQ2I~k-tbU4}&>dYxVp7_fb3F0r=Hc$RcGM4gy_;HqHk>UOw8{HZ z|C{)j8%rbPoraRQT~0%gMOaWVKgIdLtBz~qZx!az9MyRC%@R!eMoA>6i> zrFQ8w@3a%89>PJXPxhc@o~ao zFMv;rdP*JI$Brqd?YQNo%BTFtEAFJ3k<*e<#HMyBY62p?@JjIFr=ca&7g(7_e9o1q z@gC)+;3pbU7>RgYiL{)H1xiyG=0;5W_oOY6H+FXI9>(`G~l$D=Vp&}NNA zKh};@Nr|??T-;uIpGZ^#!Pi!!M+ujc;k0K+5|2R8X;nBmI4w+sWUuC`IGr&TZAv-ykg#wAOV12=Yq?x0E2Pj#&7vQlCbKsW+|!gsoOj zbA@qIdycj?JMLQYNrsz0?DaqH!e?pO=C^X~45Fn;#yHyaLGwmnmaS>@Z&QAPal`z7 zp!f57!<;eT3;D4>K>tJ>LSW;4VDLefO?X0U_@`&D-Ytgk5Sj)CicbUU?jC>^L4kA* zhwo6b5-b~E*G(g}Pnh3v3e65=knX$%2jucRM(5g2SKMDFv6>3AwmbH!XJ>brS)|Z& z!RvMr*FKq07Oy!(1;+(m3}*Vd9HRzpFPK1_q zlWWs;METPfkXs&&n87)E<(}V1-?vxk^$1+{xYbP2=5&U`6g{LuSj*ZJ^4B<@q}?Vy zx8nF@Sl&i?b)ZUVbfApn*Y2Q3Uuhc6)7Mvc)Ni96$;lsdDn-1zz0{0gN0SAQiE-h^ zIQ;icnR#LJJoW~z5ynb%w`|%T*_#p`Xvwzbv6m&==0c(lk`7sH`boEJ2kfmuCXU3s z{;C>t<+*=)d=lqz$~r(|Ekxu*owuac_M zY@vCk*FIEe>TkE}-0GF#Q6@8|M^posZM`Be@uyLm?)72_MJm`3d&joh?3&kEbDM~E z+|zpgAqiZY0^^v@g9rMK=&3%3SZ8zpDjrjxs@i_)J;3NTbL)xf8t;}a@in?)dpqcT zj$zWTs7ORJ>N41ToD%$S$vmotnA2rKQPI@NL8FSPlA+=*kLSwg7>VzrW6X|47DsfO zkoG!DN$}iUDH-b(de-%k#_uowfT3(ms3; z1O=LP)it$O#RLGs72&110l2azFni@S%+;s2kZs0`kn)G-+Ct#NCe<~^3Pg)NrT50+`aUZFaRHE+TaWKl-wHTXw^cg4$fMgRajNL zETCHti+=8u<5*XIjNXZjAP3Mpo^yVe>EsY?Se)`{m~IY=S=QABN6+f=TYG^egFn#L z!l%kN(Xcp)s2}jq=Wr^ae*m7mWTI=H)?PI8<;|qV5{2_cV{7Hp1mB8}C*7a?6qJuS z2rM`NUspdgZsSPpW_N$VWdX4Z)C3HS-H{-tsEBTg$NX8ro>svO^Z`WKNO2z_tS26~ zfi;1@{56oNjbEAVZ5?*soZZ@6yZu+hO<`T%;4f}vqH0sDhwnm)sqVDsJ9zy|9pmmo zg~BE;(LW9A)rj_i%0NP)g%wmE)&%g%%G zc?-AKzBb&h*^1*5))u0Cj7l>Rl((T)}ekT8>#kEG4o7wF#r( z^y(Y5d%VI2g}iSB)$?`;T}4+P!j>7et(|<6yCbip1(kQnTf;e&1%$o@d;PWFBx+|w zVwVq9`5j22MQJ9`IH#o%Y~SRvil-|T0bFb!yJ+0*%4UFT$0K;Vlf31D{E~D1Ngt$6 zN`D3M$Qqyz}5wH8u9IoYFl^^xAD)D)}#SZexFD8ZUB{QVKSmY zMM)@5AXR1kAHAOR{=;!J#{SQN1 z%OzqC&|a|DA|bp8irP~OStm{3>rKPsE1kDq6(?^KBvoC{ zTRz%d{=2ePWEM0*%Xdx7_89?dBh&RUC`drWyay7mhKK5u$7FDExh{CPd)ocVDd4cn zkM+!2)E=8!KcA#zp*XD*ZlhV{=!%?rd1YQoiYp>cJS>b9$FZ73IN+sQEIR)H+{20m z=NXe@!u-i;6W10qOwHqKFZA3xR)!1!3QDR~)%}OWVS83?D8S+YQ40ABk-Xy`5}B=X z+qOAxxXb}jmMq0%PRx32l>%_T`3I%^KD({+%VhrcLfz*k$;^_FJI|BBPLc6$yDKMP zi-{-XeD^Y<)R`o<-BUv)o!A(^XQ$?q#y(->>t80yH_=ky1!N8V*7yrXep+nR%H_0~&fULUqXR!W(I}exCcKY2D_ytBow7@GmFcjM9z= z*(erZy3%@EH2r)!bak#R{O64EKZI5F{T9lZ(>BZ^Q>c*C!VHr|0xdE_E5ic2Y{#Ng zGghe^FPj{8!@Kbw^S%c|b~_h)!pPHIlVjf>1nJ16T@K?46mBS(yX-E}a&Ij!KKG)7 z!+;cN$u;N>|87qcI4nOb^f$YRqu|FYud}hSx6Xi4!ekC`+&b*f2ZD;T>LwVfRnRN^z~BF0_6U#mYDkq^3Ee|+S`>eu}wDcaqGnU>W5*k zx8*-5HgE3TZmj>!9k(k|&}qSWx*@E!;}; zL{^;Syjh14mCBhx%VryKGuO0^H);)2Q^r?UPiJswlLPc05cr~FiZOXP3#|t(4i@!i@L`?0`95;rq*$HwS0#2#ngqbr9JPX8SObL$aeT zaV7TC^9r^}b!NC6+zaG&SzsOYD)E-A@M|*zI`E9I;9@a4* z9!rZ)(-^<6ORFi=ia8EE5XT7YKfC^3nG|>JQdV^s7aSaS8P~ThgGO=B_R$mx8kL8` zILTvMHL)ct@!-9j@JRzbt%afiYtH!C@a$pGh0IBGWL+M7!4a88mU?2jPA-{T;L0m# zr8LqT1H-q`VOs&03cSA>LYrmJLC>5;3U_#1lo-|C%^IBqJc8cW1s>7O-hHiE%z$^gYRIV}s4QHz)9XN*Kzoo> z-bA1ExXw-w_@oL$MEF_hLP$7E#O#ymFgvImeXSVQfN0JX(M6^`CG%C%Ds(#QzxE)D z{#N*Yo%jOKT0j*1m6#Rv+=G#%u~#MZNAW6c&eKzd*F7QDqAyw=y|`pR``#KS z#K$#1!twsNHb{PTADavQIet`XYt+Pq>#4+zE#T~TeLdSqnS^NvsdeOZwzamX!9eD4#cf=t$#J>8v9 z(X7+Z9P;*Rg5^W+-L=c}Q44>?ndtRgEW%N@6{LKs6_6I@w!(d z!~C1#MH_6cgzXGOM<~hE$3NJN4(({tb$LQxh@J=!FPVBeSFCxYeQxkJi79@Ufh$at zfbbZ9S%`la>b9bKyK8fdU&6zwTum3v&K@_4TjKgCI&XI2i>pIn;he{!5HS)WsS4ud zCi`k6GyYExar*yy$Ue!-D*ZYMBtIAcFKfsFo(dJVEL#Ei{Q=;v00Ul&$tj-N(4E#q zvX`yVpT_R9F&!)OHEqY28nZzO3AOYBNg@^&mQ$a-MO&job3$f)OQ(qHP2clwT>W#i z=x%wc+|%O@IKH!bAiI6$88V{JA!aEJ%+6~@J_7A`EVgy%5s&YXM`C{0Oq_dU)UTYm zuX@_&mV!<%Ex9ntrvn4Fbr`+r1*pJUNZIfHqMb{(76`vv_4E7&jbWBp@0n*mYtDGu z1Psju?1sJO6vUdtlV7v1671NrHk-} z&+iS!|1H87Q^PE_*v=UYGwm~Q<;vVyW=)}3mm77IF;1n4T<3!Xgi;QTG#i^zoKMsV z+RRdUwkGe7{DHkM2 z9$ox&&uFj$JbIkRXSCGZ=hpXB1E8K`I`stQ>J{4Jl3}$j6)(u@XJVkA6`~L5akxB-ElGWp$tqB&59cy1nfRblh0e2 z)3W=RhAxiC2&J&}U7&+jzTYp;7Ktog-=@e$V8Wl6+f&4mRf0R;rIVczB+4%?&1Ypp z(a1&iid?!?$hWl1o_u4<%SdfCMiz%a`n`*W7IxL=7cVH3o)M(hX0d%ANREx!W>=~X zZotgK{&RdI7UVBYeRTRI0cB>Bx-ArTZWqU`-MfN3-{9 zIR~>_Tt33#J;_||zDk=;7j)A&s%2DQH&8iHiv;Lt*GZs`@*R%|A~z#l{xarNibr$m zM=@phyV^rT1Fy(Ll3N$)2r@oSKbiXC)?iSmanXs?@!6b?5KAvvdk>Nu8qA(v58Qed zA6uv-<>^ng)5_&!!WV++!~Xv5k%aPUA&wb`)%w;evhGbGc4Omw&d}z*0`^B=oB3h6 zgEarUGBQLh=CM1$x}V)u-Le*Kw`D}C>gCPT%!y-FKBW6<`i2>hi-vQ%uWRMpMxJu) zk^0(|y{7V7jX8wmX^wU4CuD~mTdfeji$DB(UPkkhkq)Q5uHPV2@nq%)pKVQRGipz5eQed#XBU|M;YYG?@QOe;|A@R64ldw1~kg`?U{v zM(dlKxBYnb6ev=db7m=s@#%z`-w85x7w_M;^)w?F_d2w}I{Wk0`PnwF3#V;%IAGiF z1}WC%Qaj{L;b+|)FTq*xhz}}LxNp)*ou8qZS6C;Q$~~i2EoX-e_`?O`EwN+NrZ;ZM zS0|d<#r-6ePM9Pho^Fi_%KT7}LGvLzGgYR0D6e6R9nWG-`QnU8A2s9nm1 zOSIBBY&3b3g*FlcUeB^VP6#p&^t`%knVb|72UlUJh(^U{5sCUb{Q7E-@LJ_X9*wsr zWyp5Rr5%U14>*W$n%4a0Jm9P!BltSzpt1nyTv1QIG)X$S)BkGW%XI_3>`dl>9erSS(Q7BF&_miJ zg^mcX5QkJe*&1fOU0?GUQ?ZWEu>PoZIDb)JC=!96m^nU8GSNC8I#M=_K|_0xBh|#t zqL5u{@r#!QA~Pha?$jJpj6ABJAtkbYuTK3AO74cI>Nk8s#a`6nC936k$O_)q5cjgsq&n9UGf!-Fk?x24saq9iO|ouW!9$lImS^AaNIF`~v?o0}(<;v-K;mn4@m0jZ5ZSfSBl5RX z&7AQ8H%Ph@%{uFW{;_{Dz*1?>T)7i6yF4j7j|lL^Vrw$4Xjm+ekdP$ZS#Y-w-t6il zSh=dTr>u1{BVjS^P&IOpk^GdZ>KIY^6sa(@hhp*Y3NeH+AB;sbEFp{A;Xw}B_t8lZgGC1v<(BHNG4=?~xEI1bSmIeZ;@({;$JpeG3o8c4vgUghQ|G@jI$FuP(!gv)UUaAdcteZ zFCu6;(w&j%{5T2pa&9|8*Y;EE12EYH&XDUq1*1O{TQdl5*fa}P+>}(a8qW>UnH;go zZ7XoXm06kT7Qd0frlqILFn-|lgtDHFqVzxkj3x&P*aoHaHe-y(4sRx9(FaY z{O=~;3HR6PCx|&FE(iLxO(s6xHk zg#EU0v`ONQV_9WT&2u2}QD|#Dz8ac!K+XT)(dRevlf}g?Oij-M8xmU)QUjpCO5kjh z2x&(D!-Fj$*HvkD$|J8#&C32gmDAgl#{ojg2$p}D!Z-VU_g>ERBq=gwPdC-)v@6*l zP5!>UBvIA-i@(VR^el9j1E2nh0&rt{x1 zej-qRyX}wGW+9}ay|rl2TbE!&JhiLAQosi5#t}3Ig`8CbuFK6!j1Nu zs7*|GVSIegfk&$(HuE7z_6sf?{`T*?FbX@mEnDtz)<+{J9MkFA*Jp|7Afd#1n}+sk zW`N)0JXmr0C>=p@iV_h!>+|?yLIYa!s>ayuAHhcF7KLle>xCb~gOyUU@|6<>zvS?6 z3bU@V>}x}ypJKRx7=tyR%T!BkYziVKQcI>?(K<2R=#pA+v;de>?o}a4G>;<) zB&;4fh<3wTA_N1sx|MsU@e=cD9LW*FTzOzhtn6LYsD&@%{m#aU@k%qJC`a4A4l(~a z__*7#3lI4&`~dn5DMp}}gOZ>loI1dYlnog%hs(!Ktm{Irqh=4N?;CETFZEoD9K~n7 zEcO8MZU8Lbo6QYMEKF)fca9byx>p+3f}yo_%}vUpi_P_N$$f?;R#B8Idn6&+wB=x- z@1EjP$gb;}y$7Ok)&KJq2SRV7f3G0ANI&gBS3RFM*T|O;L`e)lka+_w0$;f)2}Yjd ziHkN+0edS(hF<(R^VhLXHRzNIWy03^;gR!4q^Cc*-LKKm**#1r=XNHW7{5C-{HW%? zahjR45)#s>*L4d?#)%A5hxgi|hfU6uuYc7b8%l2Pih{r5 zkmDarmSsW0ez7x>9|d5%hfjTt0bk=f-VAJQQpl4pF`Nf8*yM*JU$7=HJ`%zF(ZutAHogCN{NBm) zS$vP04iOb`Yu;IFFRv?bHf#g(8z1Io1SnJ46;cTlO$@$0)0vW1HlE;V!$i3WI6VH#n^S%SUY1#MfAwtz(x zYm$okatyYRqN%mw5WgU(&S>5ROyWO7o@WxPPV&`cCAIBE#|Bx}y0k=W z;b|PLAUPELUSQRlE21(I;=vnQyL)zP1u_~+ zax<@SSm(%3{rdgr?+;vWWM>?>c7arKz@~?A(FEdL_Tt!sKDl7|{1`frWN-)JdC9jK z$SS_(dAhv#9`>=)W|zyD3Bc z3vGQP%cb_)@kO3RRSo{aJkiJ|t-tb9eoo@u@@hH!L_ni3-+SIL<|-Y;R2uQ`?&8 zmT4I?m6Np8Tf_1T-s_qzEt!I7zoA`_w$%n-yOphzex%giRRzl;#mh1L4tfV__$xsi zLm-qWV1ooax+H>TY(W92eTp6JMHAyXxjIos%~HCu;I5ph>UpZVzXtil0=|D%_Cj?A zmlnkZ8ilV{2o$yrcV^60kpB}3x?a(L4tP*1LujkksWC87v8z^F9L61gF6q|2o0A_| zqY5E0udbq+nYAa}av3vncM@xPZTqv`E6NMsNYLBPVf+1i)|(qED}LXK%PxjD zp|jm1jNLk9Z@6yGk-vmH5Z8vcFO)k9n(y2|pHogFk{9zz-4+XVIZs1kTdk3lLM5aB zlOfXnzYM_xd{ZBX{O`g(Y2Yu-#nEIQCk^g_6>IqzcowAWu8%@MSMic$4*!%JAG>gGcW1*|TSde9SWvZ7LxM55vD2iZr_lP? zatP%b>~n#%9E@$-5%d7IGp!$RSu!;(ZOP3wPeVm{PQ{xN-iBSp@v6`ibZu!*Qz^g< zo(;-$Z285r+&0QEH%ifnkTTqeO3oD70-;14<|nobipqofbp&z0Oo+ya{(vN`VVZ;~ zD@ERrRcB4H$#R2>Dj_;t+O&ucai8NIRSl#`_~i+U5Sg^>V#WkXk(+n5*TC&LDDSO5 z=c}<#Z3kIL^W`|?^a3uOT@{VtJRl&*T4LJEg)}H|fkLrt#>3I)2c!W7ZuQQ$ZEv2M z-@mP>US%G)Oj8dY0mZDn;|JOJls2g}qBJt2V8RUdjA|*d&ZZ57QN-NKnx&ARKUFY{ z47oWByUuov99&h0VUflt_SjsU|Gjl(r=($Tl!2xUZ4f^qqjAC@ZGd*akYNxuWPUA_ zG=7wbEd>MQ1wq^}~1MC&JV?U}eQu1W!l{fWO|d9gC-=kZ_RHe``FrO8s)y)sv1 z&Y@Mq_4hFwXf7?E(%6DkgvTaQwW5QxRdK_TG7qsRgjjq!N4Tk$ebA)EGW*dVXNgzp zfw#PJFE|`jZjS9x;b}T71H2f1OZ{%kLk?5BY$nOeBQ%Ey5(bpFj1i#Iwa*H)?^&Eo zqSn-ueXUmg?|SjQV}SsVVmL~S^4zTpdpA();D|QR9Cu zXyIsFEj>PpLanPHWT@FUT2$_Qr*5}r49TV9XKx?EXRBrf*wIqm=4Go$8Nn6bU=3R= zB3Y|#y2oatD$5Q3-7-BWtLambPFv7KX9@Z2VD!5vPl6!wV|a1oqUVRA&SKUlVq}#& zpNjVrvgZRl6kdAB_n zx%C+?qt*#!0@G?$|LiaPG!| z`5qCW8-qR#8d2{gm2HOg__65*W*W;;g(^?M^69gk&0n7(SpD?O+z2sbj2Sh>;O3k> zgQHM1wz!g8$^kSPo*(mEq4OP=`nmKgKTp-Y(Yr0V5_@y?g0cVp^cpA(G{Ionmxr+O zV?Y!anl9@r@iNd!>EC6j+1u!l_Y5)iTG(-SYtmz9#{#5i`B{Md-yHz!9`n&P|k11t`Ynb((7~u3F4&zYr26H31 zeNt#l&aOwp1BIN=P7*gBpH}{IK`UsAJHNAd(eR_I8g$1F9-rN5bXuA8)$=5z>GqZ{ zw0HJm?Io^o)pNdAvYT%-n!A~A;#tsj5sDQ5DqdPpV@5;Y0s+_P$>n!&$fKzJ_JE>v z#r7g}noq=t%}*?x4Lwt8Mh8Sj8OI2&%+|0t#5V*hE8Z|tK-BP(Xc(_z5T>!5XeN}y z@qOj{PgZ8BiMmY$GPg31y;i+~AEiUkqWF{X3sav~qpzFrf1ST|_E3D^jU$5mr-elu zmkx4-ae&-8RVO(>cH+SGsk#DS5-s69j6}#*E8pG8UDn5{gn;G**F@CsW$3iobky^w z;6|$ZXiZsMq66?>u-0IB;aU9DPKYSD2jV7ZZu@ORb(dQ(6JLQK`ll`zO+mqfTA7R614kuPGNX_xaU!_v!i=!PD^($z%6H)O!R>vAIsPuVP z*(mS%&z%p1SiH?!zF&85QvXv))I8ZgSLnFv4$2XtI!zG|h+P8bEG|=uFBe2T8ec}o zo~%Yy?G(f=H>T%m^xtYcazwAqdXPXKH^Ls`2JTk97eeWGm_d2Z3?3i)j-}xB^zai3Z5GkiBMP+>* zk@-IHH|TxvJV{$G{Ag75cFr~}RZ~S*$Kj)9`f2&vi?soPp0clumBX`?nF!V@+{BXdxa^*Qcj7KjZTb(!NIS zGN03n3PNdXz~rjBazx3|h9vk836gNU$L{x&=(wEV-vLKKUAh2$klCS9&RAATimza~ zQ|xE{`09&E#mh|U-~*)%Q`h4!{0!HmS@YI}DA}7FnGRldDi~7nU2*l=JBy+GvI&C! z&R+n;hP!cG5Pc~Z;E?ENION|r$`NbubzibA(XOaO~?A z4&~XU>W^{(q_4kDhKBRS$g~f%6=|8EBeHJ-F8WsSfk8LQdO)1*TvumA9s*h?8N^5* zST0AbBbC+M$6@(DZ;XPtm}yNN`|?*&R`v+YenDd=E5*g12khQzpIw`-ZFt3WJj`u< zTG=hUZxT~+7)W2?Lg@GtvX?EJ4?}}-I(}~_u!}4to!NHOS3%nt5t>Z}Hj6GzGrS2N z#vS`(eTcZ+9nEe3KjpaX0txIbM5zs?PJwa-o|XxFa9s1Tfk!rvV_uc+Jngk4NgOzA6 z+fWuO$ypYL8tQ+pMOUE%rruH{M7$Y7;kuBTkJSp{yoet3YnCXC>5G!OSKl|;$h!cnRIk?!=XV`Lo2VUD+ul#+v)yS9s z48WnSTFNQs+xco&4%>DMsdKL=UMX$&lll(n^aiyk?CD)5@DRGK z+cb4+(D-B^WHi+5yycvn>h&nE^qp_@ZSb4>+bPx6z3>-jzz+b9`aE`~Jn=e)hI=jm zz;S>ehrQ_kG;63>p6z5-rcYjog_;ptuJV=Wg&m!keB42{nGD&xKXUz+`J+2*irMjS zW_*xi_bQ`!CKYw7GOL)ux&3+ToaYo~qA;!dCF`=l{^@*}f?nIhz0;cJ z#s@^d|x0(KWkEM07xCxS57_tw~$Uh|P}4 z`cua>5TlHMTf2X`o!z>k;|~nNwuwgb#KAy zVALc192|ZgRRiUgbYE&HGm+DaLc3>uDk~>36~KW#M>VYV;`b|~(L2jY9)7LAm}I?| zh@SrkX0Qc4|9$@Rn4Dz)z7t>nEo92_V}lvqtXP&c>m@6Jt)=j1f4fKQKu)hN$CW6I z4|R;kUJ2cEXmjy;uX=1MQ00@~g-F`&iY_qbMT(|PD7JBjLEI1Ei!3)(JDC8cN>SR* z@_xD~#UJ}>?3M-(U?xtQ#|=QxW)f4hj0ol>e-b$ z6}=xXvZI#^Bv!xvy-n@vAPnxCrN-Eo1xJc2LiaB<-1_d-pjduzNcRm1Rc8AA%qP-! z*Uc^0BnK?{{otLz#s1%K7V{jln06tu2?o5E7T5B?IngUbD|{mlpK3LVDuv9~?Z%be zwXm#1d~&ym3VvR)dj9J}nAV>N=!Q|(B( z%(4vQ=Dbyzpzx3G%pcw{yzDI7?og-db!b;?*F3d7fE491*ieV89XiC%5;QHAWi}6^ zTn?B;_aV;~PIewcePZp8!WuI7J35mRvB%#`*D}Jfg>dx*VB{5*Gdy#BZ$dBMc`y3p z!RJ#P8X|$Q5=$4A+AnhG$8xlu{7H({B9h>zde-d0H zzpXPjShEIOP#lJaNqBEn<4OBGHRj6-O80UZ0h)I;4EJLpYwz(rwUiLOk^-F-1cvaB zEvLS<(=?|c>WLzYWFtceFOXbG7_6WRNf+8hE z9N&F1uS+ttZ~rQ(Z-18Jtzw2hw7U`bi3o}#T;iAu;qN44O?dyEN%NljsxLP`jDL5V z=W>^H$6~6Kl=6$yBX|B`w>{{qci28lyrtGf5-4fO#)JO zN*xlx`2*X2Qy0~W02=;bJp0SlXXYlE&*!m>U54lDv^$aTMA(nE$BaObke#jec=xoc zbO)Ri7oigqvQMpslVqt@`6aDJZnL7XFTevK(bLJ*g%Bk&A1I!K6U)C|3cEZ5#k*Q3qjbEr7C7RCRCC zx}y9MTkrX6wQu|xASZb?a#C+cC_W;cPi4X5n4;|>MSg1b+Ul-f%SXu;uNBzy))v(M z^XIyI3f(Tq=+(&N(>RE%$<6RiTZrrj*cQ-=VXxhHS6hn<*ROav1Rw(Ld!V1k7@AjD z!B|E%%EL%AC;B96DNUjK4M3lV+rP0?uSZAUJ}T37WgttET$N#;FHML4UN%7~SZn>6 zpVg?vlGqdFmK0$lx}-u5K9HLi{eebU8PAAR8&G1X#pJFdP^Q5MB+2`O3B+YCI*;zV zwZ;4=L8n|q=|Vx%4l;JP5Tc4w)S0_+)1VK$ zi$TG(G~={^VKun^ukjcvOQCwIfo95mTvc|mQ!}4TSOs8KdpkTXU{yMA-J_=0qRSmADc1a*3hAw3G06vG!Pm`FMEc_ znnm3QDMNA7j3;m3%T@pr2A1I`6Sam^cQ(dNkxsMIUlAyyax^?*=9uq6)HB9%risR| zFV(I~&dbeG0oyb8P=O*O8ezBl=c|Yun}ceJwqqtq;e1CX@d>yK?!X za}O^Yf8(Gs!X60QgUB!U8&>urNYfS)%tZ$hQQ{EBPh^0bz;rfisJt?O{>FrFPF_tw zhek~5?TayohKBU$2}{;5CXT{LR-(GxLALN)Z-SV?7Ks?-@`1{e;0MFFYNk_`Iq+e* zuY#l6D)-nDW`PlHxErugM~6bSyz0@U_YjSdZR3=*>?OkC$DWuPT#pNSa2lK4qm9t? zAIHr3lt?Wx<~<5Lv!qPuH;aqc`U|M$3-|1b@^*sNR6Cfl758p9XsJX?Hv2IpEsPO` zkp?8aWzno$Fj1eJXLr{o8aq!P@=i373~``NOAq}R|H%Rq$qaJJR1eU;;vQ+a!h}WX ztS&;+3}-$+9B*x_)unffDpydQK)&QAQX4L>q4PT1k2LVk?Yxj}$m1s*9*eK;bC0I=kh7K$~s- z(-55e$NGVfxy9qAH1=#B5eWrcm#tTUvAsLUq}sNMk&yLCp`h>86{At)>Vxmn;s%E1Cey_#=QK{-M zrAxe_C{zy%bi!`!gum2L#4dh141QM_)};-ffaJ}I0cpu5Y}=b}*N;vk133hmM)qn` zGy{%7+!f%{JLbEk)X}kWm~nzS>}qG3Sx0cnYn#czpa*$s0yRH4^ zUJ{-ZYUzQy)&MY?5(Nu6#Y)Lp69LB$<2@txNR`(DLG#e7W6E>0ZSri<$nw_V%7ScB67hAHmZ5gYpd_T>(dK ze+wLJ{N+L<+=SHzN6;pM|LoG1++hJ%iOqE*c%-M0b8L7#ICh@M`?<)>T*8+FkovpE zp&^kyc7$pH4epFK$>4_iHDi1=rEatcB`{Y61e&Pxc6tM!keEOsv%gc|@Verr-h*`! z{-CG1I9^r1%^@X=0Alg5+PW)RguF7Fy@Gq(pyHM7Fp^Q*BVkNsCVX@s0}kGhNy41j z-DZwYETjnUtKGU~_(ZIf8OuL(^n$?7>zf_zqbK7@H^4bx2t0|sN!9VBNtGFKS8g2_ zTTVlc49gEJ+tHp*6mu*zpd^P25-Z4;DkZsSV6lkkf3K31kcYw3w+A~7M9Vprz%|)U z@xF~8J|_&Pah*yfa^5W{*EX*t*PJ>00LTUa1PSabC?Oi?qx4H<{&Ey);%Cp7l+W z^RE|zBUb%abUXY5QzT@Hn(Q8D_UH#wZu$txwq~$AbAep9OD_$54Q}S zlpXdE&ZrbQFY@KW_YPRKgZR|HZTrB*R6NoSK*BZYw)pmW8oexrL1AaoRfA7)XcbL@2D$^oF`w z1Ahv<5mNh_84J+7h}8(~W8Rm8pxf$4afEvY>ZQB2;c1>bi)9T_dVY#|D!NQR?W>dA z>my%k8Otm>;ej*Q&(LTmPeGV2wT<1S=TA`y ze{%N&ufvb#Fvo16NBBSOgGVjXG`0QQ(_ZyRX)j`h&p0l+9=}|G>Jf>L9x5+M{5SSR z8DG^Do-%G_uuIyGzjJ+nwQTUrsd#v^?M{aHwZr>f9v5!&@?8A(>W})vPf=x2bw0P3 zX&fOre|{#p>HZi81ghaeal!~#n$(Lcw>+;k2BNh z9VL?mOyNflL>dKf(SERWq3&WusXDhLsW$#eCr*~w3N@Owx_KuLa(Yor2K`}mA?(fO z)14yv{ON)2A(g2onzS}2*?`*U^L`B?yrC9kSWQ{wo5PVSsDEy@MuNBkkGT4YmINzb zHD~_JalQPuNJ$ND9lQ>1kU9Xr1WM2AIB&?Y`KjMtU3Y&9?tJa!pC;MG*=hfhl?|m9 z#I*yTh(z5HDR^yUE&N}c6hO!eRiR?r8Xcn)l>?1ukT0c+v~sC>fjuFzjm=FX9;`>W ziT$sT5r@NJg1@OPa!KI~z-Q&>IY*a=3MaS#EBZhFKDL4vTsD61O8=fexvZrJOn;5=x`0 zd+L0Oo0rpgR(=n&B!^iLw=7Y*AE_SA&Gw4vR0O)3~HU=}pj zjBnnm!z88L)WLvDw3|58cp~J|f8Eks!1#1{pPZeFpXWCIbjn+UQA2V}fKbm=)S6uCTi?56L z?boIq?GO6~OOFBlL#SMkH_GYj5l#P!;;SR0TULqP;}i7X`g%nYODwXmJ;~=H?OcIb z!O+?~WZ3F;Ezx^jqpx?SP0#LNeHjZ%r=Hrl zzFhFz?9Vj4$WD0o)*n>!5B!5*=}MzCf9s9dtYysnuiAa&5_-#3;IjO_$xi?1aev^D z@z7MZNSvB$s2@RhE+Ak>aj)!KvE`7JSJpdo=$P}_ak|3P|ElWy~@w=wPD6~|80pt z6#QB?9fj{*P{J7+fK%%M1>bX>-8DInt+Aa!Cz)(X$i!*2BmRqQy%_`!I%3+s!>)c< zwd_s^?i}Sue4jYDU;6rgmD&rl)45#jU6f913ZoIXsxHyy99`5E`konCGk4{_yJEmK zuLQxJ9Y{-4vj3EA2?1!6%ktm!mt5JdhuoEre4G7caGuN6LDx)GKvQf=n>J)-v5NAD zUj5GRB~SwXlq_-Xvp97Wm!Alw*+3v^riKKS_1uS%6r*GOdw|WZ$wA6~*$2AmkhDKA zKdR|{TFyz68joNWCBO11j*xG;RzBU-I<y7@bhZA=KmP+*049nu05R23`0kkfduu2)P_qqA3usG? zTxKqEfVMCrgY!C7A^Wtgy}2wQ`!8Vui$EH;ZbzneEvv!a5th|z)Ztp}4y5o7VJ7Ek zTDwSklzd#+78C@^mr&E22j)#$ZPulvoNfR3jk1_2ygJaG zUT><+UgHeUhPzSv#&KR;@mYqf$f|QaXeb(gycUXOe9AY(HAGwms~JO#<*#K!;`8)S z1U&lha>lIEKx`DcJc{zE^oo8$7k6cEfzv%9)BD$AFG;iYyA{DjXG=Iv@Uo@)2;7-F z97liiv8u-=6#9&=zG-H6seTUE!(6ybtglk7e5S(3UiIg@w_lvEq=9$V3QFCUwl3w~ z8;h{tv+j7n3*~VuK5%aIob-uTz-~s;cy5AAqf7l{48ep3@vh-o&d<~hL5)DpH$wZ1 zC}5uXN8xXZRN)_!K@<3!i!T~vgOe+WcJE3sM8zP|_K496+C}AzYPDAug51AOmOwl| z$4d`awHu_=>+KlD4)bCFv~K#nW_U*ey3lW_(heP&=xn;m z3*8mAxgs!w8#HvD(HbcxpXR>D8EkP}S$7}^mWHN29+kZ}6V$C#c({ciwXRO=8@F#1(2Uyl~yaJfXkyDbUvw(}=~M zIhDrwGfMxtSb>7k#k)>GwlUeZJ^l#bB!Nw~0awJ>xi%r4tksGEEw(y@{W@!W34?8q z2lUr_eShMkdZ+j!duiW1jxXd2J0xg?r+cBpzwWiM_HYK{^BozFvt-(2A3$3|r+kAS zJM8Yah^xVUL$-!p?>-D!{J?iYP9?7(Q6;YOMb6|6bb+;$tvm)9=WTRfGH{Db{gku@ zrQ55eEIV6rneTm8P24y3G1ozZo_Xpw6Jca+94^g6%d54P*7W2s23?4!x4D(P1DixI zs+_*-x9D*oGkY|;I{oXl^ko!TwJFYd)*>w$QK_k?*o@gOdN_?lSF2b#thi1a^uKAQ z8{ub$87|J2u{l3ujvCyN(9)#Ku&vT&GZ+Y}pYQm&q3x#LjFn#3F`?Gj>S&lajp;`W zKia>2Y$l>}$I>)%6kN@lSG^P$;#;EroR`damBhFI`Ka=|>(hJeq!WuTGFx7{TuSGH zZUgMu=U#OLTdlxZMq~w74JFrdu!Vc3z^Uct>G7ylNJqTIz;*Md*V&iHiA6F$phUJ6 zsIXF*BI^fQrO@ZV!mBaoe_VKPcS-*>oi%yb#akV^xK0z46)@!QuHVahpdps!a#u!S z%T-W)q{*Yuef-ST^5aGbzW{66#&WUG9(b30bZfvqGUR4d&IF^Vqv;ZLoIa3ZQG@EW zEs>rMT)VD%EH6?ojjo|a(ek6u|)l{k@nrBP!*^z!T7r(&rQ6uql!7_|fD;b^JpUUp zszuB>&MxgRt0ko$hyd6tJ?NIaSdq0;v?Kntcu_6_eelBbP4+({%LsJw6pQmSx z%q_-uTF7YC~ena&G8%#IauirCdWV%HCu6Z>5&I<4io`xDDp z$KymBq4H_I@vjJ$lyt`7ElWyoc}yRd%H%0Jv?cD*WstG7=m}ZVU$&Z1l50LDaOh~c zZcG=6zPN-cL71&g>lmB~7Q`DoF*^xa;v`)MwH{YB%IA|R;TQo3L_XXT{%a75CDA&w zqA%#RM4|*5_dH52QrGeti^%fV-jp9NKl5E$>dkD%mr~CA!t)w006h8^0BpqDL2u;< z=hYe12(y}Y3scO|zR4avW?*kp*yiHedM6(XgKK>3bhhVO2t4V;6a}UFECR}Ut%=Zp zdW5Ge2~JaXRKK)A>3w$8&wS;c_N__VEtjqfCFN^vU9R2AnVO2y*tS0-u2}7g16Ckf zK$a$KC^4^1u~qwSU`nG)9|M4wI6%z1Z7o-7SxT>=$-h%r9Nq=mFDjIiJnv%;)~Xyn z6JA2@H+|?=T*-V)9@;S zA$KE<hacVfa4$h|gn&gMh1<+1Rp7I#;!C0Zv%l z-+uaS1L&_IMD3S`v9+5qskyWqgCyiAcJgMYoB1uc@+ZKxm|I@7oU?=2KsF=WBZoikyJWh|8DQFmS=63B zn)+xZ=*P9C4+x%dg9l*z?Q^Yz{NFN^p7K?wT3c~m z@K`FGIVN&a|G(B$Ks%p42LO1Ish6URFpNFZ9?b^F_5L1q>2v<4NfD&r&S|i?9mR{P z{A}tuM80GV`Fg6b!BrhE1^Un8z2>}63*s#G2$WL^ z$~eT*d_Iv+c6FhCv)+Giqn-$DyiUB1#1!T%eBOln--OYy!>z5r z2r`Av`U+(^r(Benk)isySLyPU}nCCp;dJ07?FB`@OPODQd~gUp@HS%fPLw zx&DALNcy%@<=4UTg~K${-kxb)S#q4*859h{G7b4=_AOlyvCr~^Z5ht(K zSQ%OTMbf#+oWF5`BSfw}imaWbZyU(d_q-K8(!Dg@4?C<6qCAz|A8Oy$eV(sd#`5Kp zWo_j(S+n%c`hZ}zN*jPqjw3;SzhBv-uSu|McKsAneoI~3CIJk9kvs*a*^Sa+ewZl( z$4LGQB7irpN4^%ea=+~{IC^IXedKA((^$1H%1b84G5VaboSf{PK7W!8o-Ayf0_az< ziHUlAG6#TyBr?|4uTigN&i*~bnOPknxqlb*sc?E!rhFCvxF}!g^uGE)YzVlz z-V^G97T!6)$^7GyC9ZtR9IyjrFZfzjyqA$2?T@HyGh=N>Bf^Dc{%xtj6tDOkSntXN zxc89P&v;LpA{rhWcvD+DxBFd!SIn2=ESOMoOVa@^caAU?w~1$+9hi0Bqmav*ipG7~ z><2Z;XTwGxS*Xs}sk;p3OV?IcRLEa@riFvcWsx&0M@Eh+5)qnwRTy<7FJdm4v=dYl zQz6*)l}`4{Gx9C3;0fUkU+n8yjtB|a$@kcODiNq=^Z(QnqW|d~|F3%Dzlm4IM}k+- zkCnyfU?2d@iiuOcuz0bp{r{|6X^qb#%a63BhUait(wlFnzJQx%kuh2;#%gOx$X!nm; zBN3&B|caP^#IE+xH$$U}R}}$!FK9 ze#D^z&#&fMDs^FOwlnj}v7fxT>R!F(GBOp^)Oi8JkwW$Gp#i5~li-g`)4US!kPBZP zUdPU2+m0LWixM9(yK;nlUvXP6U$d~N4GxB94yAp( z4v^L_eDmwfe~*J$t#yOnG&Y67o{Cov1Ee4<_sX#Fzh< zr~3TZPmX8N?u2M*EGR}v-h12rE_Kv<^UCPycLMk-TDn$Bj5Ko2xpjN3b-9UYqoxO4 z#?92074GBArmGP{)83os$vz5`V!|7X#jY6G6>UsdRZGtD@_?yPv5BINpz)H|RW*m* zJe*F#85QH{yr!!z-)DUxmiCHzrPe4f#v7*fRQ+`>N@=hC%s2zkorH1D9@ zFizP5@eFyGpKff47=oqsRN~W-SwBoZZJ%=u1#`_WM4^9Qiu0TW=f8L*#xe&jrV=aB zxPbwmtX`vA87qp@y5|gmDk>6R13}`g8L+=x#;V-g+V|ABsfXTI?x?ySup?^9j$Kif zyMCvw=WKA=`@7b$CtQzRANMhRUvTPc!I6v1M224Gt>_C}$6nZMu$t*kPJnj$J}ZoE z>LG7V&y}oFXRQ|9#z{*L@3X^n`1l^7PXO94D1_RLEWpKU$+^O?L*RP(&42 zZ6grKlj-9ztW=e{0&G-hewSrYvKK*am;5dgrx|>Q43Ql%wrqHokEP{UTdSD;`>^G6 zbfZxI!rw5H+v5>)bIm80eOpd|zf;$0K)cPyYwry(;puv;F?lSo$F+GCZh~Ap}0b-V- z3rBf8MWhC^g*e-xcVm+UzYi)Yac*)6cS!<(3+din3WGYo4Ay73U$LhqfIlFXi;&H5 zP;g`ONGI-Zpc#4%!wS~`{_L}RCN9JI8zJ6rvVNpKQ#O-2>BzYx$!E0fliP@` z>-+jGJSG+KjT|s}Y^0@Xw`V%SL<<_c>qTrLiVHS~nAx>PL7RImWiesehgYSWn#e2# zMgQleZsQ*;q#8Usm@Baabs`InJu=WAB6{W?N&KCxqdg5r?xkmSoU zvnXU~WjKeJ0O;1vsIf&}(o$1w55YoJpD+6Cbe<7}!@>{>j*|TTL+8+Z5omspLj(4g z#!_(^tq$tyumiu)iS<`nbYJL-oi-&2k4N#Pvhu^_mS004d?KdLpeIZ^Hm(s?o`!>N zn;6UL4mI(@aT($=z_)%yO*`K z#*+WszbpDw`6MS`kk}xOHaQA3qJ6DpTsS;{sk-e=GQw6w59?h94p=d@E3_j{Lrp9) z?jJ+4wnb|4I%9`92ju}Ow$P;YN>n5L$G*iRhMa<6Z6<@FBBQ22cSLT2zv$_2h zT8jPx`E&boF7kroiY?gcm5EIf@YIlOUzJWu^zPT%>cqs#)rm;cWK-H2U67~@m1>Z7 z45Vl0qHfi97ev(V4}J?CqOQ+A=17#&#y=4UQW-ZEax#=!A_WrC z9>{+v9zY=La@k)tB=_`J9$piyKn6eDlDbEQ)rFsMs7^$Q7pYh#UF)53N|EL;;ECY0Qr*3NrNv7} z%M+_bzZzZwoa&kaw1Zv%lpj3wl!Kw-(|)C%i8^^)X4X{p^FvAg*rQT}2?lX;f}kM^ z_(otcP*gTT&qmQ?%4-ue?Aeu9d-XoUBA1Fkp1Z~_X|t<83s4)tyi8F!x;^I0*c=9L zF$Xsda~Gp&)S^@F2HV{jv|mv4otLXLOZp<$r_y59;m-2Die*BvM6|WP#KtnHP`v}? z25Nh>Bz`wz*_XPH(-}zr07t>3NlTx8GYtio8VCfDVK4P(3 zd_Rz?`#_c^O;hP}+LijVJPVHkci065lONSA4V71DmudA3n?JJiBZnbe$uaW~HPRZ& zBV_z@L8BtcUl)ojQ6&WZgl#E1?`A7|9S5d2bd1z=<$uRG&4&1p^6kl-TNq|}dBdA^b z3~x{X%{u+HL(C$*&5AK;Z6?T?9MZUEUHDam$4naZ%3ANss)%XKeThrb7oPr&eYM@r zVc*MeNKw{huY4_g<;!cu*_FB+fQ`-C!>X8fA(gGIg@Wb1a%^^6XQa=N^Z68cqK?{= zIr;;+v$S@2NSqcCaYq_v(w6HAEa|bZB-!_9HxFU-^Jc@hAu-(229~bqn9!(x9QtngqEq=#6Q~yamLSU)5OQt&7ob9w1l7>5%HN z&>EULm>|C30eWCJ;V^6t4zEG8oGsgWjBI&Thd1V|F7(x$9}Fv9@XKO1XT%6FwckoK zKY>Gn2~!lqL>ytvR!7siaEq1S)fqHppj3_X&(%%-D&J%oq0D1e-f?Cq<2@#npkOhy zjWveJ{@zegx#HWPv^*ORH!Ir558t|_>YUBzW%lzcn2yhw%&zy^ZzO_LR8>Y}2BTRV z6?=Rn0|W5-(7AE!M7qVz;l^*+vE6Nx4do5zX3mE%r4cWZo6vku=K$Y7H)WoGcwXX~ zMn|f5s_pV^j)xNZmy+dY*-{!Hdk3PpF=vbb&Au#Ji;?yTKteSDkmJ|wJ~{fiT<%)7 zFd+7D=?LK7Tpn%S_{3;WW+L1@J6F8sV0)eD!$^r4-YaUOgNQqdeoROMLfrRT)m*6} z^O+>IrAz2q<6TYR)0F;&^+bB61{0fu0kw;Dn& zhYo2fK^re=QwrV7KwXv3Os-W3wgd&PNDU6;&I|dMPOkP7RD?2X(Q@$9sSkFd5}0ZL z&MgmphN9m3;nCD>&>Y1*TT91^mn(-v|Gm#ib)*?8RN< zaQ-*_eV&)E@*Okciv6-C&sz^Ta?X8;i_L|!q8Y?Y{)v;!tZk7_YZUApntYU`P9v{q{ipB^oMJXd!7Ij8D@w2z?%SZ8fw9LkkbSZl1WF|TIpk1OyZp0A z^TzZcLg|KXKX4h4u^x{Dk)b)=k7yilW4q^$!)}eQ=a%~9I=|#xpsupkzL`b!h>;JG zSfkmMuzOW~*v{fFzs2?>TItuV6HiVD?!9+>HS#%HZJfX5`ksnGoA=E-*SX$+PK5ov zrRE$Zxg`8ag#XlkN)SCtHkkWVyQ<(}8*p{_v_62Q4v3{Bi<|p;AthUV9(;dxk}r|n z$JI#hz2kkh{S|a!zYIadzpawAV*U&{^yTy0iqf5KV!X}o{~1jG?xZQ6aK85N4eU)& zAPbR9kHR9$yk#=yCJ0g%R13&fD|g;qY0cVi;?dpkPd>2x%p1?-CTD*SjM2?02))DY zk?VD`@b2b>C;ayJgu9udnQJDnF1M1t9@}9%$$^fZzqT%(Lkr-ZQ;)Qugb9z=;u5$1(psGgE7xz&OqF<%3H&YcGz)d#5WnJ;39S^c>GXFh>)&7Si{ycTR5y-L}yJha&frh0$>wxroo%* zVtl5>pQwb}@x>mtU8R?AuW(-cacP3z;#gujSb&HB2vC$sq-b5bFxVbkPj74Oot*)& zhoRUz(5~5U!O8ghlh(Jscsyj^%9@9DmjPliV-%QL*udd|rndEbZgy3+d1LoIyD&6u zK4K>-FB_gLupao%QR{{*0qC36F}ofr(+#}O=P<4-h5`k+@eZ48F$=dT#rkSuMt{N= zTi*nEAG_(+1}25R3UnIJ?@Qj}MAoE4dRlVSw#h`@pK7}1G)22t{~FsIf$N5E2B{VM z>C{c%wb#IS`kA)jbJ0iJ3=$H{4vMA_hxSFGmi%TNL$)fADi8|<&ChQ=Fh3tXp^__w zgpe;3EQCD1dr(0}^y9LAS*dAZnz_Y7wYKxxWxN#V!Q zxFWd%!Ce7Iz!CMJ@}LUKvSJ7QYXAwhvyY;6LktkM&a6&R*46-QZ~>kx(sqFdQ%%3W zQ8lfJ_q8uyf9ITG1OT+RQY2*ni<(LY%vENa?x&cbb^FPD^mJi{EMLwi(NPvgl4v7- zHk89G#%~dpyxK^(oS7WbpHIUAJDwSYjD_VshQ2k@{3As2+0vBSb)Aep9u0~a%Oa!j z68)z5Jq$6Yn^xvUP@s@eqjN3qpilBz5ZU=Xm)>@9{Yggj58!iFchzA#ZYhB&?ic^< z8x0Wt4NR%*4DGb^4jBE}K9i%%1+6!9FEIB9K|X43g9LgHCA!3i`z%9MSA&d&j#@{6 zcH0Qy+UYS{a>nbhkI^IAJ|kr*s&Ao7mD+RX5Hyu>Dja_l#}U>kOv1!f(AFxI#SWMB zU`;B|$9O{49}T3w+;LXP7P(EMZ*P9dQMlXj=pPB+$!n@R>VLDgO#wMQ2I1)1JEQos zRDUM$k`}sZN*<8wxFLYY^!FR+6X*)wW`mU!;*SgSRb&g8a>(V72} zoW@wKPBuj@L3@dw1N}zV%x(h!*wyKLKv;;Ay{%5Kxl|Ky_HeEyJ=3Sn3h99$%$(af z5)F}R@Srl*+bCTf4B>k*ZWi_OiirL4-xS@SO@5NqvU*RyZDf_S;^*fVAvbpE!bsCH z>pCfm=#e9Seyt~JSW}0&nXO7hoUL9e(lLV8-eN}^K8qEOOKI3OY3}^GuY*yhvNXvp z{l~b%(OzQ=S0iAmrYsD-kXuq+yI9J)6{;EMDqHUo6Aa-2YaFJRKuaDZ2yY>gY4~Y; z-`&3I@mfViE5iZcz^qA)d`~)VSXXVq$t6Y$8#RfIugZLwcnF3>uX;PxC6HLaFUx=H zpji<@WBsiw57dS-o(R;1_i!!rD>fN6bGsTBP01rH)!+|*p3UD@9WurJZ0S5dhVmd^ zi;zW_kBhBW2I&;_1pq1|qW zNl{AzjevEl2e#adoO9VeY>9#oWGmd2{wlZO1IE3?t6MNr;Ph*?p6V9XARBYWQTq-U zBzyb4-2ip$qMqGYsh{(zkC)nV-(1f7@&2{laE(YbRce@whDSX|%|p{!MSD^4I!78J&$XB9T|{wL^>I z+ttRFTVPP|?pI>WwS)B@k7V$Q>qvvsbuegjBk;|AqnlP)RnwT85EF@o+(@GLZ5qJ) zu2Q>PTV|3~mnz^z>$11V1tqIP^Mzj2@?}K43dHd@?Pc9X^O^dQ@_KzCxASU|BrU++ zCys}4-f=seihxv*gCoGe_0%Bu&i#hecj}zKlmOg<&rdQZ7!H!`A{{`x9Ge8n#3$YS zk5f+dg;`enygL|Z@VWByqnbq``_!Ji0&rxh=GnGP$Jgy3D^gyK=LLnz`8}8%k(h5^ zj~uZ$dv^l6+_fj%MSp?? zzoXfwxSQ1R8HH-`V0C-={^kd?oN$KjT%-2T<7x?e9nY_3-kZLiZJO_<^=LChOpYFN zJuu3z`7ClZI0=?3H2G!FmdPM92Kj=-^tA3ORc44=1cRF|(nFs{?p`^)uZBY{yT;r& z$M`=)U1u~~f7}mRsx>;4+O&#lYsFqEszt3DRkccy+9USvqOBUGMy!9XHwFl)BI3O73`SoWdJy>^hRLIREK=N{DUOFgUy`_f%JeXCa9#i+X(2g|8 z{5J)rx+!oK7@yf?8op+q4`g*2Fb67hVb%jo>{EVUQik^E`m1sTu&YR);yY8Q7RsFhnSPhG=-5X=$JM)^8O@vp{;ziFB zkr(SNypjf=A2Gga+>}QZdNe0e8n|+c~L+)4@ez2;V+}|Ml3}Sh7CVcQ@u|`J|;? zF3_gh)Vi90FqtuJgS3B>GpD@|uDQe{6lSdnL@+jh#ngbP`V`!${^k2|A%@CULrIF| ziKYUW3oxPKChXS3sb&sE)htcFXDan3+Zuiy7EQ{oW$Ax{8>`Z+h~M3@t)(TSvWj6J ziRBSDF79*LOyv$z%JYUG&vms|IeAovL-nHA<{kz8p5r+oRMCVNjwMMpIL zMesL^i3qqwNK`XlYkUpK6-&64_sP#K+hJ|1qig|rZ9VT$Gic4ZH9=!*%nY7ij{|ex zR?!Pt%Tw*?xhC;8(Cg;U*mtt8Ij+WMf8*X$JabbO+EflhtOfK{N>3#RNWwBI`7+{gS znODU0630P1IPgrsgV&BowlzmFxqRcEgiWnGyN@=6z7N<1DNPr3NHm;6`rkPuh(w*JmV?JJIbFF8a>Q|oC&?}Z``U?pBTE& ztUtkwD4m*N{%-A1>TAZw~vtTqsrbBjfm-ccN@EmrE$m0^Xy0kzoaGIIfQR>c0 z+Xf?tQHea>&?LYWJL=NGA6p>-3owO0x2Pf=Ml*1=V5AKL!GSOXBT)JwffQo5lRNiF zAM7hG;h5B(L%sbTrB&OD8}_LQAu^_Pi3Ns?C6#A28?O0anor^xU5_&*{F#dy;gv-R zsXWE!tX8><&8`kQhXDBgUe&kMuDEmYR0P1BpH0Ce%cE7U0P5#y6q_}=^qdYnoj)IB z|1OFRGu~*!?__RoVDR5K#RFKp#kVbJLg-N%e#kNGPOyFrL_|k!{LCB96EJ9RF`b#* z@tbqhT@$RK_f6`3>WUH6&*+;857VC?O5jwkqlKUPzwa_~>#p84UWHcTT`}>b+i$Vr zajUwn#q~#zO8fB}`JPfp|D1gL;C#-{D^zY$OK@=IniK4%0H(Sg2?BqNn3YX6SY^C> zW1u;!=Cq_yf>sz$lWVW6yI8VNqcL$7GK%dUHpwmw#gDDLl%^u{W1QR;N8#|g{H*K5 z2*|HtOUJGvbqw*~tH-+SltIV9yU(8_f%5SqLBr+ty{u2#rGtdhw|IkEHFB6!H(XjD z3{M$fEkll^Z)#YQvh%f$io!|1c?hVv+kBx?oVv!oR9-c=(-AL+Z)>5}@kaN}&nnvo z)_ju7OKrHisQ+QzqhCS9jemo|A*szYB9qNmuCFEUt@XvL(R8?sH-lY3=qE!o{Y*kC z%&`JQf=P&ZPvVlmf1Y!;puPPgzgX0`((Ho<54X(J58-r6hYH%3O$VSvTJqcR>f?LDvePnwKXHW_(nVc>xc=YgwAUOIJ3~ zo>Iw3G)OljO8zMF*;(MX+zRxq432zmE;(?2=rCsk)-g{RXstupE&@V8q)2uZ zYuW;VCqIK)>uIR^)JP~K7B_Gm>;_39P$=9tg4aC7J4d;0G5O>eK_k%&UT-?{tweD{63t);F_7fG4MI>Pv|pp7b~3y(ttuT5ppn_?4YJS zYO?Kg8fKW^?#Zo(qx|mDE2~z&FXpT^E)~pCj0135TX+6cBS{zo?a0j$+qOG~V@JUg z0J;JUigxo>fiZrMV*i1gc~0;cnVV?-mRN9=9cVgHxIBw-I=<|BUMnA+lfLcc;qeh( z>y!4W=@|twh<0>S!?!m(^zKO52SuCwcE^?szm!(duwGjm<7LR3X3vW^^iE)SH6*8>7w|%~PvkQr zzjAf{kdml+;Hm$9-)eXkUyNh`@*8cBHlYvfce?`~S!`A5xpQ^I8$DE7dh49v$r3NC+)sa(Z7tzfr0 zQmqrLi*0LoVAGBUg$W2vzi5eW)h4!ic93pn%UNPqaXu>Nn~@7H--OE&3Vy|v$t8~e zWz5iFxqkNI&qK+rgIbFXgYMeT@~D(7rup>;SvGHP(71k7zSeQMzVJYk-{{WV4OAh^ zyY6haVrOR@fJ&!cg`=NM-#ep%rmHlgwfq79NkiIng)6paWnf3%bB#~f>mOJ#0%T*H zY~>he`}Lea(}xmFjzeAR9*22T65x}agW+dSZ@mGG%*(58Q?i$Fi+jx=>>e@l*0Myx z?9R}elViS<6^Gmw8Wt}PFWn~5O=12h$6dfsC(1&()Lip3f^D2vs>^W~pNET5DlBx> znwM{H4{Y&O{DUxY1^w#Srf7gRck`>%Vm^P=?yv2(@P>;!W1pljUSLA<13%jP@d~HjK*l^SrPI3$}a%8sV7Jb3bxuh6q_-a*m zt?piiwvxlyGH$Uqp$sWelA#RGJ4F~TaPM$4ykcYQ?mGvlSnSER)L(c#_9tUK?Os9D zwdju&%#4cWHGV)finf}Uq|6LxqwPR36a|h^1-U25Kgw64cE1VIQF`wiRnN-lliJup zP<4s-;eh7IU&P0#c2vI1!R@)Bzd5T|d>6}RS3VpxlF;=82_8~LQM`Q7Tj;Hy2HdLO zwydMJlNB!MOmp1ks6Q}Bs-dm`jLp28e(BP`&;`Q_Nc`q;J$o2BpHZln>(@=EGeCK3!Wrsc|LK>J){yM+Fhq@ z^d<-hsxhpxkmiQS(m;{aA5)C5*-<7{%M@<1ALTxrVIt-jRvuBUIkK^Eym^OO{REL~ zD9@)>sb+ZKhSbDlKZ8#xyi-0@_^!ht2sz)H9V};8S|-Zgv_}26wz^WVw$fJq4n@6P zT3%YGP6AK4m1LM?yvzL{Apu3FmA)EXvmu&c-5|kOCnbwLo$$AMdQZwr%AcNdnPrAh zW7k}njTmFO3go{R7Tx_NQx|I~uopZ2<G*Hr~irap?>o78|Op2Job2j{W0-goEn~P?L%$-0DN-2aJO!_ zboow16Xj2@syEg(GPLo%&C1D-%kH9Qu5LSzl#@bI$V#@+i@Td6rsy0``GncC5W$k> z@T@j`W?-OLOVBpa-1V2qLT**T;Jt^BEdxh~i$CQo(C8tdGkNxO^F&D-#30u2Z+y-A z*o^A%CkRzCyvJ6YL%o#d72p9}h;sfFMDYqZ@YY_PfuBx7c{ORN-692-6t*ccEFa-o z=&%FJ>7Ok`Y+U#ZJ}0l{AN_A8-ZF%^ohXt2UXO35omR|Fwr)I&`?$VI5~>mA>El~3 zza{V6znktJJOAm7ro~+SSh#8S>3~|$AJeTvY1{=j44c2i)8A4flo;{ZgDETTd~9WN zZo3b>lgp_-W)UD1{6s3F(X_BLBk848V&4$%@30#c&A#zLjnUueJpG&WUWJoA(iKot zcK;%??0@@Ct$+AA4uDQA4U)L?1~T#Aur2jMk|0+|KjIX6mzT{~_=ore=Glgndz5_n?igI+Lvk^lu>j5NPkr=ghT4~l%ZzhG5>&D`0Yh>t_ zD%kh5HS%p(^GQ?%arj^hdl+YoKpItXnBWMKQDr>is=gs05lQBkpdHe-;pQPq6Ahem z`2*u5!W(OvUX^d?P}(5F35pS8sGlYEreL8HCR2#+)t>U#VmCufNlvF+YQ;@Y<9CZZ zOxN5CQRQC1YHC4*1TmWcHfNdP)i?x@iZ7bv^BGHw5jV7sJmYjE3{6L-av9>NX)A%` zGj`l9g|8=9QZVQw&&s`00^{gZR&cV@SJ6@CxZKvxJ!kLI(P*{{ZK+}A5A@(tJ+1=_ zaB8F4*Tl*2hX+5`jUUBT)inU;-!sHNA5x7<7?De1moGeh@gwu%g?mUAS+`mDnDM0D zvnghP|5hSL_h>(Wh$5YQA^)T!YIG$^<_qfMG~{&CxAC$k#u?|+=m%Zo)~-IF#-W28 z^GSzBBhDe;^go-PQo-!4tV6I~#VtOe*l2O-5_z{hk+Z&Nl!EzF&!VGd#FhTz*<3lc?f7$5$ z_LwAPQf`HXI`GwdWr^1JFKcv=85PnxJ{);^98t(wOS`8em5T7qS)!5alX*FK0YpuG zzy59HuXkMxk!XZ{i%H0@X`#0}8f&c3#Hy2Z)l zCXD9;M5xI7Ky3rE#tc_~U7PRUyQU<@eMwSZ;`ayNysc6JvGDl%LZ)UMv#HE)&w0lj+3X#P zk``q`G*We}tuba82k-rUbL)vE`KU@)W>SLIY3$Pi9W7Pv6LM_ZJ1Tf5{%~VukKTrO zrM*5$A|}M!cq*Nc+W{*MOPr4m4ZrZYAY$Rgl#8^+yy-4NtkC_I42x5(c>H8~q5GGsk}*L%UjNu^#mrLq=SS_VN?Af?q}N|0ih_FS|@&-BJK_~U(G$Vh`| z*tpC>RpbzRuA=+lF7d#GwXCZGnw>R+?;0@wm4)xVJC(KUnUq~F^aW~tH0h~E-<`Lq znNQkpmJ*E?=Y;GGYMj@!2xCm&(cP!hpdXr=F~i<=7!cZnMGTC9?-3Q@$ zwG;;KFw-NlTkC@ENRSq>5wD)()4m9?~EqY+)6!;WUY2#IQRI$StWCQ`R)&)Z03(T zb+0o$d3!SOSo#hg1zCojBzR=@e$4M9(7BZfXRnJ8ZuiHPg(`7gg{yF90nYeCNDGzv# zSy*@wkixTFgRk57SbZV28~O5hI||Xb#V;(_(VPKx0dC$ksdQ~fm2QG(z`S+0s={xB zkUC8{|5S={>@gjIpSpZom;Q`2#<~;TtD&HyTN-Ix1pA0*TBcg8c_i$JvXdL`CNC8o zLON^}D&ekWY1$j$vI&|==GdOr;RAuYQBX_BM~o_SZ;)HmD=Qsqqh zSdJ{D)F8mUf(oXayUOV~hMON7un6rOtZQwr7 zQT>M21SgxO;_J;(=t4Rfh~mAJ)((lQA%o?oC|p3AYpStuNj+yCD=QMLqPsR^Ca($I z;7vqFAy3Q0c-a*>?Z>Ru33Zz$482vD-reM(`m@y&T}2KUMxu7%ugf|Y0Ik2i5-+ln z$ij~x_7m4+OIB6nGQ?hfG*RXg97<-89uuiO*i}<`D;691lkS%fNO_etc*tXDy{gQ7 zIrSZb!?XW9Kao7WVho=gXh^UJ566E9p1wqM+25JQjt)AlQ0eCM-@LHGbS1Ve>?M>< z21ZqKYt;(Tu0_Wy($d|IluW&1zs5>(oNjG|mPF&LCLV4aC#oJyf9u*ly!&tNA#6zk z`GWjKhF>!fI2jN9;|uJldoUa}F#V|8RudyJ*o3S6vBs4)&-*2_>ZWgCK5VO7%&6B-~IpKG8}b)%!sfuqq! z8x-A*#RT?AaY8{zSjvKOWBJ}hVL3zv@_DLs?eE>fBKQon2D@E&qAH+*luT&(KRhDy z|M3WV3-#IPTg?lwN`g^ zzK{lK@(YJ?1A!uzEno#7@)2i*qL4|z(^iFfJ`+@F@n z-PP4BTk=VbFR0jF<@t!>!12iV-)}K0kk!YUf19LXQFz_G4_!?To~Wp>vYrceDt5lX zHTlCsP7re(i~`>bN)Cx(i;przt)+6MqkOSDM5mqToY^;0(wpUo8)_02Z@qTb4|C#A z_hSl`H=4~XPMnu+zZeA?nN*wx(}tshPa}3V^3m$-4e()ZV3?jz-d6~ryn1v(hcIE_ zpgQ?!K7Rk6>wew_xNuIQba)}q>hRCZ9ekSZv3)$#fC7=ZPmAq`qu_I$xs9c7a25i6W=GTe>diH1#&_9{3U z0XaU)7woOcESDQ`clSZ(B>V}1%RZ&WVKqZn2fW?_Y&94av**tFdB(@^$UV~eCz^eY z&5+^DD}C-~Q854!Dv=Bl-j%&19$R2}8lyFT*euVmM=ib5GrwwcEo4h{I4PqJ@}dw3Z?PJ`Y$^jBtLPr$|uhSSwsg(@=$n?TWf*FOO6Prw(LF`{C%Iuo~MUK*l5K2TU@5tnmh8v_~e#W6IZO-^M$vUM~Am_ z8HG-xQM5(LDH{GWhx-4jNJ6b_)pox@ zehN-EPAhqc-vm65KFVkB>~yd4t?-42#URpDKhdruL0zXedaKr3-45DPntt{x{*gJD zONzpMcu5V92o<80BV=ZHc4~ba@iW{p@9o2g6w1+)=)tHm;7tz`dqj9oX+o85YTEwX zK=E>Z$ml%igfE?Q4sz`JoOA+LuDcniBqSQpQEQ|#{JClSCNsgzzPf5e>gpoUL(3C* zRJ#%hKQ=msRSD@Iq<|E!%#3*UqiS+t<+;vcyA$H5~O_pP*4Gy<1$aF z#MGX;3rFnE`4H5@)-qM$Yb8<^rCD6q0{t?+ky}P4iV`;%v|u^8cfRN~RR#waFC#CG z^4fLjO$dFIb0-+O9eXWkk|w34>+~3BBAd79yUd&1Z7uh_`C8i*pQ~AEA>%DAMWg$- zn6q`)M&jGx-V}zzQ+|V_3$;*IY7QD1*<;lqX>AOMnpD21;OI6#M^+* z7Ry)FBeTKxpWfGJ{&f*j~5UGpch#E^4FK+>IXlA1&NL0SiCS(z?!r z#11ns+CI{&`bI1^cWY|?_}Ke%n%S3I=b>kE{YQ?7l&uY>h>vQVeiUCNg3OP;wLD@r zDcYyR#-@P8r92}3aFm8V^|jlf-K7SYVAy3*XKo;3-5e4fwX-rAe0tVK-20Ik3O zz_ahADMS*dG6xjghyy=3h=wMv|0G=+1BYj3L9QyS| zeF_eI+u$uW+xW!*&`CUq6a!d$VuWS#bFO8pu@VX1A$FDs#58N zVIdeVOISM}59Rd&O09p9@6QR4+oWQv+z*2?Ah4%Q|M=OWM#e@cH+#9c`bu#s` zxkKZ?+wxObNOiv2W=wK`nr}g>ehs=M5-p+5a{1bi zmife;nBxyDXQsiOrjYdcpleg_d0RQZFBg9;;jcJjkB{9QWvAD(wN=)~b__&-kH25g z)`KUQQ=<-sp!4>6%bygBGQ#`tqY?vFg&~8p_kP`6Wb*qiQ&s!Jfobdjsl><)U;wBk2HG?+Z!i}au+?9C5ES@iUGQkPq^B$8j%)uBfJLY-k>@_z;*~EBwPm zYkAV7s%w2@sy zD{Xs)n8;Pdz;S=jJa#AZyxQXNIv>Dls6p8JgEY4&I>M5?6`2ly6up}!}!gCC>DYG@{P!pAGYA@z>9QtD3L zV}%^s90pqS@R_ZS5mfZHAMc7M=)?ig6DoX~&aTABe_&T%{l;751>29pyWYS7*{6%j zzs$Yd-(GFA(!F;KFBNR*{~p9^&)i9`_Oxg>10*PEJpTc&{KIT?=3V3c-;V*&1{918 zNc|dMj7UZx(B!WG*;8h~`dB?l`){eR;F0%@*(Y6g>955AZ5j=Xu}$&G%J8YFUpvnH zCcW69*Lv*!;oFF~&K%o_NiD@}1hJ3#W^$mbipF}fz!HfihP>gNg6_vi5o%NUvg|J ztDk9dJD7aCoCgnqwZsXmMdZZ2nvZAG%^I_(s^$R@8YGv9q=FJREP$Oyr&A#t-KwbH zorjXpkuA|ygeV(~MtMZTK0JRVb{m>c3tWz8hgbw2$4EiP>GtRuwzi6ewjz=`tC~%# ziRMi?If9uc5(epmi#Yj=1TMor25DMz&Zx$pai}vpS`lOKei>D$#E_-EN7|nj5%=)^i;LJVjK!)Y1MES#Wdi`Es=QQ4!TzD=Dh~}kWVA0XC7a7#b zX@rn$V*vm?%ltdGW6jo+Kk?aQ10O4(U-$uIr$a=%itXHDYwh%&SYy7A<=D` zcf?Rf_a5>m*FHU@>>n=4Yqm9q#{_FcxkX?5maIwgiPoH_TqESz)eGSKPfmPTQyyq( z9nM!281M*%&=uMpCYIjeDejoZ-S9IrQjx~PD>Z%r?Eyz)yR^9S`e`gNH<;!<5wF>@ ze>yVzBl^R14ZOVL`nC0Aq2!Lk+coNi;cItB+axMrccQOxLc|M+ywC zNizO-cM{g58M|T$ITE``P0y{tc0!wyF0UK2Q+0MHT1qR{BEtmiN={MK+zIrw9N^o_c}YZjb`N-;CmLE`@|z*XIAM_od- z;92>RqLs;ZMwBSH<+9}8z5+7Yt9#e4yEFiIh)##wkQ59n)P-0x^d=^nvck`9hC3$ zpN0EsqoZ^Wen0XU%|0?UjaD>nz2c39=Z?y>sp`t%Z{x}}=WYX4yB@jz(41fwZnS0N z9j_Po7#C68ELVDpnG|@bI*;D57A-{mE#27l7Is8L{l&Ksnu1QaHFM^0`O(9N>7AoB zm7w%I4NXolQ;yFDM7#5hQKTtyWo+1T+=ziR8hNIK`4iiv4B6J%n=4H!`b9cF zKC7KQPE4yBlN$6~$q2g9{EJax?MGhR62REW>Ex&NdDPigvU@%5n!m4Oqe8TWWV>LJ zffp!c&tB;;bPSL|2y*0kW`=GHw*z`=smX;Uz+W7Uy1|JNc4*{#f^oW4tA;+7n``ub z`1W0#m6gB%U=JsgJRg1jcFcAW372E~qjaW_Y0VKy#A0qny(GPCv57t=sqtc2@b9WR z3h`LTXq%=T0z@2a$@~^$L?NaP7KE!!Q)M1qZPCB`r7!mlWWm8C>`uJjA_|)O>A-(1 z1i?l#)$8KfY-?|;zfhpryQrY7 zozJHgsfpI}?nYI^nGu?V`+yaAc2>5=@5-j3I8XW6ZI!3 z>;KRU#Q&oi^fYks$fD-cVzG$-)_A_f46>m)FOihj#YX`P=u^5TzvvHvWK)iI>-ko-nq> z@$+VykGoX&%C(V?%(emm-AVVy?0)ReKr5Z)v3pzH9*FMprzk3 z#SX2}h{5$A82;1C92J~TCtn~5cvD_hd;e@0qZ5zA*@BlBXBYk@Ahy$k})4KZB4 zfXv^5yXl3t<_tTV44DEgVe5t_=3DpZktCMLRs*Zn;TEGeF%s+a2y%ZJg?+?e%KH? z8kIN;*DEb_jUg6}TBQ+~^h0TrKkDDE-(vNOJ%i4CVt)CCX`;*-Kq=Ant^VU@O!vGl z+>&V%_J1X&z4id*!>M3<(s&!xVJROmWJI&`U%L-72i30YT?ek5Z z5|oj(d71)|1dixEtWCz>a6PZOClCF^d}%`@o`4e)XS&AfIPnlxOG%hZ^Q~**#3u8^ zC`3zghy23_#$YnLi1pF`w)S?h)&}5kPHU@(@D4|IAxr(w?!{ThMx6sO2Y{Qg`dHn-`RgthvWW)|cLQF^nmIx+(}5^CF5Iw~$nDCuZ`R6xsp z;)WN{&Rui$p19m)jXU7`3n7>M#1kD3j zlXEYdNqyh2OA}w?Ejq&n&~hh(WHfE>EdY*}4`47iCHs4TfB)#4amVR2vN7@5H_=ME z=|TjX$;&<7_`8Cw&< z38Y|`HU=oukKJ}{oyT`~eJu^gn}P4|k`Bg34ku&sacnu?d`uKldP22Y%J0hm*67>1 ztQ@bJM#?vKtIyPw&CHFwxruX)9w}E%OOHMfB3jDlN=43BK?jRk-4OQb|A1HlQ+Wym zY=Nzw2Vz=pg(Ll^cPFb=Q1!%H*=t|OUChY|CUV<34!eU?IF!$0gnRzPrY7oR9VCMa zqd5hLv}_c;+<&Z1IdOpv61GR@RdZP!>VWAvx_V6THKV4CURExvPK$KVfL;>d^^tdP zjI@Ve<3;Y?b1|}ifqt0>z?Glx5HGYVUcXpJu2x&KDxjaXoIc=^Kex?dcecFnApW9H z$<0UFZ)KI3Wxu{g^JmEB*$ZD|Uol48kP$IZcY`wwe-rv+Fwq@v0Car? z?XW;_tGXkd$5XcTA(_&fwsq;G>|4V(LH7DaZ-qOB!+@{EjtmgItbPGRVRc`73pv3Q zjwjErt7DhwdUO4#pw?YYF*H=(uYTV%o7%kgQt8_tm%^-=Dd?Tik8eujUBM+IV)yDo ztfCwCTWLSxjT7X%ez?=8528QYXqkqjr04Veq31va-aQC3`DJz~5IpM%<{X%tNUcC` z<%1DNm{usF+TUSMeS4aq4i&qBhwc8N`xX%<^u@fZ5 z%F?$#K{*1M*E0&{ixDg`i$5&&P98iSN4HjU6Tv%;5S(>YJjtD z*8WUt;*U$rj>p%|j||(Sbt_2*9WH$??|%=k)82DeGGTMRxAse(O+`q*mZJ>dkVQWF zRDbim@vq-)@5!Wt`qC`z&TRV9{8d&k{K?;kV0C&vz4v5c0UO|H=H}D0i?$9_1nQub z!l~`JTdPGX^rgD9Yo3E+198PSZYvx=qs>cSZVK}n?&tY-ld>tFCM6G@G%;D*u z5%S?J-%+;L#yHP@P0CKLvU7zNW)`P+RRZ2rVRAqavCCkz^d-PG@iZECXO_k3zZ^mldOcLh_v5w>@AuCViW>^JpU~Gb&*x|N{+=kF z9B(f?!yjXfnc-m{IE5E_O3yyr6zWfZD4p_R3lX;ccRB8z%yDFlUDJj|2&O~Gk?ihy z%{Hs4el)VE*0#)6^X6VFx5AE;1o(M#ct!t@to>YyRIQCTly;79N<4ls{#oAC^MK$3 z>)p8QHJrl(F|1WFkToxl1wgrI5TdTs>zj7DHkQ=a2y@I_Kauo=a)L*o3&UQ1Mg9EV!rr8>{mNd+=Wvi)cG#^+a8}6%|qL|B%Tqv3^3jm#$^NH=)lv`)F=&~1u7wOp98rQT&j$JJdEAW znbC|Rd+N7O0TB9CmnNy_!R7oh^&7GA^aqN3>aYMr~e7UHM zCck4h@ZsFs{^hn0w??p8S|Q0b{DF<6tIfloxYo&1a0ZaUOm&e5#M-1)p83z1a&F1r z(%6C9zC8SfP_DM%!>ES>jrnIr%dWRJ_Zc`|U;xts%CnHKoKY7%VLYRjAtAdh>$Lr} zN2`;xa;MV2GK=}y>uto~h&Uu$NoXFFN3zg870Ii}8c_iO>P@u=yB$wVHB>ApN%nzI zZALD}Q$lRAyHPM?ytGhoJl6#;A^90oyyl+D!pL8YbNc-cVfVx&+X_LVC4u5!{`JN& z|H7QR>M{1J?}6>vb7Au!bMP&*JxpyITl3en1BD<#SNprbOZUXPpSN_b=_~8h-RNN~ z8sj>*UCek5;Gjp^}XafRzTOI+YlxwqcM=r;ELd&@lO%0k;grj!TZA4 z@6h$&37+~pB^V`i3GZ+VG*ezxPxWEXebkqNdA$P6a4;m|?nE|pVB5_vfMUe?y|RA& z3;%Gyr99{#D6?c;n5b~D$6quXUW>W{*+i83KUAE^wg?Sq#jhY1{2$vJ83&Dn*eI_b z#VHVb?6{a->dR7Q0ew9`09>Z5MNWWoV!dhIoyN;&fMxH>o>~G}ue*TEr8W-u_v*D5 zji+M0#r6`P=og5ZYsE5(u%C;5NycWX(xaM79xl02%CuEm}orEbkW$gKd zJU%>NSqX&qrU+3AHArlfQw6OQy!D!Ug#cH(U^Y36|U~}GNcY2qsfaz&r zaWC?0N;~?)@(QVK095IT*)EmQHvOU*vIAB92!}(u+vM|X)tq7$w0-@-A#OgY`NV=v z44R!2oKdR?ljq;v2paj0F}=FNG}sEUP;H4(Avl(;mwT8T@H*%p2ARyvT8$eW$-2zE zDL@TCjg8UZ`8>_#;m4d0BMto9R1xBErF4cluPEAnZTmMPecmtKHM zEfj45^Eg(}JKEkIw$Mw}4L?=64u*Z(HZSf6V*RGFe08C4A zu@XEGS79?`Vxn!}4F7qb0`|f`Dnx5w1C#((&e!67u<=<|KRiRtPl8F4K@T}!xwjEZNbF{hM6l0ybvMm zW;^JpUIXe+X71pT`KAGZNcic_ShNpxU_iDFrS+uT`X|WmD63h+yS8G5pdVB;c(b}A zcV<~UO?M?~I-zVtfip&`^wdprw4|I*C2|*BNYV7a;#V>s{3I_b61QRhu`)BKenYXr z^L!F0(}L7=)?BwHh3|i1jkDLV{|{@>(?b9PMR45Z|Lh|9v^@HiOpgb(p*_-zzIHy? zKPy4_d~!Gs)gZPlBGwBNVjP5B(1f1&{MA*zz0nrOdm?7}dA}vuO`Pwb{GY6i_(Px- zq|BV)Tsm-6ip40}mq=U*FtoA?`X%Yn`3?9s2Z9zJ>T2@LWxdit`2DJqL&*9O1ZeFSzC6+B2f^m#-X;kFR^# z?!0fDW@ZJX1c$}wTr{x0i6cvBZ9n1LUVvi9I?cl*d06* zr$%EaiO&|=w=(V;s7oD@eWqE|yq+)3Eq@z#N`e$DlRURE$t2(w>okI;!U@j?WQ$+O zJMs-0S>dinJW$|CQ-GJey3pSeZU#h~MaI;?s02G;Lr1fdY+g^#{=|2Nt8aFxUQK>H z=ghO{H-6e( zdoN_q;Tfu&w|_}LlSFASXz7!&GRmA>fNS)pgmK%I1sLHzV5007c3N!V52Y(!*f={z zZEejxv-N!0WycJ#Q$207PKw5^sm6FTb&wj`mGTzzmBJF&HpapGY9{UTfp;83JKPPZ!XLZ8b~&T+yw>YMMzyl%Ew&;2dxH_o{9MIVnnHU1U;Dj za@v?_9-nsp5^8DiZA#J5NVsCQ^tse7MwfeY9IZJcmFsEOv^XE5(L3IJ~Nq-6Q;Sft4w$?PvGl`zgFde<6-L{MP^zyIPdplvbh2s`&Vtt|Ftp zys+G+ybwS{+gIQ%pyMHZ*l2ji2ng#Q0g>Bo06O8+G@g2YYmGZmpM)Y;7KG>4x4rni z=al#gQVjqq>N^CM1{LJRNqYf%rO}W#mByQ86a`NE5(SU&FFw@EAa5}Ir8%)FYD*Z8 z{jscDeCmmaUcE!=#>xfl2Y)pUepiv9Dw4{1ZP&?8Wt0gZGBHF*eaIkRLzHPK^Tanco$^d{- z69C+*#o5rVY&EI^aywm?=k2aBTZM%(+s?mq=7}F~>l>%r>(i2&TKtu<^SXOj%d*N$ zKAdD{?_3<#pP!ds%C4K*#K!l@zTZUA{NJj)-cxn8&GVk5W>mC`><{@e)~bgs>zvvX)vWDl(u zfImt4=`NZL@t4wZ6!q!F$ zqd-Au2owYWK4<**BTfwm0P2qaeZ*Pe0Khi@z&{t*hi}_P+gdHE+7KiG02&hjjHXV9 zUfQ2Im)%3^7J9F|dE=@(yB#(8^~BWGLwBAUpHKDK@F@G^`OW6jFr0s3@}9P@=j7DF ztZ_FE_1^VsFds{Oh@<8^({HCvlFj@KFH6BvzmIB@VC%gjgX@KD&o@e-i@6R=zq4Ur z{+;nOSC{9^=&k+joHUh_`C#g8IMxbd-tlC@Ov6tZG#8Eb`B~@A?xObX;db?|qg_x5 zeG*8{o%@*c7R^bL(IhoFHMz{`O&jfen02z~TN|pSo)$Dy!*k7W<_zq9pExJ864+I+ zo4D!D>8Z2tt6Cc1Ff+}NFuauyXR5pNZFTj`;m@I~x|Q>l&)w8dnZwM?RU;^J7tH&- z8mA`f91q1ef$mB^%)8pZ{`W&?CFf-TdKU-X{nESI<|b21D(Sy4vS8CTU@*G%+Li)G zoRpF(9(qsa0>T$51QysM;Ew?Sz+gc>AS^5n(kqTdK_#jpqEdXIg#n&s-2CZh-~d3H z@%N+78wLQppC0-=KU@(p&e9&!#8H85jMj%Yi#8gep{kMu0Nh@#meT6KD*jpR|9aoG ziHU|v{-XUtG3YApom}VFms)+BE%9$xu@_*0)w8Tgs>+XbPUihY_|z`O%$V185AfDKJk2Mp?^RfXQ8=|d6b|3L~`SGi9C3}ceXtb4eUKlKio;d zKzeH0ANzV>eru|&xBCQ&Zuok>*L&p=&ocd~)mWLsV~ zf?=i(@HQDI{$77g*K^?0Z!?H`*_W1@a?v=OefZLQ)en4U8Se2x$wu|Fo$i@F`LGdh zwW{;f^o*kK)n9XU->i)}4M1(C$a}gn4@JK;m793Fv;Mi=!-0~kE~b|0^tCd8DZWfA zi%byMg6sI$Pd;yERe!U7Z`@Eh-b9tKJpZwnrYD;zihgsquztLC&3j|}nZNpNc}xNK zc3s_n1qbe${f(=&xln*pRniGxnJIfXz(5aV0wfEoJkSmKQWXy1V@E*;*kb_zUS|B? z*V=%%K>^n=<3G>R06U<7_ceKY?drUDeZ-En8@0C4)*6kfs}Yg}004i-`G3yN^C!vt z=9~M=>u;bJ%XTR1$cqDizZTbqByL2_W5{$* z`+}}~IC-6E=Fq(<;XITXo&oaCqUZV3>Rml&WKw4sa+=5XG3;zM32!r5uwj39_tb_x z?NL?2h?1>XG}TZ5J@8HUHce3>S-X!lmF=vltEhti0TN)AfjJx8kahLxF8%f!(>3%( z4`(;Edw||`LBsIe!)#hN+cEHfq2a2@8?e*m2l+P-(dPC>Q^DW`17HIZlkvQlODWog~gMb=&4gelz{O4H~B@Q^LL6-6FQ7)PSHgIHn005{G5(EGM000000F36J ieLUr2O`we0;OzncfcF7hU3mZi%m;_(005>e01p6*8nY_^ literal 0 HcmV?d00001 diff --git a/src/main/java/atomicscience/api/AtomicScience.java b/src/main/java/atomicscience/api/AtomicScience.java new file mode 100644 index 0000000..1fdc223 --- /dev/null +++ b/src/main/java/atomicscience/api/AtomicScience.java @@ -0,0 +1,17 @@ +package atomicscience.api; + +import cpw.mods.fml.common.Loader; +import net.minecraftforge.common.config.Configuration; + +import java.io.File; + +public class AtomicScience { + + public static final String MAJOR_VERSION = "0"; + public static final String MINOR_VERSION = "6"; + public static final String REVISION_VERSION = "2"; + public static final String BUILD_VERSION = "117"; + public static final String VERSION = "0.6.2"; + public static final String NAME = "Atomic Science"; + public static final Configuration CONFIGURATION = new Configuration(new File(Loader.instance().getConfigDir(), "AtomicScience.cfg")); +} diff --git a/src/main/java/atomicscience/api/BlockRadioactive.java b/src/main/java/atomicscience/api/BlockRadioactive.java new file mode 100644 index 0000000..f222338 --- /dev/null +++ b/src/main/java/atomicscience/api/BlockRadioactive.java @@ -0,0 +1,141 @@ +package atomicscience.api; + +import atomicscience.api.poison.PoisonRadiation; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import java.util.List; +import java.util.Random; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.Minecraft; +import net.minecraft.client.particle.EntitySmokeFX; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import universalelectricity.core.vector.Vector3; + +public class BlockRadioactive extends Block { + + public static int RECOMMENDED_ID = 3768; + public boolean canSpread; + public float radius; + public int amplifier; + public boolean canWalkPoison; + public boolean isRandomlyRadioactive; + private IIcon iconTop; + private IIcon iconBottom; + + public BlockRadioactive(Material material) { + super(material); + this.canSpread = true; + this.radius = 5.0F; + this.amplifier = 2; + this.canWalkPoison = true; + this.isRandomlyRadioactive = true; + this.setTickRandomly(true); + this.setHardness(0.2F); + this.setLightLevel(0.1F); + } + + public BlockRadioactive() { + this(Material.rock); + } + + @Override + public IIcon getIcon(int side, int metadata) { + return side == 1 ? this.iconTop + : (side == 0 ? this.iconBottom : this.blockIcon); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.iconTop = iconRegister.registerIcon( + this.getUnlocalizedName().replace("tile.", "") + "_top"); + this.iconBottom = iconRegister.registerIcon( + this.getUnlocalizedName().replace("tile.", "") + "_bottom"); + } + + @Override + public void onBlockClicked(World world, int x, int y, int z, + EntityPlayer par5EntityPlayer) { + if ((double) world.rand.nextFloat() > 0.8D) { + this.updateTick(world, x, y, z, world.rand); + } + } + + @Override + public void updateTick(World world, int x, int y, int z, Random rand) { + if (!world.isRemote) { + if (this.isRandomlyRadioactive) { + AxisAlignedBB i = AxisAlignedBB.getBoundingBox( + (double) ((float) x - this.radius), (double) ((float) y - this.radius), + (double) ((float) z - this.radius), (double) ((float) x + this.radius), + (double) ((float) y + this.radius), (double) ((float) z + this.radius)); + List newX = world.getEntitiesWithinAABB(EntityLiving.class, i); + + for (EntityLiving newZ : newX) { + PoisonRadiation.INSTANCE.poisonEntity( + new Vector3((double) x, (double) y, (double) z), newZ, + this.amplifier); + } + } + + if (this.canSpread) { + for (int var11 = 0; var11 < 4; ++var11) { + int xOffset = x + rand.nextInt(3) - 1; + int yOffset = y + rand.nextInt(5) - 3; + int zOffset = z + rand.nextInt(3) - 1; + Block block = world.getBlock(xOffset, yOffset, zOffset); + if ((double) rand.nextFloat() > 0.4D && + (block == Blocks.farmland || block == Blocks.grass)) { + world.setBlock(xOffset, yOffset, zOffset, this); + } + } + + if ((double) rand.nextFloat() > 0.85D) { + world.setBlock(x, y, z, Blocks.mycelium); + } + } + } + } + + public void func_71891_b(World par1World, int x, int y, int z, + Entity par5Entity) { + if (par5Entity instanceof EntityLiving && this.canWalkPoison) { + PoisonRadiation.INSTANCE.poisonEntity( + new Vector3((double) x, (double) y, (double) z), + (EntityLiving) par5Entity); + } + } + + public int func_71925_a(Random par1Random) { + return 0; + } + + @SideOnly(Side.CLIENT) + public void func_71862_a(World world, int x, int y, int z, + Random par5Random) { + if (Minecraft.getMinecraft().gameSettings.particleSetting == 0) { + byte radius = 3; + + for (int i = 0; i < 2; ++i) { + Vector3 diDian = new Vector3((double) x, (double) y, (double) z); + diDian.x += Math.random() * (double) radius - (double) (radius / 2); + diDian.y += Math.random() * (double) radius - (double) (radius / 2); + diDian.z += Math.random() * (double) radius - (double) (radius / 2); + EntitySmokeFX fx = new EntitySmokeFX( + world, diDian.x, diDian.y, diDian.z, (Math.random() - 0.5D) / 2.0D, + (Math.random() - 0.5D) / 2.0D, (Math.random() - 0.5D) / 2.0D); + fx.setRBGColorF(0.2F, 0.8F, 0.0F); + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + } + } +} diff --git a/src/main/java/atomicscience/api/IAntiPoisonArmor.java b/src/main/java/atomicscience/api/IAntiPoisonArmor.java new file mode 100644 index 0000000..fc05b65 --- /dev/null +++ b/src/main/java/atomicscience/api/IAntiPoisonArmor.java @@ -0,0 +1,14 @@ +package atomicscience.api; + +import atomicscience.api.poison.Poison; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; + +public interface IAntiPoisonArmor { + + boolean isProtectedFromPoison(ItemStack var1, EntityLivingBase var2, Poison var3); + + void onProtectFromPoison(ItemStack var1, EntityLivingBase var2, Poison var3); + + Poison.ArmorType getArmorType(); +} diff --git a/src/main/java/atomicscience/api/IAntiPoisonBlock.java b/src/main/java/atomicscience/api/IAntiPoisonBlock.java new file mode 100644 index 0000000..c013b03 --- /dev/null +++ b/src/main/java/atomicscience/api/IAntiPoisonBlock.java @@ -0,0 +1,9 @@ +package atomicscience.api; + +import atomicscience.api.poison.Poison; +import net.minecraft.world.World; + +public interface IAntiPoisonBlock { + + boolean isPoisonPrevention(World var1, int var2, int var3, int var4, Poison var5); +} diff --git a/src/main/java/atomicscience/api/IElectromagnet.java b/src/main/java/atomicscience/api/IElectromagnet.java new file mode 100644 index 0000000..7b92be0 --- /dev/null +++ b/src/main/java/atomicscience/api/IElectromagnet.java @@ -0,0 +1,8 @@ +package atomicscience.api; + +import net.minecraft.world.World; + +public interface IElectromagnet { + + boolean isRunning(World var1, int var2, int var3, int var4); +} diff --git a/src/main/java/atomicscience/api/IFissileMaterial.java b/src/main/java/atomicscience/api/IFissileMaterial.java new file mode 100644 index 0000000..174c7e7 --- /dev/null +++ b/src/main/java/atomicscience/api/IFissileMaterial.java @@ -0,0 +1,8 @@ +package atomicscience.api; + +import atomicscience.api.ITemperature; + +public interface IFissileMaterial { + + int onFissile(ITemperature var1); +} diff --git a/src/main/java/atomicscience/api/IHeatSource.java b/src/main/java/atomicscience/api/IHeatSource.java new file mode 100644 index 0000000..14a3f7d --- /dev/null +++ b/src/main/java/atomicscience/api/IHeatSource.java @@ -0,0 +1,6 @@ +package atomicscience.api; + +import atomicscience.api.ITemperature; + +public interface IHeatSource extends ITemperature { +} diff --git a/src/main/java/atomicscience/api/IReactor.java b/src/main/java/atomicscience/api/IReactor.java new file mode 100644 index 0000000..1e85b0e --- /dev/null +++ b/src/main/java/atomicscience/api/IReactor.java @@ -0,0 +1,7 @@ +package atomicscience.api; + + +public interface IReactor { + + boolean isOverToxic(); +} diff --git a/src/main/java/atomicscience/api/ISteamReceptor.java b/src/main/java/atomicscience/api/ISteamReceptor.java new file mode 100644 index 0000000..057cbed --- /dev/null +++ b/src/main/java/atomicscience/api/ISteamReceptor.java @@ -0,0 +1,7 @@ +package atomicscience.api; + + +public interface ISteamReceptor { + + void onReceiveSteam(int var1); +} diff --git a/src/main/java/atomicscience/api/ITemperature.java b/src/main/java/atomicscience/api/ITemperature.java new file mode 100644 index 0000000..943e2fa --- /dev/null +++ b/src/main/java/atomicscience/api/ITemperature.java @@ -0,0 +1,9 @@ +package atomicscience.api; + + +public interface ITemperature { + + float getTemperature(); + + void setTemperature(float var1); +} diff --git a/src/main/java/atomicscience/api/Plasma.java b/src/main/java/atomicscience/api/Plasma.java new file mode 100644 index 0000000..4505c99 --- /dev/null +++ b/src/main/java/atomicscience/api/Plasma.java @@ -0,0 +1,17 @@ +package atomicscience.api; + +import net.minecraft.world.World; + +public class Plasma { + + public static Plasma.IPlasma blockPlasma; + + + + public interface IPlasma { + + void spawn(World var1, int var2, int var3, int var4, byte var5); + + boolean canPlace(World var1, int var2, int var3, int var4); + } +} diff --git a/src/main/java/atomicscience/api/poison/Poison.java b/src/main/java/atomicscience/api/poison/Poison.java new file mode 100644 index 0000000..81abe27 --- /dev/null +++ b/src/main/java/atomicscience/api/poison/Poison.java @@ -0,0 +1,77 @@ +package atomicscience.api.poison; + +import atomicscience.api.IAntiPoisonArmor; +import java.util.EnumSet; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import universalelectricity.core.vector.Vector3; + +public abstract class Poison { + + public static Poison[] list = new Poison[32]; + protected String name; + protected EnumSet armorRequired; + + public Poison(String name, int id) { + this.armorRequired = EnumSet.range(Poison.ArmorType.HELM, Poison.ArmorType.BOOTS); + this.name = name; + if (list == null) { + list = new Poison[32]; + } + + list[0] = this; + } + + public String getName() { + return this.name; + } + + public EnumSet getArmorRequired() { + return this.armorRequired; + } + + public void poisonEntity(Vector3 emitPosition, EntityLivingBase entity, + int amplifier) { + EnumSet armorWorn = EnumSet.of(Poison.ArmorType.UNKNOWN); + if (entity instanceof EntityPlayer) { + EntityPlayer entityPlayer = (EntityPlayer) entity; + + for (int i = 0; i < entityPlayer.inventory.armorInventory.length; ++i) { + if (entityPlayer.inventory.armorInventory[i] != null && + entityPlayer.inventory.armorInventory[i].getItem() instanceof IAntiPoisonArmor && + ((IAntiPoisonArmor) entityPlayer.inventory.armorInventory[i] + .getItem()) + .isProtectedFromPoison(entityPlayer.inventory.armorInventory[i], + entity, this)) { + ((IAntiPoisonArmor) entityPlayer.inventory.armorInventory[i].getItem()) + .onProtectFromPoison(entityPlayer.inventory.armorInventory[i], + entity, this); + armorWorn.add( + ((IAntiPoisonArmor) entityPlayer.inventory.armorInventory[i] + .getItem()) + .getArmorType()); + } + } + } + + if (!armorWorn.containsAll(this.armorRequired)) { + this.doPoisonEntity(emitPosition, entity, armorWorn, amplifier); + } + } + + public void poisonEntity(Vector3 emitPosition, EntityLivingBase entity) { + this.poisonEntity(emitPosition, entity, 0); + } + + protected abstract void doPoisonEntity(Vector3 var1, EntityLivingBase var2, + EnumSet var3, int var4); + + public static enum ArmorType { + HELM, + BODY, + LEGGINGS, + BOOTS, + UNKNOWN; + } +} diff --git a/src/main/java/atomicscience/api/poison/PoisonRadiation.java b/src/main/java/atomicscience/api/poison/PoisonRadiation.java new file mode 100644 index 0000000..21fc3af --- /dev/null +++ b/src/main/java/atomicscience/api/poison/PoisonRadiation.java @@ -0,0 +1,66 @@ +package atomicscience.api.poison; + +import atomicscience.api.IAntiPoisonBlock; +import java.util.EnumSet; +import net.minecraft.block.Block; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.Blocks; +import net.minecraft.world.World; +import universalelectricity.core.vector.Vector3; +import universalelectricity.prefab.CustomDamageSource; +import universalelectricity.prefab.potion.CustomPotionEffect; + +public class PoisonRadiation extends Poison { + + public static final Poison INSTANCE = new PoisonRadiation("radiation", 0); + public static final CustomDamageSource damageSource = (CustomDamageSource) (new CustomDamageSource("radiation")) + .setDamageBypassesArmor(); + public static boolean disabled = false; + + public PoisonRadiation(String name, int id) { + super(name, id); + } + + @Override + protected void doPoisonEntity(Vector3 emitPosition, EntityLivingBase entity, + EnumSet armorWorn, + int amplifier) { + if (!disabled) { + if (emitPosition == null) { + entity.addPotionEffect( + new CustomPotionEffect(PotionRadiation.INSTANCE.getId(), + 300 * (amplifier + 1), amplifier, null)); + return; + } + + if (this.getAntiRadioactiveCount(entity.worldObj, emitPosition, + new Vector3(entity)) <= amplifier) { + entity.addPotionEffect( + new CustomPotionEffect(PotionRadiation.INSTANCE.getId(), + 400 * (amplifier + 1), amplifier, null)); + } + } + } + + public int getAntiRadioactiveCount(World world, Vector3 startingPosition, + Vector3 endingPosition) { + Vector3 delta = Vector3.subtract(endingPosition, startingPosition).normalize(); + Vector3 targetPosition = startingPosition.clone(); + double totalDistance = startingPosition.distanceTo(endingPosition); + int count = 0; + if (totalDistance > 1.0D) { + for (; targetPosition.distanceTo(endingPosition) <= totalDistance; targetPosition.add(delta)) { + Block block = targetPosition.getBlock(world); + if (block != Blocks.air && block instanceof IAntiPoisonBlock && + ((IAntiPoisonBlock) block) + .isPoisonPrevention(world, targetPosition.intX(), + targetPosition.intY(), + targetPosition.intZ(), this)) { + ++count; + } + } + } + + return count; + } +} diff --git a/src/main/java/atomicscience/api/poison/PotionRadiation.java b/src/main/java/atomicscience/api/poison/PotionRadiation.java new file mode 100644 index 0000000..416ba3e --- /dev/null +++ b/src/main/java/atomicscience/api/poison/PotionRadiation.java @@ -0,0 +1,38 @@ +package atomicscience.api.poison; + +import atomicscience.api.AtomicScience; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import universalelectricity.prefab.potion.CustomPotion; + +public class PotionRadiation extends CustomPotion { + public static final PotionRadiation INSTANCE; + + public PotionRadiation(int id, boolean isBadEffect, int color, String name) { + super(AtomicScience.CONFIGURATION.get("Potion", name + " potion ID", id) + .getInt(id), + isBadEffect, color, name); + this.setIconIndex(6, 0); + } + + @Override + public void performEffect(EntityLivingBase entity, int amplifier) { + if ((double) entity.worldObj.rand.nextFloat() > 0.9D - (double) amplifier * 0.08D) { + entity.attackEntityFrom(PoisonRadiation.damageSource, 1); + if (entity instanceof EntityPlayer) { + ((EntityPlayer) entity) + .addExhaustion(0.01F * (float) (amplifier + 1)); + } + } + } + + public boolean isReady(int duration, int amplifier) { + return duration % 10 == 0; + } + + static { + AtomicScience.CONFIGURATION.load(); + INSTANCE = new PotionRadiation(21, true, 5149489, "radiation"); + AtomicScience.CONFIGURATION.save(); + } +} diff --git a/src/main/java/atomicscience/assembler.ogg b/src/main/java/atomicscience/assembler.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4ba6769caad04d3d4b89d6837804d379e5c86681 GIT binary patch literal 468193 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

KTE^qFA>lYGf=#Kj% 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

y`-`82`A7_mQrffLr#-s+T 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 z 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èHK=lda8{tZd+O&1 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

@uSgwv=?slk0}n`IO?BA`xr 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 2) { + if(itemStack.getItem() == AtomicScience.itCell) { + if(!this.mergeItemStack(itemStack, 1, 2, false)) { + return null; + } + } else if(!this.mergeItemStack(itemStack, 0, 1, false)) { + return null; + } + } else if(!this.mergeItemStack(itemStack, 3, 39, false)) { + return null; + } + + if(itemStack.stackSize == 0) { + var3.putStack((ItemStack)null); + } else { + var3.onSlotChanged(); + } + + if(itemStack.stackSize == var2.stackSize) { + return null; + } + + var3.onPickupFromSlot(par1EntityPlayer, itemStack); + } + + return var2; + } +} diff --git a/src/main/java/atomicscience/fanwusu/EMatter.java b/src/main/java/atomicscience/fanwusu/EMatter.java new file mode 100644 index 0000000..e19de62 --- /dev/null +++ b/src/main/java/atomicscience/fanwusu/EMatter.java @@ -0,0 +1,316 @@ +package atomicscience.fanwusu; + +import atomicscience.AtomicScience; +import atomicscience.api.IElectromagnet; +import atomicscience.api.poison.PoisonRadiation; +import cpw.mods.fml.common.registry.IEntityAdditionalSpawnData; +import io.netty.buffer.ByteBuf; + +import java.util.List; +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.common.ForgeChunkManager.Ticket; +import net.minecraftforge.common.ForgeChunkManager.Type; +import net.minecraftforge.common.util.ForgeDirection; +import universalelectricity.core.vector.Vector3; +import universalelectricity.core.vector.VectorHelper; + +public class EMatter extends Entity implements IEntityAdditionalSpawnData { + + // private static final int FANG_XIANG_DATA = 20; + private int lastTurn; + private Vector3 jiQi; + private ForgeDirection fangXiang; + public Ticket youPiao; + + public EMatter(World par1World) { + super(par1World); + this.lastTurn = 60; + this.jiQi = new Vector3(); + this.fangXiang = ForgeDirection.NORTH; + this.setSize(0.2F, 0.2F); + super.renderDistanceWeight = 3.0D; + super.noClip = true; + super.ignoreFrustumCheck = true; + } + + public EMatter(World par1World, Vector3 diDian, Vector3 jiQi, + ForgeDirection direction) { + this(par1World); + this.setPosition(diDian.x, diDian.y, diDian.z); + this.jiQi = jiQi; + this.fangXiang = direction; + } + + public void writeSpawnData(ByteBuf data) { + data.writeInt(this.jiQi.intX()); + data.writeInt(this.jiQi.intY()); + data.writeInt(this.jiQi.intZ()); + data.writeInt(this.fangXiang.ordinal()); + } + + public void readSpawnData(ByteBuf data) { + this.jiQi.x = (double)data.readInt(); + this.jiQi.y = (double)data.readInt(); + this.jiQi.z = (double)data.readInt(); + this.fangXiang = ForgeDirection.getOrientation(data.readInt()); + } + + protected void entityInit() { + super.dataWatcher.addObject(20, Byte.valueOf((byte)3)); + if (this.youPiao == null) { + this.youPiao = ForgeChunkManager.requestTicket( + AtomicScience.instance, super.worldObj, Type.ENTITY); + this.youPiao.getModData(); + this.youPiao.bindEntity(this); + } + } + + public void onUpdate() { + if (super.ticksExisted % 10 == 0) { + super.worldObj.playSoundAtEntity( + this, "atomicscience.accelerator", 1.5F, + (float)(0.6000000238418579D + 0.4D * (this.getSuDu() / 1.0D))); + } + + TileEntity t = super.worldObj.getTileEntity( + this.jiQi.intX(), this.jiQi.intY(), this.jiQi.intZ()); + if (!(t instanceof TAccelerator)) { + this.setDead(); + } else { + TAccelerator tileEntity = (TAccelerator)t; + if (tileEntity.wuSu == null) { + tileEntity.wuSu = this; + } + + for (int jianKuai = -1; jianKuai < 1; ++jianKuai) { + for (int z = -1; z < 1; ++z) { + ForgeChunkManager.forceChunk( + this.youPiao, + new ChunkCoordIntPair(((int)super.posX >> 4) + jianKuai, + ((int)super.posZ >> 4) + z)); + } + } + + try { + if (!super.worldObj.isRemote) { + super.dataWatcher.updateObject( + 20, Byte.valueOf((byte)this.fangXiang.ordinal())); + } else { + this.fangXiang = ForgeDirection.getOrientation( + super.dataWatcher.getWatchableObjectByte(20)); + } + } catch (Exception var13) { + var13.printStackTrace(); + } + + double var14 = 6.99999975040555E-4D; + ForgeDirection zuoFangXiang = VectorHelper.getOrientationFromSide( + this.fangXiang, ForgeDirection.EAST); + Block zuoBlockID = super.worldObj.getBlock( + MathHelper.floor_double(super.posX + (double)zuoFangXiang.offsetX), + MathHelper.floor_double(super.posY), + MathHelper.floor_double(super.posZ + (double)zuoFangXiang.offsetZ)); + ForgeDirection youFangXiang = VectorHelper.getOrientationFromSide( + this.fangXiang, ForgeDirection.WEST); + Block youBlockID = super.worldObj.getBlock( + MathHelper.floor_double(super.posX + (double)youFangXiang.offsetX), + MathHelper.floor_double(super.posY), + MathHelper.floor_double(super.posZ + (double)youFangXiang.offsetZ)); + if ((zuoBlockID == Blocks.air || youBlockID == Blocks.air) && + this.lastTurn <= 0) { + var14 = this.turn(); + super.motionX = 0.0D; + super.motionY = 0.0D; + super.motionZ = 0.0D; + this.lastTurn = 40; + } + + --this.lastTurn; + if (canCunZai(super.worldObj, new Vector3(this), this.fangXiang) && + !super.isCollided) { + Vector3 dongLi = new Vector3(); + dongLi.modifyPositionFromSide(this.fangXiang); + dongLi.multiply(var14); + super.motionX = Math.min(dongLi.x + super.motionX, 1.0D); + super.motionY = Math.min(dongLi.y + super.motionY, 1.0D); + super.motionZ = Math.min(dongLi.z + super.motionZ, 1.0D); + super.isAirBorne = true; + super.lastTickPosX = super.posX; + super.lastTickPosY = super.posY; + super.lastTickPosZ = super.posZ; + super.posX += super.motionX; + super.posY += super.motionY; + super.posZ += super.motionZ; + this.setPosition(super.posX, super.posY, super.posZ); + if (super.lastTickPosX == super.posX && + super.lastTickPosY == super.posY && + super.lastTickPosZ == super.posZ && this.getSuDu() <= 0.0D && + this.lastTurn <= 0) { + this.setDead(); + } + + super.worldObj.spawnParticle("portal", super.posX, super.posY, + super.posZ, 0.0D, 0.0D, 0.0D); + super.worldObj.spawnParticle("largesmoke", super.posX, super.posY, + super.posZ, 0.0D, 0.0D, 0.0D); + if (super.ticksExisted % 10 == 0) { + float radius = 0.6F; + AxisAlignedBB bounds = AxisAlignedBB.getBoundingBox( + super.posX - (double)radius, super.posY - (double)radius, + super.posZ - (double)radius, super.posX + (double)radius, + super.posY + (double)radius, super.posZ + (double)radius); + List entitiesNearby = + super.worldObj.getEntitiesWithinAABB(Entity.class, bounds); + if (entitiesNearby.size() > 1) { + this.explode(); + return; + } + } + + } else { + this.explode(); + } + } + } + + private double turn() { + ForgeDirection zuoFangXiang = VectorHelper.getOrientationFromSide( + this.fangXiang, ForgeDirection.EAST); + Vector3 zuoBian = new Vector3(this); + zuoBian.modifyPositionFromSide(zuoFangXiang); + ForgeDirection youFangXiang = VectorHelper.getOrientationFromSide( + this.fangXiang, ForgeDirection.WEST); + Vector3 youBian = new Vector3(this); + youBian.modifyPositionFromSide(youFangXiang); + if (zuoBian.getBlock(super.worldObj) == Blocks.air) { + this.fangXiang = zuoFangXiang; + } else { + if (youBian.getBlock(super.worldObj) != Blocks.air) { + this.setDead(); + return 0.0D; + } + + this.fangXiang = youFangXiang; + } + + this.setPosition(Math.floor(super.posX) + 0.5D, + Math.floor(super.posY) + 0.5D, + Math.floor(super.posZ) + 0.5D); + return this.getSuDu() - + this.getSuDu() / + Math.min(Math.max(70.0D * this.getSuDu(), 4.0D), 30.0D); + } + + public void explode() { + if (!super.worldObj.isRemote) { + boolean radius = false; + if (this.getSuDu() > 0.5D) { + float bounds = 1.0F; + AxisAlignedBB livingNearby = AxisAlignedBB.getBoundingBox( + super.posX - (double)bounds, super.posY - (double)bounds, + super.posZ - (double)bounds, super.posX + (double)bounds, + super.posY + (double)bounds, super.posZ + (double)bounds); + List entities = + super.worldObj.getEntitiesWithinAABB(Entity.class, livingNearby); + + for (Entity entity : entities) { + if (entity instanceof EMatter) { + if ((double)super.worldObj.rand.nextFloat() > 0.85D) { + super.worldObj.spawnEntityInWorld(new EntityItem( + super.worldObj, super.posX, super.posY, super.posZ, + new ItemStack(AtomicScience.itCellStrangeMatter))); + } + + radius = true; + } + } + + if ((double)super.worldObj.rand.nextFloat() > 0.95D) { + super.worldObj.spawnEntityInWorld( + new EntityItem(super.worldObj, super.posX, super.posY, super.posZ, + new ItemStack(AtomicScience.itCellStrangeMatter))); + } + } + + if (!radius) { + super.worldObj.createExplosion(this, super.posX, super.posY, super.posZ, + (float)this.getSuDu() * 2.5F, true); + } + } + + float radius1 = 6.0F; + AxisAlignedBB bounds1 = AxisAlignedBB.getBoundingBox( + super.posX - (double)radius1, super.posY - (double)radius1, + super.posZ - (double)radius1, super.posX + (double)radius1, + super.posY + (double)radius1, super.posZ + (double)radius1); + List livingNearby1 = + super.worldObj.getEntitiesWithinAABB(EntityLivingBase.class, bounds1); + + for (EntityLivingBase entity2 : livingNearby1) { + PoisonRadiation.INSTANCE.poisonEntity(new Vector3(entity2), entity2); + } + + super.worldObj.playSoundEffect( + super.posX, super.posY, super.posZ, "atomicscience.antimatter", 1.5F, + 1.0F - super.worldObj.rand.nextFloat() * 0.3F); + this.setDead(); + } + + public double getSuDu() { + return Math.abs(super.motionX) + Math.abs(super.motionY) + + Math.abs(super.motionZ); + } + + public static boolean canCunZai(World worldObj, Vector3 position, + ForgeDirection facing) { + if (position.getBlock(worldObj) != Blocks.air) { + return false; + } else { + for (int i = 0; i <= 1; ++i) { + ForgeDirection dir = ForgeDirection.getOrientation(i); + if (!isElectromagnet(worldObj, position, dir)) { + return false; + } + } + + return true; + } + } + + public static boolean isElectromagnet(World worldObj, Vector3 position, + ForgeDirection dir) { + Vector3 checkPos = position.clone(); + checkPos.modifyPositionFromSide(dir); + Block block = checkPos.getBlock(worldObj); + return block != Blocks.air ? block instanceof IElectromagnet : false; + } + + public void applyEntityCollision(Entity par1Entity) { this.explode(); } + + public void setDead() { + ForgeChunkManager.releaseTicket(this.youPiao); + super.setDead(); + } + + protected void readEntityFromNBT(NBTTagCompound nbt) { + this.jiQi = Vector3.readFromNBT(nbt.getCompoundTag("jiqi")); + ForgeDirection.getOrientation(nbt.getByte("fangXiang")); + } + + protected void writeEntityToNBT(NBTTagCompound nbt) { + nbt.setTag("jiqi", this.jiQi.writeToNBT(new NBTTagCompound())); + nbt.setByte("fangXiang", (byte)this.fangXiang.ordinal()); + } +} diff --git a/src/main/java/atomicscience/fanwusu/FulminationEventHandler.java b/src/main/java/atomicscience/fanwusu/FulminationEventHandler.java new file mode 100644 index 0000000..0950b85 --- /dev/null +++ b/src/main/java/atomicscience/fanwusu/FulminationEventHandler.java @@ -0,0 +1,59 @@ +package atomicscience.fanwusu; + +import atomicscience.AtomicScience; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import icbm.api.explosion.ExplosionEvent; +import java.util.ArrayList; +import java.util.List; +import net.minecraft.util.Vec3; +import universalelectricity.core.vector.Vector3; + +public class FulminationEventHandler { + public static final FulminationEventHandler INSTANCE = + new FulminationEventHandler(); + public static final List list = new ArrayList<>(); + + public void register(TFulminationGenerator tileEntity) { + if (!list.contains(tileEntity)) { + list.add(tileEntity); + } + } + + public void unregister(TFulminationGenerator tileEntity) { + list.remove(tileEntity); + } + + @SubscribeEvent + public void onPreExplosionEvent(ExplosionEvent.PreExplosionEvent event) { + if (event.explosive != null && event.explosive.getRadius() > 0.0F && + event.explosive.getEnergy() > 0.0D) { + for (TFulminationGenerator tileEntity : list) { + if (tileEntity != null && !tileEntity.isInvalid()) { + Vector3 tilePos = new Vector3(tileEntity); + tilePos.add(0.5D); + double explosionDistance = + tilePos.distanceTo(new Vector3(event.x, event.y, event.z)); + if (explosionDistance <= (double)event.explosive.getRadius() && + explosionDistance > 0.0D) { + float density = event.world.getBlockDensity( + Vec3.createVectorHelper(event.x, event.y, event.z), + AtomicScience.bFulminationGenerator + .getCollisionBoundingBoxFromPool( + event.world, tileEntity.xCoord, tileEntity.yCoord, + tileEntity.zCoord)); + if (density < 1.0F) { + double nengLiang = + Math.min(event.explosive.getEnergy(), + event.explosive.getEnergy() / + (explosionDistance / + (double)event.explosive.getRadius())); + nengLiang = + Math.max(nengLiang - (double)density * nengLiang, 0.0D); + tileEntity.dian += nengLiang; + } + } + } + } + } + } +} diff --git a/src/main/java/atomicscience/fanwusu/ItAntimatterCell.java b/src/main/java/atomicscience/fanwusu/ItAntimatterCell.java new file mode 100644 index 0000000..a1d99e4 --- /dev/null +++ b/src/main/java/atomicscience/fanwusu/ItAntimatterCell.java @@ -0,0 +1,192 @@ +package atomicscience.fanwusu; + +import atomicscience.AtomicScience; +import atomicscience.api.poison.PoisonRadiation; +import atomicscience.wujian.ItCell; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import icbm.api.explosion.ExplosionEvent; +import icbm.api.explosion.IExplosive; +import java.util.Iterator; +import java.util.List; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.item.ItemExpireEvent; +import universalelectricity.core.vector.Vector3; + +public class ItAntimatterCell extends ItCell { + + private IIcon iconGram; + + public ItAntimatterCell() { + super("antimatter"); + this.setMaxDamage(0); + this.setHasSubtypes(true); + } + + @Override + public void addInformation(ItemStack par1ItemStack, + EntityPlayer par2EntityPlayer, List list, + boolean par4) { + if (par1ItemStack.getItemDamage() >= 1) { + list.add("1 Gram"); + } else { + list.add("125 Milligrams"); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) { + this.itemIcon = iconRegister.registerIcon( + this.getUnlocalizedName().replace("item.", "") + "_milligram"); + this.iconGram = iconRegister.registerIcon( + this.getUnlocalizedName().replace("item.", "") + "_gram"); + } + + @Override + public IIcon getIconFromDamage(int metadata) { + return metadata >= 1 ? this.iconGram : this.itemIcon; + } + + @Override + public void getSubItems(Item item, CreativeTabs par2CreativeTabs, + List par3List) { + par3List.add(new ItemStack(item, 1, 0)); + par3List.add(new ItemStack(item, 1, 1)); + } + + @Override + public int getEntityLifespan(ItemStack itemStack, World world) { + return 160; + } + + @SubscribeEvent + public void onItemExpireEvent(ItemExpireEvent event) { + if (event.entityItem != null) { + ItemStack itemStack = event.entityItem.getEntityItem(); + if (itemStack != null && itemStack.getItem() == this) { + event.entityItem.worldObj.playSoundEffect( + event.entityItem.posX, event.entityItem.posY, event.entityItem.posZ, + "atomicscience.antimatter", 3.0F, + 1.0F - event.entityItem.worldObj.rand.nextFloat() * 0.3F); + if (!event.entityItem.worldObj.isRemote + // && + // ! FlagRegistry.getModFlag("ModFlags") + // .containsValue(event.entityItem.worldObj, + // ZhuYao.QIZI_FAN_WU_SU_BAO_ZHA, "true", + // new Vector3(event.entityItem)) + ) { + IExplosive explosive = new IExplosive() { + public int getID() { + return -1; + } + + public String getUnlocalizedName() { + return "Antimatter"; + } + + public String getExplosiveName() { + return this.getUnlocalizedName(); + } + + public String getGrenadeName() { + return this.getUnlocalizedName(); + } + + public String getMissileName() { + return this.getUnlocalizedName(); + } + + public String getMinecartName() { + return this.getUnlocalizedName(); + } + + public float getRadius() { + return 4.0F; + } + + public int getTier() { + return 4; + } + + public double getEnergy() { + return 400000.0D; + } + }; + if (itemStack.getItemDamage() == 1) { + explosive = new IExplosive() { + public int getID() { + return -1; + } + + public String getUnlocalizedName() { + return "antimatter"; + } + + public String getExplosiveName() { + return this.getUnlocalizedName(); + } + + public String getGrenadeName() { + return this.getUnlocalizedName(); + } + + public String getMissileName() { + return this.getUnlocalizedName(); + } + + public String getMinecartName() { + return this.getUnlocalizedName(); + } + + public float getRadius() { + return 6.0F; + } + + public int getTier() { + return 4; + } + + public double getEnergy() { + return 2000000.0D; + } + }; + } + + MinecraftForge.EVENT_BUS.post(new ExplosionEvent.PreExplosionEvent( + event.entity.worldObj, event.entityItem.posX, + event.entityItem.posY, event.entityItem.posZ, explosive)); + event.entityItem.worldObj.createExplosion( + event.entityItem, event.entityItem.posX, event.entityItem.posY, + event.entityItem.posZ, explosive.getRadius(), true); + AtomicScience.LOGGER.fine( + "Antimatter cell detonated at: " + event.entityItem.posX + ", " + + event.entityItem.posY + ", " + event.entityItem.posZ); + boolean radius = true; + AxisAlignedBB bounds = AxisAlignedBB.getBoundingBox( + event.entityItem.posX - 20.0D, event.entityItem.posY - 20.0D, + event.entityItem.posZ - 20.0D, event.entityItem.posX + 20.0D, + event.entityItem.posY + 20.0D, event.entityItem.posZ + 20.0D); + List entitiesNearby = event.entityItem.worldObj.getEntitiesWithinAABB( + EntityLiving.class, bounds); + Iterator i$ = entitiesNearby.iterator(); + + while (i$.hasNext()) { + EntityLiving entity = (EntityLiving) i$.next(); + PoisonRadiation.INSTANCE.poisonEntity(new Vector3(entity), entity); + } + } + } + } + } +} diff --git a/src/main/java/atomicscience/fanwusu/TAccelerator.java b/src/main/java/atomicscience/fanwusu/TAccelerator.java new file mode 100644 index 0000000..4481bd0 --- /dev/null +++ b/src/main/java/atomicscience/fanwusu/TAccelerator.java @@ -0,0 +1,242 @@ +package atomicscience.fanwusu; + +import atomicscience.AtomicScience; +import atomicscience.jiqi.TInventory; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraftforge.common.util.ForgeDirection; +import universalelectricity.core.UniversalElectricity; +import universalelectricity.core.electricity.ElectricityPack; +import universalelectricity.core.vector.Vector3; +import universalelectricity.prefab.implement.IRotatable; + +public class TAccelerator + extends TInventory implements IRotatable, ISidedInventory { + + public final int DIAN = 10000; + public double yongDianLiang = 0.0D; + public int antimatter; + public EMatter wuSu; + public static final float SU_DU = 1.0F; + public float suDu; + + @Override + public boolean canConnect(ForgeDirection direction) { + return true; + } + + @Override + public ElectricityPack getRequest() { + return this.getStackInSlot(0) != null && + (this.worldObj.isBlockIndirectlyGettingPowered( + this.xCoord, this.yCoord, this.zCoord) || + this.worldObj.getBlockPowerInput(this.xCoord, this.yCoord, + this.zCoord) > 0) + ? new ElectricityPack(10000.0D / this.getVoltage(), this.getVoltage()) + : new ElectricityPack(); + } + + @Override + public void onReceive(ElectricityPack electricityPack) { + super.onReceive(electricityPack); + this.yongDianLiang += electricityPack.getWatts(); + } + + @Override + public void updateEntity() { + super.updateEntity(); + if (!this.worldObj.isRemote) { + this.suDu = 0.0F; + if (this.wuSu != null) { + this.suDu = (float)this.wuSu.getSuDu(); + } + + if (AtomicScience.isCell(this.getStackInSlot(1)) && + this.getStackInSlot(1).stackSize > 0 && this.antimatter >= 125) { + if (this.getStackInSlot(2) != null) { + if (this.getStackInSlot(2).getItem() == AtomicScience.itCellAntimatter) { + ItemStack i$ = this.getStackInSlot(2).copy(); + if (i$.stackSize < i$.getMaxStackSize()) { + this.decrStackSize(1, 1); + this.antimatter -= 125; + ++i$.stackSize; + this.setInventorySlotContents(2, i$); + } + } + } else { + this.antimatter -= 125; + this.decrStackSize(1, 1); + this.setInventorySlotContents(2, new ItemStack(AtomicScience.itCellAntimatter)); + } + } + + if (!this.isDisabled()) { + if (this.worldObj.isBlockIndirectlyGettingPowered( + this.xCoord, this.yCoord, this.zCoord)) { + double var10000 = super.wattsReceived; + this.getClass(); + if (var10000 >= 10000.0D) { + if (this.wuSu == null) { + if (this.getStackInSlot(0) != null && super.ticks % 20L == 0L) { + Vector3 i$1 = new Vector3(this); + i$1.modifyPositionFromSide( + this.getDirection(this.worldObj, this.xCoord, this.yCoord, + this.zCoord) + .getOpposite()); + i$1.add(0.5D); + if (EMatter.canCunZai( + this.worldObj, i$1, + this.getDirection(this.worldObj, this.xCoord, + this.yCoord, this.zCoord) + .getOpposite())) { + this.yongDianLiang = 0.0D; + this.wuSu = + new EMatter(this.worldObj, i$1, new Vector3(this), + this.getDirection(this.worldObj, this.xCoord, + this.yCoord, this.zCoord) + .getOpposite()); + this.worldObj.spawnEntityInWorld(this.wuSu); + this.decrStackSize(0, 1); + } + } + } else if (this.wuSu.isDead) { + this.wuSu = null; + } else if (this.suDu > 1.0F) { + this.worldObj.playSoundEffect( + (double)this.xCoord, (double)this.yCoord, (double)this.zCoord, + "atomicscience.antimatter", 2.0F, + 1.0F - this.worldObj.rand.nextFloat() * 0.3F); + this.antimatter += 5 + this.worldObj.rand.nextInt(5); + this.yongDianLiang = 0.0D; + this.wuSu.setDead(); + this.wuSu = null; + } + + double var10001 = super.wattsReceived; + this.getClass(); + super.wattsReceived = Math.max(var10001 - 10000.0D / 10.0D, 0.0D); + } else { + if (this.wuSu != null) { + this.wuSu.setDead(); + } + + this.wuSu = null; + } + } else { + if (this.wuSu != null) { + this.wuSu.setDead(); + } + + this.wuSu = null; + } + } + + if (super.ticks % 5L == 0L) { + worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + } + } + } + + @Override + public void onDataPacket(NetworkManager nm, + S35PacketUpdateTileEntity packet) { + if (!this.worldObj.isRemote) + return; + + NBTTagCompound nbt = packet.func_148857_g(); + super.disabledTicks = nbt.getInteger("disabledTicks"); + this.suDu = nbt.getFloat("suDu"); + this.yongDianLiang = nbt.getDouble("yongDianLiang"); + this.antimatter = nbt.getInteger("antimatter"); + } + + // public void handlePacketData(INetworkManager network, int packetType, + // Packet250CustomPayload packet, + // EntityPlayer player, + // ByteArrayDataInput dataStream) { + // try { + // super.disabledTicks = dataStream.readInt(); + // this.suDu = dataStream.readFloat(); + // this.yongDianLiang = dataStream.readDouble(); + // this.fanWuSu = dataStream.readInt(); + // } catch (Exception var7) { + // var7.printStackTrace(); + // } + // } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setInteger("disabledTicks", super.disabledTicks); + nbt.setFloat("suDu", this.suDu); + nbt.setDouble("yongDianLiang", this.yongDianLiang); + nbt.setInteger("antimatter", this.antimatter); + + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, + this.getBlockMetadata(), nbt); + } + + @Override + public void openInventory() { + if (!this.worldObj.isRemote) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + } + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + super.wattsReceived = nbt.getDouble("wattsReceived"); + this.yongDianLiang = nbt.getDouble("yongDianLiang"); + this.antimatter = nbt.getInteger("antimatter"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setDouble("wattsReceived", super.wattsReceived); + nbt.setDouble("yongDianLiang", this.yongDianLiang); + nbt.setInteger("antimatter", this.antimatter); + } + + @Override + public int getSizeInventory() { return 3; } + + @Override + public double getVoltage() { + return UniversalElectricity.isVoltageSensitive ? 480.0D : 120.0D; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return new int[] {0, 1, 2}; + } + + @Override + public boolean canInsertItem(int slotID, ItemStack itemStack, int j) { + return this.isItemValidForSlot(slotID, itemStack); + } + + @Override + public boolean canExtractItem(int slotID, ItemStack itemstack, int j) { + return slotID == 2; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + switch (i) { + case 0: + return true; + case 1: + return AtomicScience.isCell(itemStack); + case 2: + return itemStack.getItem() instanceof ItAntimatterCell; + default: + return false; + } + } +} diff --git a/src/main/java/atomicscience/fanwusu/TFulminationGenerator.java b/src/main/java/atomicscience/fanwusu/TFulminationGenerator.java new file mode 100644 index 0000000..db31447 --- /dev/null +++ b/src/main/java/atomicscience/fanwusu/TFulminationGenerator.java @@ -0,0 +1,35 @@ +package atomicscience.fanwusu; + +import atomicscience.fanwusu.FulminationEventHandler; +import calclavia.lib.TileEntityUniversalProducer; +import universalelectricity.core.UniversalElectricity; + +public class TFulminationGenerator extends TileEntityUniversalProducer { + + public final int DIAN = 5000; + public double dian; + + + public TFulminationGenerator() { + FulminationEventHandler.INSTANCE.register(this); + } + + @Override + public void updateEntity() { + super.updateEntity(); + if(!this.isDisabled()) { + this.produce(Math.min(this.dian, 5000.0D)); + } + + this.dian = Math.max(this.dian - 5000.0D, 0.0D); + } + + public void invalidate() { + FulminationEventHandler.INSTANCE.unregister(this); + super.initiate(); + } + + public double getVoltage() { + return UniversalElectricity.isVoltageSensitive?480.0D:120.0D; + } +} diff --git a/src/main/java/atomicscience/fenlie/BCentrifuge.java b/src/main/java/atomicscience/fenlie/BCentrifuge.java new file mode 100644 index 0000000..a4cb46a --- /dev/null +++ b/src/main/java/atomicscience/fenlie/BCentrifuge.java @@ -0,0 +1,52 @@ +package atomicscience.fenlie; + +import atomicscience.AtomicScience; +import atomicscience.CommonProxy; +import atomicscience.jiqi.BBaseRotatable; +import atomicscience.render.RH; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import universalelectricity.core.UniversalElectricity; + +public class BCentrifuge extends BBaseRotatable { + public BCentrifuge() { super("centrifuge", UniversalElectricity.machine); } + + @Override + public boolean onMachineActivated(World par1World, int x, int y, int z, + EntityPlayer par5EntityPlayer, int side, + float hitX, float hitY, float hitZ) { + par1World.getBlockMetadata(x, y, z); + if (!par1World.isRemote) { + par5EntityPlayer.openGui(AtomicScience.instance, + CommonProxy.GuiType.CENTRIFUGE.ordinal(), + par1World, x, y, z); + return true; + } else { + return true; + } + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TCentrifuge(); + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderType() { + return RH.BLOCK_RENDER_ID; + } +} diff --git a/src/main/java/atomicscience/fenlie/BControlRod.java b/src/main/java/atomicscience/fenlie/BControlRod.java new file mode 100644 index 0000000..2c2126b --- /dev/null +++ b/src/main/java/atomicscience/fenlie/BControlRod.java @@ -0,0 +1,32 @@ +package atomicscience.fenlie; + +import atomicscience.jiqi.BBase; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.init.Blocks; + +public class BControlRod extends BBase { + public BControlRod() { + super("controlRod", Material.iron); + this.setBlockBounds(0.3F, 0.0F, 0.3F, 0.7F, 1.0F, 0.7F); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.blockIcon = iconRegister.registerIcon( + Blocks.iron_block.getUnlocalizedName().replace("tile.", "")); + } + + @Override + public boolean renderAsNormalBlock() { return false; } + + @Override + public boolean isOpaqueCube() { return false; } + + @Override + public boolean hasTileEntity(int metadata) { return false; } +} diff --git a/src/main/java/atomicscience/fenlie/BFissionReactor.java b/src/main/java/atomicscience/fenlie/BFissionReactor.java new file mode 100644 index 0000000..8e019db --- /dev/null +++ b/src/main/java/atomicscience/fenlie/BFissionReactor.java @@ -0,0 +1,98 @@ +package atomicscience.fenlie; + +import atomicscience.AtomicScience; +import atomicscience.api.IFissileMaterial; +import atomicscience.fenlie.TFissionReactor; +import atomicscience.jiqi.BBase; +import atomicscience.render.RH; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import java.util.Random; +import net.minecraft.block.Block; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class BFissionReactor extends BBase { + + public BFissionReactor() { super("fissionReactor"); } + + @Override + public void onBlockAdded(World par1World, int x, int y, int z) { + super.onBlockAdded(par1World, x, y, z); + TFissionReactor tileEntity = + (TFissionReactor)par1World.getTileEntity(x, y, z); + tileEntity.updatePositionStatus(); + } + + @Override + public void onNeighborBlockChange(World par1World, int x, int y, int z, + Block block) { + TFissionReactor tileEntity = + (TFissionReactor)par1World.getTileEntity(x, y, z); + tileEntity.updatePositionStatus(); + } + + @Override + public boolean onMachineActivated(World world, int x, int y, int z, + EntityPlayer entityPlayer, int side, + float hitX, float hitY, float hitZ) { + if (!world.isRemote) { + TFissionReactor tileEntity = + (TFissionReactor)world.getTileEntity(x, y, z); + tileEntity = tileEntity.zhaoZuiDi(); + if (!entityPlayer.isSneaking()) { + if (entityPlayer.inventory.getCurrentItem() != null && + entityPlayer.inventory.getCurrentItem().getItem() == + AtomicScience.itWenDuBiao) { + return false; + } + + if (tileEntity.getStackInSlot(0) != null) { + EntityItem itemStack1 = + new EntityItem(world, entityPlayer.posX, entityPlayer.posY, + entityPlayer.posZ, tileEntity.getStackInSlot(0)); + Random random = new Random(); + float var13 = 0.05F; + itemStack1.motionX = (double)((float)random.nextGaussian() * var13); + itemStack1.motionY = + (double)((float)random.nextGaussian() * var13 + 0.2F); + itemStack1.motionZ = (double)((float)random.nextGaussian() * var13); + itemStack1.delayBeforeCanPickup = 0; + world.spawnEntityInWorld(itemStack1); + tileEntity.setInventorySlotContents(0, (ItemStack)null); + return true; + } + + if (entityPlayer.inventory.getCurrentItem() != null && + entityPlayer.inventory.getCurrentItem().getItem() instanceof + IFissileMaterial) { + ItemStack itemStack = entityPlayer.inventory.getCurrentItem().copy(); + itemStack.stackSize = 1; + tileEntity.setInventorySlotContents(0, itemStack); + entityPlayer.inventory.decrStackSize( + entityPlayer.inventory.currentItem, 1); + return true; + } + } + + entityPlayer.openGui(AtomicScience.instance, 0, world, tileEntity.xCoord, + tileEntity.yCoord, tileEntity.zCoord); + } + + return true; + } + + @SideOnly(Side.CLIENT) + public int getRenderType() { + return RH.BLOCK_RENDER_ID; + } + + public TileEntity createNewTileEntity(World var1) { return new TFissionReactor(); } + + public boolean renderAsNormalBlock() { return false; } + + public boolean isOpaqueCube() { return false; } +} diff --git a/src/main/java/atomicscience/fenlie/BNuclearBoiler.java b/src/main/java/atomicscience/fenlie/BNuclearBoiler.java new file mode 100644 index 0000000..b356b70 --- /dev/null +++ b/src/main/java/atomicscience/fenlie/BNuclearBoiler.java @@ -0,0 +1,51 @@ +package atomicscience.fenlie; + +import atomicscience.CommonProxy; +import atomicscience.AtomicScience; +import atomicscience.jiqi.BBaseRotatable; +import atomicscience.render.RH; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import universalelectricity.core.UniversalElectricity; + +public class BNuclearBoiler extends BBaseRotatable { + + public BNuclearBoiler() { + super("nuclearBoiler", UniversalElectricity.machine); + } + + @Override + public boolean onMachineActivated(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer, int side, float hitX, float hitY, float hitZ) { + par1World.getBlockMetadata(x, y, z); + if(!par1World.isRemote) { + par5EntityPlayer.openGui(AtomicScience.instance, CommonProxy.GuiType.HE_QI.ordinal(), par1World, x, y, z); + return true; + } else { + return true; + } + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderType() { + return RH.BLOCK_RENDER_ID; + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TNuclearBoiler(); + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public boolean isOpaqueCube() { + return false; + } +} diff --git a/src/main/java/atomicscience/fenlie/BReactorTap.java b/src/main/java/atomicscience/fenlie/BReactorTap.java new file mode 100644 index 0000000..80b0d77 --- /dev/null +++ b/src/main/java/atomicscience/fenlie/BReactorTap.java @@ -0,0 +1,56 @@ +package atomicscience.fenlie; + +import atomicscience.fenlie.TReactorTap; +import atomicscience.jiqi.BBaseRotatable; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BReactorTap extends BBaseRotatable { + private IIcon frontIcon; + + public BReactorTap() { super("reactorTap"); } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, + EntityLivingBase entityLiving, + ItemStack itemStack) { + if (MathHelper.abs((float)entityLiving.posX - (float)x) < 2.0F && + MathHelper.abs((float)entityLiving.posZ - (float)z) < 2.0F) { + double d0 = entityLiving.posY + 1.82D - (double)entityLiving.yOffset; + if (d0 - (double)y > 2.0D) { + this.setDirection(world, x, y, z, ForgeDirection.getOrientation(1)); + return; + } + + if ((double)y - d0 > 0.0D) { + this.setDirection(world, x, y, z, ForgeDirection.getOrientation(0)); + return; + } + } + + super.onBlockPlacedBy(world, x, y, z, entityLiving, itemStack); + } + + public IIcon getIcon(int side, int metadata) { + return side == metadata ? this.frontIcon : this.blockIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.frontIcon = iconRegister.registerIcon( + this.getUnlocalizedName().replace("tile.", "") + "_front"); + } + + public TileEntity createNewTileEntity(World world, int meta) { return new TReactorTap(); } +} diff --git a/src/main/java/atomicscience/fenlie/BSiren.java b/src/main/java/atomicscience/fenlie/BSiren.java new file mode 100644 index 0000000..9ed6958 --- /dev/null +++ b/src/main/java/atomicscience/fenlie/BSiren.java @@ -0,0 +1,75 @@ +package atomicscience.fenlie; + +import atomicscience.jiqi.BBase; +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import universalelectricity.core.vector.Vector3; + +public class BSiren extends BBase { + + public BSiren() { + super("siren"); + } + + @Override + public void onBlockAdded(World par1World, int x, int y, int z) { + par1World.scheduleBlockUpdate(x, y, z, this, 1); + } + + @Override + public void onNeighborBlockChange(World par1World, int x, int y, int z, Block block) { + par1World.scheduleBlockUpdate(x, y, z, this, 1); + } + + @Override + public void updateTick(World worldObj, int x, int y, int z, Random par5Random) { + int metadata = worldObj.getBlockMetadata(x, y, z); + if(worldObj.getBlockPowerInput(x, y, z) > 0) { + float volume = 0.5F; + + for(int i = 0; i < 6; ++i) { + Vector3 pos = new Vector3((double)x, (double)y, (double)z); + pos.modifyPositionFromSide(ForgeDirection.getOrientation(i)); + Block block = pos.getBlock(worldObj); + if(block == this) { + volume *= 1.5F; + } + } + + worldObj.playSoundEffect((double)x, (double)y, (double)z, "atomicscience.alarm", volume, 1.0F - 0.18F * ((float)metadata / 15.0F)); + worldObj.scheduleBlockUpdate(x, y, z, this, 30); + } + + } + + @Override + public boolean onUseWrench(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer, int side, float hitX, float hitY, float hitZ) { + int metadata = par1World.getBlockMetadata(x, y, z) + 1; + if(metadata < 0) { + metadata = 15; + } + + par1World.setBlockMetadataWithNotify(x, y, z, metadata, 2); + return true; + } + + @Override + public boolean onSneakUseWrench(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer, int side, float hitX, float hitY, float hitZ) { + int metadata = par1World.getBlockMetadata(x, y, z) - 1; + if(metadata > 15) { + metadata = 0; + } + + par1World.setBlockMetadataWithNotify(x, y, z, metadata, 2); + return true; + } + + @Override + public int tickRate(World world) { + return 20; + } +} diff --git a/src/main/java/atomicscience/fenlie/BUraniumOre.java b/src/main/java/atomicscience/fenlie/BUraniumOre.java new file mode 100644 index 0000000..dd1c644 --- /dev/null +++ b/src/main/java/atomicscience/fenlie/BUraniumOre.java @@ -0,0 +1,47 @@ +package atomicscience.fenlie; + +import atomicscience.TabAS; +import atomicscience.AtomicScience; +import atomicscience.api.BlockRadioactive; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class BUraniumOre extends BlockRadioactive { + + public BUraniumOre() { + super(Material.rock); + this.setBlockName("atomicscience:oreUranium"); + this.setStepSound(Block.soundTypeStone); + this.setCreativeTab(TabAS.INSTANCE); + this.setHardness(2.0F); + super.isRandomlyRadioactive = AtomicScience.ALLOW_RADIOACTIVE_ORES; + super.canWalkPoison = AtomicScience.ALLOW_RADIOACTIVE_ORES; + super.canSpread = false; + super.radius = 1.0F; + super.amplifier = 0; + } + + @Override + @SideOnly(Side.CLIENT) + public void randomDisplayTick(World world, int x, int y, int z, Random par5Random) { + if(AtomicScience.ALLOW_RADIOACTIVE_ORES) { + super.randomDisplayTick(world, x, y, z, par5Random); + } + } + + @Override + public IIcon getIcon(int side, int metadata) { + return this.blockIcon; + } + + @Override + public int quantityDropped(Random rand) { + return 1; + } +} diff --git a/src/main/java/atomicscience/fenlie/CCentrifuge.java b/src/main/java/atomicscience/fenlie/CCentrifuge.java new file mode 100644 index 0000000..13716ac --- /dev/null +++ b/src/main/java/atomicscience/fenlie/CCentrifuge.java @@ -0,0 +1,98 @@ +package atomicscience.fenlie; + +import atomicscience.AtomicScience; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.inventory.SlotFurnace; +import net.minecraft.item.ItemStack; +import universalelectricity.core.item.IItemElectric; +import universalelectricity.prefab.SlotSpecific; + +public class CCentrifuge extends Container { + + //private static final int slotCount = 4; + private TCentrifuge tileEntity; + + + public CCentrifuge(InventoryPlayer par1InventoryPlayer, TCentrifuge tileEntity) { + this.tileEntity = tileEntity; + this.addSlotToContainer(new SlotSpecific(tileEntity, 0, 131, 26, IItemElectric.class)); + this.addSlotToContainer(new Slot(tileEntity, 1, 25, 50)); + this.addSlotToContainer(new SlotFurnace(par1InventoryPlayer.player, tileEntity, 2, 81, 26)); + this.addSlotToContainer(new SlotFurnace(par1InventoryPlayer.player, tileEntity, 3, 101, 26)); + + int var3; + for(var3 = 0; var3 < 3; ++var3) { + for(int var4 = 0; var4 < 9; ++var4) { + this.addSlotToContainer(new Slot(par1InventoryPlayer, var4 + var3 * 9 + 9, 8 + var4 * 18, 84 + var3 * 18)); + } + } + + for(var3 = 0; var3 < 9; ++var3) { + this.addSlotToContainer(new Slot(par1InventoryPlayer, var3, 8 + var3 * 18, 142)); + } + + this.tileEntity.players.add(par1InventoryPlayer.player); + tileEntity.openInventory(); + } + + @Override + public void onContainerClosed(EntityPlayer entityplayer) { + super.onContainerClosed(entityplayer); + this.tileEntity.players.remove(entityplayer); + } + + @Override + public boolean canInteractWith(EntityPlayer par1EntityPlayer) { + return this.tileEntity.isUseableByPlayer(par1EntityPlayer); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par1) { + ItemStack var2 = null; + Slot var3 = (Slot)super.inventorySlots.get(par1); + if(var3 != null && var3.getHasStack()) { + ItemStack itemStack = var3.getStack(); + var2 = itemStack.copy(); + if(par1 >= 4) { + if(this.getSlot(0).isItemValid(itemStack)) { + if(!this.mergeItemStack(itemStack, 0, 1, false)) { + return null; + } + } else if(AtomicScience.isUraniumOre(itemStack)) { + if(!this.mergeItemStack(itemStack, 1, 2, false)) { + return null; + } + } else if(AtomicScience.isCell(itemStack)) { + if(!this.mergeItemStack(itemStack, 3, 4, false)) { + return null; + } + } else if(par1 < 31) { + if(!this.mergeItemStack(itemStack, 31, 40, false)) { + return null; + } + } else if(par1 >= 31 && par1 < 40 && !this.mergeItemStack(itemStack, 4, 30, false)) { + return null; + } + } else if(!this.mergeItemStack(itemStack, 4, 40, false)) { + return null; + } + + if(itemStack.stackSize == 0) { + var3.putStack((ItemStack)null); + } else { + var3.onSlotChanged(); + } + + if(itemStack.stackSize == var2.stackSize) { + return null; + } + + var3.onPickupFromSlot(par1EntityPlayer, itemStack); + } + + return var2; + } +} diff --git a/src/main/java/atomicscience/fenlie/ItRadioactive.java b/src/main/java/atomicscience/fenlie/ItRadioactive.java new file mode 100644 index 0000000..a4ea0af --- /dev/null +++ b/src/main/java/atomicscience/fenlie/ItRadioactive.java @@ -0,0 +1,21 @@ +package atomicscience.fenlie; + +import atomicscience.api.poison.PoisonRadiation; +import atomicscience.wujian.ItAS; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import universalelectricity.core.vector.Vector3; + +public class ItRadioactive extends ItAS { + public ItRadioactive(String name) { + super(name); + } + + public void onUpdate(ItemStack par1ItemStack, World par2World, Entity entity, int par4, boolean par5) { + if(entity instanceof EntityLiving) { + PoisonRadiation.INSTANCE.poisonEntity(new Vector3(entity), (EntityLiving)entity, 1); + } + } +} diff --git a/src/main/java/atomicscience/fenlie/ItStrangeMatter.java b/src/main/java/atomicscience/fenlie/ItStrangeMatter.java new file mode 100644 index 0000000..8df4341 --- /dev/null +++ b/src/main/java/atomicscience/fenlie/ItStrangeMatter.java @@ -0,0 +1,15 @@ +package atomicscience.fenlie; + +import atomicscience.TabAS; +import atomicscience.wujian.ItCell; + +public class ItStrangeMatter extends ItCell { + public static final int YONG_LIANG = 64; + + public ItStrangeMatter() { + super("strangeMatter"); + this.setMaxStackSize(1); + this.setMaxDamage(64); + this.setCreativeTab(TabAS.INSTANCE); + } +} diff --git a/src/main/java/atomicscience/fenlie/ItUranium.java b/src/main/java/atomicscience/fenlie/ItUranium.java new file mode 100644 index 0000000..a4a4a18 --- /dev/null +++ b/src/main/java/atomicscience/fenlie/ItUranium.java @@ -0,0 +1,37 @@ +package atomicscience.fenlie; + +import java.util.List; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public class ItUranium extends ItRadioactive { + + public ItUranium(int icon) { + super("uranium"); + this.setHasSubtypes(true); + this.setMaxDamage(0); + } + + @Override + public void addInformation(ItemStack itemStack, EntityPlayer par2EntityPlayer, List list, boolean par4) { + if(itemStack.getItemDamage() > 0) { + list.add("Breeding Uranium"); + } else { + list.add("Enriched Uranium"); + } + + } + + @Override + public String getUnlocalizedName(ItemStack itemStack) { + return this.getUnlocalizedName() + "." + itemStack.getItemDamage(); + } + + @Override + public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List list) { + list.add(new ItemStack(this, 1, 0)); + list.add(new ItemStack(this, 1, 1)); + } +} diff --git a/src/main/java/atomicscience/fenlie/TCentrifuge.java b/src/main/java/atomicscience/fenlie/TCentrifuge.java new file mode 100644 index 0000000..b6ef0b7 --- /dev/null +++ b/src/main/java/atomicscience/fenlie/TCentrifuge.java @@ -0,0 +1,236 @@ +package atomicscience.fenlie; + +import atomicscience.AtomicScience; +import atomicscience.jiqi.TInventory; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import net.minecraftforge.fluids.FluidTankInfo; +import net.minecraftforge.fluids.IFluidHandler; +import universalelectricity.core.electricity.ElectricityPack; +import universalelectricity.core.item.ElectricItemHelper; +import universalelectricity.core.item.IItemElectric; +import universalelectricity.core.vector.Vector3; +import universalelectricity.core.vector.VectorHelper; +import universalelectricity.prefab.implement.IRotatable; + +public class TCentrifuge + extends TInventory implements ISidedInventory, IFluidHandler, IRotatable { + + public static final int SHI_JIAN = 2400; + public static final float DIAN = 500.0F; + public int smeltingTicks = 0; + public float xuanZhuan = 0.0F; + public final FluidTank gasTank; + + public TCentrifuge() { + this.gasTank = + new FluidTank(AtomicScience.FLUID_URANIUM_HEXAFLOURIDE, 0, 5000); + } + + @Override + public ElectricityPack getRequest() { + return this.canWork() + ? new ElectricityPack(500.0D / this.getVoltage(), this.getVoltage()) + : new ElectricityPack(); + } + + @Override + public void updateEntity() { + super.updateEntity(); + if (!this.worldObj.isRemote && !this.isDisabled()) { + if (super.ticks % 20L == 0L) { + for (int i$ = 0; i$ < 6; ++i$) { + ForgeDirection direction = ForgeDirection.getOrientation(i$); + TileEntity tileEntity = VectorHelper.getTileEntityFromSide( + this.worldObj, new Vector3(this), direction); + if (tileEntity instanceof IFluidHandler && + tileEntity.getClass() != this.getClass()) { + int requiredLiquid = + this.gasTank.getCapacity() - this.gasTank.getFluidAmount(); + FluidStack drained = + ((IFluidHandler)tileEntity) + .drain( + direction.getOpposite(), + new FluidStack(AtomicScience.FLUID_URANIUM_HEXAFLOURIDE, + requiredLiquid), + true); + this.gasTank.fill(drained, true); + } + } + } + + if (this.canWork()) { + super.wattsReceived += ElectricItemHelper.dechargeItem( + super.containingItems[0], 500.0D, this.getVoltage()); + if (super.wattsReceived >= 500.0D) { + if (this.smeltingTicks == 0) { + this.smeltingTicks = 2400; + } + + if (this.smeltingTicks > 0) { + --this.smeltingTicks; + if (this.smeltingTicks < 1) { + this.work(); + this.smeltingTicks = 0; + } + } else { + this.smeltingTicks = 0; + } + + super.wattsReceived = 0.0D; + } + } else { + this.smeltingTicks = 0; + } + + if (super.ticks % 10L == 0L) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + } + } + } + + @Override + public void onDataPacket(NetworkManager nm, + S35PacketUpdateTileEntity packet) { + NBTTagCompound nbt = packet.func_148857_g(); + this.smeltingTicks = nbt.getInteger("shiJian"); + this.gasTank.setFluid( + new FluidStack(AtomicScience.FLUID_URANIUM_HEXAFLOURIDE, + nbt.getInteger("fluidAmount"))); + super.disabledTicks = nbt.getInteger("disabledTicks"); + } + + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + + nbt.setInteger("shiJian", this.smeltingTicks); + nbt.setInteger("fluidAmount", this.gasTank.getFluidAmount()); + nbt.setInteger("disabledTicks", super.disabledTicks); + + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, + this.getBlockMetadata(), nbt); + } + + @Override + public void openInventory() { + if (!this.worldObj.isRemote) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + } + } + + @Override + public void closeInventory() {} + + public boolean canWork() { + return !this.isDisabled() && this.gasTank.getFluidAmount() != 0 && + this.gasTank.getFluidAmount() >= + AtomicScience.URANIUM_HEXAFLOURIDE_RATIO && + this.isItemValidForSlot(2, new ItemStack(AtomicScience.itUranium)) && + this.isItemValidForSlot(3, + new ItemStack(AtomicScience.itUranium, 1, 1)); + } + + public void work() { + if (this.canWork()) { + this.gasTank.drain(AtomicScience.URANIUM_HEXAFLOURIDE_RATIO, true); + if ((double)this.worldObj.rand.nextFloat() > 0.7D) { + this.incrStackSize(2, new ItemStack(AtomicScience.itUranium)); + } else { + this.incrStackSize(3, new ItemStack(AtomicScience.itUranium, 1, 1)); + } + } + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.smeltingTicks = nbt.getInteger("smeltingTicks"); + NBTTagCompound gasNbt = nbt.getCompoundTag("gas"); + this.gasTank.setFluid(FluidStack.loadFluidStackFromNBT(gasNbt)); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("smeltingTicks", this.smeltingTicks); + NBTTagCompound gasNbt = new NBTTagCompound(); + if (this.gasTank.getFluid() != null) + this.gasTank.getFluid().writeToNBT(gasNbt); + nbt.setTag("gas", gasNbt); + } + + public int getSizeInventory() { return 4; } + + @Override + public boolean canFill(ForgeDirection arg0, Fluid fluid) { + return AtomicScience.FLUID_URANIUM_HEXAFLOURIDE == fluid && + this.gasTank.getCapacity() != this.gasTank.getFluidAmount(); + } + + @Override + public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { + return AtomicScience.FLUID_URANIUM_HEXAFLOURIDE == resource.getFluid() + ? this.gasTank.fill(resource, doFill) + : 0; + } + + @Override + public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) { + return null; + } + + @Override + public FluidStack drain(ForgeDirection arg0, FluidStack arg1, boolean arg2) { + return null; + } + + @Override + public boolean canDrain(ForgeDirection arg0, Fluid arg1) { + return false; + } + + @Override + public FluidTankInfo[] getTankInfo(ForgeDirection arg0) { + return new FluidTankInfo[] {new FluidTankInfo(this.gasTank)}; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return side == 0 ? new int[] {2, 3} : new int[] {0, 1}; + } + + @Override + public boolean canInsertItem(int slotID, ItemStack itemStack, int side) { + return slotID == 1 && this.isItemValidForSlot(slotID, itemStack); + } + + @Override + public boolean canExtractItem(int slotID, ItemStack itemstack, int j) { + return slotID == 2 || slotID == 3; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + switch (i) { + case 0: + return itemStack.getItem() instanceof IItemElectric; + case 1: + return true; + case 2: + return itemStack.getItem() == AtomicScience.itUranium; + case 3: + return itemStack.getItem() == AtomicScience.itUranium; + default: + return false; + } + } +} diff --git a/src/main/java/atomicscience/fenlie/TFissionReactor.java b/src/main/java/atomicscience/fenlie/TFissionReactor.java new file mode 100644 index 0000000..e35d6c4 --- /dev/null +++ b/src/main/java/atomicscience/fenlie/TFissionReactor.java @@ -0,0 +1,430 @@ +package atomicscience.fenlie; + +import atomicscience.AtomicScience; +import atomicscience.MegaTNTExplusion; +import atomicscience.api.IFissileMaterial; +import atomicscience.api.IReactor; +import atomicscience.api.ITemperature; +import atomicscience.api.poison.PoisonRadiation; +import atomicscience.wujian.ItBreederFuel; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import java.util.List; +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import net.minecraftforge.fluids.FluidTankInfo; +import net.minecraftforge.fluids.IFluidHandler; +import universalelectricity.core.vector.Vector3; +import universalelectricity.prefab.tile.TileEntityDisableable; + +public class TFissionReactor extends TileEntityDisableable + implements IInventory, ITemperature, IReactor, IFluidHandler { + + public static final int BAN_JING = 2; + public static final int WEN_DU = 2000; + public float wenDu = 0.0F; + private ItemStack[] containingItems = new ItemStack[1]; + public float rotation = 0.0F; + private TFissionReactor cachedZhuYao = null; + public FluidTank wasteTank; + + public TFissionReactor() { + this.wasteTank = new FluidTank(AtomicScience.FLUID_TOXIC_WASTE, 0, 800000); + } + + @Override + public void updateEntity() { + super.updateEntity(); + if (this.cachedZhuYao == null || super.ticks % 20L == 0L) { + this.zhaoZuiDi(); + } + + if (!this.isDisabled()) { + if (this.cachedZhuYao != this && this.getStackInSlot(0) != null && + this.cachedZhuYao.getStackInSlot(0) == null) { + this.cachedZhuYao.setInventorySlotContents(0, this.getStackInSlot(0)); + this.setInventorySlotContents(0, (ItemStack) null); + } + + ItemStack fissileFuel = this.cachedZhuYao.getStackInSlot(0); + int i; + if (fissileFuel != null && fissileFuel.getItem() instanceof IFissileMaterial) { + i = ((IFissileMaterial) fissileFuel.getItem()).onFissile(this); + if (!this.worldObj.isRemote) { + if (i == 0) { + fissileFuel.setItemDamage(Math.min(fissileFuel.getItemDamage() + 1, + fissileFuel.getMaxDamage())); + if (fissileFuel.getItemDamage() >= fissileFuel.getMaxDamage()) { + this.cachedZhuYao.setInventorySlotContents(0, (ItemStack) null); + } + } else if (i == 2) { + fissileFuel.setItemDamage( + Math.max(fissileFuel.getItemDamage() - 1, 0)); + } + } + + if (super.ticks % 20L == 0L && + (double) this.worldObj.rand.nextFloat() > 0.65D) { + List entitiesInRange = this.worldObj.getEntitiesWithinAABB( + EntityLivingBase.class, + AxisAlignedBB.getBoundingBox( + (double) (this.xCoord - 4), (double) (this.yCoord - 4), + (double) (this.xCoord - 4), (double) (this.xCoord + 4), + (double) (this.yCoord + 4), (double) (this.xCoord + 4))); + + for (EntityLivingBase entity : entitiesInRange) { + PoisonRadiation.INSTANCE.poisonEntity(new Vector3(this), entity); + } + } + + if ((double) this.worldObj.rand.nextFloat() > 0.5D) { + this.wasteTank.fill( + new FluidStack(AtomicScience.FLUID_TOXIC_WASTE, 1), true); + } + } + + if (this.wenDu > 2000.0F) { + this.meltDown(); + } else if (this.wenDu > 100.0F && + (fissileFuel == null || + !(fissileFuel.getItem() instanceof ItBreederFuel))) { + for (int x = -2; x <= 2; ++x) { + for (int z = -2; z <= 2; ++z) { + Vector3 offsetPos = new Vector3(this); + offsetPos.add(new Vector3((double) x, 0.0D, (double) z)); + Block offsetBlock = this.worldObj.getBlock( + offsetPos.intX(), offsetPos.intY(), offsetPos.intZ()); + if (offsetBlock != Blocks.water) { + if (this.isOverToxic() && !this.worldObj.isRemote && + (double) this.worldObj.rand.nextFloat() > 0.999D) { + if (offsetBlock == Blocks.grass) { + offsetPos.setBlock(this.worldObj, + AtomicScience.blockRadioactive); + } else if (offsetBlock != Blocks.air) { + offsetPos.setBlock( + this.worldObj, + this.wasteTank.getFluid().getFluid().getBlock()); + } + + this.wasteTank.drain(1000, true); + } + } else if (super.ticks % + (long) ((int) Math.max( + 40.0F - this.wenDu / 2000.0F * 40.0F, 2.0F)) == 0L) { + AtomicScience.boilWater(this.worldObj, offsetPos, 3, 8); + this.wenDu = (float) ((double) this.wenDu - 0.2D); + } + } + } + } + + for (int direction = 2; direction < 6; ++direction) { + Vector3 neighborPos = new Vector3(this); + neighborPos.modifyPositionFromSide( + ForgeDirection.getOrientation(direction)); + if (neighborPos.getBlock(this.worldObj) == AtomicScience.bControlRod) { + this.setTemperature(this.getTemperature() - 0.5F); + } + } + + if (!this.worldObj.isRemote) { + this.setTemperature(this.getTemperature() - 1.1F); + } + } + + if (!this.worldObj.isRemote && super.ticks % 60L == 0L) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + } + } + + public boolean isOverToxic() { + return AtomicScience.ALLOW_TOXIC_WASTE && + // TODO >=? + this.wasteTank.getFluidAmount() > this.wasteTank.getCapacity(); + } + + public void updatePositionStatus() { + boolean top = (new Vector3(this)) + .add(new Vector3(0.0D, 1.0D, 0.0D)) + .getTileEntity(this.worldObj) instanceof TFissionReactor; + boolean bottom = (new Vector3(this)) + .add(new Vector3(0.0D, -1.0D, 0.0D)) + .getTileEntity(this.worldObj) instanceof TFissionReactor; + if (top && bottom) { + this.worldObj.setBlockMetadataWithNotify(this.xCoord, this.yCoord, + this.zCoord, 1, 3); + } else if (top) { + this.worldObj.setBlockMetadataWithNotify(this.xCoord, this.yCoord, + this.zCoord, 0, 3); + } else { + this.worldObj.setBlockMetadataWithNotify(this.xCoord, this.yCoord, + this.zCoord, 2, 3); + } + } + + public TFissionReactor zhaoZuiDi() { + Vector3 checkPosition = new Vector3(this); + TFissionReactor tile = null; + + do { + TileEntity newTile = checkPosition.getTileEntity(this.worldObj); + if (!(newTile instanceof TFissionReactor)) { + this.cachedZhuYao = tile; + return tile; + } + + tile = (TFissionReactor) newTile; + --checkPosition.y; + } while (tile != null); + + this.cachedZhuYao = this; + return this; + } + + public int getHeight() { + int height = 0; + Vector3 checkPosition = new Vector3(this); + + for (Object tile = this; tile instanceof TFissionReactor; tile = checkPosition.getTileEntity(this.worldObj)) { + ++checkPosition.y; + ++height; + } + + return height; + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + this.writeToNBT(nbt); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, + this.getBlockMetadata(), nbt); + } + + private void meltDown() { + if (!this.worldObj.isRemote) { + this.setInventorySlotContents(0, (ItemStack) null); + MegaTNTExplusion baoZha = new MegaTNTExplusion(this.worldObj, (Entity) null, (double) this.xCoord, + (double) this.yCoord, (double) this.zCoord, 9.0F); + baoZha.doExplosionA(); + baoZha.doExplosionB(true); + this.worldObj.setBlock(this.xCoord, this.yCoord, this.zCoord, + Blocks.lava); + } + } + + @Override + public void onDataPacket(NetworkManager arg0, + S35PacketUpdateTileEntity packet) { + this.readFromNBT(packet.func_148857_g()); + } + + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.wenDu = nbt.getFloat("temperature"); + this.wasteTank.readFromNBT(nbt.getCompoundTag("tank")); + NBTTagList items = nbt.getTagList("Items", 10); // 10 = magic number for compound + this.containingItems = new ItemStack[this.getSizeInventory()]; + + for (int i = 0; i < items.tagCount(); ++i) { + NBTTagCompound item = items.getCompoundTagAt(i); + byte var5 = item.getByte("Slot"); + if (var5 >= 0 && var5 < this.containingItems.length) { + this.containingItems[var5] = ItemStack.loadItemStackFromNBT(item); + this.containingItems[var5].setItemDamage(item.getInteger("damage")); + } + } + } + + @Override + public void writeToNBT(NBTTagCompound par1NBTTagCompound) { + super.writeToNBT(par1NBTTagCompound); + par1NBTTagCompound.setFloat("temperature", this.wenDu); + NBTTagCompound tankNBT = new NBTTagCompound(); + this.wasteTank.writeToNBT(tankNBT); + par1NBTTagCompound.setTag("tank", tankNBT); + NBTTagList var2 = new NBTTagList(); + + for (int var3 = 0; var3 < this.containingItems.length; ++var3) { + if (this.containingItems[var3] != null) { + NBTTagCompound var4 = new NBTTagCompound(); + var4.setByte("Slot", (byte) var3); + this.containingItems[var3].writeToNBT(var4); + var4.setInteger("damage", this.containingItems[var3].getItemDamage()); + var2.appendTag(var4); + } + } + + par1NBTTagCompound.setTag("Items", var2); + } + + @Override + public int getSizeInventory() { + return this.containingItems.length; + } + + @Override + public ItemStack getStackInSlot(int par1) { + return this.containingItems[par1]; + } + + @Override + public ItemStack decrStackSize(int par1, int par2) { + if (this.containingItems[par1] != null) { + ItemStack var3; + if (this.containingItems[par1].stackSize <= par2) { + var3 = this.containingItems[par1]; + this.containingItems[par1] = null; + return var3; + } else { + var3 = this.containingItems[par1].splitStack(par2); + if (this.containingItems[par1].stackSize == 0) { + this.containingItems[par1] = null; + } + + return var3; + } + } else { + return null; + } + } + + @Override + public ItemStack getStackInSlotOnClosing(int par1) { + if (this.containingItems[par1] != null) { + ItemStack var2 = this.containingItems[par1]; + this.containingItems[par1] = null; + return var2; + } else { + return null; + } + } + + @Override + public void setInventorySlotContents(int par1, ItemStack par2ItemStack) { + this.containingItems[par1] = par2ItemStack; + if (par2ItemStack != null && + par2ItemStack.stackSize > this.getInventoryStackLimit()) { + par2ItemStack.stackSize = this.getInventoryStackLimit(); + } + + this.markDirty(); + } + + @Override + public int getInventoryStackLimit() { + return 1; + } + + @Override + public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer) { + return this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) != this + ? false + : par1EntityPlayer.getDistanceSq((double) this.xCoord + 0.5D, + (double) this.yCoord + 0.5D, + (double) this.zCoord + 0.5D) <= 64.0D; + } + + @Override + public void openInventory() { + } + + @Override + public void closeInventory() { + } + + @Override + public void onDisable(int duration) { + super.disabledTicks = duration; + } + + @Override + public boolean isDisabled() { + return super.disabledTicks > 0; + } + + @Override + public float getTemperature() { + return this.wenDu; + } + + @Override + public void setTemperature(float celsius) { + this.wenDu = Math.max(celsius, 0.0F); + } + + @Override + public boolean isItemValidForSlot(int slotID, ItemStack itemStack) { + return this.cachedZhuYao != null && + this.cachedZhuYao.getStackInSlot(0) == null + ? itemStack.getItem() instanceof IFissileMaterial + : false; + } + + @Override + public boolean canFill(ForgeDirection arg0, Fluid arg1) { + return false; + } + + @Override + public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { + return 0; + } + + @Override + public boolean canDrain(ForgeDirection arg0, Fluid arg1) { + return arg1 == AtomicScience.FLUID_TOXIC_WASTE && + this.wasteTank.getFluidAmount() > 0; + } + + @Override + public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) { + return this.wasteTank.drain(maxDrain, doDrain); + } + + @Override + public FluidStack drain(ForgeDirection from, FluidStack fluid, + boolean doDrain) { + return fluid.getFluid() == AtomicScience.FLUID_TOXIC_WASTE + ? this.drain(from, fluid.amount, doDrain) + : null; + } + + @Override + public FluidTankInfo[] getTankInfo(ForgeDirection arg0) { + return new FluidTankInfo[] { new FluidTankInfo(this.wasteTank) }; + } + + @Override + @SideOnly(Side.CLIENT) + public AxisAlignedBB getRenderBoundingBox() { + return this.cachedZhuYao == this ? TileEntity.INFINITE_EXTENT_AABB + : super.getRenderBoundingBox(); + } + + @Override + public String getInventoryName() { + return this.getBlockType().getLocalizedName(); + } + + @Override + public boolean hasCustomInventoryName() { + return false; + } +} diff --git a/src/main/java/atomicscience/fenlie/TNuclearBoiler.java b/src/main/java/atomicscience/fenlie/TNuclearBoiler.java new file mode 100644 index 0000000..07a86dc --- /dev/null +++ b/src/main/java/atomicscience/fenlie/TNuclearBoiler.java @@ -0,0 +1,260 @@ +package atomicscience.fenlie; + +import atomicscience.AtomicScience; +import atomicscience.jiqi.TInventory; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import net.minecraftforge.fluids.FluidTankInfo; +import net.minecraftforge.fluids.IFluidHandler; +import universalelectricity.core.electricity.ElectricityPack; +import universalelectricity.core.item.ElectricItemHelper; +import universalelectricity.prefab.implement.IRotatable; + +public class TNuclearBoiler + extends TInventory implements ISidedInventory, IFluidHandler, IRotatable { + + public final int SHI_JIAN = 300; + public final float DIAN = 800.0F; + public int smeltingTicks = 0; + public float rotation = 0.0F; + public final FluidTank waterTank; + public final FluidTank gasTank; + + public TNuclearBoiler() { + this.waterTank = new FluidTank(FluidRegistry.WATER, 0, 5000); + this.gasTank = new FluidTank(AtomicScience.FLUID_URANIUM_HEXAFLOURIDE, 0, 5000); + // TODO: WTF + // this.waterTank.setTankPressure(-10); + // this.gasTank.setTankPressure(10); + } + + @Override + public ElectricityPack getRequest() { + return this.canWork() + ? new ElectricityPack(800.0D / this.getVoltage(), this.getVoltage()) + : new ElectricityPack(); + } + + @Override + public void updateEntity() { + super.updateEntity(); + if (!this.worldObj.isRemote && !this.isDisabled()) { + if (super.containingItems[1] != null && + FluidContainerRegistry.isFilledContainer(super.containingItems[1])) { + if (FluidContainerRegistry + .getFluidForFilledItem(super.containingItems[1]) + .getFluid() == FluidRegistry.WATER && + this.fill(ForgeDirection.UNKNOWN, + FluidContainerRegistry.getFluidForFilledItem( + super.containingItems[1]), + false) > 0) { + ItemStack player = super.containingItems[1].getItem().getContainerItem( + super.containingItems[1]); + if (player == null && super.containingItems[1].stackSize > 1) { + --super.containingItems[1].stackSize; + } else { + super.containingItems[1] = player; + } + + this.waterTank.fill(FluidContainerRegistry.getFluidForFilledItem( + super.containingItems[1]), + true); + } + } + + if (this.canWork()) { + super.wattsReceived += ElectricItemHelper.dechargeItem( + super.containingItems[0], 800.0D, this.getVoltage()); + double var10000 = super.wattsReceived; + this.getClass(); + if (var10000 >= (double) (800.0F / 2.0F)) { + if (this.smeltingTicks == 0) { + this.smeltingTicks = 300; + } + + if (this.smeltingTicks > 0) { + --this.smeltingTicks; + if (this.smeltingTicks < 1) { + this.work(); + this.smeltingTicks = 0; + } + } else { + this.smeltingTicks = 0; + } + + super.wattsReceived = 0.0D; + } + } else { + this.smeltingTicks = 0; + } + + if (super.ticks % 10L == 0L) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + } + } + } + + @Override + public void onDataPacket(NetworkManager arg0, + S35PacketUpdateTileEntity arg1) { + NBTTagCompound nbt = arg1.func_148857_g(); + this.smeltingTicks = nbt.getInteger("smeltingTicks"); + this.waterTank.setFluid( + new FluidStack(FluidRegistry.WATER, nbt.getInteger("waterAmount"))); + this.gasTank.setFluid( + new FluidStack(AtomicScience.FLUID_URANIUM_HEXAFLOURIDE, + nbt.getInteger("uraniumHexaflourideAmount"))); + super.disabledTicks = nbt.getInteger("disabledTicks"); + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setInteger("smeltingTicks", this.smeltingTicks); + nbt.setInteger("waterAmount", this.waterTank.getFluidAmount()); + nbt.setInteger("uraniumHexaflourideAmount", this.gasTank.getFluidAmount()); + nbt.setInteger("disabledTicks", super.disabledTicks); + + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, + this.getBlockMetadata(), nbt); + } + + @Override + public void openInventory() { + if (!this.worldObj.isRemote) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + } + } + + public boolean canWork() { + return !this.isDisabled() && this.waterTank.getFluid().getFluid() != null && + this.waterTank.getFluidAmount() >= 1000 && + super.containingItems[3] != null && + (AtomicScience.itYellowcake == super.containingItems[3].getItem() || + AtomicScience.isUraniumOre(super.containingItems[3])) + && + this.gasTank.getFluidAmount() < this.gasTank.getCapacity(); + } + + public void work() { + if (this.canWork()) { + this.waterTank.drain(1000, true); + // FluidStack liquid = AtomicScience.FLUID_URANIUM_HEXAFLOURIDE.copy(); + // liquid.amount = AtomicScience.URANIUM_HEXAFLOURIDE_RATIO * 2; + this.gasTank.fill( + new FluidStack(AtomicScience.FLUID_URANIUM_HEXAFLOURIDE, + AtomicScience.URANIUM_HEXAFLOURIDE_RATIO * 2), + true); + this.decrStackSize(3, 1); + } + } + + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.smeltingTicks = nbt.getInteger("smeltingTicks"); + NBTTagCompound waterCompound = nbt.getCompoundTag("water"); + this.waterTank.setFluid(FluidStack.loadFluidStackFromNBT(waterCompound)); + NBTTagCompound gasCompound = nbt.getCompoundTag("gas"); + this.gasTank.setFluid(FluidStack.loadFluidStackFromNBT(gasCompound)); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("smeltingTicks", this.smeltingTicks); + NBTTagCompound compound; + if (this.waterTank.getFluid() != null) { + compound = new NBTTagCompound(); + this.waterTank.getFluid().writeToNBT(compound); + nbt.setTag("water", compound); + } + + if (this.gasTank.getFluid() != null) { + compound = new NBTTagCompound(); + this.gasTank.getFluid().writeToNBT(compound); + nbt.setTag("gas", compound); + } + } + + @Override + public boolean canFill(ForgeDirection arg0, Fluid arg1) { + if (arg1 == FluidRegistry.WATER) { + return this.waterTank.getFluidAmount() < this.waterTank.getCapacity(); + } else if (arg1 == AtomicScience.FLUID_URANIUM_HEXAFLOURIDE) { + return this.gasTank.getFluidAmount() < this.waterTank.getCapacity(); + } + + return false; + } + + @Override + public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { + return FluidRegistry.WATER == resource.getFluid() + ? this.waterTank.fill(resource, doFill) + : (AtomicScience.FLUID_URANIUM_HEXAFLOURIDE == resource.getFluid() + ? this.gasTank.fill(resource, doFill) + : 0); + } + + @Override + public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) { + return this.gasTank.drain(maxDrain, doDrain); + } + + @Override + public FluidStack drain(ForgeDirection arg0, FluidStack arg1, boolean arg2) { + return arg1.getFluid() == AtomicScience.FLUID_URANIUM_HEXAFLOURIDE + ? this.gasTank.drain(arg1.amount, true) + : null; + } + + @Override + public boolean canDrain(ForgeDirection arg0, Fluid arg1) { + return arg1 == AtomicScience.FLUID_URANIUM_HEXAFLOURIDE && + this.gasTank.getFluidAmount() > 0; + } + + @Override + public FluidTankInfo[] getTankInfo(ForgeDirection arg0) { + return new FluidTankInfo[] { new FluidTankInfo(this.waterTank), + new FluidTankInfo(this.gasTank) }; + } + + @Override + public int getSizeInventory() { + return 4; + } + + @Override + public boolean isItemValidForSlot(int slotID, ItemStack itemStack) { + return slotID == 1 + ? AtomicScience.isCellWater(itemStack) + : (slotID == 3 ? itemStack.getItem() == AtomicScience.itYellowcake + : false); + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return side == 0 ? new int[] { 2 } : new int[] { 1, 3 }; + } + + @Override + public boolean canInsertItem(int slotID, ItemStack itemStack, int side) { + return this.isItemValidForSlot(slotID, itemStack); + } + + @Override + public boolean canExtractItem(int slotID, ItemStack itemstack, int j) { + return slotID == 2; + } +} diff --git a/src/main/java/atomicscience/fenlie/TReactorTap.java b/src/main/java/atomicscience/fenlie/TReactorTap.java new file mode 100644 index 0000000..f8e267d --- /dev/null +++ b/src/main/java/atomicscience/fenlie/TReactorTap.java @@ -0,0 +1,142 @@ +package atomicscience.fenlie; + +import java.util.HashSet; +import java.util.Set; +import net.minecraft.block.Block; +import net.minecraft.block.BlockLiquid; +import net.minecraft.init.Blocks; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import net.minecraftforge.fluids.FluidTankInfo; +import net.minecraftforge.fluids.IFluidHandler; +import universalelectricity.core.path.IPathCallBack; +import universalelectricity.core.path.Pathfinder; +import universalelectricity.core.vector.Vector3; +import universalelectricity.prefab.tile.TileEntityAdvanced; + +public class TReactorTap extends TileEntityAdvanced implements IFluidHandler { + + private final Set tanks = new HashSet<>(); + private long lastFindTime = -1L; + + public void find() { + this.tanks.clear(); + final World world = this.worldObj; + final Vector3 position = new Vector3(this); + Pathfinder finder = (new Pathfinder(new IPathCallBack() { + public Set getConnectedNodes(Pathfinder finder, Vector3 currentNode) { + HashSet neighbors = new HashSet<>(); + + for (int i = 0; i < 6; ++i) { + ForgeDirection direction = ForgeDirection.getOrientation(i); + Vector3 positionx = currentNode.clone().modifyPositionFromSide(direction); + Block connectedBlockID = positionx.getBlock(world); + if (connectedBlockID == Blocks.air || + connectedBlockID instanceof BlockLiquid || + connectedBlockID instanceof BFissionReactor) { + neighbors.add(positionx); + } + } + + return neighbors; + } + + public boolean onSearch(Pathfinder finder, Vector3 node) { + if (node.getTileEntity(world) instanceof TFissionReactor) { + finder.results.add(node); + } + + return node.distanceTo(position) > 6.0D; + } + })) + .init((new Vector3(this)) + .modifyPositionFromSide( + ForgeDirection.getOrientation(this.getBlockMetadata()) + .getOpposite())); + for (Vector3 node : (Set) finder.results) { + TileEntity tileEntity = node.getTileEntity(this.worldObj); + if (tileEntity instanceof TFissionReactor) { + this.tanks.add(((TFissionReactor) tileEntity).wasteTank); + } + } + + this.lastFindTime = this.worldObj.getWorldTime(); + } + + public FluidTank getOptimalTank() { + if (this.lastFindTime == -1L || + this.worldObj.getWorldTime() - this.lastFindTime > 20L) { + this.find(); + } + + if (this.tanks.size() <= 0) { + return null; + } + + FluidTank optimalTank = null; + for (FluidTank tank : this.tanks) { + if (this.getLiquidSafe(tank.getFluid()) > this.getLiquidSafe(optimalTank.getFluid())) { + optimalTank = tank; + } + } + + return optimalTank; + } + + public int getLiquidSafe(FluidStack stack) { + return stack != null ? stack.amount : 0; + } + + public boolean canUpdate() { + return false; + } + + public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { + return 0; + } + + public int fill(int tankIndex, FluidStack resource, boolean doFill) { + return 0; + } + + public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) { + return this.getOptimalTank() != null + ? this.getOptimalTank().drain(maxDrain, doDrain) + : null; + } + + @Override + public FluidStack drain(ForgeDirection arg0, FluidStack arg1, boolean arg2) { + return this.getOptimalTank() != null && + arg1.getFluid() == this.getOptimalTank().getFluid().getFluid() + ? this.drain(arg0, arg1.amount, arg2) + : null; + } + + @Override + public boolean canDrain(ForgeDirection arg0, Fluid arg1) { + return this.getOptimalTank() != null && + this.getOptimalTank().getFluid().getFluid() == arg1 && + this.getOptimalTank().getFluidAmount() != 0; + } + + @Override + public FluidTankInfo[] getTankInfo(ForgeDirection arg0) { + if (arg0.ordinal() != this.getBlockMetadata()) + return null; + + this.find(); + return (FluidTankInfo[]) this.tanks.stream() + .map(FluidTankInfo::new) + .toArray(); + } + + @Override + public boolean canFill(ForgeDirection arg0, Fluid arg1) { + return false; + } +} diff --git a/src/main/java/atomicscience/hecheng/BElectromagnet.java b/src/main/java/atomicscience/hecheng/BElectromagnet.java new file mode 100644 index 0000000..6212cc8 --- /dev/null +++ b/src/main/java/atomicscience/hecheng/BElectromagnet.java @@ -0,0 +1,42 @@ +package atomicscience.hecheng; + +import atomicscience.api.IElectromagnet; +import atomicscience.hecheng.TElectromagnet; +import atomicscience.jiqi.BBase; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class BElectromagnet extends BBase implements IElectromagnet { + private IIcon iconTop; + + public BElectromagnet() { + super("electromagnet"); + } + + @Override + public IIcon getIcon(int side, int metadata) { + return side != 0 && side != 1 ? this.blockIcon : this.iconTop; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.iconTop = iconRegister.registerIcon( + this.getUnlocalizedName().replace("tile.", "") + "_top"); + } + + @Override + public TileEntity createNewTileEntity(World var1, int meta) { + return new TElectromagnet(); + } + + @Override + public boolean isRunning(World world, int x, int y, int z) { + return true; + } +} diff --git a/src/main/java/atomicscience/hecheng/BElectromagnetGlass.java b/src/main/java/atomicscience/hecheng/BElectromagnetGlass.java new file mode 100644 index 0000000..a386409 --- /dev/null +++ b/src/main/java/atomicscience/hecheng/BElectromagnetGlass.java @@ -0,0 +1,56 @@ +package atomicscience.hecheng; + +import atomicscience.api.IElectromagnet; +import atomicscience.jiqi.BBase; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +public class BElectromagnetGlass extends BBase implements IElectromagnet { + public BElectromagnetGlass() { + super("electromagnetGlass", Material.glass); + } + + @Override + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess par1IBlockAccess, int par2, + int par3, int par4, int par5) { + Block i1 = par1IBlockAccess.getBlock(par2, par3, par4); + return i1 == this + ? false + : super.shouldSideBeRendered(par1IBlockAccess, par2, par3, par4, par5); + } + + @Override + public int getRenderBlockPass() { + return 0; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + protected boolean canSilkHarvest() { + return true; + } + + @Override + public boolean isRunning(World world, int x, int y, int z) { + return true; + } + + @Override + public boolean hasTileEntity(int metadata) { + return false; + } +} diff --git a/src/main/java/atomicscience/hecheng/BFusionReactor.java b/src/main/java/atomicscience/hecheng/BFusionReactor.java new file mode 100644 index 0000000..5e7d001 --- /dev/null +++ b/src/main/java/atomicscience/hecheng/BFusionReactor.java @@ -0,0 +1,63 @@ +package atomicscience.hecheng; + +import atomicscience.AtomicScience; +import atomicscience.jiqi.BBase; +import atomicscience.render.RH; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class BFusionReactor extends BBase { + + public BFusionReactor() { + super("fusionReactor"); + } + + @Override + public boolean onMachineActivated(World world, int x, int y, int z, + EntityPlayer entityPlayer, int side, + float hitX, float hitY, float hitZ) { + TileEntity tileEntity = world.getTileEntity(x, y, z); + if (entityPlayer.inventory.getCurrentItem() != null && + AtomicScience.isFusionFuel(entityPlayer.inventory.getCurrentItem())) { + if (((TFusionReactor) tileEntity).getStackInSlot(0) != null) { + ItemStack var10000 = ((TFusionReactor) tileEntity).getStackInSlot(0); + var10000.stackSize += entityPlayer.inventory.getCurrentItem().stackSize; + } else { + ((TFusionReactor) tileEntity) + .setInventorySlotContents(0, + entityPlayer.inventory.getCurrentItem()); + } + + entityPlayer.inventory.setInventorySlotContents( + entityPlayer.inventory.currentItem, (ItemStack) null); + return true; + } else { + return false; + } + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderType() { + return RH.BLOCK_RENDER_ID; + } + + @Override + public TileEntity createNewTileEntity(World var1, int meta) { + return new TFusionReactor(); + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public boolean isOpaqueCube() { + return false; + } +} diff --git a/src/main/java/atomicscience/hecheng/BPlasma.java b/src/main/java/atomicscience/hecheng/BPlasma.java new file mode 100644 index 0000000..6e9a465 --- /dev/null +++ b/src/main/java/atomicscience/hecheng/BPlasma.java @@ -0,0 +1,161 @@ +package atomicscience.hecheng; + +import atomicscience.api.IElectromagnet; +import atomicscience.api.Plasma; +import atomicscience.hecheng.TElectromagnet; +import atomicscience.jiqi.BBase; +import java.util.Random; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import universalelectricity.core.vector.Vector3; + +public class BPlasma extends BBase implements Plasma.IPlasma { + public BPlasma() { + super("plasma", Material.lava); + this.setLightLevel(0.5F); + super.textureName = "portal"; + } + + @Override + public void onBlockAdded(World worldObj, int x, int y, int z) { + if (!worldObj.isRemote) { + Vector3 diDian = new Vector3((double) x, (double) y, (double) z); + int xinMeta = Math.max(diDian.getBlockMetadata(worldObj) - 1, 0); + if (xinMeta <= 0) { + diDian.setBlock(worldObj, Blocks.fire); + return; + } + + for (int i = 0; i < 6; ++i) { + if ((double) worldObj.rand.nextFloat() <= 0.8D) { + Vector3 zhaoDiDian = diDian.clone(); + zhaoDiDian.modifyPositionFromSide(ForgeDirection.getOrientation(i)); + if (this.canPlace(worldObj, zhaoDiDian.intX(), zhaoDiDian.intY(), + zhaoDiDian.intZ())) { + Block tileEntity = zhaoDiDian.getBlock(worldObj); + if (tileEntity != this) { + zhaoDiDian.setBlock(worldObj, this, xinMeta); + } + } else { + TileEntity var10 = zhaoDiDian.getTileEntity(worldObj); + if (var10 instanceof TElectromagnet) { + ((TElectromagnet) var10) + .setTemperature(((TElectromagnet) var10).getTemperature() + 100.0F); + } + } + } + } + + worldObj.scheduleBlockUpdate( + x, y, z, this, + (new Vector3((double) x, (double) y, (double) z)) + .getBlockMetadata(worldObj) * + 5); + } + } + + @Override + public void updateTick(World worldObj, int x, int y, int z, + Random par5Random) { + Vector3 diDian = new Vector3((double) x, (double) y, (double) z); + diDian.setBlock(worldObj, Blocks.fire); + } + + @Override + public void onNeighborBlockChange(World worldObj, int x, int y, int z, + Block neighborID) { + if (neighborID != this && neighborID != Blocks.fire) { + worldObj.scheduleBlockUpdate( + x, y, z, this, + (new Vector3((double) x, (double) y, (double) z)) + .getBlockMetadata(worldObj) * + 5); + } + } + + @Override + public void spawn(World world, int x, int y, int z, byte strength) { + if (this.canPlace(world, x, y, z)) { + world.setBlock(x, y, z, this, strength, 3); + } + } + + @Override + public boolean canPlace(World world, int x, int y, int z) { + Vector3 position = new Vector3((double) x, (double) y, (double) z); + Block block = position.getBlock(world); + return block == null || block != Blocks.bedrock && + !(block instanceof IElectromagnet) && + block != Blocks.iron_block; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean isBlockSolid(IBlockAccess par1IBlockAccess, int par2, int par3, + int par4, int par5) { + return false; + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, + int par2, int par3, + int par4) { + return null; + } + + @Override + public int quantityDropped(Random par1Random) { + return 0; + } + + @Override + public int tickRate(World par1World) { + return 8; + } + + @Override + public int getRenderBlockPass() { + return 1; + } + + @Override + public void onEntityCollidedWithBlock(World par1World, int par2, int par3, int par4, + Entity par5Entity) { + if (par5Entity instanceof EntityLivingBase) { + if (par5Entity.isImmuneToFire()) { + par5Entity.attackEntityFrom(DamageSource.magic, 1073741823); + } else { + par5Entity.attackEntityFrom(DamageSource.inFire, 1073741823); + } + } else { + par5Entity.setDead(); + } + } + + @Override + public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, + int y, int z) { + return null; + } +} diff --git a/src/main/java/atomicscience/hecheng/CChemicalExtractor.java b/src/main/java/atomicscience/hecheng/CChemicalExtractor.java new file mode 100644 index 0000000..0f62fad --- /dev/null +++ b/src/main/java/atomicscience/hecheng/CChemicalExtractor.java @@ -0,0 +1,109 @@ +package atomicscience.hecheng; + +import atomicscience.AtomicScience; +import atomicscience.jiqi.TChemicalExtractor; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.inventory.SlotFurnace; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidRegistry; +import universalelectricity.core.item.IItemElectric; +import universalelectricity.prefab.SlotSpecific; + +public class CChemicalExtractor extends Container { + // private static final int slotCount = 4; + private TChemicalExtractor tileEntity; + + public CChemicalExtractor(InventoryPlayer par1InventoryPlayer, + TChemicalExtractor tileEntity) { + this.tileEntity = tileEntity; + this.addSlotToContainer( + new SlotSpecific(tileEntity, 0, 65, 49, IItemElectric.class)); + this.addSlotToContainer(new Slot(tileEntity, 1, 25, 50)); + this.addSlotToContainer( + new SlotFurnace(par1InventoryPlayer.player, tileEntity, 2, 118, 25)); + this.addSlotToContainer(new Slot(tileEntity, 3, 65, 25)); + + int var3; + for (var3 = 0; var3 < 3; ++var3) { + for (int var4 = 0; var4 < 9; ++var4) { + this.addSlotToContainer(new Slot(par1InventoryPlayer, + var4 + var3 * 9 + 9, 8 + var4 * 18, + 84 + var3 * 18)); + } + } + + for (var3 = 0; var3 < 9; ++var3) { + this.addSlotToContainer( + new Slot(par1InventoryPlayer, var3, 8 + var3 * 18, 142)); + } + + tileEntity.openInventory(); + this.tileEntity.players.add(par1InventoryPlayer.player); + } + + @Override + public void onContainerClosed(EntityPlayer entityplayer) { + super.onContainerClosed(entityplayer); + this.tileEntity.players.remove(entityplayer); + } + + @Override + public boolean canInteractWith(EntityPlayer par1EntityPlayer) { + return this.tileEntity.isUseableByPlayer(par1EntityPlayer); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, + int par1) { + ItemStack var2 = null; + Slot var3 = (Slot) super.inventorySlots.get(par1); + if (var3 != null && var3.getHasStack()) { + ItemStack itemStack = var3.getStack(); + var2 = itemStack.copy(); + if (par1 >= 4) { + if (itemStack.getItem() instanceof IItemElectric) { + if (!this.mergeItemStack(itemStack, 0, 1, false)) { + return null; + } + } else if (FluidRegistry.WATER == FluidContainerRegistry.getFluidForFilledItem(itemStack) + .getFluid()) { + if (!this.mergeItemStack(itemStack, 1, 2, false)) { + return null; + } + } else if (!AtomicScience.isCell(itemStack) && + !AtomicScience.isUraniumOre(itemStack)) { + if (par1 < 31) { + if (!this.mergeItemStack(itemStack, 31, 40, false)) { + return null; + } + } else if (par1 >= 31 && par1 < 40 && + !this.mergeItemStack(itemStack, 4, 30, false)) { + return null; + } + } else if (!this.mergeItemStack(itemStack, 3, 4, false)) { + return null; + } + } else if (!this.mergeItemStack(itemStack, 4, 40, false)) { + return null; + } + + if (itemStack.stackSize == 0) { + var3.putStack((ItemStack) null); + } else { + var3.onSlotChanged(); + } + + if (itemStack.stackSize == var2.stackSize) { + return null; + } + + var3.onPickupFromSlot(par1EntityPlayer, itemStack); + } + + return var2; + } +} diff --git a/src/main/java/atomicscience/hecheng/CNuclearBoiler.java b/src/main/java/atomicscience/hecheng/CNuclearBoiler.java new file mode 100644 index 0000000..cd1b830 --- /dev/null +++ b/src/main/java/atomicscience/hecheng/CNuclearBoiler.java @@ -0,0 +1,108 @@ +package atomicscience.hecheng; + +import atomicscience.AtomicScience; +import atomicscience.fenlie.TNuclearBoiler; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidRegistry; +import universalelectricity.core.item.IItemElectric; +import universalelectricity.prefab.SlotSpecific; + +public class CNuclearBoiler extends Container { + // private static final int slotCount = 4; + private TNuclearBoiler tileEntity; + + public CNuclearBoiler(InventoryPlayer par1InventoryPlayer, + TNuclearBoiler tileEntity) { + this.tileEntity = tileEntity; + this.addSlotToContainer( + new SlotSpecific(tileEntity, 0, 56, 26, IItemElectric.class)); + this.addSlotToContainer(new Slot(tileEntity, 1, 25, 50)); + this.addSlotToContainer(new Slot(tileEntity, 2, 136, 50)); + this.addSlotToContainer(new SlotSpecific( + tileEntity, 3, 81, 26, + new ItemStack[] { new ItemStack(AtomicScience.itYellowcake), + new ItemStack(AtomicScience.bUraniumOre) })); + + int var3; + for (var3 = 0; var3 < 3; ++var3) { + for (int var4 = 0; var4 < 9; ++var4) { + this.addSlotToContainer(new Slot(par1InventoryPlayer, + var4 + var3 * 9 + 9, 8 + var4 * 18, + 84 + var3 * 18)); + } + } + + for (var3 = 0; var3 < 9; ++var3) { + this.addSlotToContainer( + new Slot(par1InventoryPlayer, var3, 8 + var3 * 18, 142)); + } + + this.tileEntity.players.add(par1InventoryPlayer.player); + tileEntity.openInventory(); + } + + @Override + public void onContainerClosed(EntityPlayer entityplayer) { + super.onContainerClosed(entityplayer); + this.tileEntity.players.remove(entityplayer); + } + + @Override + public boolean canInteractWith(EntityPlayer par1EntityPlayer) { + return this.tileEntity.isUseableByPlayer(par1EntityPlayer); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, + int slotID) { + ItemStack var2 = null; + Slot slot = (Slot) super.inventorySlots.get(slotID); + if (slot != null && slot.getHasStack()) { + ItemStack itemStack = slot.getStack(); + var2 = itemStack.copy(); + if (slotID >= 4) { + if (itemStack.getItem() instanceof IItemElectric) { + if (!this.mergeItemStack(itemStack, 0, 1, false)) { + return null; + } + } else if (FluidRegistry.WATER == FluidContainerRegistry.getFluidForFilledItem(itemStack).getFluid()) { + if (!this.mergeItemStack(itemStack, 1, 2, false)) { + return null; + } + } else if (this.getSlot(3).isItemValid(itemStack)) { + if (!this.mergeItemStack(itemStack, 3, 4, false)) { + return null; + } + } else if (slotID < 31) { + if (!this.mergeItemStack(itemStack, 31, 40, false)) { + return null; + } + } else if (slotID >= 31 && slotID < 40 && + !this.mergeItemStack(itemStack, 4, 30, false)) { + return null; + } + } else if (!this.mergeItemStack(itemStack, 4, 40, false)) { + return null; + } + + if (itemStack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + + if (itemStack.stackSize == var2.stackSize) { + return null; + } + + slot.onPickupFromSlot(par1EntityPlayer, itemStack); + } + + return var2; + } +} diff --git a/src/main/java/atomicscience/hecheng/IBAccelerator.java b/src/main/java/atomicscience/hecheng/IBAccelerator.java new file mode 100644 index 0000000..9ce31b7 --- /dev/null +++ b/src/main/java/atomicscience/hecheng/IBAccelerator.java @@ -0,0 +1,16 @@ +package atomicscience.hecheng; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemBlock; + +public class IBAccelerator extends ItemBlock { + public IBAccelerator(Block b) { + super(b); + this.setHasSubtypes(true); + } + + @Override + public int getMetadata(int damage) { + return damage; + } +} diff --git a/src/main/java/atomicscience/hecheng/IBPlasma.java b/src/main/java/atomicscience/hecheng/IBPlasma.java new file mode 100644 index 0000000..1feb3cd --- /dev/null +++ b/src/main/java/atomicscience/hecheng/IBPlasma.java @@ -0,0 +1,16 @@ +package atomicscience.hecheng; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemBlock; + +public class IBPlasma extends ItemBlock { + public IBPlasma(Block b) { + super(b); + this.setHasSubtypes(true); + } + + @Override + public int getMetadata(int damage) { + return damage; + } +} diff --git a/src/main/java/atomicscience/hecheng/IBSiren.java b/src/main/java/atomicscience/hecheng/IBSiren.java new file mode 100644 index 0000000..c95229f --- /dev/null +++ b/src/main/java/atomicscience/hecheng/IBSiren.java @@ -0,0 +1,16 @@ +package atomicscience.hecheng; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemBlock; + +public class IBSiren extends ItemBlock { + public IBSiren(Block b) { + super(b); + this.setHasSubtypes(true); + } + + @Override + public int getMetadata(int damage) { + return damage; + } +} diff --git a/src/main/java/atomicscience/hecheng/TElectromagnet.java b/src/main/java/atomicscience/hecheng/TElectromagnet.java new file mode 100644 index 0000000..01debd4 --- /dev/null +++ b/src/main/java/atomicscience/hecheng/TElectromagnet.java @@ -0,0 +1,61 @@ +package atomicscience.hecheng; + +import atomicscience.AtomicScience; +import atomicscience.api.ITemperature; +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.common.util.ForgeDirection; +import universalelectricity.core.vector.Vector3; +import universalelectricity.prefab.tile.TileEntityAdvanced; + +public class TElectromagnet extends TileEntityAdvanced implements ITemperature { + public static final int MAX_TEMP = 5000; + private float temperature = 0.0F; + + @Override + public void updateEntity() { + super.updateEntity(); + if(!this.worldObj.isRemote && this.temperature > 0.0F) { + if(this.temperature > 100.0F) { + for(int i = 0; i < 6; ++i) { + Vector3 offsetPos = new Vector3(this); + offsetPos.modifyPositionFromSide(ForgeDirection.getOrientation(i)); + Block blockID = this.worldObj.getBlock(offsetPos.intX(), offsetPos.intY(), offsetPos.intZ()); + if(blockID != Blocks.water && blockID != Blocks.flowing_water) { + if(blockID == Blocks.grass) { + offsetPos.setBlock(this.worldObj, AtomicScience.blockRadioactive); + } + } else if(super.ticks % (long)((int)Math.max(40.0F - this.temperature / 5000.0F * 40.0F, 2.0F)) == 0L) { + AtomicScience.boilWater(this.worldObj, offsetPos, 2, 20); + } + } + } + + this.temperature = Math.max(Math.min(this.temperature - 0.8F, 5000.0F), 0.0F); + } + + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.temperature = nbt.getFloat("temperature"); + } + + @Override + public void writeToNBT(NBTTagCompound par1NBTTagCompound) { + super.writeToNBT(par1NBTTagCompound); + par1NBTTagCompound.setFloat("temperature", this.temperature); + } + + @Override + public float getTemperature() { + return this.temperature; + } + + @Override + public void setTemperature(float celsius) { + this.temperature = celsius; + } +} diff --git a/src/main/java/atomicscience/hecheng/TFusionReactor.java b/src/main/java/atomicscience/hecheng/TFusionReactor.java new file mode 100644 index 0000000..8c03c4b --- /dev/null +++ b/src/main/java/atomicscience/hecheng/TFusionReactor.java @@ -0,0 +1,209 @@ +package atomicscience.hecheng; + +import atomicscience.AtomicScience; +import atomicscience.jiqi.TInventory; +import calclavia.lib.render.ITagRender; +import com.google.common.io.ByteArrayDataInput; +import java.util.HashMap; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraftforge.common.util.ForgeDirection; +import universalelectricity.core.block.IElectricityStorage; +import universalelectricity.core.electricity.ElectricityPack; +import universalelectricity.core.vector.Vector3; + +public class TFusionReactor extends TInventory + implements ISidedInventory, IElectricityStorage, ITagRender { + + public static final int YAO_DAO = 1000; + public static final int YONG_DIAN = 20000; + private ItemStack deuteriumStack = null; + public float rotation = 0.0F; + + @Override + public ElectricityPack getRequest() { + return this.deuteriumStack != null + ? new ElectricityPack(20000.0D / this.getVoltage(), this.getVoltage()) + : new ElectricityPack(); + } + + @Override + public void updateEntity() { + super.updateEntity(); + if (!this.worldObj.isRemote) { + if (!this.isDisabled() && super.wattsReceived >= 20000.0D && + this.deuteriumStack != null && super.ticks % 20L == 0L) { + for (int i = 2; i < 6; ++i) { + Vector3 diDian = new Vector3(this); + diDian.modifyPositionFromSide(ForgeDirection.getOrientation(i), 2.0D); + AtomicScience.bPlasma.spawn(this.worldObj, diDian.intX(), + diDian.intY(), diDian.intZ(), + (byte) 7); + } + + this.setJoules(Math.max(super.wattsReceived - 20000.0D, 0.0D)); + if (this.worldObj.rand.nextInt(10) == 0) { + this.decrStackSize(0, 1); + } + } + + if (super.ticks % 80L == 0L) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + } + } + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setDouble("wattsReceived", super.wattsReceived); + nbt.setInteger("stackSize", this.deuteriumStack != null + ? this.deuteriumStack.stackSize + : 0); + + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, + this.getBlockMetadata(), nbt); + } + + // @Override + // public void handlePacketData(INetworkManager network, int packetType, + // Packet250CustomPayload packet, + // EntityPlayer player, + // ByteArrayDataInput dataStream) { + // try { + // super.wattsReceived = dataStream.readDouble(); + // this.setInventorySlotContents( + // 0, new ItemStack(AtomicScience.itCellDao, + // dataStream.readInt())); + // } catch (Exception var7) { + // var7.printStackTrace(); + // } + // } + + @Override + public void onDataPacket(NetworkManager arg0, + S35PacketUpdateTileEntity arg1) { + NBTTagCompound nbt = arg1.func_148857_g(); + super.wattsReceived = nbt.getDouble("wattsReceived"); + this.setInventorySlotContents(0, + new ItemStack(AtomicScience.itCellDeuterium, + nbt.getInteger("stackSize"))); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + super.wattsReceived = nbt.getDouble("wattsReceived"); + this.deuteriumStack = new ItemStack(AtomicScience.itCellDeuterium, + nbt.getInteger("stackSize")); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setDouble("wattsReceived", super.wattsReceived); + nbt.setInteger("stackSize", this.deuteriumStack != null + ? this.deuteriumStack.stackSize + : 0); + } + + @Override + public double getJoules() { + return super.wattsReceived; + } + + @Override + public void setJoules(double joules) { + super.wattsReceived = Math.max(Math.min(joules, this.getMaxJoules()), 0.0D); + } + + @Override + public double getMaxJoules() { + return 20000.0D; + } + + @Override + public int getSizeInventory() { + return 1; + } + + @Override + public ItemStack getStackInSlot(int var1) { + return this.deuteriumStack != null && this.deuteriumStack.stackSize <= 0 + ? null + : this.deuteriumStack; + } + + @Override + public ItemStack decrStackSize(int i, int amount) { + if (this.deuteriumStack != null) { + ItemStack itemstack; + if (this.deuteriumStack.stackSize <= amount) { + itemstack = this.deuteriumStack; + this.deuteriumStack = null; + return itemstack; + } else { + itemstack = this.deuteriumStack.splitStack(amount); + if (this.deuteriumStack.stackSize == 0) { + this.deuteriumStack = null; + } + + return itemstack; + } + } else { + return null; + } + } + + @Override + public ItemStack getStackInSlotOnClosing(int var1) { + return this.deuteriumStack; + } + + @Override + public void setInventorySlotContents(int i, ItemStack itemStack) { + this.deuteriumStack = itemStack; + } + + @Override + public int getInventoryStackLimit() { + return 1000; + } + + @Override + public float addInformation(HashMap map, EntityPlayer player) { + if (this.deuteriumStack != null) { + map.put("Deuterium: " + this.deuteriumStack.stackSize, + Integer.valueOf(16777215)); + } else { + map.put("No Deuterium", Integer.valueOf(16777215)); + } + + return 1.0F; + } + + @Override + public int[] getAccessibleSlotsFromSide(int var1) { + return new int[] { 0 }; + } + + @Override + public boolean isItemValidForSlot(int slotID, ItemStack itemStack) { + return itemStack.getItem() == AtomicScience.itCellDeuterium; + } + + @Override + public boolean canInsertItem(int i, ItemStack itemstack, int j) { + return this.isItemValidForSlot(i, itemstack); + } + + @Override + public boolean canExtractItem(int i, ItemStack itemstack, int j) { + return this.isItemValidForSlot(i, itemstack); + } +} diff --git a/src/main/java/atomicscience/jiqi/BBase.java b/src/main/java/atomicscience/jiqi/BBase.java new file mode 100644 index 0000000..155efd5 --- /dev/null +++ b/src/main/java/atomicscience/jiqi/BBase.java @@ -0,0 +1,40 @@ +package atomicscience.jiqi; + +import atomicscience.TabAS; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import universalelectricity.core.UniversalElectricity; +import universalelectricity.prefab.block.BlockAdvanced; + +public class BBase extends BlockAdvanced { + protected String textureName; + + public BBase(String name, Material material) { + super(material); + this.textureName = "atomicscience:machine"; + this.setBlockName("atomicscience:" + name); + this.setCreativeTab(TabAS.INSTANCE); + } + + public BBase(String name) { this(name, UniversalElectricity.machine); } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + if (this.getRenderType() == 0 && + this.textureName.equals("atomicscience:machine")) { + super.registerBlockIcons(iconRegister); + } else { + this.blockIcon = iconRegister.registerIcon(this.textureName); + } + } + + @Override + public TileEntity createNewTileEntity(World arg0, int arg1) { + return null; + } +} diff --git a/src/main/java/atomicscience/jiqi/BBaseRotatable.java b/src/main/java/atomicscience/jiqi/BBaseRotatable.java new file mode 100644 index 0000000..66eb5d3 --- /dev/null +++ b/src/main/java/atomicscience/jiqi/BBaseRotatable.java @@ -0,0 +1,35 @@ +package atomicscience.jiqi; + +import atomicscience.TabAS; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import universalelectricity.core.UniversalElectricity; +import universalelectricity.prefab.block.BlockRotatable; + +public abstract class BBaseRotatable extends BlockRotatable { + protected String textureName; + + public BBaseRotatable(String name, Material material) { + super(material); + this.textureName = "atomicscience:machine"; + this.setBlockName("atomicscience:" + name); + this.setCreativeTab(TabAS.INSTANCE); + } + + public BBaseRotatable(String name) { + this(name, UniversalElectricity.machine); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + if(this.getRenderType() == 0) { + super.registerBlockIcons(iconRegister); + } else { + this.blockIcon = iconRegister.registerIcon(this.textureName); + } + + } +} diff --git a/src/main/java/atomicscience/jiqi/BChemicalExtractor.java b/src/main/java/atomicscience/jiqi/BChemicalExtractor.java new file mode 100644 index 0000000..b49f539 --- /dev/null +++ b/src/main/java/atomicscience/jiqi/BChemicalExtractor.java @@ -0,0 +1,49 @@ +package atomicscience.jiqi; + +import atomicscience.CommonProxy; +import atomicscience.AtomicScience; +import atomicscience.render.RH; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class BChemicalExtractor extends BBaseRotatable { + + public BChemicalExtractor() { + super("chemicalExtractor"); + } + + @Override + public boolean onMachineActivated(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer, int side, float hitX, float hitY, float hitZ) { + par1World.getBlockMetadata(x, y, z); + if(!par1World.isRemote) { + par5EntityPlayer.openGui(AtomicScience.instance, CommonProxy.GuiType.DAO_CHOU_QI.ordinal(), par1World, x, y, z); + return true; + } else { + return true; + } + } + + @Override + public TileEntity createNewTileEntity(World var1, int meta) { + return new TChemicalExtractor(); + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderType() { + return RH.BLOCK_RENDER_ID; + } +} diff --git a/src/main/java/atomicscience/jiqi/BFunnel.java b/src/main/java/atomicscience/jiqi/BFunnel.java new file mode 100644 index 0000000..85fc52b --- /dev/null +++ b/src/main/java/atomicscience/jiqi/BFunnel.java @@ -0,0 +1,44 @@ +package atomicscience.jiqi; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class BFunnel extends BBase { + private IIcon iconTop; + + public BFunnel() { + super("funnel"); + } + + @Override + public IIcon getIcon(int side, int metadata) { + return side != 1 && side != 0 ? this.blockIcon : this.iconTop; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.iconTop = iconRegister.registerIcon( + this.getUnlocalizedName().replace("tile.", "") + "_top"); + } + + @Override + public TileEntity createNewTileEntity(World var1, int meta) { + return new TFunnel(); + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public boolean isOpaqueCube() { + return false; + } +} diff --git a/src/main/java/atomicscience/jiqi/BThermometer.java b/src/main/java/atomicscience/jiqi/BThermometer.java new file mode 100644 index 0000000..99a0cd7 --- /dev/null +++ b/src/main/java/atomicscience/jiqi/BThermometer.java @@ -0,0 +1,111 @@ +package atomicscience.jiqi; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import universalelectricity.core.vector.Vector3; + +public class BThermometer extends BBase { + private IIcon iconSide; + + public BThermometer() { + super("thermometer"); + } + + @Override + public IIcon getIcon(int side, int metadata) { + return side != 1 && side != 0 ? this.iconSide : this.blockIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.iconSide = iconRegister.registerIcon("atomicscience:machine"); + } + + @Override + public boolean onMachineActivated(World world, int x, int y, int z, + EntityPlayer entityPlayer, int side, + float hitX, float hitY, float hitZ) { + TThermometer tileEntity = (TThermometer) world.getTileEntity(x, y, z); + if (entityPlayer.getCurrentEquippedItem() != null && + entityPlayer.getCurrentEquippedItem().getItem() instanceof ItThermometer) { + Vector3 savedCoords = ((ItThermometer) entityPlayer.getCurrentEquippedItem().getItem()) + .getSavedCoord(entityPlayer.getCurrentEquippedItem()); + if (tileEntity.setLinkTile(savedCoords)) { + if (world.isRemote) { + entityPlayer.addChatMessage( + new ChatComponentText("Linked thermal data.")); + } + + return true; + } + } + + tileEntity.setWarningTemp(tileEntity.getWarningTemp() - 100); + return true; + } + + @Override + public boolean onSneakMachineActivated(World par1World, int x, int y, int z, + EntityPlayer par5EntityPlayer, + int side, float hitX, float hitY, + float hitZ) { + TThermometer tileEntity = (TThermometer) par1World.getTileEntity(x, y, z); + tileEntity.setWarningTemp(tileEntity.getWarningTemp() - 10); + return true; + } + + @Override + public boolean onUseWrench(World par1World, int x, int y, int z, + EntityPlayer par5EntityPlayer, int side, + float hitX, float hitY, float hitZ) { + TThermometer tileEntity = (TThermometer) par1World.getTileEntity(x, y, z); + tileEntity.setWarningTemp(tileEntity.getWarningTemp() + 100); + return true; + } + + @Override + public boolean onSneakUseWrench(World par1World, int x, int y, int z, + EntityPlayer par5EntityPlayer, int side, + float hitX, float hitY, float hitZ) { + TThermometer tileEntity = (TThermometer) par1World.getTileEntity(x, y, z); + tileEntity.setWarningTemp(tileEntity.getWarningTemp() + 10); + return true; + } + + @Override + public boolean canProvidePower() { + return true; + } + + @Override + public int isProvidingWeakPower(IBlockAccess par1IBlockAccess, int x, int y, int z, + int par5) { + return this.isProvidingStrongPower(par1IBlockAccess, x, y, z, par5); + } + + @Override + public int isProvidingStrongPower(IBlockAccess par1IBlockAccess, int x, int y, int z, + int par5) { + TThermometer tileEntity = (TThermometer) par1IBlockAccess.getTileEntity(x, y, z); + return tileEntity.shouldEmitRedstone() ? 15 : 0; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public TileEntity createNewTileEntity(World var1, int meta) { + return new TThermometer(); + } +} diff --git a/src/main/java/atomicscience/jiqi/BTurbine.java b/src/main/java/atomicscience/jiqi/BTurbine.java new file mode 100644 index 0000000..b3f7df9 --- /dev/null +++ b/src/main/java/atomicscience/jiqi/BTurbine.java @@ -0,0 +1,60 @@ +package atomicscience.jiqi; + +import atomicscience.render.RH; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class BTurbine extends BBase { + + public BTurbine() { + super("turbine"); + } + + @Override + public boolean onUseWrench(World world, int x, int y, int z, EntityPlayer par5EntityPlayer, int side, float hitX, float hitY, float hitZ) { + TileEntity tileEntity = world.getTileEntity(x, y, z); + return tileEntity instanceof TTurbine?((TTurbine)tileEntity).checkMultiblock():false; + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block par5, int par6) { + TileEntity tileEntity = world.getTileEntity(x, y, z); + if(tileEntity instanceof TTurbine) { + if(((TTurbine)tileEntity).isMultiblock) { + ((TTurbine)tileEntity).checkMultiblock(); + } else if(((TTurbine)tileEntity).masterTurbine != null) { + TileEntity t = ((TTurbine)tileEntity).masterTurbine.getTileEntity(world); + if(t instanceof TTurbine) { + ((TTurbine)t).setMaster((TTurbine)null); + } + } + } + + super.breakBlock(world, x, y, z, par5, par6); + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderType() { + return RH.BLOCK_RENDER_ID; + } + + @Override + public TileEntity createNewTileEntity(World var1, int meta) { + return new TTurbine(); + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public boolean isOpaqueCube() { + return false; + } +} diff --git a/src/main/java/atomicscience/jiqi/CAssembler.java b/src/main/java/atomicscience/jiqi/CAssembler.java new file mode 100644 index 0000000..174d2b8 --- /dev/null +++ b/src/main/java/atomicscience/jiqi/CAssembler.java @@ -0,0 +1,87 @@ +package atomicscience.jiqi; + +import atomicscience.AtomicScience; +import atomicscience.TAtomicAssembler; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class CAssembler extends Container { + private TAtomicAssembler tileEntity; + + public CAssembler(InventoryPlayer par1InventoryPlayer, + TAtomicAssembler tileEntity) { + this.tileEntity = tileEntity; + this.addSlotToContainer(new Slot(tileEntity, 0, 80, 40)); + this.addSlotToContainer(new Slot(tileEntity, 1, 53, 56)); + this.addSlotToContainer(new Slot(tileEntity, 2, 107, 56)); + this.addSlotToContainer(new Slot(tileEntity, 3, 53, 88)); + this.addSlotToContainer(new Slot(tileEntity, 4, 107, 88)); + this.addSlotToContainer(new Slot(tileEntity, 5, 80, 103)); + this.addSlotToContainer(new Slot(tileEntity, 6, 80, 72)); + + int var3; + for (var3 = 0; var3 < 3; ++var3) { + for (int var4 = 0; var4 < 9; ++var4) { + this.addSlotToContainer(new Slot(par1InventoryPlayer, + var4 + var3 * 9 + 9, 8 + var4 * 18, + 148 + var3 * 18)); + } + } + + for (var3 = 0; var3 < 9; ++var3) { + this.addSlotToContainer( + new Slot(par1InventoryPlayer, var3, 8 + var3 * 18, 206)); + } + + this.tileEntity.players.add(par1InventoryPlayer.player); + tileEntity.openInventory(); + } + + public void onContainerClosed(EntityPlayer entityplayer) { + super.onContainerClosed(entityplayer); + this.tileEntity.players.remove(entityplayer); + } + + public boolean canInteractWith(EntityPlayer par1EntityPlayer) { + return this.tileEntity.isUseableByPlayer(par1EntityPlayer); + } + + public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, + int par1) { + ItemStack var2 = null; + Slot var3 = (Slot) super.inventorySlots.get(par1); + if (var3 != null && var3.getHasStack()) { + ItemStack itemStack = var3.getStack(); + var2 = itemStack.copy(); + if (par1 > 6) { + if (itemStack.getItem() == AtomicScience.itCellStrangeMatter) { + if (!this.mergeItemStack(itemStack, 0, 6, false)) { + return null; + } + } else if (!this.getSlot(6).getHasStack() && + !this.mergeItemStack(itemStack, 6, 7, false)) { + return null; + } + } else if (!this.mergeItemStack(itemStack, 7, 43, false)) { + return null; + } + + if (itemStack.stackSize == 0) { + var3.putStack((ItemStack) null); + } else { + var3.onSlotChanged(); + } + + if (itemStack.stackSize == var2.stackSize) { + return null; + } + + var3.onPickupFromSlot(par1EntityPlayer, itemStack); + } + + return var2; + } +} diff --git a/src/main/java/atomicscience/jiqi/ItHazmatSuite.java b/src/main/java/atomicscience/jiqi/ItHazmatSuite.java new file mode 100644 index 0000000..c99891c --- /dev/null +++ b/src/main/java/atomicscience/jiqi/ItHazmatSuite.java @@ -0,0 +1,45 @@ +package atomicscience.jiqi; + +import atomicscience.TabAS; +import atomicscience.api.IAntiPoisonArmor; +import atomicscience.api.poison.Poison; +import atomicscience.api.poison.PoisonRadiation; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemArmor; +import net.minecraft.item.ItemStack; + +public class ItHazmatSuite extends ItemArmor implements IAntiPoisonArmor { + + public ItHazmatSuite(ArmorMaterial par2EnumArmorMaterial, int par3, + int par4) { + super(par2EnumArmorMaterial, par3, par4); + this.setCreativeTab(TabAS.INSTANCE); + this.setMaxDamage(200000); + } + + @Override + public String getArmorTexture(ItemStack stack, Entity entity, int slot, + String layer) { + return "/assets/atomicscience/textures/models/hazmat.png"; + } + + @Override + public boolean isProtectedFromPoison(ItemStack itemStack, + EntityLivingBase entityLiving, Poison type) { + return type == PoisonRadiation.INSTANCE || + type.getName().equalsIgnoreCase("chemical") || + type.getName().equalsIgnoreCase("contagious"); + } + + @Override + public void onProtectFromPoison(ItemStack itemStack, + EntityLivingBase entityLiving, Poison type) { + itemStack.damageItem(1, entityLiving); + } + + @Override + public Poison.ArmorType getArmorType() { + return Poison.ArmorType.values()[super.armorType]; + } +} diff --git a/src/main/java/atomicscience/jiqi/ItThermometer.java b/src/main/java/atomicscience/jiqi/ItThermometer.java new file mode 100644 index 0000000..a7ed39b --- /dev/null +++ b/src/main/java/atomicscience/jiqi/ItThermometer.java @@ -0,0 +1,98 @@ +package atomicscience.jiqi; + +import atomicscience.api.ITemperature; +import atomicscience.wujian.ItElectricAS; +import java.util.List; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.world.World; +import universalelectricity.core.electricity.ElectricityPack; +import universalelectricity.core.vector.Vector3; + +public class ItThermometer extends ItElectricAS { + public static final int JOULES_CONSUMPTION = 1000; + + public ItThermometer(int texture) { + super("thermometer"); + } + + @Override + public void addInformation(ItemStack itemStack, EntityPlayer player, + List par3List, boolean par4) { + super.addInformation(itemStack, player, par3List, par4); + Vector3 coord = this.getSavedCoord(itemStack); + TileEntity tileEntity = coord.getTileEntity(player.worldObj); + if (tileEntity instanceof ITemperature) { + par3List.add("Tracking Thermal Device:"); + par3List.add("X: " + coord.intX() + ", Y: " + coord.intY() + + ", Z: " + coord.intZ()); + par3List.add(Math.round(((ITemperature) tileEntity).getTemperature()) + + " Celsius"); + } else { + par3List.add("§4Invalid Thermal Device."); + } + } + + public void setSavedCoords(ItemStack itemStack, Vector3 position) { + if (itemStack.stackTagCompound == null) { + itemStack.setTagCompound(new NBTTagCompound()); + } + + itemStack.stackTagCompound.setInteger("x", position.intX()); + itemStack.stackTagCompound.setInteger("y", position.intY()); + itemStack.stackTagCompound.setInteger("z", position.intZ()); + } + + public Vector3 getSavedCoord(ItemStack par1ItemStack) { + return par1ItemStack.stackTagCompound == null + ? new Vector3() + : new Vector3((double) par1ItemStack.stackTagCompound.getInteger("x"), + (double) par1ItemStack.stackTagCompound.getInteger("y"), + (double) par1ItemStack.stackTagCompound.getInteger("z")); + } + + @Override + public boolean onItemUse(ItemStack itemStack, EntityPlayer par2EntityPlayer, + World par3World, int x, int y, int z, int par7, + float par8, float par9, float par10) { + if (!par3World.isRemote) { + if (this.getJoules(itemStack) > 0.0D) { + TileEntity tileEntity = par3World.getTileEntity(x, y, z); + if (tileEntity instanceof ITemperature) { + if (par2EntityPlayer.isSneaking()) { + this.setSavedCoords(itemStack, new Vector3(tileEntity)); + par2EntityPlayer.addChatComponentMessage( + new ChatComponentText("Tracking Thermal Device.")); + } else { + par2EntityPlayer.addChatComponentMessage(new ChatComponentText( + "Heat: " + + Math.round(((ITemperature) tileEntity).getTemperature()) + + " C")); + } + + this.onProvide( + ElectricityPack.getFromWatts(1000.0D, this.getVoltage(itemStack)), + itemStack); + } + } else { + par2EntityPlayer.addChatComponentMessage( + new ChatComponentText("No Electricity!")); + } + } + + return false; + } + + @Override + public double getMaxJoules(ItemStack itemStack) { + return 50000.0D; + } + + @Override + public double getVoltage(ItemStack itemStack) { + return 20.0D; + } +} diff --git a/src/main/java/atomicscience/jiqi/TChemicalExtractor.java b/src/main/java/atomicscience/jiqi/TChemicalExtractor.java new file mode 100644 index 0000000..ab8e3a4 --- /dev/null +++ b/src/main/java/atomicscience/jiqi/TChemicalExtractor.java @@ -0,0 +1,245 @@ +package atomicscience.jiqi; + +import atomicscience.AtomicScience; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import net.minecraftforge.fluids.FluidTankInfo; +import net.minecraftforge.fluids.IFluidHandler; +import universalelectricity.core.electricity.ElectricityPack; +import universalelectricity.core.item.ElectricItemHelper; +import universalelectricity.prefab.implement.IRotatable; + +public class TChemicalExtractor + extends TInventory implements ISidedInventory, IFluidHandler, IRotatable { + + public final int SMELTING_TICKS = 280; + // public final float DIAN = 500.0F; + public int smeltingTicks = 0; + public float rotation = 0.0F; + public final FluidTank waterTank; + private int playersUsing; + + public TChemicalExtractor() { + this.waterTank = new FluidTank(FluidRegistry.WATER, 0, 5000); + this.playersUsing = 0; + // TODO: WTF + // this.waterTank.setTankPressure(-10); + } + + @Override + public ElectricityPack getRequest() { + return this.canWork() + ? new ElectricityPack(500.0D / this.getVoltage(), this.getVoltage()) + : new ElectricityPack(); + } + + @Override + public void updateEntity() { + super.updateEntity(); + if (!this.worldObj.isRemote && !this.isDisabled()) { + if (super.containingItems[1] != null && + FluidContainerRegistry.isFilledContainer(super.containingItems[1])) { + FluidStack liquid = FluidContainerRegistry.getFluidForFilledItem( + super.containingItems[1]); + if (liquid.getFluid() == FluidRegistry.WATER && + this.fill(ForgeDirection.UNKNOWN, liquid, false) > 0) { + ItemStack resultingContainer = super.containingItems[1].getItem().getContainerItem( + super.containingItems[1]); + if (resultingContainer == null && + super.containingItems[1].stackSize > 1) { + --super.containingItems[1].stackSize; + } else { + super.containingItems[1] = resultingContainer; + } + + this.waterTank.fill(liquid, true); + } + } + + if (this.canWork()) { + super.wattsReceived += ElectricItemHelper.dechargeItem( + super.containingItems[0], 500.0D, this.getVoltage()); + double var10000 = super.wattsReceived; + this.getClass(); + if (var10000 >= (double) (500.0F / 2.0F)) { + if (this.smeltingTicks == 0) { + this.smeltingTicks = 280; + } + + if (this.smeltingTicks > 0) { + --this.smeltingTicks; + if (this.smeltingTicks < 1) { + this.work(); + this.smeltingTicks = 0; + } + } else { + this.smeltingTicks = 0; + } + + super.wattsReceived = 0.0D; + } + } else { + this.smeltingTicks = 0; + } + + if (super.ticks % 10L == 0L && this.playersUsing > 0) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + } + } + } + + @Override + public void onDataPacket(NetworkManager arg0, + S35PacketUpdateTileEntity arg1) { + NBTTagCompound nbt = arg1.func_148857_g(); + + this.smeltingTicks = nbt.getInteger("smeltingTicks"); + this.waterTank.setFluid( + new FluidStack(FluidRegistry.WATER, nbt.getInteger("waterAmount"))); + super.disabledTicks = nbt.getInteger("disabledTicks"); + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setInteger("smeltingTicks", this.smeltingTicks); + nbt.setInteger("waterAmount", this.waterTank.getFluidAmount()); + nbt.setInteger("disabledTicks", super.disabledTicks); + + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, + this.getBlockMetadata(), nbt); + } + + @Override + public void openInventory() { + if (!this.worldObj.isRemote) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + } + + ++this.playersUsing; + } + + @Override + public void closeInventory() { + --this.playersUsing; + } + + public boolean canWork() { + if (!this.isDisabled() && this.waterTank.getFluid() != null && + this.waterTank.getFluidAmount() >= 1000) { + if (AtomicScience.isUraniumOre(super.containingItems[3]) && + this.isItemValidForSlot( + 2, new ItemStack(AtomicScience.itYellowcake))) { + return true; + } + + if (AtomicScience.isCell(super.containingItems[3]) && + this.isItemValidForSlot( + 2, new ItemStack(AtomicScience.itCellDeuterium))) { + return true; + } + } + + return false; + } + + public void work() { + if (this.canWork()) { + this.waterTank.drain(1000, true); + if (AtomicScience.isUraniumOre(super.containingItems[3])) { + this.incrStackSize(2, new ItemStack(AtomicScience.itYellowcake, 3)); + } else { + this.incrStackSize(2, new ItemStack(AtomicScience.itCellDeuterium)); + } + + this.decrStackSize(3, 1); + } + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.smeltingTicks = nbt.getInteger("shiJian"); + NBTTagCompound compound = nbt.getCompoundTag("water"); + this.waterTank.setFluid(FluidStack.loadFluidStackFromNBT(compound)); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("shiJian", this.smeltingTicks); + if (this.waterTank.getFluid() != null) { + NBTTagCompound compound = new NBTTagCompound(); + this.waterTank.getFluid().writeToNBT(compound); + nbt.setTag("water", compound); + } + } + + @Override + public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { + return FluidRegistry.WATER == resource.getFluid() + ? this.waterTank.fill(resource, doFill) + : 0; + } + + @Override + public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) { + return null; + } + + @Override + public FluidTankInfo[] getTankInfo(ForgeDirection arg0) { + return new FluidTankInfo[] { new FluidTankInfo(this.waterTank) }; + } + + @Override + public int getSizeInventory() { + return 4; + } + + public boolean isItemValidForSlot(int slotID, ItemStack itemStack) { + return slotID == 1 + ? AtomicScience.isCellWater(itemStack) + : (slotID != 3 ? false + : AtomicScience.isCell(itemStack) || + AtomicScience.isUraniumOre(itemStack)); + } + + public int[] getAccessibleSlotsFromSide(int side) { + return new int[] { 1, 2, 3 }; + } + + public boolean canInsertItem(int slotID, ItemStack itemStack, int side) { + return this.isItemValidForSlot(slotID, itemStack); + } + + public boolean canExtractItem(int slotID, ItemStack itemstack, int side) { + return slotID == 2; + } + + @Override + public boolean canDrain(ForgeDirection arg0, Fluid arg1) { + return false; + } + + @Override + public boolean canFill(ForgeDirection arg0, Fluid arg1) { + return arg1 == FluidRegistry.WATER && + this.waterTank.getFluidAmount() < this.waterTank.getCapacity(); + } + + @Override + public FluidStack drain(ForgeDirection arg0, FluidStack arg1, boolean arg2) { + return null; + } +} diff --git a/src/main/java/atomicscience/jiqi/TFunnel.java b/src/main/java/atomicscience/jiqi/TFunnel.java new file mode 100644 index 0000000..cadaa61 --- /dev/null +++ b/src/main/java/atomicscience/jiqi/TFunnel.java @@ -0,0 +1,102 @@ +package atomicscience.jiqi; + +import atomicscience.AtomicScience; +import atomicscience.api.ISteamReceptor; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import net.minecraftforge.fluids.FluidTankInfo; +import net.minecraftforge.fluids.IFluidHandler; +import universalelectricity.core.block.IConductor; +import universalelectricity.prefab.tile.TileEntityAdvanced; + +public class TFunnel + extends TileEntityAdvanced implements ISteamReceptor, IFluidHandler { + + public IConductor connectedWire = null; + public final FluidTank gasTank; + + public TFunnel() { + this.gasTank = new FluidTank(AtomicScience.FLUID_STEAM, 0, 20000); + + // TODO: WTF + // this.gasTank.setTankPressure(10); + } + + @Override + public void updateEntity() { + super.updateEntity(); + if (super.ticks % 20L == 0L) { + TileEntity tileEntity = this.worldObj.getTileEntity( + this.xCoord, this.yCoord + 1, this.zCoord); + if (tileEntity != null && tileEntity instanceof ISteamReceptor) { + FluidStack drainStack = this.gasTank.drain(AtomicScience.STEAM_RATIO, true); + if (drainStack != null) { + int nengLiang = drainStack.amount; + ((ISteamReceptor) tileEntity) + .onReceiveSteam(nengLiang - nengLiang / 4); + } + } + } + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + NBTTagCompound gasCompound = nbt.getCompoundTag("gas"); + this.gasTank.setFluid(FluidStack.loadFluidStackFromNBT(gasCompound)); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + if (this.gasTank.getFluid() != null) { + NBTTagCompound compound = new NBTTagCompound(); + this.gasTank.getFluid().writeToNBT(compound); + nbt.setTag("gas", compound); + } + } + + @Override + public void onReceiveSteam(int amount) { + this.gasTank.fill(new FluidStack(AtomicScience.FLUID_STEAM, + amount * AtomicScience.STEAM_RATIO), + true); + } + + @Override + public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { + return 0; + } + + @Override + public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) { + return this.gasTank.drain(maxDrain, doDrain); + } + + @Override + public boolean canDrain(ForgeDirection arg0, Fluid arg1) { + return arg1 == AtomicScience.FLUID_STEAM && + this.gasTank.getFluidAmount() > 0; + } + + @Override + public boolean canFill(ForgeDirection arg0, Fluid arg1) { + return false; + } + + @Override + public FluidStack drain(ForgeDirection arg0, FluidStack arg1, boolean arg2) { + return arg1.getFluid() == AtomicScience.FLUID_STEAM + ? this.gasTank.drain(arg1.amount, arg2) + : null; + } + + @Override + public FluidTankInfo[] getTankInfo(ForgeDirection arg0) { + return new FluidTankInfo[] { new FluidTankInfo(this.gasTank) }; + } +} diff --git a/src/main/java/atomicscience/jiqi/TInventory.java b/src/main/java/atomicscience/jiqi/TInventory.java new file mode 100644 index 0000000..eb63572 --- /dev/null +++ b/src/main/java/atomicscience/jiqi/TInventory.java @@ -0,0 +1,143 @@ +package atomicscience.jiqi; + +import calclavia.lib.TileEntityUniversalRunnable; +import java.util.HashSet; +import java.util.Set; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; + +public abstract class TInventory + extends TileEntityUniversalRunnable implements IInventory { + public final Set players = new HashSet<>(); + protected ItemStack[] containingItems = new ItemStack[this.getSizeInventory()]; + + @Override + public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer) { + return this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) != this + ? false + : par1EntityPlayer.getDistanceSq((double) this.xCoord + 0.5D, + (double) this.yCoord + 0.5D, + (double) this.zCoord + 0.5D) <= 64.0D; + } + + @Override + public ItemStack getStackInSlot(int par1) { + return this.containingItems[par1]; + } + + @Override + public ItemStack decrStackSize(int par1, int par2) { + if (this.containingItems[par1] != null) { + ItemStack var3; + if (this.containingItems[par1].stackSize <= par2) { + var3 = this.containingItems[par1]; + this.containingItems[par1] = null; + return var3; + } else { + var3 = this.containingItems[par1].splitStack(par2); + if (this.containingItems[par1].stackSize == 0) { + this.containingItems[par1] = null; + } + + return var3; + } + } else { + return null; + } + } + + @Override + public ItemStack getStackInSlotOnClosing(int par1) { + if (this.containingItems[par1] != null) { + ItemStack var2 = this.containingItems[par1]; + this.containingItems[par1] = null; + return var2; + } else { + return null; + } + } + + @Override + public void setInventorySlotContents(int par1, ItemStack par2ItemStack) { + this.containingItems[par1] = par2ItemStack; + if (par2ItemStack != null && + par2ItemStack.stackSize > this.getInventoryStackLimit()) { + par2ItemStack.stackSize = this.getInventoryStackLimit(); + } + } + + @Override + public int getInventoryStackLimit() { + return 64; + } + + @Override + public void openInventory() { + } + + @Override + public void closeInventory() { + } + + @Override + public boolean hasCustomInventoryName() { + return true; + } + + @Override + public String getInventoryName() { + return this.getBlockType().getLocalizedName(); + } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack itemStack) { + return this.getStackInSlot(slot) == null + ? true + : (this.getStackInSlot(slot).stackSize + 1 <= 64 + ? this.getStackInSlot(slot).isItemEqual(itemStack) + : false); + } + + public void incrStackSize(int slot, ItemStack itemStack) { + if (this.getStackInSlot(slot) == null) { + this.setInventorySlotContents(slot, itemStack.copy()); + } else if (this.getStackInSlot(slot).isItemEqual(itemStack)) { + ++this.getStackInSlot(slot).stackSize; + } + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + NBTTagList var2 = nbt.getTagList("Items", 10); + this.containingItems = new ItemStack[this.getSizeInventory()]; + + for (int var3 = 0; var3 < var2.tagCount(); ++var3) { + NBTTagCompound var4 = (NBTTagCompound) var2.getCompoundTagAt(var3); + byte var5 = var4.getByte("Slot"); + if (var5 >= 0 && var5 < this.containingItems.length) { + this.containingItems[var5] = ItemStack.loadItemStackFromNBT(var4); + } + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + NBTTagList var2 = new NBTTagList(); + + for (int var3 = 0; var3 < this.containingItems.length; ++var3) { + if (this.containingItems[var3] != null) { + NBTTagCompound var4 = new NBTTagCompound(); + var4.setByte("Slot", (byte) var3); + this.containingItems[var3].writeToNBT(var4); + var2.appendTag(var4); + } + } + + nbt.setTag("Items", var2); + } +} diff --git a/src/main/java/atomicscience/jiqi/TThermometer.java b/src/main/java/atomicscience/jiqi/TThermometer.java new file mode 100644 index 0000000..2eb0e82 --- /dev/null +++ b/src/main/java/atomicscience/jiqi/TThermometer.java @@ -0,0 +1,117 @@ +package atomicscience.jiqi; + +import atomicscience.AtomicScience; +import atomicscience.api.ITemperature; +import net.minecraft.block.Block; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; +import universalelectricity.core.vector.Vector3; +import universalelectricity.prefab.tile.TileEntityDisableable; + +public class TThermometer extends TileEntityDisableable { + public static final int MAX_TEMP = 5000; + private int warningTemp = 2000; + private float prevTemp; + public float temp = 0.0F; + public Vector3 linkedTileCoords; + + public void updateEntity() { + super.updateEntity(); + if (!this.worldObj.isRemote) { + this.prevTemp = this.temp; + if (super.ticks % 10L == 0L) { + this.temp = 0.0F; + if (this.linkedTileCoords != null && + this.linkedTileCoords.getTileEntity(this.worldObj) instanceof ITemperature) { + this.temp = ((ITemperature) this.linkedTileCoords.getTileEntity(this.worldObj)) + .getTemperature(); + } else { + for (int i = 0; i < 6; ++i) { + Vector3 offsetPos = new Vector3(this); + offsetPos.modifyPositionFromSide(ForgeDirection.getOrientation(i)); + Block fangGe = offsetPos.getBlock(this.worldObj); + if (fangGe instanceof ITemperature) { + this.temp += ((ITemperature) fangGe).getTemperature(); + } else { + TileEntity tileEntity = offsetPos.getTileEntity(this.worldObj); + if (tileEntity != null && tileEntity instanceof ITemperature) { + this.temp += ((ITemperature) tileEntity).getTemperature(); + } + } + } + } + + this.worldObj.notifyBlocksOfNeighborChange( + this.xCoord, this.yCoord, this.zCoord, AtomicScience.bThermometer); + if (this.prevTemp != this.temp) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, + this.zCoord); + } + } + } + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setFloat("temp", this.temp); + nbt.setInteger("warningTemp", this.warningTemp); + + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, + this.getBlockMetadata(), nbt); + } + + @Override + public void onDataPacket(NetworkManager arg0, + S35PacketUpdateTileEntity arg1) { + NBTTagCompound nbt = arg1.func_148857_g(); + this.temp = nbt.getFloat("temp"); + this.warningTemp = nbt.getInteger("warningTemp"); + } + + public boolean setLinkTile(Vector3 linkedTileCoords) { + TileEntity thermalTile = linkedTileCoords.getTileEntity(this.worldObj); + if (thermalTile instanceof ITemperature) { + this.linkedTileCoords = linkedTileCoords; + return true; + } else { + return false; + } + } + + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.warningTemp = nbt.getInteger("warningTemp"); + this.linkedTileCoords = Vector3.readFromNBT(nbt.getCompoundTag("linkedTileCoords")); + } + + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("warningTemp", this.warningTemp); + if (this.linkedTileCoords != null) { + nbt.setTag("linkedTileCoords", + this.linkedTileCoords.writeToNBT(new NBTTagCompound())); + } + } + + public int getWarningTemp() { + return this.warningTemp; + } + + public void setWarningTemp(int warningTemp) { + this.warningTemp = warningTemp; + if (this.warningTemp <= 0) { + this.warningTemp = 5000; + } + + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + } + + public boolean shouldEmitRedstone() { + return !this.isDisabled() && this.temp >= (float) this.getWarningTemp(); + } +} diff --git a/src/main/java/atomicscience/jiqi/TTurbine.java b/src/main/java/atomicscience/jiqi/TTurbine.java new file mode 100644 index 0000000..5d2bb74 --- /dev/null +++ b/src/main/java/atomicscience/jiqi/TTurbine.java @@ -0,0 +1,275 @@ +package atomicscience.jiqi; + +import atomicscience.AtomicScience; +import atomicscience.api.ISteamReceptor; +import calclavia.lib.TileEntityUniversalProducer; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import java.util.ArrayList; +import java.util.Iterator; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import net.minecraftforge.fluids.FluidTankInfo; +import net.minecraftforge.fluids.IFluidHandler; +import universalelectricity.core.vector.Vector3; + +public class TTurbine extends TileEntityUniversalProducer + implements ISteamReceptor, IFluidHandler { + public float rotation = 0.0F; + public float speed = 0.0F; + public boolean isMultiblock = false; + public Vector3 masterTurbine = null; + public static final int BAN_JING = 1; + // private static final double MAX_XUAN_ZHUAN = 50.0D; + // private static final float ZHUAN_MAN = 0.5F; + public final FluidTank tank; + + public TTurbine() { + this.tank = new FluidTank(AtomicScience.FLUID_STEAM, 0, 20000); + } + + @Override + public boolean canConnect(ForgeDirection direction) { + return this.masterTurbine != null ? false : direction == ForgeDirection.UP; + } + + @Override + public void updateEntity() { + super.updateEntity(); + if (this.tank.getFluid() != null && + this.tank.getFluidAmount() > AtomicScience.STEAM_RATIO) { + this.onReceiveSteam(AtomicScience.STEAM_RATIO); + this.tank.drain(AtomicScience.STEAM_RATIO, true); + } + + if (this.masterTurbine != null) { + TileEntity tileEntity = this.masterTurbine.getTileEntity(this.worldObj); + if (tileEntity == null) { + this.masterTurbine = null; + } else if (!tileEntity.isInvalid() && tileEntity instanceof TTurbine) { + if (!((TTurbine)tileEntity).isMultiblock) { + this.masterTurbine = null; + } + } else { + this.masterTurbine = null; + } + } else { + if (this.speed > 0.0F && !this.isDisabled()) { + if (super.ticks % 18L == 0L) { + if (this.isMultiblock) { + this.worldObj.playSoundEffect( + (double)this.xCoord, (double)this.yCoord, (double)this.zCoord, + "atomicscience.turbine", 0.6F, + (float)(0.699999988079071D + + 0.2D * ((double)this.speed / 450.0D))); + } else { + this.worldObj.playSoundEffect( + (double)this.xCoord, (double)this.yCoord, (double)this.zCoord, + "atomicscience.turbine", 0.15F, + (float)(0.699999988079071D + + 0.2D * ((double)this.speed / 50.0D))); + } + } + + // If turbine doesn't spin, check packet handler + // Original packet handler added to rotation on packet received. + // - LordMZTE + if (this.isMultiblock) { + this.rotation += this.speed / 18.0F / 3.0F; + } else { + this.rotation += this.speed / 3.0F; + } + + if (!this.worldObj.isRemote && super.ticks % 3L == 0L) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, + this.zCoord); + } + + if (this.rotation > 360.0F) { + this.rotation = 0.0F; + } + } + + this.produce( + (double)(this.speed * AtomicScience.WOLUN_MULTIPLIER_OUTPUT)); + if (this.isMultiblock) { + this.speed = (float)Math.max( + Math.min((double)(this.speed - 4.5F), 450.0D), 0.0D); + } else { + this.speed = + (float)Math.max(Math.min((double)(this.speed - 0.5F), 50.0D), 0.0D); + } + } + } + + public void onReceiveSteam(int amount) { + if (this.masterTurbine != null) { + TileEntity tileEntity = this.masterTurbine.getTileEntity(this.worldObj); + if (tileEntity != null && tileEntity instanceof TTurbine) { + ((TTurbine)tileEntity).onReceiveSteam(amount); + } + } else if (this.isMultiblock) { + this.speed = + (float)Math.min((double)(this.speed + (float)amount), 450.0D); + } else { + this.speed = (float)Math.min((double)(this.speed + (float)amount), 50.0D); + } + } + + @Override + public void onDataPacket(NetworkManager arg0, + S35PacketUpdateTileEntity arg1) { + NBTTagCompound nbt = arg1.func_148857_g(); + this.isMultiblock = nbt.getBoolean("isMultiblock"); + this.masterTurbine = Vector3.readFromNBT(new NBTTagCompound()); + this.speed = nbt.getFloat("speed"); + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setBoolean("isMultiblock", this.isMultiblock); + nbt.setTag("masterTurbine", + this.masterTurbine.writeToNBT(new NBTTagCompound())); + nbt.setFloat("speed", this.speed); + + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, + this.getBlockMetadata(), nbt); + } + + public void setMaster(TTurbine newMasterTurbine) { + if (newMasterTurbine != null) { + this.masterTurbine = new Vector3(newMasterTurbine); + } else { + this.masterTurbine = null; + this.isMultiblock = false; + } + + this.worldObj.notifyBlocksOfNeighborChange( + this.xCoord, this.yCoord, this.zCoord, this.getBlockType()); + if (!this.worldObj.isRemote) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + } + } + + public boolean hasMaster() { return this.masterTurbine != null; } + + public boolean checkMultiblock() { + if (!this.worldObj.isRemote) { + ArrayList xiaoWoLun = new ArrayList<>(); + ArrayList lianJie = new ArrayList<>(); + + for (int i$ = -1; i$ <= 1; ++i$) { + for (int woLun = -1; woLun <= 1; ++woLun) { + TileEntity tileEntity = this.worldObj.getTileEntity( + this.xCoord + i$, this.yCoord, this.zCoord + woLun); + if (tileEntity != null && tileEntity instanceof TTurbine) { + if (!((TTurbine)tileEntity).hasMaster() && + !((TTurbine)tileEntity).isMultiblock) { + xiaoWoLun.add((TTurbine)tileEntity); + } + + lianJie.add((TTurbine)tileEntity); + } + } + } + + Iterator var6; + TTurbine var7; + if (this.isMultiblock) { + var6 = lianJie.iterator(); + + while (var6.hasNext()) { + var7 = (TTurbine)var6.next(); + if (var7 != this) { + var7.setMaster((TTurbine)null); + } + } + + this.isMultiblock = false; + } else if (xiaoWoLun.size() >= 9) { + var6 = xiaoWoLun.iterator(); + + while (var6.hasNext()) { + var7 = (TTurbine)var6.next(); + if (var7 != this) { + var7.setMaster(this); + } + } + + this.masterTurbine = null; + this.isMultiblock = true; + } + + if (!this.worldObj.isRemote) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + } + } + + return true; + } + + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.speed = nbt.getFloat("speed"); + this.isMultiblock = nbt.getBoolean("isMultiblock"); + if (nbt.hasKey("masterTurbine")) { + this.masterTurbine = + Vector3.readFromNBT(nbt.getCompoundTag("masterTurbine")); + } else { + this.masterTurbine = null; + } + } + + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setFloat("speed", this.speed); + nbt.setBoolean("isMultiblock", this.isMultiblock); + if (this.masterTurbine != null) { + nbt.setTag("masterTurbine", + this.masterTurbine.writeToNBT(new NBTTagCompound())); + } + } + + public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { + return this.tank.fill(resource, doFill); + } + + public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) { + return null; + } + + @SideOnly(Side.CLIENT) + public AxisAlignedBB getRenderBoundingBox() { + return TileEntity.INFINITE_EXTENT_AABB; + } + + @Override + public boolean canDrain(ForgeDirection arg0, Fluid arg1) { + return false; + } + + @Override + public boolean canFill(ForgeDirection arg0, Fluid arg1) { + return arg1 == AtomicScience.FLUID_STEAM && + this.tank.getFluidAmount() < this.tank.getCapacity(); + } + + @Override + public FluidStack drain(ForgeDirection arg0, FluidStack arg1, boolean arg2) { + return null; + } + + @Override + public FluidTankInfo[] getTankInfo(ForgeDirection arg0) { + return new FluidTankInfo[] {new FluidTankInfo(this.tank)}; + } +} diff --git a/src/main/java/atomicscience/muoxing/MAtomicAssembler.java b/src/main/java/atomicscience/muoxing/MAtomicAssembler.java new file mode 100644 index 0000000..f2a5c55 --- /dev/null +++ b/src/main/java/atomicscience/muoxing/MAtomicAssembler.java @@ -0,0 +1,369 @@ +package atomicscience.muoxing; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import org.lwjgl.opengl.GL11; + +public class MAtomicAssembler extends ModelBase { + ModelRenderer Safety_Glass_Front; + ModelRenderer Safety_Glass_Right; + ModelRenderer Safety_Glass_Back; + ModelRenderer Safety_Glass_Left; + ModelRenderer Safety_Glass_Top; + ModelRenderer Circuit1; + ModelRenderer Circuit2; + ModelRenderer Circuit3; + ModelRenderer Circuit4; + ModelRenderer RAM1; + ModelRenderer Control_Pad; + ModelRenderer RAM2; + ModelRenderer Control_Pad_Ribbon_Cable; + ModelRenderer RAM3; + ModelRenderer Control_Pad_Ribbon_Connector; + ModelRenderer RAM4; + ModelRenderer Plinth_Base_Ribbon_Connector; + ModelRenderer Material_Plinth_Core; + ModelRenderer Material_Plinth_Base; + ModelRenderer Material_Plinth_Stand; + ModelRenderer Plinth_Base_Plate; + ModelRenderer Back_Arm_Upper; + ModelRenderer Back_Arm_Lower; + ModelRenderer Right_Arm_Upper; + ModelRenderer Right_Arm_Lower; + ModelRenderer Front_Arm_Upper; + ModelRenderer Front_Arm_Lower; + ModelRenderer Left_Arm_Upper; + ModelRenderer Left_Arm_Lower; + ModelRenderer Middle_Rotor_Focus_Lazer; + ModelRenderer Middle_Rotor_Uppper_Arm; + ModelRenderer Middle_Rotor_Lower_Arm; + ModelRenderer Middle_Rotor_Arm_Base; + ModelRenderer Middle_Rotor; + ModelRenderer Bottom_Rotor_Upper_Arm; + ModelRenderer Bottom_Rotor_Lower_Arm; + ModelRenderer Bottom_Rotor_Arm_Base; + ModelRenderer Bottom_Rotor; + ModelRenderer Resonance_Crystal; + ModelRenderer Resonator_Unit; + ModelRenderer Resonator_Assembly; + ModelRenderer Bottom_Rotor_Resonator_Arm; + + + public MAtomicAssembler() { + super.textureWidth = 65; + super.textureHeight = 32; + this.Safety_Glass_Front = new ModelRenderer(this, 35, 0); + this.Safety_Glass_Front.addBox(0.0F, 0.0F, 0.0F, 15, 15, 0); + this.Safety_Glass_Front.setRotationPoint(-7.5F, 8.0F, -7.5F); + this.Safety_Glass_Front.setTextureSize(65, 32); + this.Safety_Glass_Front.mirror = true; + this.setRotation(this.Safety_Glass_Front, 0.0F, 0.0F, 0.0F); + this.Safety_Glass_Right = new ModelRenderer(this, 35, -15); + this.Safety_Glass_Right.addBox(0.0F, 0.0F, 0.0F, 0, 15, 15); + this.Safety_Glass_Right.setRotationPoint(-7.5F, 8.0F, -7.5F); + this.Safety_Glass_Right.setTextureSize(65, 32); + this.Safety_Glass_Right.mirror = true; + this.setRotation(this.Safety_Glass_Right, 0.0F, 0.0F, 0.0F); + this.Safety_Glass_Back = new ModelRenderer(this, 35, 0); + this.Safety_Glass_Back.addBox(0.0F, 0.0F, 0.0F, 15, 15, 0); + this.Safety_Glass_Back.setRotationPoint(-7.5F, 8.0F, 7.5F); + this.Safety_Glass_Back.setTextureSize(65, 32); + this.Safety_Glass_Back.mirror = true; + this.setRotation(this.Safety_Glass_Back, 0.0F, 0.0F, 0.0F); + this.Safety_Glass_Left = new ModelRenderer(this, 35, -15); + this.Safety_Glass_Left.addBox(0.0F, 0.0F, 0.0F, 0, 15, 15); + this.Safety_Glass_Left.setRotationPoint(7.5F, 8.0F, -7.5F); + this.Safety_Glass_Left.setTextureSize(65, 32); + this.Safety_Glass_Left.mirror = true; + this.setRotation(this.Safety_Glass_Left, 0.0F, 0.0F, 0.0F); + this.Safety_Glass_Top = new ModelRenderer(this, 20, 0); + this.Safety_Glass_Top.addBox(0.0F, 0.0F, 0.0F, 15, 0, 15); + this.Safety_Glass_Top.setRotationPoint(-7.5F, 8.0F, -7.5F); + this.Safety_Glass_Top.setTextureSize(65, 32); + this.Safety_Glass_Top.mirror = true; + this.setRotation(this.Safety_Glass_Top, 0.0F, 0.0F, 0.0F); + this.Circuit1 = new ModelRenderer(this, 27, 11); + this.Circuit1.addBox(0.0F, 0.0F, 0.0F, 2, 1, 2); + this.Circuit1.setRotationPoint(-6.0F, 22.5F, -6.25F); + this.Circuit1.setTextureSize(65, 32); + this.Circuit1.mirror = true; + this.setRotation(this.Circuit1, 0.0F, 0.0F, 0.0F); + this.Circuit2 = new ModelRenderer(this, 27, 11); + this.Circuit2.addBox(0.0F, 0.0F, 0.0F, 2, 1, 2); + this.Circuit2.setRotationPoint(-5.0F, 22.5F, -1.0F); + this.Circuit2.setTextureSize(65, 32); + this.Circuit2.mirror = true; + this.setRotation(this.Circuit2, 0.0F, 0.0F, 0.0F); + this.Circuit3 = new ModelRenderer(this, 27, 11); + this.Circuit3.addBox(0.0F, 0.0F, 0.0F, 2, 1, 2); + this.Circuit3.setRotationPoint(3.0F, 22.5F, 0.0F); + this.Circuit3.setTextureSize(65, 32); + this.Circuit3.mirror = true; + this.setRotation(this.Circuit3, 0.0F, 0.0F, 0.0F); + this.Circuit4 = new ModelRenderer(this, 27, 11); + this.Circuit4.addBox(0.0F, 0.0F, 0.0F, 2, 1, 2); + this.Circuit4.setRotationPoint(-1.0F, 22.5F, -6.0F); + this.Circuit4.setTextureSize(65, 32); + this.Circuit4.mirror = true; + this.setRotation(this.Circuit4, 0.0F, 0.0F, 0.0F); + this.RAM1 = new ModelRenderer(this, 27, 11); + this.RAM1.addBox(0.0F, 0.0F, 0.0F, 3, 1, 0); + this.RAM1.setRotationPoint(2.0F, 22.0F, 6.0F); + this.RAM1.setTextureSize(65, 32); + this.RAM1.mirror = true; + this.setRotation(this.RAM1, 0.0F, 1.570796F, 0.0F); + this.Control_Pad = new ModelRenderer(this, 50, 25); + this.Control_Pad.addBox(-3.0F, -1.5F, -1.0F, 4, 4, 1); + this.Control_Pad.setRotationPoint(-4.0F, 10.0F, -7.0F); + this.Control_Pad.setTextureSize(65, 32); + this.Control_Pad.mirror = true; + this.setRotation(this.Control_Pad, 0.0F, 0.0F, 0.0F); + this.RAM2 = new ModelRenderer(this, 27, 11); + this.RAM2.addBox(0.0F, 0.0F, 0.0F, 3, 1, 0); + this.RAM2.setRotationPoint(2.5F, 22.0F, 6.0F); + this.RAM2.setTextureSize(65, 32); + this.RAM2.mirror = true; + this.setRotation(this.RAM2, 0.0F, 1.570796F, 0.0F); + this.Control_Pad_Ribbon_Cable = new ModelRenderer(this, 61, 18); + this.Control_Pad_Ribbon_Cable.addBox(0.0F, 0.0F, 0.0F, 2, 12, 0); + this.Control_Pad_Ribbon_Cable.setRotationPoint(-6.0F, 11.0F, -6.7F); + this.Control_Pad_Ribbon_Cable.setTextureSize(65, 32); + this.Control_Pad_Ribbon_Cable.mirror = true; + this.setRotation(this.Control_Pad_Ribbon_Cable, 0.0F, 0.0F, 0.0F); + this.RAM3 = new ModelRenderer(this, 27, 11); + this.RAM3.addBox(0.0F, 0.0F, 0.0F, 3, 1, 0); + this.RAM3.setRotationPoint(1.5F, 22.0F, 6.0F); + this.RAM3.setTextureSize(65, 32); + this.RAM3.mirror = true; + this.setRotation(this.RAM3, 0.0F, 1.570796F, 0.0F); + this.Control_Pad_Ribbon_Connector = new ModelRenderer(this, 50, 16); + this.Control_Pad_Ribbon_Connector.addBox(0.0F, 0.0F, -0.5F, 3, 1, 1); + this.Control_Pad_Ribbon_Connector.setRotationPoint(-6.5F, 11.0F, -6.7F); + this.Control_Pad_Ribbon_Connector.setTextureSize(65, 32); + this.Control_Pad_Ribbon_Connector.mirror = true; + this.setRotation(this.Control_Pad_Ribbon_Connector, 0.0F, 0.0F, 0.0F); + this.RAM4 = new ModelRenderer(this, 27, 11); + this.RAM4.addBox(0.0F, 0.0F, 0.0F, 3, 1, 0); + this.RAM4.setRotationPoint(1.0F, 22.0F, 6.0F); + this.RAM4.setTextureSize(65, 32); + this.RAM4.mirror = true; + this.setRotation(this.RAM4, 0.0F, 1.570796F, 0.0F); + this.Plinth_Base_Ribbon_Connector = new ModelRenderer(this, 50, 16); + this.Plinth_Base_Ribbon_Connector.addBox(0.0F, 0.0F, -0.5F, 3, 1, 1); + this.Plinth_Base_Ribbon_Connector.setRotationPoint(-6.5F, 22.0F, -6.7F); + this.Plinth_Base_Ribbon_Connector.setTextureSize(65, 32); + this.Plinth_Base_Ribbon_Connector.mirror = true; + this.setRotation(this.Plinth_Base_Ribbon_Connector, 0.0F, 0.0F, 0.0F); + this.Material_Plinth_Core = new ModelRenderer(this, 5, 27); + this.Material_Plinth_Core.addBox(-1.0F, -1.5F, -1.0F, 2, 1, 2); + this.Material_Plinth_Core.setRotationPoint(0.0F, 18.4F, 0.0F); + this.Material_Plinth_Core.setTextureSize(65, 32); + this.Material_Plinth_Core.mirror = true; + this.setRotation(this.Material_Plinth_Core, 0.0F, 0.7853982F, 0.0F); + this.Material_Plinth_Base = new ModelRenderer(this, 4, 6); + this.Material_Plinth_Base.addBox(-1.5F, -1.0F, -1.5F, 3, 1, 3); + this.Material_Plinth_Base.setRotationPoint(0.0F, 18.4F, 0.0F); + this.Material_Plinth_Base.setTextureSize(65, 32); + this.Material_Plinth_Base.mirror = true; + this.setRotation(this.Material_Plinth_Base, 0.0F, 0.7853982F, 0.0F); + this.Material_Plinth_Stand = new ModelRenderer(this, 0, 9); + this.Material_Plinth_Stand.addBox(-0.5F, -9.0F, -0.5F, 1, 6, 1); + this.Material_Plinth_Stand.setRotationPoint(0.0F, 26.5F, 0.0F); + this.Material_Plinth_Stand.setTextureSize(65, 32); + this.Material_Plinth_Stand.mirror = true; + this.setRotation(this.Material_Plinth_Stand, 0.0F, 0.7853982F, 0.0F); + this.Plinth_Base_Plate = new ModelRenderer(this, 1, 15); + this.Plinth_Base_Plate.addBox(-8.0F, 0.0F, -8.0F, 16, 1, 16); + this.Plinth_Base_Plate.setRotationPoint(0.0F, 23.0F, 0.0F); + this.Plinth_Base_Plate.setTextureSize(65, 32); + this.Plinth_Base_Plate.mirror = true; + this.setRotation(this.Plinth_Base_Plate, 0.0F, 0.0F, 0.0F); + this.Back_Arm_Upper = new ModelRenderer(this, 30, 1); + this.Back_Arm_Upper.addBox(-0.5F, 0.0F, 0.0F, 1, 2, 1); + this.Back_Arm_Upper.setRotationPoint(0.0F, 16.9F, 2.5F); + this.Back_Arm_Upper.setTextureSize(65, 32); + this.Back_Arm_Upper.mirror = true; + this.setRotation(this.Back_Arm_Upper, 2.281837F, 3.141593F, 0.0F); + this.Back_Arm_Lower = new ModelRenderer(this, 30, 5); + this.Back_Arm_Lower.addBox(-0.5F, 0.0F, 0.0F, 1, 2, 1); + this.Back_Arm_Lower.setRotationPoint(0.0F, 17.4F, 1.0F); + this.Back_Arm_Lower.setTextureSize(65, 32); + this.Back_Arm_Lower.mirror = true; + this.setRotation(this.Back_Arm_Lower, -2.356194F, 3.141593F, 0.0F); + this.Right_Arm_Upper = new ModelRenderer(this, 30, 1); + this.Right_Arm_Upper.addBox(-0.5F, 0.0F, 0.0F, 1, 2, 1); + this.Right_Arm_Upper.setRotationPoint(-2.5F, 16.9F, 0.0F); + this.Right_Arm_Upper.setTextureSize(65, 32); + this.Right_Arm_Upper.mirror = true; + this.setRotation(this.Right_Arm_Upper, 2.281837F, 1.570796F, 0.0F); + this.Right_Arm_Lower = new ModelRenderer(this, 30, 5); + this.Right_Arm_Lower.addBox(-0.5F, 0.0F, 0.0F, 1, 2, 1); + this.Right_Arm_Lower.setRotationPoint(-1.0F, 17.4F, 0.0F); + this.Right_Arm_Lower.setTextureSize(65, 32); + this.Right_Arm_Lower.mirror = true; + this.setRotation(this.Right_Arm_Lower, -2.356194F, 1.570796F, 0.0F); + this.Front_Arm_Upper = new ModelRenderer(this, 30, 1); + this.Front_Arm_Upper.addBox(-0.5F, 0.0F, 0.0F, 1, 2, 1); + this.Front_Arm_Upper.setRotationPoint(0.0F, 16.9F, -2.5F); + this.Front_Arm_Upper.setTextureSize(65, 32); + this.Front_Arm_Upper.mirror = true; + this.setRotation(this.Front_Arm_Upper, 2.281837F, 0.0F, 0.0F); + this.Front_Arm_Lower = new ModelRenderer(this, 30, 5); + this.Front_Arm_Lower.addBox(-0.5F, 0.0F, 0.0F, 1, 2, 1); + this.Front_Arm_Lower.setRotationPoint(0.0F, 17.4F, -1.0F); + this.Front_Arm_Lower.setTextureSize(65, 32); + this.Front_Arm_Lower.mirror = true; + this.setRotation(this.Front_Arm_Lower, -2.356194F, 0.0F, 0.0F); + this.Left_Arm_Upper = new ModelRenderer(this, 30, 1); + this.Left_Arm_Upper.addBox(-0.5F, 0.0F, 0.0F, 1, 2, 1); + this.Left_Arm_Upper.setRotationPoint(2.5F, 16.9F, 0.0F); + this.Left_Arm_Upper.setTextureSize(65, 32); + this.Left_Arm_Upper.mirror = true; + this.setRotation(this.Left_Arm_Upper, 2.281837F, -1.570796F, 0.0F); + this.Left_Arm_Lower = new ModelRenderer(this, 30, 5); + this.Left_Arm_Lower.addBox(-0.5F, 0.0F, 0.0F, 1, 2, 1); + this.Left_Arm_Lower.setRotationPoint(1.0F, 17.4F, 0.0F); + this.Left_Arm_Lower.setTextureSize(65, 32); + this.Left_Arm_Lower.mirror = true; + this.setRotation(this.Left_Arm_Lower, -2.356194F, -1.570796F, 0.0F); + this.Middle_Rotor_Focus_Lazer = new ModelRenderer(this, 11, 18); + this.Middle_Rotor_Focus_Lazer.addBox(2.5F, -0.5F, -0.5F, 2, 1, 1); + this.Middle_Rotor_Focus_Lazer.setRotationPoint(0.0F, 14.8F, 0.0F); + this.Middle_Rotor_Focus_Lazer.setTextureSize(65, 32); + this.Middle_Rotor_Focus_Lazer.mirror = true; + this.setRotation(this.Middle_Rotor_Focus_Lazer, 0.0F, -0.7853982F, -0.3316126F); + this.Middle_Rotor_Uppper_Arm = new ModelRenderer(this, 50, 19); + this.Middle_Rotor_Uppper_Arm.addBox(0.8F, -4.0F, -0.5F, 3, 1, 1); + this.Middle_Rotor_Uppper_Arm.setRotationPoint(0.0F, 14.3F, 0.0F); + this.Middle_Rotor_Uppper_Arm.setTextureSize(65, 32); + this.Middle_Rotor_Uppper_Arm.mirror = true; + this.setRotation(this.Middle_Rotor_Uppper_Arm, 0.0F, -0.7853982F, 1.082104F); + this.Middle_Rotor_Lower_Arm = new ModelRenderer(this, 17, 7); + this.Middle_Rotor_Lower_Arm.addBox(-0.5F, -0.6F, 4.5F, 1, 5, 1); + this.Middle_Rotor_Lower_Arm.setRotationPoint(0.0F, 14.3F, 0.0F); + this.Middle_Rotor_Lower_Arm.setTextureSize(65, 32); + this.Middle_Rotor_Lower_Arm.mirror = true; + this.setRotation(this.Middle_Rotor_Lower_Arm, -0.3839724F, 0.7853982F, 0.0F); + this.Middle_Rotor_Arm_Base = new ModelRenderer(this, 11, 21); + this.Middle_Rotor_Arm_Base.addBox(1.5F, -0.5F, -0.5F, 2, 1, 1); + this.Middle_Rotor_Arm_Base.setRotationPoint(0.0F, 20.6F, 0.0F); + this.Middle_Rotor_Arm_Base.setTextureSize(65, 32); + this.Middle_Rotor_Arm_Base.mirror = true; + this.setRotation(this.Middle_Rotor_Arm_Base, 0.0F, -0.7853982F, 0.0F); + this.Middle_Rotor = new ModelRenderer(this, 4, 1); + this.Middle_Rotor.addBox(-1.5F, -0.5F, -1.5F, 3, 1, 3); + this.Middle_Rotor.setRotationPoint(0.0F, 20.6F, 0.0F); + this.Middle_Rotor.setTextureSize(65, 32); + this.Middle_Rotor.mirror = true; + this.setRotation(this.Middle_Rotor, 0.0F, 0.0F, 0.0F); + this.Bottom_Rotor_Upper_Arm = new ModelRenderer(this, 17, 6); + this.Bottom_Rotor_Upper_Arm.addBox(-0.5F, -6.2F, -4.1F, 1, 1, 8); + this.Bottom_Rotor_Upper_Arm.setRotationPoint(0.0F, 15.3F, 0.0F); + this.Bottom_Rotor_Upper_Arm.setTextureSize(65, 32); + this.Bottom_Rotor_Upper_Arm.mirror = true; + this.setRotation(this.Bottom_Rotor_Upper_Arm, -1.082104F, -0.7853982F, 0.0F); + this.Bottom_Rotor_Lower_Arm = new ModelRenderer(this, 0, 0); + this.Bottom_Rotor_Lower_Arm.addBox(-0.5F, -2.2F, 6.0F, 1, 7, 1); + this.Bottom_Rotor_Lower_Arm.setRotationPoint(0.0F, 15.3F, 0.0F); + this.Bottom_Rotor_Lower_Arm.setTextureSize(65, 32); + this.Bottom_Rotor_Lower_Arm.mirror = true; + this.setRotation(this.Bottom_Rotor_Lower_Arm, -0.3839724F, -0.7853982F, 0.0F); + this.Bottom_Rotor_Arm_Base = new ModelRenderer(this, 50, 22); + this.Bottom_Rotor_Arm_Base.addBox(1.0F, -0.5F, -0.5F, 4, 1, 1); + this.Bottom_Rotor_Arm_Base.setRotationPoint(0.0F, 21.9F, 0.0F); + this.Bottom_Rotor_Arm_Base.setTextureSize(65, 32); + this.Bottom_Rotor_Arm_Base.mirror = true; + this.setRotation(this.Bottom_Rotor_Arm_Base, 0.0F, -2.356194F, 0.0F); + this.Bottom_Rotor = new ModelRenderer(this, 4, 11); + this.Bottom_Rotor.addBox(-1.5F, -0.5F, -1.5F, 3, 1, 3); + this.Bottom_Rotor.setRotationPoint(0.0F, 21.9F, 0.0F); + this.Bottom_Rotor.setTextureSize(65, 32); + this.Bottom_Rotor.mirror = true; + this.setRotation(this.Bottom_Rotor, 0.0F, -1.570796F, 0.0F); + this.Resonance_Crystal = new ModelRenderer(this, 0, 27); + this.Resonance_Crystal.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1); + this.Resonance_Crystal.setRotationPoint(0.0F, 10.7F, 0.0F); + this.Resonance_Crystal.setTextureSize(65, 32); + this.Resonance_Crystal.mirror = true; + this.setRotation(this.Resonance_Crystal, 0.7853982F, 3.141593F, 0.6108652F); + this.Resonator_Unit = new ModelRenderer(this, 17, 1); + this.Resonator_Unit.addBox(-1.0F, -8.0F, -1.0F, 2, 2, 2); + this.Resonator_Unit.setRotationPoint(0.0F, 17.0F, 0.0F); + this.Resonator_Unit.setTextureSize(65, 32); + this.Resonator_Unit.mirror = true; + this.setRotation(this.Resonator_Unit, 0.0F, -2.356194F, 0.0F); + this.Resonator_Assembly = new ModelRenderer(this, 0, 21); + this.Resonator_Assembly.addBox(-1.5F, -8.9F, -1.5F, 3, 2, 3); + this.Resonator_Assembly.setRotationPoint(0.0F, 17.0F, 0.0F); + this.Resonator_Assembly.setTextureSize(65, 32); + this.Resonator_Assembly.mirror = true; + this.setRotation(this.Resonator_Assembly, 0.0F, -1.570796F, 0.0F); + this.Bottom_Rotor_Resonator_Arm = new ModelRenderer(this, 0, 17); + this.Bottom_Rotor_Resonator_Arm.addBox(1.5F, -10.6F, -1.0F, 3, 1, 2); + this.Bottom_Rotor_Resonator_Arm.setRotationPoint(0.0F, 19.0F, 0.0F); + this.Bottom_Rotor_Resonator_Arm.setTextureSize(65, 32); + this.Bottom_Rotor_Resonator_Arm.mirror = true; + this.setRotation(this.Bottom_Rotor_Resonator_Arm, 0.0F, -2.356194F, 0.0F); + } + + public void render(float rotationYaw, float rotationYaw2, float rotationYaw3, float f5) { + this.Safety_Glass_Front.render(f5); + this.Safety_Glass_Right.render(f5); + this.Safety_Glass_Back.render(f5); + this.Safety_Glass_Left.render(f5); + this.Safety_Glass_Top.render(f5); + this.Circuit1.render(f5); + this.Circuit2.render(f5); + this.Circuit3.render(f5); + this.Circuit4.render(f5); + this.RAM1.render(f5); + this.Control_Pad.render(f5); + this.RAM2.render(f5); + this.Control_Pad_Ribbon_Cable.render(f5); + this.RAM3.render(f5); + this.Control_Pad_Ribbon_Connector.render(f5); + this.RAM4.render(f5); + this.Plinth_Base_Ribbon_Connector.render(f5); + this.Material_Plinth_Core.render(f5); + this.Material_Plinth_Base.render(f5); + this.Material_Plinth_Stand.render(f5); + this.Plinth_Base_Plate.render(f5); + GL11.glPushMatrix(); + GL11.glRotatef(-rotationYaw, 0.0F, 1.0F, 0.0F); + this.Back_Arm_Upper.render(f5); + this.Back_Arm_Lower.render(f5); + this.Right_Arm_Upper.render(f5); + this.Right_Arm_Lower.render(f5); + this.Front_Arm_Upper.render(f5); + this.Front_Arm_Lower.render(f5); + this.Left_Arm_Upper.render(f5); + this.Left_Arm_Lower.render(f5); + GL11.glPopMatrix(); + GL11.glPushMatrix(); + GL11.glRotatef(rotationYaw2, 0.0F, 1.0F, 0.0F); + this.Middle_Rotor_Focus_Lazer.render(f5); + this.Middle_Rotor_Uppper_Arm.render(f5); + this.Middle_Rotor_Lower_Arm.render(f5); + this.Middle_Rotor_Arm_Base.render(f5); + this.Middle_Rotor.render(f5); + GL11.glPopMatrix(); + GL11.glPushMatrix(); + GL11.glRotatef(-rotationYaw3, 0.0F, 1.0F, 0.0F); + this.Bottom_Rotor_Upper_Arm.render(f5); + this.Bottom_Rotor_Lower_Arm.render(f5); + this.Bottom_Rotor_Arm_Base.render(f5); + this.Bottom_Rotor.render(f5); + this.Bottom_Rotor_Resonator_Arm.render(f5); + GL11.glPopMatrix(); + this.Resonance_Crystal.rotateAngleY = (float)Math.toRadians((double)rotationYaw); + this.Resonance_Crystal.render(f5); + this.Resonator_Unit.render(f5); + this.Resonator_Assembly.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } +} diff --git a/src/main/java/atomicscience/muoxing/MCentrifuge.java b/src/main/java/atomicscience/muoxing/MCentrifuge.java new file mode 100644 index 0000000..64477c0 --- /dev/null +++ b/src/main/java/atomicscience/muoxing/MCentrifuge.java @@ -0,0 +1,132 @@ +package atomicscience.muoxing; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; + +@SideOnly(Side.CLIENT) +public class MCentrifuge extends ModelBase { + ModelRenderer A; + ModelRenderer B; + ModelRenderer C; + ModelRenderer D; + ModelRenderer E; + ModelRenderer F; + ModelRenderer G; + ModelRenderer H; + ModelRenderer I; + ModelRenderer JROT; + ModelRenderer KROT; + ModelRenderer LROT; + ModelRenderer MROT; + + public MCentrifuge() { + super.textureWidth = 128; + super.textureHeight = 128; + this.A = new ModelRenderer(this, 0, 0); + this.A.addBox(-8.0F, 0.0F, -8.0F, 16, 1, 16); + this.A.setRotationPoint(0.0F, 23.0F, 0.0F); + this.A.setTextureSize(64, 32); + this.A.mirror = true; + this.setRotation(this.A, 0.0F, 0.0F, 0.0F); + this.B = new ModelRenderer(this, 0, 19); + this.B.addBox(-6.0F, 0.0F, -6.0F, 12, 1, 12); + this.B.setRotationPoint(0.0F, 22.0F, 0.0F); + this.B.setTextureSize(64, 32); + this.B.mirror = true; + this.setRotation(this.B, 0.0F, 0.0F, 0.0F); + this.C = new ModelRenderer(this, 0, 43); + this.C.addBox(-1.0F, 0.0F, -1.0F, 2, 12, 2); + this.C.setRotationPoint(0.0F, 10.0F, 0.0F); + this.C.setTextureSize(64, 32); + this.C.mirror = true; + this.setRotation(this.C, 0.0F, 0.0F, 0.0F); + this.D = new ModelRenderer(this, 67, 0); + this.D.addBox(-4.0F, 0.0F, -4.0F, 8, 4, 8); + this.D.setRotationPoint(0.0F, 18.0F, 0.0F); + this.D.setTextureSize(64, 32); + this.D.mirror = true; + this.setRotation(this.D, 0.0F, 0.0F, 0.0F); + this.E = new ModelRenderer(this, 0, 34); + this.E.addBox(-1.0F, 0.0F, 4.0F, 2, 6, 1); + this.E.setRotationPoint(0.0F, 16.0F, 0.0F); + this.E.setTextureSize(64, 32); + this.E.mirror = true; + this.setRotation(this.E, 0.0F, 0.7853982F, 0.0F); + this.F = new ModelRenderer(this, 0, 34); + this.F.addBox(-1.0F, 0.0F, 4.0F, 2, 6, 1); + this.F.setRotationPoint(0.0F, 16.0F, 0.0F); + this.F.setTextureSize(64, 32); + this.F.mirror = true; + this.setRotation(this.F, 0.0F, -0.7853982F, 0.0F); + this.G = new ModelRenderer(this, 67, 13); + this.G.addBox(-4.0F, 0.0F, -8.0F, 8, 12, 4); + this.G.setRotationPoint(0.0F, 12.0F, 0.0F); + this.G.setTextureSize(64, 32); + this.G.mirror = true; + this.setRotation(this.G, 0.0F, 0.0F, 0.0F); + this.H = new ModelRenderer(this, 67, 31); + this.H.addBox(-4.0F, 0.0F, -4.0F, 8, 7, 2); + this.H.setRotationPoint(0.0F, 12.0F, 0.0F); + this.H.setTextureSize(64, 32); + this.H.mirror = true; + this.setRotation(this.H, -1.064651F, 0.0F, 0.0F); + this.I = new ModelRenderer(this, 9, 43); + this.I.addBox(-2.0F, -3.0F, -2.0F, 4, 2, 4); + this.I.setRotationPoint(0.0F, 12.0F, 0.0F); + this.I.setTextureSize(64, 32); + this.I.mirror = true; + this.setRotation(this.I, 0.0F, 0.0F, 0.0F); + this.JROT = new ModelRenderer(this, 8, 34); + this.JROT.addBox(1.0F, 0.0F, 1.0F, 1, 2, 1); + this.JROT.setRotationPoint(0.0F, 16.0F, 0.0F); + this.JROT.setTextureSize(64, 32); + this.JROT.mirror = true; + this.setRotation(this.JROT, 0.0F, 0.0F, 0.0F); + this.KROT = new ModelRenderer(this, 8, 34); + this.KROT.addBox(-2.0F, 0.0F, 1.0F, 1, 2, 1); + this.KROT.setRotationPoint(0.0F, 16.0F, 0.0F); + this.KROT.setTextureSize(64, 32); + this.KROT.mirror = true; + this.setRotation(this.KROT, 0.0F, 0.0F, 0.0F); + this.LROT = new ModelRenderer(this, 8, 34); + this.LROT.addBox(1.0F, 0.0F, -2.0F, 1, 2, 1); + this.LROT.setRotationPoint(0.0F, 16.0F, 0.0F); + this.LROT.setTextureSize(64, 32); + this.LROT.mirror = true; + this.setRotation(this.LROT, 0.0F, 0.0F, 0.0F); + this.MROT = new ModelRenderer(this, 8, 34); + this.MROT.addBox(-2.0F, 0.0F, -2.0F, 1, 2, 1); + this.MROT.setRotationPoint(0.0F, 16.0F, 0.0F); + this.MROT.setTextureSize(64, 32); + this.MROT.mirror = true; + this.setRotation(this.MROT, 0.0F, 0.0F, 0.0F); + } + + public void render(float xuanZhuan, float f5) { + this.A.render(f5); + this.B.render(f5); + this.C.render(f5); + this.D.render(f5); + this.E.render(f5); + this.F.render(f5); + this.G.render(f5); + this.H.render(f5); + this.I.render(f5); + this.JROT.rotateAngleY = xuanZhuan; + this.JROT.render(f5); + this.KROT.rotateAngleY = xuanZhuan; + this.KROT.render(f5); + this.LROT.rotateAngleY = xuanZhuan; + this.LROT.render(f5); + this.MROT.rotateAngleY = xuanZhuan; + this.MROT.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } +} diff --git a/src/main/java/atomicscience/muoxing/MCube.java b/src/main/java/atomicscience/muoxing/MCube.java new file mode 100644 index 0000000..5cfef14 --- /dev/null +++ b/src/main/java/atomicscience/muoxing/MCube.java @@ -0,0 +1,24 @@ +package atomicscience.muoxing; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; + +@SideOnly(Side.CLIENT) +public class MCube extends ModelBase { + public static final MCube INSTNACE = new MCube(); + private ModelRenderer cube = new ModelRenderer(this, 0, 0); + + public MCube() { + byte size = 16; + this.cube.addBox((float)(-size / 2), (float)(-size / 2), (float)(-size / 2), size, size, size); + this.cube.setTextureSize(112, 70); + this.cube.mirror = true; + } + + public void render() { + float f = 0.0625F; + this.cube.render(f); + } +} diff --git a/src/main/java/atomicscience/muoxing/MExtractor.java b/src/main/java/atomicscience/muoxing/MExtractor.java new file mode 100644 index 0000000..cfcc16b --- /dev/null +++ b/src/main/java/atomicscience/muoxing/MExtractor.java @@ -0,0 +1,131 @@ +package atomicscience.muoxing; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; + +@SideOnly(Side.CLIENT) +public class MExtractor extends ModelBase { + ModelRenderer MAIN_BASE; + ModelRenderer CORNER_SUPPORT_1; + ModelRenderer CORNER_SUPPORT_2; + ModelRenderer CORNER_SUPPORT_3; + ModelRenderer CORNER_SUPPORT_4; + ModelRenderer SUPPORT_BEAM_1; + ModelRenderer SUPPORT_BEAM_2; + ModelRenderer MAIN_CHAMBER_ROTATES; + ModelRenderer MAGNET_1_ROTATES; + ModelRenderer MAGNET_2_ROTATES; + ModelRenderer ENERGY_PLUG; + ModelRenderer KEYBOARD_SUPPORT; + ModelRenderer KEYBOARD; + + public MExtractor() { + super.textureWidth = 128; + super.textureHeight = 128; + this.MAIN_BASE = new ModelRenderer(this, 0, 0); + this.MAIN_BASE.addBox(0.0F, 0.0F, 0.0F, 14, 1, 14); + this.MAIN_BASE.setRotationPoint(-7.0F, 23.0F, -7.0F); + this.MAIN_BASE.setTextureSize(128, 128); + this.MAIN_BASE.mirror = true; + this.setRotation(this.MAIN_BASE, 0.0F, 0.0F, 0.0F); + this.CORNER_SUPPORT_1 = new ModelRenderer(this, 0, 19); + this.CORNER_SUPPORT_1.addBox(0.0F, 0.0F, 0.0F, 2, 2, 2); + this.CORNER_SUPPORT_1.setRotationPoint(6.0F, 22.0F, -8.0F); + this.CORNER_SUPPORT_1.setTextureSize(128, 128); + this.CORNER_SUPPORT_1.mirror = true; + this.setRotation(this.CORNER_SUPPORT_1, 0.0F, 0.0F, 0.0F); + this.CORNER_SUPPORT_2 = new ModelRenderer(this, 0, 19); + this.CORNER_SUPPORT_2.addBox(0.0F, 0.0F, 0.0F, 2, 2, 2); + this.CORNER_SUPPORT_2.setRotationPoint(-8.0F, 22.0F, 6.0F); + this.CORNER_SUPPORT_2.setTextureSize(128, 128); + this.CORNER_SUPPORT_2.mirror = true; + this.setRotation(this.CORNER_SUPPORT_2, 0.0F, 0.0F, 0.0F); + this.CORNER_SUPPORT_3 = new ModelRenderer(this, 0, 19); + this.CORNER_SUPPORT_3.addBox(0.0F, 0.0F, 0.0F, 2, 2, 2); + this.CORNER_SUPPORT_3.setRotationPoint(-8.0F, 22.0F, -8.0F); + this.CORNER_SUPPORT_3.setTextureSize(128, 128); + this.CORNER_SUPPORT_3.mirror = true; + this.setRotation(this.CORNER_SUPPORT_3, 0.0F, 0.0F, 0.0F); + this.CORNER_SUPPORT_4 = new ModelRenderer(this, 0, 19); + this.CORNER_SUPPORT_4.addBox(0.0F, 0.0F, 0.0F, 2, 2, 2); + this.CORNER_SUPPORT_4.setRotationPoint(6.0F, 22.0F, 6.0F); + this.CORNER_SUPPORT_4.setTextureSize(128, 128); + this.CORNER_SUPPORT_4.mirror = true; + this.setRotation(this.CORNER_SUPPORT_4, 0.0F, 0.0F, 0.0F); + this.SUPPORT_BEAM_1 = new ModelRenderer(this, 10, 19); + this.SUPPORT_BEAM_1.addBox(0.0F, 0.0F, 0.0F, 2, 8, 1); + this.SUPPORT_BEAM_1.setRotationPoint(2.0F, 16.0F, -8.0F); + this.SUPPORT_BEAM_1.setTextureSize(128, 128); + this.SUPPORT_BEAM_1.mirror = true; + this.setRotation(this.SUPPORT_BEAM_1, 0.0F, 0.0F, 0.0F); + this.SUPPORT_BEAM_2 = new ModelRenderer(this, 10, 19); + this.SUPPORT_BEAM_2.addBox(0.0F, 0.0F, 0.0F, 2, 8, 1); + this.SUPPORT_BEAM_2.setRotationPoint(2.0F, 16.0F, 7.0F); + this.SUPPORT_BEAM_2.setTextureSize(128, 128); + this.SUPPORT_BEAM_2.mirror = true; + this.setRotation(this.SUPPORT_BEAM_2, 0.0F, 0.0F, 0.0F); + this.MAIN_CHAMBER_ROTATES = new ModelRenderer(this, 0, 29); + this.MAIN_CHAMBER_ROTATES.addBox(-2.0F, -2.0F, -7.0F, 4, 4, 14); + this.MAIN_CHAMBER_ROTATES.setRotationPoint(3.0F, 17.0F, 0.0F); + this.MAIN_CHAMBER_ROTATES.setTextureSize(128, 128); + this.MAIN_CHAMBER_ROTATES.mirror = true; + this.setRotation(this.MAIN_CHAMBER_ROTATES, 0.0F, 0.0F, 0.0F); + this.MAGNET_1_ROTATES = new ModelRenderer(this, 25, 19); + this.MAGNET_1_ROTATES.addBox(-3.0F, -3.0F, -2.0F, 6, 6, 4); + this.MAGNET_1_ROTATES.setRotationPoint(3.0F, 17.0F, 3.0F); + this.MAGNET_1_ROTATES.setTextureSize(128, 128); + this.MAGNET_1_ROTATES.mirror = true; + this.setRotation(this.MAGNET_1_ROTATES, 0.0F, 0.0F, 0.0F); + this.MAGNET_2_ROTATES = new ModelRenderer(this, 25, 19); + this.MAGNET_2_ROTATES.addBox(-3.0F, -3.0F, -2.0F, 6, 6, 4); + this.MAGNET_2_ROTATES.setRotationPoint(3.0F, 17.0F, -3.0F); + this.MAGNET_2_ROTATES.setTextureSize(128, 128); + this.MAGNET_2_ROTATES.mirror = true; + this.setRotation(this.MAGNET_2_ROTATES, 0.0F, 0.0F, 0.0F); + this.ENERGY_PLUG = new ModelRenderer(this, 58, 0); + this.ENERGY_PLUG.addBox(0.0F, 0.0F, 0.0F, 4, 12, 11); + this.ENERGY_PLUG.setRotationPoint(-6.0F, 12.0F, -3.0F); + this.ENERGY_PLUG.setTextureSize(128, 128); + this.ENERGY_PLUG.mirror = true; + this.setRotation(this.ENERGY_PLUG, 0.0F, 0.0F, 0.0F); + this.KEYBOARD_SUPPORT = new ModelRenderer(this, 0, 48); + this.KEYBOARD_SUPPORT.addBox(0.0F, 0.0F, 0.0F, 1, 12, 2); + this.KEYBOARD_SUPPORT.setRotationPoint(-6.0F, 11.0F, -6.0F); + this.KEYBOARD_SUPPORT.setTextureSize(128, 128); + this.KEYBOARD_SUPPORT.mirror = true; + this.setRotation(this.KEYBOARD_SUPPORT, 0.0F, 1.570796F, 0.0F); + this.KEYBOARD = new ModelRenderer(this, 7, 48); + this.KEYBOARD.addBox(0.0F, 0.0F, 0.0F, 4, 1, 12); + this.KEYBOARD.setRotationPoint(3.0F, 11.0F, -8.0F); + this.KEYBOARD.setTextureSize(128, 128); + this.KEYBOARD.mirror = true; + this.setRotation(this.KEYBOARD, 0.0F, -1.570796F, -0.5235988F); + } + + public void render(float rotation, float f5) { + this.MAIN_BASE.render(f5); + this.CORNER_SUPPORT_1.render(f5); + this.CORNER_SUPPORT_2.render(f5); + this.CORNER_SUPPORT_3.render(f5); + this.CORNER_SUPPORT_4.render(f5); + this.SUPPORT_BEAM_1.render(f5); + this.SUPPORT_BEAM_2.render(f5); + this.MAIN_CHAMBER_ROTATES.rotateAngleZ = rotation; + this.MAIN_CHAMBER_ROTATES.render(f5); + this.MAGNET_1_ROTATES.rotateAngleZ = rotation; + this.MAGNET_1_ROTATES.render(f5); + this.MAGNET_2_ROTATES.rotateAngleZ = rotation; + this.MAGNET_2_ROTATES.render(f5); + this.ENERGY_PLUG.render(f5); + this.KEYBOARD_SUPPORT.render(f5); + this.KEYBOARD.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } +} diff --git a/src/main/java/atomicscience/muoxing/MFusionReactor.java b/src/main/java/atomicscience/muoxing/MFusionReactor.java new file mode 100644 index 0000000..434a238 --- /dev/null +++ b/src/main/java/atomicscience/muoxing/MFusionReactor.java @@ -0,0 +1,227 @@ +package atomicscience.muoxing; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; + +@SideOnly(Side.CLIENT) +public class MFusionReactor extends ModelBase { + ModelRenderer a; + ModelRenderer b; + ModelRenderer c; + ModelRenderer d; + ModelRenderer e; + ModelRenderer f; + ModelRenderer g; + ModelRenderer h; + ModelRenderer i; + ModelRenderer j; + ModelRenderer k; + ModelRenderer l; + ModelRenderer m; + ModelRenderer n; + ModelRenderer o; + ModelRenderer p; + ModelRenderer q; + ModelRenderer rrot; + ModelRenderer srot; + ModelRenderer t; + ModelRenderer u; + ModelRenderer v; + ModelRenderer w; + ModelRenderer x; + ModelRenderer y; + + + public MFusionReactor() { + super.textureWidth = 128; + super.textureHeight = 128; + this.a = new ModelRenderer(this, 0, 0); + this.a.addBox(-8.0F, 0.0F, -8.0F, 16, 1, 16); + this.a.setRotationPoint(0.0F, 23.0F, 0.0F); + this.a.setTextureSize(128, 128); + this.a.mirror = true; + this.setRotation(this.a, 0.0F, 0.0F, 0.0F); + this.b = new ModelRenderer(this, 0, 66); + this.b.addBox(-4.0F, 0.0F, -1.0F, 8, 13, 2); + this.b.setRotationPoint(0.0F, 10.0F, 7.0F); + this.b.setTextureSize(128, 128); + this.b.mirror = true; + this.setRotation(this.b, 0.0F, 0.0F, 0.0F); + this.c = new ModelRenderer(this, 22, 82); + this.c.addBox(-4.0F, 0.0F, -2.0F, 8, 2, 2); + this.c.setRotationPoint(0.0F, 8.0F, 6.0F); + this.c.setTextureSize(128, 128); + this.c.mirror = true; + this.setRotation(this.c, 0.0F, 0.0F, 0.0F); + this.d = new ModelRenderer(this, 22, 66); + this.d.addBox(0.0F, 0.0F, 0.0F, 8, 5, 2); + this.d.setRotationPoint(-4.0F, 10.0F, 4.0F); + this.d.setTextureSize(128, 128); + this.d.mirror = true; + this.setRotation(this.d, 0.418879F, 0.0F, 0.0F); + this.e = new ModelRenderer(this, 0, 42); + this.e.addBox(0.0F, 0.0F, 0.0F, 2, 13, 6); + this.e.setRotationPoint(6.0F, 10.0F, -2.0F); + this.e.setTextureSize(128, 128); + this.e.mirror = true; + this.setRotation(this.e, 0.0F, 0.0F, 0.0F); + this.f = new ModelRenderer(this, 65, 43); + this.f.addBox(-1.0F, -1.0F, -3.0F, 2, 2, 6); + this.f.setRotationPoint(6.0F, 10.0F, 1.0F); + this.f.setTextureSize(128, 128); + this.f.mirror = true; + this.setRotation(this.f, 0.0F, 0.0F, 0.7853982F); + this.g = new ModelRenderer(this, 17, 42); + this.g.addBox(0.0F, 0.0F, 0.0F, 2, 5, 6); + this.g.setRotationPoint(4.0F, 10.0F, -2.0F); + this.g.setTextureSize(128, 128); + this.g.mirror = true; + this.setRotation(this.g, 0.0F, 0.0F, -0.4014257F); + this.h = new ModelRenderer(this, 0, 18); + this.h.addBox(0.0F, 0.0F, 0.0F, 2, 13, 6); + this.h.setRotationPoint(-8.0F, 10.0F, -2.0F); + this.h.setTextureSize(128, 128); + this.h.mirror = true; + this.setRotation(this.h, 0.0F, 0.0F, 0.0F); + this.i = new ModelRenderer(this, 0, 103); + this.i.addBox(0.0F, 0.0F, 0.0F, 12, 2, 6); + this.i.setRotationPoint(-6.0F, 8.0F, -2.0F); + this.i.setTextureSize(128, 128); + this.i.mirror = true; + this.setRotation(this.i, 0.0F, 0.0F, 0.0F); + this.j = new ModelRenderer(this, 17, 18); + this.j.addBox(-2.0F, 0.0F, 0.0F, 2, 5, 6); + this.j.setRotationPoint(-4.0F, 10.0F, -2.0F); + this.j.setTextureSize(128, 128); + this.j.mirror = true; + this.setRotation(this.j, 0.0F, 0.0F, 0.418879F); + this.k = new ModelRenderer(this, 0, 83); + this.k.addBox(-3.0F, 0.0F, -2.0F, 6, 15, 3); + this.k.setRotationPoint(5.0F, 8.0F, 5.0F); + this.k.setTextureSize(128, 128); + this.k.mirror = true; + this.setRotation(this.k, 0.0F, 0.7853982F, 0.0F); + this.l = new ModelRenderer(this, 0, 83); + this.l.addBox(-3.0F, 0.0F, -2.0F, 6, 15, 3); + this.l.setRotationPoint(-5.0F, 8.0F, 5.0F); + this.l.setTextureSize(128, 128); + this.l.mirror = true; + this.setRotation(this.l, 0.0F, -0.7853982F, 0.0F); + this.m = new ModelRenderer(this, 65, 43); + this.m.addBox(-1.0F, -1.0F, -3.0F, 2, 2, 6); + this.m.setRotationPoint(-6.0F, 10.0F, 1.0F); + this.m.setTextureSize(128, 128); + this.m.mirror = true; + this.setRotation(this.m, 0.0F, 0.0F, 0.7853982F); + this.n = new ModelRenderer(this, 65, 38); + this.n.addBox(-4.0F, -1.0F, -1.0F, 8, 2, 2); + this.n.setRotationPoint(0.0F, 10.0F, 6.0F); + this.n.setTextureSize(128, 128); + this.n.mirror = true; + this.setRotation(this.n, 0.7853982F, 0.0F, 0.0F); + this.o = new ModelRenderer(this, 17, 54); + this.o.addBox(0.0F, 0.0F, 0.0F, 1, 4, 6); + this.o.setRotationPoint(6.0F, 20.0F, -2.0F); + this.o.setTextureSize(128, 128); + this.o.mirror = true; + this.setRotation(this.o, 0.0F, 0.0F, 0.7330383F); + this.p = new ModelRenderer(this, 17, 30); + this.p.addBox(-1.0F, 0.0F, 0.0F, 1, 4, 6); + this.p.setRotationPoint(-6.0F, 20.0F, -2.0F); + this.p.setTextureSize(128, 128); + this.p.mirror = true; + this.setRotation(this.p, 0.0F, 0.0F, -0.7330383F); + this.q = new ModelRenderer(this, 22, 74); + this.q.addBox(0.0F, 0.0F, -1.0F, 8, 6, 1); + this.q.setRotationPoint(-4.0F, 19.0F, 7.0F); + this.q.setTextureSize(128, 128); + this.q.mirror = true; + this.setRotation(this.q, -0.6283185F, 0.0F, 0.0F); + this.rrot = new ModelRenderer(this, 65, 0); + this.rrot.addBox(-1.0F, 0.0F, -1.0F, 2, 13, 2); + this.rrot.setRotationPoint(0.0F, 10.0F, 0.0F); + this.rrot.setTextureSize(128, 128); + this.rrot.mirror = true; + this.setRotation(this.rrot, 0.0F, 0.0F, 0.0F); + this.srot = new ModelRenderer(this, 74, 0); + this.srot.addBox(-2.0F, 0.0F, -2.0F, 4, 9, 4); + this.srot.setRotationPoint(0.0F, 12.0F, 0.0F); + this.srot.setTextureSize(128, 128); + this.srot.mirror = true; + this.setRotation(this.srot, 0.0F, 0.0F, 0.0F); + this.t = new ModelRenderer(this, 65, 19); + this.t.addBox(-8.0F, 0.0F, 0.0F, 16, 2, 1); + this.t.setRotationPoint(0.0F, 21.0F, -3.0F); + this.t.setTextureSize(128, 128); + this.t.mirror = true; + this.setRotation(this.t, 0.0F, 0.0F, 0.0F); + this.u = new ModelRenderer(this, 65, 24); + this.u.addBox(-1.0F, 0.0F, -1.0F, 2, 10, 2); + this.u.setRotationPoint(4.0F, 13.0F, -6.0F); + this.u.setTextureSize(128, 128); + this.u.mirror = true; + this.setRotation(this.u, 0.0F, 0.0F, 0.0F); + this.v = new ModelRenderer(this, 74, 24); + this.v.addBox(-3.0F, -1.0F, -2.0F, 6, 2, 4); + this.v.setRotationPoint(4.0F, 13.0F, -6.0F); + this.v.setTextureSize(128, 128); + this.v.mirror = true; + this.setRotation(this.v, 0.7679449F, 0.0F, 0.0F); + this.w = new ModelRenderer(this, 46, 24); + this.w.addBox(0.0F, 0.0F, 0.0F, 5, 8, 4); + this.w.setRotationPoint(-7.0F, 15.0F, -7.0F); + this.w.setTextureSize(128, 128); + this.w.mirror = true; + this.setRotation(this.w, 0.0F, 0.0F, 0.0F); + this.x = new ModelRenderer(this, 46, 38); + this.x.addBox(0.0F, 0.0F, 0.0F, 5, 2, 3); + this.x.setRotationPoint(-7.0F, 15.0F, -7.0F); + this.x.setTextureSize(128, 128); + this.x.mirror = true; + this.setRotation(this.x, 0.7853982F, 0.0F, 0.0F); + this.y = new ModelRenderer(this, 46, 45); + this.y.addBox(0.0F, 0.0F, 0.0F, 5, 2, 2); + this.y.setRotationPoint(-7.0F, 13.0F, -5.0F); + this.y.setTextureSize(128, 128); + this.y.mirror = true; + this.setRotation(this.y, 0.0F, 0.0F, 0.0F); + } + + public void render(float xuanZhuan, float f5) { + this.a.render(f5); + this.b.render(f5); + this.c.render(f5); + this.d.render(f5); + this.e.render(f5); + this.x.render(f5); + this.g.render(f5); + this.h.render(f5); + this.i.render(f5); + this.j.render(f5); + this.k.render(f5); + this.l.render(f5); + this.m.render(f5); + this.n.render(f5); + this.o.render(f5); + this.p.render(f5); + this.q.render(f5); + this.rrot.rotateAngleY = xuanZhuan; + this.rrot.render(f5); + this.srot.rotateAngleY = xuanZhuan; + this.srot.render(f5); + this.t.render(f5); + this.u.render(f5); + this.v.render(f5); + this.w.render(f5); + this.x.render(f5); + this.y.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } +} diff --git a/src/main/java/atomicscience/muoxing/MLargeTurbine.java b/src/main/java/atomicscience/muoxing/MLargeTurbine.java new file mode 100644 index 0000000..4f3921d --- /dev/null +++ b/src/main/java/atomicscience/muoxing/MLargeTurbine.java @@ -0,0 +1,408 @@ +package atomicscience.muoxing; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import org.lwjgl.opengl.GL11; + +public class MLargeTurbine extends ModelBase { + ModelRenderer Centeraxle; + ModelRenderer wall1; + ModelRenderer wall2; + ModelRenderer wall6; + ModelRenderer wall5; + ModelRenderer wall3; + ModelRenderer wall4; + ModelRenderer wallunder1; + ModelRenderer wallunder3; + ModelRenderer wallunder2; + ModelRenderer wallunder6; + ModelRenderer wallunder5; + ModelRenderer wallunder4; + ModelRenderer Blade1; + ModelRenderer Blade2; + ModelRenderer Blade3; + ModelRenderer Blade4; + ModelRenderer Blade5; + ModelRenderer Blade6; + ModelRenderer LargeBlade1; + ModelRenderer LargeBlade2; + ModelRenderer LargeBlade3; + ModelRenderer LargeBlade4; + ModelRenderer LargeBlade5; + ModelRenderer LargeBlade6; + ModelRenderer MediumBlade1; + ModelRenderer MediumBlade2; + ModelRenderer MediumBlade3; + ModelRenderer MediumBlade4; + ModelRenderer MediumBlade5; + ModelRenderer MediumBlade6; + ModelRenderer Support1; + ModelRenderer support2; + ModelRenderer support3; + ModelRenderer cornerbottom1; + ModelRenderer corner1; + ModelRenderer corner2; + ModelRenderer cornerbottom2; + ModelRenderer corner6; + ModelRenderer cornerbottom6; + ModelRenderer corner5; + ModelRenderer cornerbottom5; + ModelRenderer corner4; + ModelRenderer cornerbottom4; + ModelRenderer corner3; + ModelRenderer cornerbottom3; + ModelRenderer Topelectricityoutput; + + + public MLargeTurbine() { + super.textureWidth = 128; + super.textureHeight = 128; + this.Centeraxle = new ModelRenderer(this, 24, 0); + this.Centeraxle.addBox(-1.0F, 0.0F, -1.0F, 2, 16, 2); + this.Centeraxle.setRotationPoint(0.0F, 8.0F, 0.0F); + this.Centeraxle.setTextureSize(128, 128); + this.Centeraxle.mirror = true; + this.setRotation(this.Centeraxle, 0.0F, 0.0F, 0.0F); + this.wall1 = new ModelRenderer(this, 0, 92); + this.wall1.addBox(-12.0F, 0.0F, 20.0F, 24, 12, 1); + this.wall1.setRotationPoint(0.0F, 14.0F, 0.0F); + this.wall1.setTextureSize(128, 128); + this.wall1.mirror = true; + this.setRotation(this.wall1, 0.2094395F, 0.0F, 0.0F); + this.wall2 = new ModelRenderer(this, 0, 92); + this.wall2.addBox(-12.0F, 0.0F, 20.0F, 24, 12, 1); + this.wall2.setRotationPoint(0.0F, 14.0F, 0.0F); + this.wall2.setTextureSize(128, 128); + this.wall2.mirror = true; + this.setRotation(this.wall2, 0.2094395F, 1.047198F, 0.0F); + this.wall6 = new ModelRenderer(this, 0, 92); + this.wall6.addBox(-12.0F, 0.0F, 20.0F, 24, 12, 1); + this.wall6.setRotationPoint(0.0F, 14.0F, 0.0F); + this.wall6.setTextureSize(128, 128); + this.wall6.mirror = true; + this.setRotation(this.wall6, 0.2094395F, -1.047198F, 0.0F); + this.wall5 = new ModelRenderer(this, 0, 92); + this.wall5.addBox(-12.0F, 0.0F, 20.0F, 24, 12, 1); + this.wall5.setRotationPoint(0.0F, 14.0F, 0.0F); + this.wall5.setTextureSize(128, 128); + this.wall5.mirror = true; + this.setRotation(this.wall5, 0.2094395F, -2.094395F, 0.0F); + this.wall3 = new ModelRenderer(this, 0, 92); + this.wall3.addBox(-12.0F, 0.0F, 20.0F, 24, 12, 1); + this.wall3.setRotationPoint(0.0F, 14.0F, 0.0F); + this.wall3.setTextureSize(128, 128); + this.wall3.mirror = true; + this.setRotation(this.wall3, 0.2094395F, 2.094395F, 0.0F); + this.wall4 = new ModelRenderer(this, 0, 92); + this.wall4.addBox(-12.0F, 0.0F, -21.0F, 24, 12, 1); + this.wall4.setRotationPoint(0.0F, 14.0F, 0.0F); + this.wall4.setTextureSize(128, 128); + this.wall4.mirror = true; + this.setRotation(this.wall4, -0.2094395F, 0.0F, 0.0F); + this.wallunder1 = new ModelRenderer(this, 0, 107); + this.wallunder1.addBox(-13.0F, 0.0F, 21.0F, 26, 6, 1); + this.wallunder1.setRotationPoint(0.0F, 18.0F, 0.0F); + this.wallunder1.setTextureSize(128, 128); + this.wallunder1.mirror = true; + this.setRotation(this.wallunder1, 0.0F, 0.0F, 0.0F); + this.wallunder3 = new ModelRenderer(this, 0, 107); + this.wallunder3.addBox(-13.0F, 0.0F, 21.0F, 26, 6, 1); + this.wallunder3.setRotationPoint(0.0F, 18.0F, 0.0F); + this.wallunder3.setTextureSize(128, 128); + this.wallunder3.mirror = true; + this.setRotation(this.wallunder3, 0.0F, 2.094395F, 0.0F); + this.wallunder2 = new ModelRenderer(this, 0, 107); + this.wallunder2.addBox(-13.0F, 0.0F, 21.0F, 26, 6, 1); + this.wallunder2.setRotationPoint(0.0F, 18.0F, 0.0F); + this.wallunder2.setTextureSize(128, 128); + this.wallunder2.mirror = true; + this.setRotation(this.wallunder2, 0.0F, 1.047198F, 0.0F); + this.wallunder6 = new ModelRenderer(this, 0, 107); + this.wallunder6.addBox(-13.0F, 0.0F, 21.0F, 26, 6, 1); + this.wallunder6.setRotationPoint(0.0F, 18.0F, 0.0F); + this.wallunder6.setTextureSize(128, 128); + this.wallunder6.mirror = true; + this.setRotation(this.wallunder6, 0.0F, -1.047198F, 0.0F); + this.wallunder5 = new ModelRenderer(this, 0, 107); + this.wallunder5.addBox(-13.0F, 0.0F, 21.0F, 26, 6, 1); + this.wallunder5.setRotationPoint(0.0F, 18.0F, 0.0F); + this.wallunder5.setTextureSize(128, 128); + this.wallunder5.mirror = true; + this.setRotation(this.wallunder5, 0.0F, -2.094395F, 0.0F); + this.wallunder4 = new ModelRenderer(this, 0, 107); + this.wallunder4.addBox(-13.0F, 0.0F, -22.0F, 26, 6, 1); + this.wallunder4.setRotationPoint(0.0F, 18.0F, 0.0F); + this.wallunder4.setTextureSize(128, 128); + this.wallunder4.mirror = true; + this.setRotation(this.wallunder4, 0.0F, 0.0F, 0.0F); + this.Blade1 = new ModelRenderer(this, 0, 0); + this.Blade1.addBox(-1.0F, 0.0F, -18.0F, 2, 1, 36); + this.Blade1.setRotationPoint(0.0F, 12.0F, 0.0F); + this.Blade1.setTextureSize(128, 128); + this.Blade1.mirror = true; + this.setRotation(this.Blade1, 0.0F, 0.0F, 0.1745329F); + this.Blade2 = new ModelRenderer(this, 0, 0); + this.Blade2.addBox(-1.0F, 0.0F, -18.0F, 2, 1, 36); + this.Blade2.setRotationPoint(0.0F, 12.0F, 0.0F); + this.Blade2.setTextureSize(128, 128); + this.Blade2.mirror = true; + this.setRotation(this.Blade2, 0.0F, 0.5235988F, 0.1745329F); + this.Blade3 = new ModelRenderer(this, 0, 0); + this.Blade3.addBox(-1.0F, 0.0F, -18.0F, 2, 1, 36); + this.Blade3.setRotationPoint(0.0F, 12.0F, 0.0F); + this.Blade3.setTextureSize(128, 128); + this.Blade3.mirror = true; + this.setRotation(this.Blade3, 0.0F, 1.047198F, 0.1745329F); + this.Blade4 = new ModelRenderer(this, 0, 0); + this.Blade4.addBox(-1.0F, 0.0F, -18.0F, 2, 1, 36); + this.Blade4.setRotationPoint(0.0F, 12.0F, 0.0F); + this.Blade4.setTextureSize(128, 128); + this.Blade4.mirror = true; + this.setRotation(this.Blade4, 0.0F, 1.570796F, 0.1745329F); + this.Blade5 = new ModelRenderer(this, 0, 0); + this.Blade5.addBox(-1.0F, 0.0F, -18.0F, 2, 1, 36); + this.Blade5.setRotationPoint(0.0F, 12.0F, 0.0F); + this.Blade5.setTextureSize(128, 128); + this.Blade5.mirror = true; + this.setRotation(this.Blade5, 0.0F, 2.094395F, 0.1745329F); + this.Blade6 = new ModelRenderer(this, 0, 0); + this.Blade6.addBox(-1.0F, 0.0F, -18.0F, 2, 1, 36); + this.Blade6.setRotationPoint(0.0F, 12.0F, 0.0F); + this.Blade6.setTextureSize(128, 128); + this.Blade6.mirror = true; + this.setRotation(this.Blade6, 0.0F, 2.617994F, 0.1745329F); + this.LargeBlade1 = new ModelRenderer(this, 0, 49); + this.LargeBlade1.addBox(-3.0F, 0.0F, -20.0F, 6, 1, 40); + this.LargeBlade1.setRotationPoint(0.0F, 20.0F, 0.0F); + this.LargeBlade1.setTextureSize(128, 128); + this.LargeBlade1.mirror = true; + this.setRotation(this.LargeBlade1, 0.0F, 2.094395F, 0.1745329F); + this.LargeBlade2 = new ModelRenderer(this, 0, 49); + this.LargeBlade2.addBox(-3.0F, 0.0F, -20.0F, 6, 1, 40); + this.LargeBlade2.setRotationPoint(0.0F, 20.0F, 0.0F); + this.LargeBlade2.setTextureSize(128, 128); + this.LargeBlade2.mirror = true; + this.setRotation(this.LargeBlade2, 0.0F, 2.617994F, 0.1745329F); + this.LargeBlade3 = new ModelRenderer(this, 0, 49); + this.LargeBlade3.addBox(-3.0F, 0.0F, -20.0F, 6, 1, 40); + this.LargeBlade3.setRotationPoint(0.0F, 20.0F, 0.0F); + this.LargeBlade3.setTextureSize(128, 128); + this.LargeBlade3.mirror = true; + this.setRotation(this.LargeBlade3, 0.0F, 0.0F, 0.1745329F); + this.LargeBlade4 = new ModelRenderer(this, 0, 49); + this.LargeBlade4.addBox(-3.0F, 0.0F, -20.0F, 6, 1, 40); + this.LargeBlade4.setRotationPoint(0.0F, 20.0F, 0.0F); + this.LargeBlade4.setTextureSize(128, 128); + this.LargeBlade4.mirror = true; + this.setRotation(this.LargeBlade4, 0.0F, 0.5235988F, 0.1745329F); + this.LargeBlade5 = new ModelRenderer(this, 0, 49); + this.LargeBlade5.addBox(-3.0F, 0.0F, -20.0F, 6, 1, 40); + this.LargeBlade5.setRotationPoint(0.0F, 20.0F, 0.0F); + this.LargeBlade5.setTextureSize(128, 128); + this.LargeBlade5.mirror = true; + this.setRotation(this.LargeBlade5, 0.0F, 1.047198F, 0.1745329F); + this.LargeBlade6 = new ModelRenderer(this, 0, 49); + this.LargeBlade6.addBox(-3.0F, 0.0F, -20.0F, 6, 1, 40); + this.LargeBlade6.setRotationPoint(0.0F, 20.0F, 0.0F); + this.LargeBlade6.setTextureSize(128, 128); + this.LargeBlade6.mirror = true; + this.setRotation(this.LargeBlade6, 0.0F, 1.570796F, 0.1745329F); + this.MediumBlade1 = new ModelRenderer(this, 43, 0); + this.MediumBlade1.addBox(-2.0F, 0.0F, -19.0F, 4, 1, 38); + this.MediumBlade1.setRotationPoint(0.0F, 16.0F, 0.0F); + this.MediumBlade1.setTextureSize(128, 128); + this.MediumBlade1.mirror = true; + this.setRotation(this.MediumBlade1, 0.0F, 2.094395F, 0.1745329F); + this.MediumBlade2 = new ModelRenderer(this, 43, 0); + this.MediumBlade2.addBox(-2.0F, 0.0F, -19.0F, 4, 1, 38); + this.MediumBlade2.setRotationPoint(0.0F, 16.0F, 0.0F); + this.MediumBlade2.setTextureSize(128, 128); + this.MediumBlade2.mirror = true; + this.setRotation(this.MediumBlade2, 0.0F, 2.617994F, 0.1745329F); + this.MediumBlade3 = new ModelRenderer(this, 43, 0); + this.MediumBlade3.addBox(-2.0F, 0.0F, -19.0F, 4, 1, 38); + this.MediumBlade3.setRotationPoint(0.0F, 16.0F, 0.0F); + this.MediumBlade3.setTextureSize(128, 128); + this.MediumBlade3.mirror = true; + this.setRotation(this.MediumBlade3, 0.0F, 0.0F, 0.1745329F); + this.MediumBlade4 = new ModelRenderer(this, 43, 0); + this.MediumBlade4.addBox(-2.0F, 0.0F, -19.0F, 4, 1, 38); + this.MediumBlade4.setRotationPoint(0.0F, 16.0F, 0.0F); + this.MediumBlade4.setTextureSize(128, 128); + this.MediumBlade4.mirror = true; + this.setRotation(this.MediumBlade4, 0.0F, 0.5235988F, 0.1745329F); + this.MediumBlade5 = new ModelRenderer(this, 43, 0); + this.MediumBlade5.addBox(-2.0F, 0.0F, -19.0F, 4, 1, 38); + this.MediumBlade5.setRotationPoint(0.0F, 16.0F, 0.0F); + this.MediumBlade5.setTextureSize(128, 128); + this.MediumBlade5.mirror = true; + this.setRotation(this.MediumBlade5, 0.0F, 1.047198F, 0.1745329F); + this.MediumBlade6 = new ModelRenderer(this, 43, 0); + this.MediumBlade6.addBox(-2.0F, 0.0F, -19.0F, 4, 1, 38); + this.MediumBlade6.setRotationPoint(0.0F, 16.0F, 0.0F); + this.MediumBlade6.setTextureSize(128, 128); + this.MediumBlade6.mirror = true; + this.setRotation(this.MediumBlade6, 0.0F, 1.570796F, 0.1745329F); + this.Support1 = new ModelRenderer(this, 0, 0); + this.Support1.addBox(-1.0F, 0.0F, -23.0F, 2, 1, 46); + this.Support1.setRotationPoint(0.0F, 10.0F, 0.0F); + this.Support1.setTextureSize(128, 128); + this.Support1.mirror = true; + this.setRotation(this.Support1, 0.0F, 0.5235988F, 0.0F); + this.support2 = new ModelRenderer(this, 0, 0); + this.support2.addBox(-1.0F, 0.0F, -23.0F, 2, 1, 46); + this.support2.setRotationPoint(0.0F, 10.0F, 0.0F); + this.support2.setTextureSize(128, 128); + this.support2.mirror = true; + this.setRotation(this.support2, 0.0F, 2.617994F, 0.0F); + this.support3 = new ModelRenderer(this, 0, 0); + this.support3.addBox(-1.0F, 0.0F, -23.0F, 2, 1, 46); + this.support3.setRotationPoint(0.0F, 10.0F, 0.0F); + this.support3.setTextureSize(128, 128); + this.support3.mirror = true; + this.setRotation(this.support3, 0.0F, 1.570796F, 0.0F); + this.cornerbottom1 = new ModelRenderer(this, 10, 0); + this.cornerbottom1.addBox(17.0F, 0.0F, 17.0F, 3, 4, 3); + this.cornerbottom1.setRotationPoint(0.0F, 20.0F, 0.0F); + this.cornerbottom1.setTextureSize(128, 128); + this.cornerbottom1.mirror = true; + this.setRotation(this.cornerbottom1, 0.0F, 2.879793F, 0.0F); + this.corner1 = new ModelRenderer(this, 0, 0); + this.corner1.addBox(16.0F, 0.0F, 16.0F, 2, 14, 2); + this.corner1.setRotationPoint(0.0F, 13.0F, 0.0F); + this.corner1.setTextureSize(128, 128); + this.corner1.mirror = true; + this.setRotation(this.corner1, 0.122173F, 2.879793F, -0.1396263F); + this.corner2 = new ModelRenderer(this, 0, 0); + this.corner2.addBox(16.0F, 0.0F, 16.0F, 2, 14, 2); + this.corner2.setRotationPoint(0.0F, 13.0F, 0.0F); + this.corner2.setTextureSize(128, 128); + this.corner2.mirror = true; + this.setRotation(this.corner2, 0.122173F, -2.356194F, -0.1396263F); + this.cornerbottom2 = new ModelRenderer(this, 10, 0); + this.cornerbottom2.addBox(17.0F, 0.0F, 17.0F, 3, 4, 3); + this.cornerbottom2.setRotationPoint(0.0F, 20.0F, 0.0F); + this.cornerbottom2.setTextureSize(128, 128); + this.cornerbottom2.mirror = true; + this.setRotation(this.cornerbottom2, 0.0F, -2.356194F, 0.0F); + this.corner6 = new ModelRenderer(this, 0, 0); + this.corner6.addBox(16.0F, 0.0F, 16.0F, 2, 14, 2); + this.corner6.setRotationPoint(0.0F, 13.0F, 0.0F); + this.corner6.setTextureSize(128, 128); + this.corner6.mirror = true; + this.setRotation(this.corner6, 0.122173F, 1.832596F, -0.1396263F); + this.cornerbottom6 = new ModelRenderer(this, 10, 0); + this.cornerbottom6.addBox(17.0F, 0.0F, 17.0F, 3, 4, 3); + this.cornerbottom6.setRotationPoint(0.0F, 20.0F, 0.0F); + this.cornerbottom6.setTextureSize(128, 128); + this.cornerbottom6.mirror = true; + this.setRotation(this.cornerbottom6, 0.0F, 1.832596F, 0.0F); + this.corner5 = new ModelRenderer(this, 0, 0); + this.corner5.addBox(16.0F, 0.0F, 16.0F, 2, 14, 2); + this.corner5.setRotationPoint(0.0F, 13.0F, 0.0F); + this.corner5.setTextureSize(128, 128); + this.corner5.mirror = true; + this.setRotation(this.corner5, 0.122173F, 0.7853982F, -0.1396263F); + this.cornerbottom5 = new ModelRenderer(this, 10, 0); + this.cornerbottom5.addBox(17.0F, 0.0F, 17.0F, 3, 4, 3); + this.cornerbottom5.setRotationPoint(0.0F, 20.0F, 0.0F); + this.cornerbottom5.setTextureSize(128, 128); + this.cornerbottom5.mirror = true; + this.setRotation(this.cornerbottom5, 0.0F, 0.7853982F, 0.0F); + this.corner4 = new ModelRenderer(this, 0, 0); + this.corner4.addBox(16.0F, 0.0F, 16.0F, 2, 14, 2); + this.corner4.setRotationPoint(0.0F, 13.0F, 0.0F); + this.corner4.setTextureSize(128, 128); + this.corner4.mirror = true; + this.setRotation(this.corner4, 0.122173F, -0.2617994F, -0.1396263F); + this.cornerbottom4 = new ModelRenderer(this, 10, 0); + this.cornerbottom4.addBox(17.0F, 0.0F, 17.0F, 3, 4, 3); + this.cornerbottom4.setRotationPoint(0.0F, 20.0F, 0.0F); + this.cornerbottom4.setTextureSize(128, 128); + this.cornerbottom4.mirror = true; + this.setRotation(this.cornerbottom4, 0.0F, -0.2617994F, 0.0F); + this.corner3 = new ModelRenderer(this, 0, 0); + this.corner3.addBox(16.0F, 0.0F, 16.0F, 2, 14, 2); + this.corner3.setRotationPoint(0.0F, 13.0F, 0.0F); + this.corner3.setTextureSize(128, 128); + this.corner3.mirror = true; + this.setRotation(this.corner3, 0.122173F, -1.308997F, -0.1396263F); + this.cornerbottom3 = new ModelRenderer(this, 10, 0); + this.cornerbottom3.addBox(17.0F, 0.0F, 17.0F, 3, 4, 3); + this.cornerbottom3.setRotationPoint(0.0F, 20.0F, 0.0F); + this.cornerbottom3.setTextureSize(128, 128); + this.cornerbottom3.mirror = true; + this.setRotation(this.cornerbottom3, 0.0F, -1.308997F, 0.0F); + this.Topelectricityoutput = new ModelRenderer(this, 0, 18); + this.Topelectricityoutput.addBox(-3.0F, 0.0F, -3.0F, 6, 2, 6); + this.Topelectricityoutput.setRotationPoint(0.0F, 8.0F, 0.0F); + this.Topelectricityoutput.setTextureSize(128, 128); + this.Topelectricityoutput.mirror = true; + this.setRotation(this.Topelectricityoutput, 0.0F, 0.0F, 0.0F); + } + + public void render(float rotation, float f5) { + this.Centeraxle.render(f5); + this.wall1.render(f5); + this.wall2.render(f5); + this.wall6.render(f5); + this.wall5.render(f5); + this.wall3.render(f5); + this.wall4.render(f5); + this.wallunder1.render(f5); + this.wallunder3.render(f5); + this.wallunder2.render(f5); + this.wallunder6.render(f5); + this.wallunder5.render(f5); + this.wallunder4.render(f5); + GL11.glPushMatrix(); + GL11.glRotatef(rotation, 0.0F, 1.0F, 0.0F); + this.Blade1.render(f5); + this.Blade2.render(f5); + this.Blade3.render(f5); + this.Blade4.render(f5); + this.Blade5.render(f5); + this.Blade6.render(f5); + GL11.glPopMatrix(); + GL11.glPushMatrix(); + GL11.glRotatef(-rotation, 0.0F, 1.0F, 0.0F); + this.MediumBlade1.render(f5); + this.MediumBlade2.render(f5); + this.MediumBlade3.render(f5); + this.MediumBlade4.render(f5); + this.MediumBlade5.render(f5); + this.MediumBlade6.render(f5); + GL11.glPopMatrix(); + GL11.glPushMatrix(); + GL11.glRotatef(rotation, 0.0F, 1.0F, 0.0F); + this.LargeBlade1.render(f5); + this.LargeBlade2.render(f5); + this.LargeBlade3.render(f5); + this.LargeBlade4.render(f5); + this.LargeBlade5.render(f5); + this.LargeBlade6.render(f5); + GL11.glPopMatrix(); + this.Support1.render(f5); + this.support2.render(f5); + this.support3.render(f5); + this.cornerbottom1.render(f5); + this.corner1.render(f5); + this.corner2.render(f5); + this.cornerbottom2.render(f5); + this.corner6.render(f5); + this.cornerbottom6.render(f5); + this.corner5.render(f5); + this.cornerbottom5.render(f5); + this.corner4.render(f5); + this.cornerbottom4.render(f5); + this.corner3.render(f5); + this.cornerbottom3.render(f5); + this.Topelectricityoutput.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } +} diff --git a/src/main/java/atomicscience/muoxing/MNuclearBoiler.java b/src/main/java/atomicscience/muoxing/MNuclearBoiler.java new file mode 100644 index 0000000..e849b10 --- /dev/null +++ b/src/main/java/atomicscience/muoxing/MNuclearBoiler.java @@ -0,0 +1,132 @@ +package atomicscience.muoxing; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; + +@SideOnly(Side.CLIENT) +public class MNuclearBoiler extends ModelBase { + ModelRenderer BASE; + ModelRenderer THERMAL_DISPLAY; + ModelRenderer SUPPORT; + ModelRenderer RAD_SHIELD_PLATE_1; + ModelRenderer RAD_SHIELD_PLATE_2; + ModelRenderer RAD_SHIELD_PLATE_3; + ModelRenderer FUEL_BAR_SUPPORT_1_ROTATES; + ModelRenderer FUEL_BAR_SUPPORT_2_ROTATES; + ModelRenderer FUEL_BAR_1_ROTATES; + ModelRenderer FUEL_BAR_2_ROTATES; + ModelRenderer TOP_SUPPORT_A; + ModelRenderer TOP_SUPPORT_B; + ModelRenderer TOP_SUPPORT_C; + + public MNuclearBoiler() { + super.textureWidth = 128; + super.textureHeight = 128; + this.BASE = new ModelRenderer(this, 0, 0); + this.BASE.addBox(0.0F, 0.0F, 0.0F, 16, 1, 16); + this.BASE.setRotationPoint(-8.0F, 23.0F, -8.0F); + this.BASE.setTextureSize(128, 128); + this.BASE.mirror = true; + this.setRotation(this.BASE, 0.0F, 0.0F, 0.0F); + this.THERMAL_DISPLAY = new ModelRenderer(this, 0, 37); + this.THERMAL_DISPLAY.addBox(0.0F, 0.0F, 0.0F, 8, 11, 3); + this.THERMAL_DISPLAY.setRotationPoint(-4.0F, 13.0F, -3.0F); + this.THERMAL_DISPLAY.setTextureSize(128, 128); + this.THERMAL_DISPLAY.mirror = true; + this.setRotation(this.THERMAL_DISPLAY, -0.4363323F, 0.0F, 0.0F); + this.SUPPORT = new ModelRenderer(this, 0, 19); + this.SUPPORT.addBox(0.0F, 0.0F, 0.0F, 14, 3, 13); + this.SUPPORT.setRotationPoint(-7.0F, 20.0F, -5.0F); + this.SUPPORT.setTextureSize(128, 128); + this.SUPPORT.mirror = true; + this.setRotation(this.SUPPORT, 0.0F, 0.0F, 0.0F); + this.RAD_SHIELD_PLATE_1 = new ModelRenderer(this, 46, 37); + this.RAD_SHIELD_PLATE_1.addBox(0.0F, 0.0F, 0.0F, 8, 14, 1); + this.RAD_SHIELD_PLATE_1.setRotationPoint(-4.0F, 9.0F, 0.0F); + this.RAD_SHIELD_PLATE_1.setTextureSize(128, 128); + this.RAD_SHIELD_PLATE_1.mirror = true; + this.setRotation(this.RAD_SHIELD_PLATE_1, 0.0F, 0.0F, 0.0F); + this.RAD_SHIELD_PLATE_2 = new ModelRenderer(this, 24, 37); + this.RAD_SHIELD_PLATE_2.addBox(0.0F, 0.0F, 0.0F, 8, 14, 2); + this.RAD_SHIELD_PLATE_2.setRotationPoint(-8.0F, 9.0F, 7.0F); + this.RAD_SHIELD_PLATE_2.setTextureSize(128, 128); + this.RAD_SHIELD_PLATE_2.mirror = true; + this.setRotation(this.RAD_SHIELD_PLATE_2, 0.0F, 1.064651F, 0.0F); + this.RAD_SHIELD_PLATE_3 = new ModelRenderer(this, 24, 37); + this.RAD_SHIELD_PLATE_3.addBox(0.0F, 0.0F, -2.0F, 8, 14, 2); + this.RAD_SHIELD_PLATE_3.setRotationPoint(8.0F, 9.0F, 7.0F); + this.RAD_SHIELD_PLATE_3.setTextureSize(128, 128); + this.RAD_SHIELD_PLATE_3.mirror = true; + this.setRotation(this.RAD_SHIELD_PLATE_3, 0.0F, 2.094395F, 0.0F); + this.FUEL_BAR_SUPPORT_1_ROTATES = new ModelRenderer(this, 75, 13); + this.FUEL_BAR_SUPPORT_1_ROTATES.addBox(-2.0F, 0.0F, -2.0F, 4, 1, 4); + this.FUEL_BAR_SUPPORT_1_ROTATES.setRotationPoint(3.0F, 19.0F, 5.0F); + this.FUEL_BAR_SUPPORT_1_ROTATES.setTextureSize(128, 128); + this.FUEL_BAR_SUPPORT_1_ROTATES.mirror = true; + this.setRotation(this.FUEL_BAR_SUPPORT_1_ROTATES, 0.0F, 0.5235988F, 0.0F); + this.FUEL_BAR_SUPPORT_2_ROTATES = new ModelRenderer(this, 75, 13); + this.FUEL_BAR_SUPPORT_2_ROTATES.addBox(-2.0F, 0.0F, -2.0F, 4, 1, 4); + this.FUEL_BAR_SUPPORT_2_ROTATES.setRotationPoint(-3.0F, 19.0F, 5.0F); + this.FUEL_BAR_SUPPORT_2_ROTATES.setTextureSize(128, 128); + this.FUEL_BAR_SUPPORT_2_ROTATES.mirror = true; + this.setRotation(this.FUEL_BAR_SUPPORT_2_ROTATES, 0.0F, 1.047198F, 0.0F); + this.FUEL_BAR_1_ROTATES = new ModelRenderer(this, 65, 13); + this.FUEL_BAR_1_ROTATES.addBox(-1.0F, 0.0F, -1.0F, 2, 9, 2); + this.FUEL_BAR_1_ROTATES.setRotationPoint(3.0F, 10.0F, 5.0F); + this.FUEL_BAR_1_ROTATES.setTextureSize(128, 128); + this.FUEL_BAR_1_ROTATES.mirror = true; + this.setRotation(this.FUEL_BAR_1_ROTATES, 0.0F, 0.5235988F, 0.0F); + this.FUEL_BAR_2_ROTATES = new ModelRenderer(this, 65, 13); + this.FUEL_BAR_2_ROTATES.addBox(-1.0F, 0.0F, -1.0F, 2, 9, 2); + this.FUEL_BAR_2_ROTATES.setRotationPoint(-3.0F, 10.0F, 5.0F); + this.FUEL_BAR_2_ROTATES.setTextureSize(128, 128); + this.FUEL_BAR_2_ROTATES.mirror = true; + this.setRotation(this.FUEL_BAR_2_ROTATES, 0.0F, 1.047198F, 0.0F); + this.TOP_SUPPORT_A = new ModelRenderer(this, 65, 6); + this.TOP_SUPPORT_A.addBox(-4.0F, 0.0F, -4.0F, 5, 1, 4); + this.TOP_SUPPORT_A.setRotationPoint(6.0F, 9.0F, 6.0F); + this.TOP_SUPPORT_A.setTextureSize(128, 128); + this.TOP_SUPPORT_A.mirror = true; + this.setRotation(this.TOP_SUPPORT_A, 0.0F, 0.5235988F, 0.0F); + this.TOP_SUPPORT_B = new ModelRenderer(this, 65, 6); + this.TOP_SUPPORT_B.addBox(0.0F, 0.0F, 0.0F, 5, 1, 4); + this.TOP_SUPPORT_B.setRotationPoint(-5.0F, 9.0F, 2.0F); + this.TOP_SUPPORT_B.setTextureSize(128, 128); + this.TOP_SUPPORT_B.mirror = true; + this.setRotation(this.TOP_SUPPORT_B, 0.0F, -0.5235988F, 0.0F); + this.TOP_SUPPORT_C = new ModelRenderer(this, 65, 0); + this.TOP_SUPPORT_C.addBox(0.0F, 0.0F, 0.0F, 12, 1, 4); + this.TOP_SUPPORT_C.setRotationPoint(-6.0F, 9.0F, 4.0F); + this.TOP_SUPPORT_C.setTextureSize(128, 128); + this.TOP_SUPPORT_C.mirror = true; + this.setRotation(this.TOP_SUPPORT_C, 0.0F, 0.0F, 0.0F); + } + + public void render(float rotation, float f5) { + this.BASE.render(f5); + this.THERMAL_DISPLAY.render(f5); + this.SUPPORT.render(f5); + this.RAD_SHIELD_PLATE_1.render(f5); + this.RAD_SHIELD_PLATE_2.render(f5); + this.RAD_SHIELD_PLATE_3.render(f5); + this.FUEL_BAR_SUPPORT_1_ROTATES.rotateAngleY = rotation; + this.FUEL_BAR_SUPPORT_1_ROTATES.render(f5); + this.FUEL_BAR_SUPPORT_2_ROTATES.rotateAngleY = rotation; + this.FUEL_BAR_SUPPORT_2_ROTATES.render(f5); + this.FUEL_BAR_1_ROTATES.rotateAngleY = rotation; + this.FUEL_BAR_1_ROTATES.render(f5); + this.FUEL_BAR_2_ROTATES.rotateAngleY = rotation; + this.FUEL_BAR_2_ROTATES.render(f5); + this.TOP_SUPPORT_A.render(f5); + this.TOP_SUPPORT_B.render(f5); + this.TOP_SUPPORT_C.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } +} diff --git a/src/main/java/atomicscience/muoxing/MReactorCellBottom.java b/src/main/java/atomicscience/muoxing/MReactorCellBottom.java new file mode 100644 index 0000000..f68e896 --- /dev/null +++ b/src/main/java/atomicscience/muoxing/MReactorCellBottom.java @@ -0,0 +1,186 @@ +package atomicscience.muoxing; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; + +@SideOnly(Side.CLIENT) +public class MReactorCellBottom extends ModelBase { + + ModelRenderer BaseWidth; + ModelRenderer BottomPad; + ModelRenderer BaseDepth; + ModelRenderer Base; + ModelRenderer MiddleFrontRight; + ModelRenderer MiddleFrontLeft; + ModelRenderer MiddleBackLeft; + ModelRenderer MiddleBackRight; + ModelRenderer MiddlePLeft; + ModelRenderer MiddlePFront; + ModelRenderer MiddlePBack; + ModelRenderer MiddlePRight; + ModelRenderer OPLeftFront; + ModelRenderer OPFrontRight; + ModelRenderer OPBackLeft; + ModelRenderer OPLeftFront2; + ModelRenderer OPRightBack; + ModelRenderer OPFrontLeft; + ModelRenderer OPLeftBack; + ModelRenderer OPBackRight; + + + public MReactorCellBottom() { + super.textureWidth = 128; + super.textureHeight = 128; + this.BaseWidth = new ModelRenderer(this, 53, 16); + this.BaseWidth.addBox(0.0F, 0.0F, 0.0F, 14, 1, 10); + this.BaseWidth.setRotationPoint(-7.0F, 22.0F, -5.0F); + this.BaseWidth.setTextureSize(128, 128); + this.BaseWidth.mirror = true; + this.setRotation(this.BaseWidth, 0.0F, 0.0F, 0.0F); + this.BottomPad = new ModelRenderer(this, 53, 42); + this.BottomPad.addBox(0.0F, 0.0F, 0.0F, 10, 1, 10); + this.BottomPad.setRotationPoint(-5.0F, 23.0F, -5.0F); + this.BottomPad.setTextureSize(128, 128); + this.BottomPad.mirror = true; + this.setRotation(this.BottomPad, 0.0F, 0.0F, 0.0F); + this.BaseDepth = new ModelRenderer(this, 53, 0); + this.BaseDepth.addBox(0.0F, 0.0F, 0.0F, 10, 1, 14); + this.BaseDepth.setRotationPoint(-5.0F, 22.0F, -7.0F); + this.BaseDepth.setTextureSize(128, 128); + this.BaseDepth.mirror = true; + this.setRotation(this.BaseDepth, 0.0F, 0.0F, 0.0F); + this.Base = new ModelRenderer(this, 53, 28); + this.Base.addBox(0.0F, 0.0F, 0.0F, 12, 1, 12); + this.Base.setRotationPoint(-6.0F, 22.0F, -6.0F); + this.Base.setTextureSize(128, 128); + this.Base.mirror = true; + this.setRotation(this.Base, 0.0F, 0.0F, 0.0F); + this.MiddleFrontRight = new ModelRenderer(this, 0, 68); + this.MiddleFrontRight.addBox(0.0F, 0.0F, 0.0F, 1, 14, 1); + this.MiddleFrontRight.setRotationPoint(3.0F, 8.0F, -4.0F); + this.MiddleFrontRight.setTextureSize(128, 128); + this.MiddleFrontRight.mirror = true; + this.setRotation(this.MiddleFrontRight, 0.0F, 0.0F, 0.0F); + this.MiddleFrontLeft = new ModelRenderer(this, 0, 68); + this.MiddleFrontLeft.addBox(0.0F, 0.0F, 0.0F, 1, 14, 1); + this.MiddleFrontLeft.setRotationPoint(-4.0F, 8.0F, -4.0F); + this.MiddleFrontLeft.setTextureSize(128, 128); + this.MiddleFrontLeft.mirror = true; + this.setRotation(this.MiddleFrontLeft, 0.0F, 0.0F, 0.0F); + this.MiddleBackLeft = new ModelRenderer(this, 0, 68); + this.MiddleBackLeft.addBox(0.0F, 0.0F, 0.0F, 1, 14, 1); + this.MiddleBackLeft.setRotationPoint(-4.0F, 8.0F, 3.0F); + this.MiddleBackLeft.setTextureSize(128, 128); + this.MiddleBackLeft.mirror = true; + this.setRotation(this.MiddleBackLeft, 0.0F, 0.0F, 0.0F); + this.MiddleBackRight = new ModelRenderer(this, 0, 68); + this.MiddleBackRight.addBox(0.0F, 0.0F, 0.0F, 1, 14, 1); + this.MiddleBackRight.setRotationPoint(3.0F, 8.0F, 3.0F); + this.MiddleBackRight.setTextureSize(128, 128); + this.MiddleBackRight.mirror = true; + this.setRotation(this.MiddleBackRight, 0.0F, 0.0F, 0.0F); + this.MiddlePLeft = new ModelRenderer(this, 5, 68); + this.MiddlePLeft.addBox(0.0F, 1.466667F, 0.0F, 1, 14, 6); + this.MiddlePLeft.setRotationPoint(-5.0F, 6.5F, -3.0F); + this.MiddlePLeft.setTextureSize(128, 128); + this.MiddlePLeft.mirror = true; + this.setRotation(this.MiddlePLeft, 0.0F, 0.0F, 0.0F); + this.MiddlePFront = new ModelRenderer(this, 23, 83); + this.MiddlePFront.addBox(0.0F, 0.0F, 0.0F, 6, 14, 1); + this.MiddlePFront.setRotationPoint(-3.0F, 8.0F, -5.0F); + this.MiddlePFront.setTextureSize(128, 128); + this.MiddlePFront.mirror = true; + this.setRotation(this.MiddlePFront, 0.0F, 0.0F, 0.0F); + this.MiddlePBack = new ModelRenderer(this, 23, 83); + this.MiddlePBack.addBox(0.0F, 0.0F, 0.0F, 6, 14, 1); + this.MiddlePBack.setRotationPoint(-3.0F, 8.0F, 4.0F); + this.MiddlePBack.setTextureSize(128, 128); + this.MiddlePBack.mirror = true; + this.setRotation(this.MiddlePBack, 0.0F, 0.0F, 0.0F); + this.MiddlePRight = new ModelRenderer(this, 5, 68); + this.MiddlePRight.addBox(0.0F, 0.0F, 0.0F, 1, 14, 6); + this.MiddlePRight.setRotationPoint(4.0F, 8.0F, -3.0F); + this.MiddlePRight.setTextureSize(128, 128); + this.MiddlePRight.mirror = true; + this.setRotation(this.MiddlePRight, 0.0F, 0.0F, 0.0F); + this.OPLeftFront = new ModelRenderer(this, 0, 0); + this.OPLeftFront.addBox(0.0F, 0.0F, 0.0F, 1, 14, 1); + this.OPLeftFront.setRotationPoint(-7.0F, 8.0F, -4.0F); + this.OPLeftFront.setTextureSize(128, 128); + this.OPLeftFront.mirror = true; + this.setRotation(this.OPLeftFront, 0.0F, 0.0F, 0.0F); + this.OPFrontRight = new ModelRenderer(this, 0, 0); + this.OPFrontRight.addBox(0.0F, 0.0F, 0.0F, 1, 14, 1); + this.OPFrontRight.setRotationPoint(3.0F, 8.0F, -7.0F); + this.OPFrontRight.setTextureSize(128, 128); + this.OPFrontRight.mirror = true; + this.setRotation(this.OPFrontRight, 0.0F, 0.0F, 0.0F); + this.OPBackLeft = new ModelRenderer(this, 0, 0); + this.OPBackLeft.addBox(0.0F, 0.0F, 0.0F, 1, 14, 1); + this.OPBackLeft.setRotationPoint(-4.0F, 8.0F, 6.0F); + this.OPBackLeft.setTextureSize(128, 128); + this.OPBackLeft.mirror = true; + this.setRotation(this.OPBackLeft, 0.0F, 0.0F, 0.0F); + this.OPLeftFront2 = new ModelRenderer(this, 0, 0); + this.OPLeftFront2.addBox(0.0F, 0.0F, 0.0F, 1, 14, 1); + this.OPLeftFront2.setRotationPoint(6.0F, 8.0F, -4.0F); + this.OPLeftFront2.setTextureSize(128, 128); + this.OPLeftFront2.mirror = true; + this.setRotation(this.OPLeftFront2, 0.0F, 0.0F, 0.0F); + this.OPRightBack = new ModelRenderer(this, 0, 0); + this.OPRightBack.addBox(0.0F, 0.0F, 0.0F, 1, 14, 1); + this.OPRightBack.setRotationPoint(6.0F, 8.0F, 3.0F); + this.OPRightBack.setTextureSize(128, 128); + this.OPRightBack.mirror = true; + this.setRotation(this.OPRightBack, 0.0F, 0.0F, 0.0F); + this.OPFrontLeft = new ModelRenderer(this, 0, 0); + this.OPFrontLeft.addBox(0.0F, 0.0F, 0.0F, 1, 14, 1); + this.OPFrontLeft.setRotationPoint(-4.0F, 8.0F, -7.0F); + this.OPFrontLeft.setTextureSize(128, 128); + this.OPFrontLeft.mirror = true; + this.setRotation(this.OPFrontLeft, 0.0F, 0.0F, 0.0F); + this.OPLeftBack = new ModelRenderer(this, 0, 0); + this.OPLeftBack.addBox(0.0F, 0.0F, 0.0F, 1, 14, 1); + this.OPLeftBack.setRotationPoint(-7.0F, 8.0F, 3.0F); + this.OPLeftBack.setTextureSize(128, 128); + this.OPLeftBack.mirror = true; + this.setRotation(this.OPLeftBack, 0.0F, 0.0F, 0.0F); + this.OPBackRight = new ModelRenderer(this, 0, 0); + this.OPBackRight.addBox(0.0F, 0.0F, 0.0F, 1, 14, 1); + this.OPBackRight.setRotationPoint(3.0F, 8.0F, 6.0F); + this.OPBackRight.setTextureSize(128, 128); + this.OPBackRight.mirror = true; + this.setRotation(this.OPBackRight, 0.0F, 0.0F, 0.0F); + } + + public void render(float f5) { + this.BaseWidth.render(f5); + this.BottomPad.render(f5); + this.BaseDepth.render(f5); + this.Base.render(f5); + this.MiddleFrontRight.render(f5); + this.MiddleFrontLeft.render(f5); + this.MiddleBackLeft.render(f5); + this.MiddleBackRight.render(f5); + this.MiddlePLeft.render(f5); + this.MiddlePFront.render(f5); + this.MiddlePBack.render(f5); + this.MiddlePRight.render(f5); + this.OPLeftFront.render(f5); + this.OPFrontRight.render(f5); + this.OPBackLeft.render(f5); + this.OPLeftFront2.render(f5); + this.OPRightBack.render(f5); + this.OPFrontLeft.render(f5); + this.OPLeftBack.render(f5); + this.OPBackRight.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } +} diff --git a/src/main/java/atomicscience/muoxing/MReactorCellMiddle.java b/src/main/java/atomicscience/muoxing/MReactorCellMiddle.java new file mode 100644 index 0000000..321d017 --- /dev/null +++ b/src/main/java/atomicscience/muoxing/MReactorCellMiddle.java @@ -0,0 +1,154 @@ +package atomicscience.muoxing; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; + +@SideOnly(Side.CLIENT) +public class MReactorCellMiddle extends ModelBase { + + ModelRenderer MiddleFrontRight; + ModelRenderer MiddleFrontLeft; + ModelRenderer MiddleBackLeft; + ModelRenderer MiddleBackRight; + ModelRenderer MiddlePLeft; + ModelRenderer MiddlePFront; + ModelRenderer MiddlePBack; + ModelRenderer MiddlePRight; + ModelRenderer OPLeftFront; + ModelRenderer OPFrontRight; + ModelRenderer OPBackLeft; + ModelRenderer OPLeftFront2; + ModelRenderer OPRightBack; + ModelRenderer OPFrontLeft; + ModelRenderer OPLeftBack; + ModelRenderer OPBackRight; + + + public MReactorCellMiddle() { + super.textureWidth = 128; + super.textureHeight = 128; + this.MiddleFrontRight = new ModelRenderer(this, 0, 68); + this.MiddleFrontRight.addBox(0.0F, 0.0F, 0.0F, 1, 16, 1); + this.MiddleFrontRight.setRotationPoint(3.0F, 8.0F, -4.0F); + this.MiddleFrontRight.setTextureSize(128, 128); + this.MiddleFrontRight.mirror = true; + this.setRotation(this.MiddleFrontRight, 0.0F, 0.0F, 0.0F); + this.MiddleFrontLeft = new ModelRenderer(this, 0, 68); + this.MiddleFrontLeft.addBox(0.0F, 0.0F, 0.0F, 1, 16, 1); + this.MiddleFrontLeft.setRotationPoint(-4.0F, 8.0F, -4.0F); + this.MiddleFrontLeft.setTextureSize(128, 128); + this.MiddleFrontLeft.mirror = true; + this.setRotation(this.MiddleFrontLeft, 0.0F, 0.0F, 0.0F); + this.MiddleBackLeft = new ModelRenderer(this, 0, 68); + this.MiddleBackLeft.addBox(0.0F, 0.0F, 0.0F, 1, 16, 1); + this.MiddleBackLeft.setRotationPoint(-4.0F, 8.0F, 3.0F); + this.MiddleBackLeft.setTextureSize(128, 128); + this.MiddleBackLeft.mirror = true; + this.setRotation(this.MiddleBackLeft, 0.0F, 0.0F, 0.0F); + this.MiddleBackRight = new ModelRenderer(this, 0, 68); + this.MiddleBackRight.addBox(0.0F, 0.0F, 0.0F, 1, 16, 1); + this.MiddleBackRight.setRotationPoint(3.0F, 8.0F, 3.0F); + this.MiddleBackRight.setTextureSize(128, 128); + this.MiddleBackRight.mirror = true; + this.setRotation(this.MiddleBackRight, 0.0F, 0.0F, 0.0F); + this.MiddlePLeft = new ModelRenderer(this, 5, 68); + this.MiddlePLeft.addBox(0.0F, 1.466667F, 0.0F, 1, 16, 6); + this.MiddlePLeft.setRotationPoint(-5.0F, 6.5F, -3.0F); + this.MiddlePLeft.setTextureSize(128, 128); + this.MiddlePLeft.mirror = true; + this.setRotation(this.MiddlePLeft, 0.0F, 0.0F, 0.0F); + this.MiddlePFront = new ModelRenderer(this, 23, 83); + this.MiddlePFront.addBox(0.0F, 0.0F, 0.0F, 6, 16, 1); + this.MiddlePFront.setRotationPoint(-3.0F, 8.0F, -5.0F); + this.MiddlePFront.setTextureSize(128, 128); + this.MiddlePFront.mirror = true; + this.setRotation(this.MiddlePFront, 0.0F, 0.0F, 0.0F); + this.MiddlePBack = new ModelRenderer(this, 23, 83); + this.MiddlePBack.addBox(0.0F, 0.0F, 0.0F, 6, 16, 1); + this.MiddlePBack.setRotationPoint(-3.0F, 8.0F, 4.0F); + this.MiddlePBack.setTextureSize(128, 128); + this.MiddlePBack.mirror = true; + this.setRotation(this.MiddlePBack, 0.0F, 0.0F, 0.0F); + this.MiddlePRight = new ModelRenderer(this, 5, 68); + this.MiddlePRight.addBox(0.0F, 0.0F, 0.0F, 1, 16, 6); + this.MiddlePRight.setRotationPoint(4.0F, 8.0F, -3.0F); + this.MiddlePRight.setTextureSize(128, 128); + this.MiddlePRight.mirror = true; + this.setRotation(this.MiddlePRight, 0.0F, 0.0F, 0.0F); + this.OPLeftFront = new ModelRenderer(this, 0, 0); + this.OPLeftFront.addBox(0.0F, 0.0F, 0.0F, 1, 16, 1); + this.OPLeftFront.setRotationPoint(-7.0F, 8.0F, -4.0F); + this.OPLeftFront.setTextureSize(128, 128); + this.OPLeftFront.mirror = true; + this.setRotation(this.OPLeftFront, 0.0F, 0.0F, 0.0F); + this.OPFrontRight = new ModelRenderer(this, 0, 0); + this.OPFrontRight.addBox(0.0F, 0.0F, 0.0F, 1, 16, 1); + this.OPFrontRight.setRotationPoint(3.0F, 8.0F, -7.0F); + this.OPFrontRight.setTextureSize(128, 128); + this.OPFrontRight.mirror = true; + this.setRotation(this.OPFrontRight, 0.0F, 0.0F, 0.0F); + this.OPBackLeft = new ModelRenderer(this, 0, 0); + this.OPBackLeft.addBox(0.0F, 0.0F, 0.0F, 1, 16, 1); + this.OPBackLeft.setRotationPoint(-4.0F, 8.0F, 6.0F); + this.OPBackLeft.setTextureSize(128, 128); + this.OPBackLeft.mirror = true; + this.setRotation(this.OPBackLeft, 0.0F, 0.0F, 0.0F); + this.OPLeftFront2 = new ModelRenderer(this, 0, 0); + this.OPLeftFront2.addBox(0.0F, 0.0F, 0.0F, 1, 16, 1); + this.OPLeftFront2.setRotationPoint(6.0F, 8.0F, -4.0F); + this.OPLeftFront2.setTextureSize(128, 128); + this.OPLeftFront2.mirror = true; + this.setRotation(this.OPLeftFront2, 0.0F, 0.0F, 0.0F); + this.OPRightBack = new ModelRenderer(this, 0, 0); + this.OPRightBack.addBox(0.0F, 0.0F, 0.0F, 1, 16, 1); + this.OPRightBack.setRotationPoint(6.0F, 8.0F, 3.0F); + this.OPRightBack.setTextureSize(128, 128); + this.OPRightBack.mirror = true; + this.setRotation(this.OPRightBack, 0.0F, 0.0F, 0.0F); + this.OPFrontLeft = new ModelRenderer(this, 0, 0); + this.OPFrontLeft.addBox(0.0F, 0.0F, 0.0F, 1, 16, 1); + this.OPFrontLeft.setRotationPoint(-4.0F, 8.0F, -7.0F); + this.OPFrontLeft.setTextureSize(128, 128); + this.OPFrontLeft.mirror = true; + this.setRotation(this.OPFrontLeft, 0.0F, 0.0F, 0.0F); + this.OPLeftBack = new ModelRenderer(this, 0, 0); + this.OPLeftBack.addBox(0.0F, 0.0F, 0.0F, 1, 16, 1); + this.OPLeftBack.setRotationPoint(-7.0F, 8.0F, 3.0F); + this.OPLeftBack.setTextureSize(128, 128); + this.OPLeftBack.mirror = true; + this.setRotation(this.OPLeftBack, 0.0F, 0.0F, 0.0F); + this.OPBackRight = new ModelRenderer(this, 0, 0); + this.OPBackRight.addBox(0.0F, 0.0F, 0.0F, 1, 16, 1); + this.OPBackRight.setRotationPoint(3.0F, 8.0F, 6.0F); + this.OPBackRight.setTextureSize(128, 128); + this.OPBackRight.mirror = true; + this.setRotation(this.OPBackRight, 0.0F, 0.0F, 0.0F); + } + + public void render(float f5) { + this.MiddleFrontRight.render(f5); + this.MiddleFrontLeft.render(f5); + this.MiddleBackLeft.render(f5); + this.MiddleBackRight.render(f5); + this.MiddlePLeft.render(f5); + this.MiddlePFront.render(f5); + this.MiddlePBack.render(f5); + this.MiddlePRight.render(f5); + this.OPLeftFront.render(f5); + this.OPFrontRight.render(f5); + this.OPBackLeft.render(f5); + this.OPLeftFront2.render(f5); + this.OPRightBack.render(f5); + this.OPFrontLeft.render(f5); + this.OPLeftBack.render(f5); + this.OPBackRight.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } +} diff --git a/src/main/java/atomicscience/muoxing/MReactorCellTop.java b/src/main/java/atomicscience/muoxing/MReactorCellTop.java new file mode 100644 index 0000000..e4a24ab --- /dev/null +++ b/src/main/java/atomicscience/muoxing/MReactorCellTop.java @@ -0,0 +1,280 @@ +package atomicscience.muoxing; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; + +@SideOnly(Side.CLIENT) +public class MReactorCellTop extends ModelBase { + ModelRenderer TopBaseWidth; + ModelRenderer BaseWidth; + ModelRenderer BottomPad; + ModelRenderer TopBaseDepth; + ModelRenderer TopBase; + ModelRenderer BaseDepth; + ModelRenderer Base; + ModelRenderer HatMiddle; + ModelRenderer HatCover; + ModelRenderer HatTop; + ModelRenderer HatDepth; + ModelRenderer HatWidth; + ModelRenderer MiddleFrontRight; + ModelRenderer MiddleFrontLeft; + ModelRenderer MiddleBackLeft; + ModelRenderer MiddleBackRight; + ModelRenderer MiddlePLeft; + ModelRenderer MiddlePFront; + ModelRenderer MiddlePBack; + ModelRenderer MiddlePRight; + ModelRenderer FrontLeftSpike; + ModelRenderer FrontRightSpike; + ModelRenderer BackRightSpike; + ModelRenderer BackLeftSpike; + ModelRenderer OPLeftFront; + ModelRenderer OPFrontRight; + ModelRenderer OPBackLeft; + ModelRenderer OPLeftFront2; + ModelRenderer OPRightBack; + ModelRenderer OPFrontLeft; + ModelRenderer OPLeftBack; + ModelRenderer OPBackRight; + + public MReactorCellTop() { + super.textureWidth = 128; + super.textureHeight = 128; + this.TopBaseWidth = new ModelRenderer(this, 53, 16); + this.TopBaseWidth.addBox(0.0F, 0.0F, 0.0F, 14, 1, 10); + this.TopBaseWidth.setRotationPoint(-7.0F, 13.0F, -5.0F); + this.TopBaseWidth.setTextureSize(64, 32); + this.TopBaseWidth.mirror = true; + this.setRotation(this.TopBaseWidth, 0.0F, 0.0F, 0.0F); + this.BaseWidth = new ModelRenderer(this, 53, 16); + this.BaseWidth.addBox(0.0F, 0.0F, 0.0F, 14, 1, 10); + this.BaseWidth.setRotationPoint(-7.0F, 22.0F, -5.0F); + this.BaseWidth.setTextureSize(64, 32); + this.BaseWidth.mirror = true; + this.setRotation(this.BaseWidth, 0.0F, 0.0F, 0.0F); + this.BottomPad = new ModelRenderer(this, 53, 42); + this.BottomPad.addBox(0.0F, 0.0F, 0.0F, 10, 1, 10); + this.BottomPad.setRotationPoint(-5.0F, 23.0F, -5.0F); + this.BottomPad.setTextureSize(64, 32); + this.BottomPad.mirror = true; + this.setRotation(this.BottomPad, 0.0F, 0.0F, 0.0F); + this.TopBaseDepth = new ModelRenderer(this, 53, 0); + this.TopBaseDepth.addBox(0.0F, 0.0F, 0.0F, 10, 1, 14); + this.TopBaseDepth.setRotationPoint(-5.0F, 13.0F, -7.0F); + this.TopBaseDepth.setTextureSize(64, 32); + this.TopBaseDepth.mirror = true; + this.setRotation(this.TopBaseDepth, 0.0F, 0.0F, 0.0F); + this.TopBase = new ModelRenderer(this, 53, 28); + this.TopBase.addBox(0.0F, 0.0F, 0.0F, 12, 1, 12); + this.TopBase.setRotationPoint(-6.0F, 13.0F, -6.0F); + this.TopBase.setTextureSize(64, 32); + this.TopBase.mirror = true; + this.setRotation(this.TopBase, 0.0F, 0.0F, 0.0F); + this.BaseDepth = new ModelRenderer(this, 53, 0); + this.BaseDepth.addBox(0.0F, 0.0F, 0.0F, 10, 1, 14); + this.BaseDepth.setRotationPoint(-5.0F, 22.0F, -7.0F); + this.BaseDepth.setTextureSize(64, 32); + this.BaseDepth.mirror = true; + this.setRotation(this.BaseDepth, 0.0F, 0.0F, 0.0F); + this.Base = new ModelRenderer(this, 53, 28); + this.Base.addBox(0.0F, 0.0F, 0.0F, 12, 1, 12); + this.Base.setRotationPoint(-6.0F, 22.0F, -6.0F); + this.Base.setTextureSize(64, 32); + this.Base.mirror = true; + this.setRotation(this.Base, 0.0F, 0.0F, 0.0F); + this.HatMiddle = new ModelRenderer(this, 0, 42); + this.HatMiddle.addBox(0.0F, 0.0F, 0.0F, 10, 1, 10); + this.HatMiddle.setRotationPoint(-5.0F, 12.0F, -5.0F); + this.HatMiddle.setTextureSize(64, 32); + this.HatMiddle.mirror = true; + this.setRotation(this.HatMiddle, 0.0F, 0.0F, 0.0F); + this.HatCover = new ModelRenderer(this, 0, 12); + this.HatCover.addBox(0.0F, 0.0F, 0.0F, 7, 1, 7); + this.HatCover.setRotationPoint(-3.5F, 11.0F, -3.5F); + this.HatCover.setTextureSize(64, 32); + this.HatCover.mirror = true; + this.setRotation(this.HatCover, 0.0F, 0.0F, 0.0F); + this.HatTop = new ModelRenderer(this, 0, 21); + this.HatTop.addBox(0.0F, 0.0F, 0.0F, 9, 1, 9); + this.HatTop.setRotationPoint(-4.5F, 11.5F, -4.5F); + this.HatTop.setTextureSize(64, 32); + this.HatTop.mirror = true; + this.setRotation(this.HatTop, 0.0F, 0.0F, 0.0F); + this.HatDepth = new ModelRenderer(this, 0, 54); + this.HatDepth.addBox(0.0F, 0.0F, 0.0F, 8, 1, 12); + this.HatDepth.setRotationPoint(-4.0F, 12.0F, -6.0F); + this.HatDepth.setTextureSize(64, 32); + this.HatDepth.mirror = true; + this.setRotation(this.HatDepth, 0.0F, 0.0F, 0.0F); + this.HatWidth = new ModelRenderer(this, 0, 32); + this.HatWidth.addBox(0.0F, 0.0F, 0.0F, 12, 1, 8); + this.HatWidth.setRotationPoint(-6.0F, 12.0F, -4.0F); + this.HatWidth.setTextureSize(64, 32); + this.HatWidth.mirror = true; + this.setRotation(this.HatWidth, 0.0F, 0.0F, 0.0F); + this.MiddleFrontRight = new ModelRenderer(this, 0, 68); + this.MiddleFrontRight.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.MiddleFrontRight.setRotationPoint(3.0F, 14.0F, -4.0F); + this.MiddleFrontRight.setTextureSize(64, 32); + this.MiddleFrontRight.mirror = true; + this.setRotation(this.MiddleFrontRight, 0.0F, 0.0F, 0.0F); + this.MiddleFrontLeft = new ModelRenderer(this, 0, 68); + this.MiddleFrontLeft.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.MiddleFrontLeft.setRotationPoint(-4.0F, 14.0F, -4.0F); + this.MiddleFrontLeft.setTextureSize(64, 32); + this.MiddleFrontLeft.mirror = true; + this.setRotation(this.MiddleFrontLeft, 0.0F, 0.0F, 0.0F); + this.MiddleBackLeft = new ModelRenderer(this, 0, 68); + this.MiddleBackLeft.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.MiddleBackLeft.setRotationPoint(-4.0F, 14.0F, 3.0F); + this.MiddleBackLeft.setTextureSize(64, 32); + this.MiddleBackLeft.mirror = true; + this.setRotation(this.MiddleBackLeft, 0.0F, 0.0F, 0.0F); + this.MiddleBackRight = new ModelRenderer(this, 0, 68); + this.MiddleBackRight.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.MiddleBackRight.setRotationPoint(3.0F, 14.0F, 3.0F); + this.MiddleBackRight.setTextureSize(64, 32); + this.MiddleBackRight.mirror = true; + this.setRotation(this.MiddleBackRight, 0.0F, 0.0F, 0.0F); + this.MiddlePLeft = new ModelRenderer(this, 5, 68); + this.MiddlePLeft.addBox(0.0F, 1.466667F, 0.0F, 1, 8, 6); + this.MiddlePLeft.setRotationPoint(-5.0F, 12.5F, -3.0F); + this.MiddlePLeft.setTextureSize(64, 32); + this.MiddlePLeft.mirror = true; + this.setRotation(this.MiddlePLeft, 0.0F, 0.0F, 0.0F); + this.MiddlePFront = new ModelRenderer(this, 5, 83); + this.MiddlePFront.addBox(0.0F, 0.0F, 0.0F, 6, 8, 1); + this.MiddlePFront.setRotationPoint(-3.0F, 14.0F, -5.0F); + this.MiddlePFront.setTextureSize(64, 32); + this.MiddlePFront.mirror = true; + this.setRotation(this.MiddlePFront, 0.0F, 0.0F, 0.0F); + this.MiddlePBack = new ModelRenderer(this, 5, 83); + this.MiddlePBack.addBox(0.0F, 0.0F, 0.0F, 6, 8, 1); + this.MiddlePBack.setRotationPoint(-3.0F, 14.0F, 4.0F); + this.MiddlePBack.setTextureSize(64, 32); + this.MiddlePBack.mirror = true; + this.setRotation(this.MiddlePBack, 0.0F, 0.0F, 0.0F); + this.MiddlePRight = new ModelRenderer(this, 5, 68); + this.MiddlePRight.addBox(0.0F, 0.0F, 0.0F, 1, 8, 6); + this.MiddlePRight.setRotationPoint(4.0F, 14.0F, -3.0F); + this.MiddlePRight.setTextureSize(64, 32); + this.MiddlePRight.mirror = true; + this.setRotation(this.MiddlePRight, 0.0F, 0.0F, 0.0F); + this.FrontLeftSpike = new ModelRenderer(this, 44, 0); + this.FrontLeftSpike.addBox(-0.5F, -0.5F, 0.0F, 2, 3, 2); + this.FrontLeftSpike.setRotationPoint(-6.0F, 11.0F, -3.0F); + this.FrontLeftSpike.setTextureSize(64, 32); + this.FrontLeftSpike.mirror = true; + this.setRotation(this.FrontLeftSpike, 0.0F, 0.0F, -0.4363323F); + this.FrontRightSpike = new ModelRenderer(this, 44, 0); + this.FrontRightSpike.addBox(-0.5F, -1.0F, 0.0F, 2, 3, 2); + this.FrontRightSpike.setRotationPoint(5.0F, 11.0F, -3.0F); + this.FrontRightSpike.setTextureSize(64, 32); + this.FrontRightSpike.mirror = true; + this.setRotation(this.FrontRightSpike, 0.0F, 0.0F, 0.4363323F); + this.BackRightSpike = new ModelRenderer(this, 44, 0); + this.BackRightSpike.addBox(-0.5F, -1.0F, 0.0F, 2, 3, 2); + this.BackRightSpike.setRotationPoint(5.0F, 11.0F, 1.0F); + this.BackRightSpike.setTextureSize(64, 32); + this.BackRightSpike.mirror = true; + this.setRotation(this.BackRightSpike, 0.0F, 0.0F, 0.4363323F); + this.BackLeftSpike = new ModelRenderer(this, 44, 0); + this.BackLeftSpike.addBox(-0.5F, -0.5F, 0.0F, 2, 3, 2); + this.BackLeftSpike.setRotationPoint(-6.0F, 11.0F, 1.0F); + this.BackLeftSpike.setTextureSize(64, 32); + this.BackLeftSpike.mirror = true; + this.setRotation(this.BackLeftSpike, 0.0F, 0.0F, -0.4363323F); + this.OPLeftFront = new ModelRenderer(this, 0, 0); + this.OPLeftFront.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.OPLeftFront.setRotationPoint(-7.0F, 14.0F, -4.0F); + this.OPLeftFront.setTextureSize(64, 32); + this.OPLeftFront.mirror = true; + this.setRotation(this.OPLeftFront, 0.0F, 0.0F, 0.0F); + this.OPFrontRight = new ModelRenderer(this, 0, 0); + this.OPFrontRight.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.OPFrontRight.setRotationPoint(3.0F, 14.0F, -7.0F); + this.OPFrontRight.setTextureSize(64, 32); + this.OPFrontRight.mirror = true; + this.setRotation(this.OPFrontRight, 0.0F, 0.0F, 0.0F); + this.OPBackLeft = new ModelRenderer(this, 0, 0); + this.OPBackLeft.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.OPBackLeft.setRotationPoint(-4.0F, 14.0F, 6.0F); + this.OPBackLeft.setTextureSize(64, 32); + this.OPBackLeft.mirror = true; + this.setRotation(this.OPBackLeft, 0.0F, 0.0F, 0.0F); + this.OPLeftFront2 = new ModelRenderer(this, 0, 0); + this.OPLeftFront2.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.OPLeftFront2.setRotationPoint(6.0F, 14.0F, -4.0F); + this.OPLeftFront2.setTextureSize(64, 32); + this.OPLeftFront2.mirror = true; + this.setRotation(this.OPLeftFront2, 0.0F, 0.0F, 0.0F); + this.OPRightBack = new ModelRenderer(this, 0, 0); + this.OPRightBack.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.OPRightBack.setRotationPoint(6.0F, 14.0F, 3.0F); + this.OPRightBack.setTextureSize(64, 32); + this.OPRightBack.mirror = true; + this.setRotation(this.OPRightBack, 0.0F, 0.0F, 0.0F); + this.OPFrontLeft = new ModelRenderer(this, 0, 0); + this.OPFrontLeft.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.OPFrontLeft.setRotationPoint(-4.0F, 14.0F, -7.0F); + this.OPFrontLeft.setTextureSize(64, 32); + this.OPFrontLeft.mirror = true; + this.setRotation(this.OPFrontLeft, 0.0F, 0.0F, 0.0F); + this.OPLeftBack = new ModelRenderer(this, 0, 0); + this.OPLeftBack.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.OPLeftBack.setRotationPoint(-7.0F, 14.0F, 3.0F); + this.OPLeftBack.setTextureSize(64, 32); + this.OPLeftBack.mirror = true; + this.setRotation(this.OPLeftBack, 0.0F, 0.0F, 0.0F); + this.OPBackRight = new ModelRenderer(this, 0, 0); + this.OPBackRight.addBox(0.0F, 0.0F, 0.0F, 1, 8, 1); + this.OPBackRight.setRotationPoint(3.0F, 14.0F, 6.0F); + this.OPBackRight.setTextureSize(64, 32); + this.OPBackRight.mirror = true; + this.setRotation(this.OPBackRight, 0.0F, 0.0F, 0.0F); + } + + public void render(float f5) { + this.TopBaseWidth.render(f5); + this.BaseWidth.render(f5); + this.BottomPad.render(f5); + this.TopBaseDepth.render(f5); + this.TopBase.render(f5); + this.BaseDepth.render(f5); + this.Base.render(f5); + this.HatMiddle.render(f5); + this.HatCover.render(f5); + this.HatTop.render(f5); + this.HatDepth.render(f5); + this.HatWidth.render(f5); + this.MiddleFrontRight.render(f5); + this.MiddleFrontLeft.render(f5); + this.MiddleBackLeft.render(f5); + this.MiddleBackRight.render(f5); + this.MiddlePLeft.render(f5); + this.MiddlePFront.render(f5); + this.MiddlePBack.render(f5); + this.MiddlePRight.render(f5); + this.FrontLeftSpike.render(f5); + this.FrontRightSpike.render(f5); + this.BackRightSpike.render(f5); + this.BackLeftSpike.render(f5); + this.OPLeftFront.render(f5); + this.OPFrontRight.render(f5); + this.OPBackLeft.render(f5); + this.OPLeftFront2.render(f5); + this.OPRightBack.render(f5); + this.OPFrontLeft.render(f5); + this.OPLeftBack.render(f5); + this.OPBackRight.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } +} diff --git a/src/main/java/atomicscience/muoxing/MTurbine.java b/src/main/java/atomicscience/muoxing/MTurbine.java new file mode 100644 index 0000000..9f753a3 --- /dev/null +++ b/src/main/java/atomicscience/muoxing/MTurbine.java @@ -0,0 +1,221 @@ +package atomicscience.muoxing; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; + +@SideOnly(Side.CLIENT) +public class MTurbine extends ModelBase { + ModelRenderer SUPPORT; + ModelRenderer PLUG; + ModelRenderer MAIN_AXIS_SPINS; + ModelRenderer BLADE_A1_SPINS; + ModelRenderer BLADE_A2_SPINS; + ModelRenderer BLADE_A3_SPINS; + ModelRenderer BLADE_B1_SPINS; + ModelRenderer BLADE_B2_SPINS; + ModelRenderer BLADE_B3_SPINS; + ModelRenderer TURBINE_HEAD_SPINS; + ModelRenderer SHIELD_A1_SPINS; + ModelRenderer SHIELD_A2_SPINS; + ModelRenderer SHIELD_A3_SPINS; + ModelRenderer SHIELD_A4_SPINS; + ModelRenderer SHIELD_A5_SPINS; + ModelRenderer SHIELD_A6_SPINS; + ModelRenderer SHIELD_B1_SPINS; + ModelRenderer SHIELD_B2_SPINS; + ModelRenderer SHIELD_B3_SPINS; + ModelRenderer SHIELD_B4_SPINS; + ModelRenderer SHIELD_B5_SPINS; + ModelRenderer SHIELD_B6_SPINS; + + + public MTurbine() { + super.textureWidth = 64; + super.textureHeight = 64; + this.SUPPORT = new ModelRenderer(this, 0, 0); + this.SUPPORT.addBox(0.0F, 0.0F, 0.0F, 8, 1, 8); + this.SUPPORT.setRotationPoint(-4.0F, 9.0F, -4.0F); + this.SUPPORT.setTextureSize(64, 64); + this.SUPPORT.mirror = true; + this.setRotation(this.SUPPORT, 0.0F, 0.0F, 0.0F); + this.PLUG = new ModelRenderer(this, 0, 10); + this.PLUG.addBox(0.0F, 0.0F, 0.0F, 4, 1, 4); + this.PLUG.setRotationPoint(-2.0F, 8.0F, -2.0F); + this.PLUG.setTextureSize(64, 64); + this.PLUG.mirror = true; + this.setRotation(this.PLUG, 0.0F, 0.0F, 0.0F); + this.MAIN_AXIS_SPINS = new ModelRenderer(this, 33, 0); + this.MAIN_AXIS_SPINS.addBox(-1.0F, 0.0F, -1.0F, 2, 13, 2); + this.MAIN_AXIS_SPINS.setRotationPoint(0.0F, 10.0F, 0.0F); + this.MAIN_AXIS_SPINS.setTextureSize(64, 64); + this.MAIN_AXIS_SPINS.mirror = true; + this.setRotation(this.MAIN_AXIS_SPINS, 0.0F, 0.0F, 0.0F); + this.BLADE_A1_SPINS = new ModelRenderer(this, 0, 16); + this.BLADE_A1_SPINS.addBox(-6.0F, 0.0F, -1.0F, 12, 1, 2); + this.BLADE_A1_SPINS.setRotationPoint(0.0F, 13.0F, 0.0F); + this.BLADE_A1_SPINS.setTextureSize(64, 64); + this.BLADE_A1_SPINS.mirror = true; + this.setRotation(this.BLADE_A1_SPINS, 0.2617994F, 2.094395F, 0.0F); + this.BLADE_A2_SPINS = new ModelRenderer(this, 0, 16); + this.BLADE_A2_SPINS.addBox(-6.0F, 0.0F, -1.0F, 12, 1, 2); + this.BLADE_A2_SPINS.setRotationPoint(0.0F, 13.0F, 0.0F); + this.BLADE_A2_SPINS.setTextureSize(64, 64); + this.BLADE_A2_SPINS.mirror = true; + this.setRotation(this.BLADE_A2_SPINS, 0.2617994F, 1.047198F, 0.0F); + this.BLADE_A3_SPINS = new ModelRenderer(this, 0, 16); + this.BLADE_A3_SPINS.addBox(-6.0F, 0.0F, -1.0F, 12, 1, 2); + this.BLADE_A3_SPINS.setRotationPoint(0.0F, 13.0F, 0.0F); + this.BLADE_A3_SPINS.setTextureSize(64, 64); + this.BLADE_A3_SPINS.mirror = true; + this.setRotation(this.BLADE_A3_SPINS, 0.2617994F, 0.0F, 0.0F); + this.BLADE_B1_SPINS = new ModelRenderer(this, 0, 20); + this.BLADE_B1_SPINS.addBox(-5.0F, 0.0F, -1.0F, 10, 1, 2); + this.BLADE_B1_SPINS.setRotationPoint(0.0F, 18.0F, 0.0F); + this.BLADE_B1_SPINS.setTextureSize(64, 64); + this.BLADE_B1_SPINS.mirror = true; + this.setRotation(this.BLADE_B1_SPINS, 0.2617994F, 1.570796F, 0.0F); + this.BLADE_B2_SPINS = new ModelRenderer(this, 0, 20); + this.BLADE_B2_SPINS.addBox(-5.0F, 0.0F, -1.0F, 10, 1, 2); + this.BLADE_B2_SPINS.setRotationPoint(0.0F, 18.0F, 0.0F); + this.BLADE_B2_SPINS.setTextureSize(64, 64); + this.BLADE_B2_SPINS.mirror = true; + this.setRotation(this.BLADE_B2_SPINS, 0.2617994F, 2.617994F, 0.0F); + this.BLADE_B3_SPINS = new ModelRenderer(this, 0, 20); + this.BLADE_B3_SPINS.addBox(-5.0F, 0.0F, -1.0F, 10, 1, 2); + this.BLADE_B3_SPINS.setRotationPoint(0.0F, 18.0F, 0.0F); + this.BLADE_B3_SPINS.setTextureSize(64, 64); + this.BLADE_B3_SPINS.mirror = true; + this.setRotation(this.BLADE_B3_SPINS, 0.2617994F, 0.5235988F, 0.0F); + this.TURBINE_HEAD_SPINS = new ModelRenderer(this, 0, 24); + this.TURBINE_HEAD_SPINS.addBox(-2.0F, 0.0F, -2.0F, 4, 2, 4); + this.TURBINE_HEAD_SPINS.setRotationPoint(0.0F, 20.0F, 0.0F); + this.TURBINE_HEAD_SPINS.setTextureSize(64, 64); + this.TURBINE_HEAD_SPINS.mirror = true; + this.setRotation(this.TURBINE_HEAD_SPINS, 0.0F, 0.0F, 0.0F); + this.SHIELD_A1_SPINS = new ModelRenderer(this, 0, 40); + this.SHIELD_A1_SPINS.addBox(6.0F, 0.0F, -4.0F, 1, 2, 8); + this.SHIELD_A1_SPINS.setRotationPoint(0.0F, 13.0F, 0.0F); + this.SHIELD_A1_SPINS.setTextureSize(64, 64); + this.SHIELD_A1_SPINS.mirror = true; + this.setRotation(this.SHIELD_A1_SPINS, 0.0F, -3.141593F, 0.0F); + this.SHIELD_A2_SPINS = new ModelRenderer(this, 0, 40); + this.SHIELD_A2_SPINS.addBox(6.0F, 0.0F, -4.0F, 1, 2, 8); + this.SHIELD_A2_SPINS.setRotationPoint(0.0F, 13.0F, 0.0F); + this.SHIELD_A2_SPINS.setTextureSize(64, 64); + this.SHIELD_A2_SPINS.mirror = true; + this.setRotation(this.SHIELD_A2_SPINS, 0.0F, 1.047198F, 0.0F); + this.SHIELD_A3_SPINS = new ModelRenderer(this, 0, 40); + this.SHIELD_A3_SPINS.addBox(6.0F, 0.0F, -4.0F, 1, 2, 8); + this.SHIELD_A3_SPINS.setRotationPoint(0.0F, 13.0F, 0.0F); + this.SHIELD_A3_SPINS.setTextureSize(64, 64); + this.SHIELD_A3_SPINS.mirror = true; + this.setRotation(this.SHIELD_A3_SPINS, 0.0F, -1.047198F, 0.0F); + this.SHIELD_A4_SPINS = new ModelRenderer(this, 0, 40); + this.SHIELD_A4_SPINS.addBox(6.0F, 0.0F, -4.0F, 1, 2, 8); + this.SHIELD_A4_SPINS.setRotationPoint(0.0F, 13.0F, 0.0F); + this.SHIELD_A4_SPINS.setTextureSize(64, 64); + this.SHIELD_A4_SPINS.mirror = true; + this.setRotation(this.SHIELD_A4_SPINS, 0.0F, -2.094395F, 0.0F); + this.SHIELD_A5_SPINS = new ModelRenderer(this, 0, 40); + this.SHIELD_A5_SPINS.addBox(6.0F, 0.0F, -4.0F, 1, 2, 8); + this.SHIELD_A5_SPINS.setRotationPoint(0.0F, 13.0F, 0.0F); + this.SHIELD_A5_SPINS.setTextureSize(64, 64); + this.SHIELD_A5_SPINS.mirror = true; + this.setRotation(this.SHIELD_A5_SPINS, 0.0F, 0.0F, 0.0F); + this.SHIELD_A6_SPINS = new ModelRenderer(this, 0, 40); + this.SHIELD_A6_SPINS.addBox(6.0F, 0.0F, -4.0F, 1, 2, 8); + this.SHIELD_A6_SPINS.setRotationPoint(0.0F, 13.0F, 0.0F); + this.SHIELD_A6_SPINS.setTextureSize(64, 64); + this.SHIELD_A6_SPINS.mirror = true; + this.setRotation(this.SHIELD_A6_SPINS, 0.0F, 2.094395F, 0.0F); + this.SHIELD_B1_SPINS = new ModelRenderer(this, 0, 31); + this.SHIELD_B1_SPINS.addBox(5.0F, 0.0F, -3.0F, 1, 2, 6); + this.SHIELD_B1_SPINS.setRotationPoint(0.0F, 18.0F, 0.0F); + this.SHIELD_B1_SPINS.setTextureSize(64, 64); + this.SHIELD_B1_SPINS.mirror = true; + this.setRotation(this.SHIELD_B1_SPINS, 0.0F, -0.5235988F, 0.0F); + this.SHIELD_B2_SPINS = new ModelRenderer(this, 0, 31); + this.SHIELD_B2_SPINS.addBox(5.0F, 0.0F, -3.0F, 1, 2, 6); + this.SHIELD_B2_SPINS.setRotationPoint(0.0F, 18.0F, 0.0F); + this.SHIELD_B2_SPINS.setTextureSize(64, 64); + this.SHIELD_B2_SPINS.mirror = true; + this.setRotation(this.SHIELD_B2_SPINS, 0.0F, 1.570796F, 0.0F); + this.SHIELD_B3_SPINS = new ModelRenderer(this, 0, 31); + this.SHIELD_B3_SPINS.addBox(5.0F, 0.0F, -3.0F, 1, 2, 6); + this.SHIELD_B3_SPINS.setRotationPoint(0.0F, 18.0F, 0.0F); + this.SHIELD_B3_SPINS.setTextureSize(64, 64); + this.SHIELD_B3_SPINS.mirror = true; + this.setRotation(this.SHIELD_B3_SPINS, 0.0F, 0.5235988F, 0.0F); + this.SHIELD_B4_SPINS = new ModelRenderer(this, 0, 31); + this.SHIELD_B4_SPINS.addBox(5.0F, 0.0F, -3.0F, 1, 2, 6); + this.SHIELD_B4_SPINS.setRotationPoint(0.0F, 18.0F, 0.0F); + this.SHIELD_B4_SPINS.setTextureSize(64, 64); + this.SHIELD_B4_SPINS.mirror = true; + this.setRotation(this.SHIELD_B4_SPINS, 0.0F, -1.570796F, 0.0F); + this.SHIELD_B5_SPINS = new ModelRenderer(this, 0, 31); + this.SHIELD_B5_SPINS.addBox(5.0F, 0.0F, -3.0F, 1, 2, 6); + this.SHIELD_B5_SPINS.setRotationPoint(0.0F, 18.0F, 0.0F); + this.SHIELD_B5_SPINS.setTextureSize(64, 64); + this.SHIELD_B5_SPINS.mirror = true; + this.setRotation(this.SHIELD_B5_SPINS, 0.0F, 2.617994F, 0.0F); + this.SHIELD_B6_SPINS = new ModelRenderer(this, 0, 31); + this.SHIELD_B6_SPINS.addBox(5.0F, 0.0F, -3.0F, 1, 2, 6); + this.SHIELD_B6_SPINS.setRotationPoint(0.0F, 18.0F, 0.0F); + this.SHIELD_B6_SPINS.setTextureSize(64, 64); + this.SHIELD_B6_SPINS.mirror = true; + this.setRotation(this.SHIELD_B6_SPINS, 0.0F, -2.617994F, 0.0F); + } + + public void render(float rotation, float f5) { + this.SUPPORT.render(f5); + this.PLUG.render(f5); + this.MAIN_AXIS_SPINS.rotateAngleY = -rotation; + this.MAIN_AXIS_SPINS.render(f5); + this.BLADE_A1_SPINS.rotateAngleY = (float)(-((double)rotation + 1.570796D)); + this.BLADE_A1_SPINS.render(f5); + this.BLADE_A2_SPINS.rotateAngleY = (float)(-((double)rotation + 2.617994D)); + this.BLADE_A2_SPINS.render(f5); + this.BLADE_A3_SPINS.rotateAngleY = (float)(-((double)rotation + 0.5235988D)); + this.BLADE_A3_SPINS.render(f5); + this.BLADE_B1_SPINS.rotateAngleY = (float)((double)rotation + 1.570796D); + this.BLADE_B1_SPINS.render(f5); + this.BLADE_B2_SPINS.rotateAngleY = (float)((double)rotation + 2.617994D); + this.BLADE_B2_SPINS.render(f5); + this.BLADE_B3_SPINS.rotateAngleY = (float)((double)rotation + 0.5235988D); + this.BLADE_B3_SPINS.render(f5); + this.TURBINE_HEAD_SPINS.rotateAngleY = rotation; + this.TURBINE_HEAD_SPINS.render(f5); + this.SHIELD_A1_SPINS.rotateAngleY = -rotation; + this.SHIELD_A1_SPINS.render(f5); + this.SHIELD_A2_SPINS.rotateAngleY = (float)(-((double)rotation + 2.094395D)); + this.SHIELD_A2_SPINS.render(f5); + this.SHIELD_A3_SPINS.rotateAngleY = (float)(-((double)rotation - 3.141593D)); + this.SHIELD_A3_SPINS.render(f5); + this.SHIELD_A4_SPINS.rotateAngleY = (float)(-((double)rotation + 1.047198D)); + this.SHIELD_A4_SPINS.render(f5); + this.SHIELD_A5_SPINS.rotateAngleY = (float)(-((double)rotation - 1.047198D)); + this.SHIELD_A5_SPINS.render(f5); + this.SHIELD_A6_SPINS.rotateAngleY = (float)(-((double)rotation - 2.094395D)); + this.SHIELD_A6_SPINS.render(f5); + this.SHIELD_B1_SPINS.rotateAngleY = rotation; + this.SHIELD_B1_SPINS.render(f5); + this.SHIELD_B2_SPINS.rotateAngleY = (float)((double)rotation + 2.094395D); + this.SHIELD_B2_SPINS.render(f5); + this.SHIELD_B3_SPINS.rotateAngleY = (float)((double)rotation - 3.141593D); + this.SHIELD_B3_SPINS.render(f5); + this.SHIELD_B4_SPINS.rotateAngleY = (float)((double)rotation + 1.047198D); + this.SHIELD_B4_SPINS.render(f5); + this.SHIELD_B5_SPINS.rotateAngleY = (float)((double)rotation - 1.047198D); + this.SHIELD_B5_SPINS.render(f5); + this.SHIELD_B6_SPINS.rotateAngleY = (float)((double)rotation - 2.094395D); + this.SHIELD_B6_SPINS.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } +} diff --git a/src/main/java/atomicscience/muoxing/MUnused.java b/src/main/java/atomicscience/muoxing/MUnused.java new file mode 100644 index 0000000..50fd6d5 --- /dev/null +++ b/src/main/java/atomicscience/muoxing/MUnused.java @@ -0,0 +1,159 @@ +package atomicscience.muoxing; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; + +@SideOnly(Side.CLIENT) +public class MUnused extends ModelBase { + ModelRenderer BASE; + ModelRenderer SHIELD_1; + ModelRenderer SHIELD_2; + ModelRenderer SHIELD_3; + ModelRenderer SHIELD_4; + ModelRenderer REACTOR_SUPPORT_ROD_ROTATES; + ModelRenderer SUPPORT_PLATE_1_ROTATES; + ModelRenderer SUPPORT_PLATE_2_ROTATES; + ModelRenderer FUEL_BAR_1_ROTATES; + ModelRenderer FUEL_BAR_2_ROTATES; + ModelRenderer FUEL_BAR_3_ROTATES; + ModelRenderer FUEL_BAR_4_ROTATES; + ModelRenderer CONVERTER; + ModelRenderer SUB_SHIELD_1; + ModelRenderer SUB_SHIELD_2; + ModelRenderer Shape1; + + public MUnused() { + super.textureWidth = 128; + super.textureHeight = 128; + this.BASE = new ModelRenderer(this, 0, 0); + this.BASE.addBox(0.0F, 0.0F, 0.0F, 16, 1, 16); + this.BASE.setRotationPoint(-8.0F, 23.0F, -8.0F); + this.BASE.setTextureSize(128, 128); + this.BASE.mirror = true; + this.setRotation(this.BASE, 0.0F, 0.0F, 0.0F); + this.SHIELD_1 = new ModelRenderer(this, 11, 18); + this.SHIELD_1.addBox(0.0F, 0.0F, 0.0F, 1, 10, 8); + this.SHIELD_1.setRotationPoint(0.0F, 13.0F, 6.0F); + this.SHIELD_1.setTextureSize(128, 128); + this.SHIELD_1.mirror = true; + this.setRotation(this.SHIELD_1, 0.0F, -2.234021F, 0.0F); + this.SHIELD_2 = new ModelRenderer(this, 0, 18); + this.SHIELD_2.addBox(0.0F, 0.0F, 0.0F, 1, 10, 4); + this.SHIELD_2.setRotationPoint(-7.0F, 13.0F, -2.0F); + this.SHIELD_2.setTextureSize(128, 128); + this.SHIELD_2.mirror = true; + this.setRotation(this.SHIELD_2, 0.0F, 0.0F, 0.0F); + this.SHIELD_3 = new ModelRenderer(this, 11, 37); + this.SHIELD_3.addBox(0.0F, 0.0F, 0.0F, 1, 10, 8); + this.SHIELD_3.setRotationPoint(5.0F, 13.0F, -3.0F); + this.SHIELD_3.setTextureSize(128, 128); + this.SHIELD_3.mirror = true; + this.setRotation(this.SHIELD_3, 0.0F, 0.0F, 0.0F); + this.SHIELD_4 = new ModelRenderer(this, 0, 37); + this.SHIELD_4.addBox(0.0F, 0.0F, 0.0F, 1, 10, 4); + this.SHIELD_4.setRotationPoint(6.0F, 13.0F, -3.0F); + this.SHIELD_4.setTextureSize(128, 128); + this.SHIELD_4.mirror = true; + this.setRotation(this.SHIELD_4, 0.0F, -2.094395F, 0.0F); + this.REACTOR_SUPPORT_ROD_ROTATES = new ModelRenderer(this, 0, 67); + this.REACTOR_SUPPORT_ROD_ROTATES.addBox(-1.0F, 0.0F, -1.0F, 2, 13, 2); + this.REACTOR_SUPPORT_ROD_ROTATES.setRotationPoint(0.0F, 10.0F, 0.0F); + this.REACTOR_SUPPORT_ROD_ROTATES.setTextureSize(128, 128); + this.REACTOR_SUPPORT_ROD_ROTATES.mirror = true; + this.setRotation(this.REACTOR_SUPPORT_ROD_ROTATES, 0.0F, 0.0F, 0.0F); + this.SUPPORT_PLATE_1_ROTATES = new ModelRenderer(this, 9, 57); + this.SUPPORT_PLATE_1_ROTATES.addBox(-3.0F, 0.0F, -3.0F, 6, 1, 6); + this.SUPPORT_PLATE_1_ROTATES.setRotationPoint(0.0F, 19.0F, 0.0F); + this.SUPPORT_PLATE_1_ROTATES.setTextureSize(128, 128); + this.SUPPORT_PLATE_1_ROTATES.mirror = true; + this.setRotation(this.SUPPORT_PLATE_1_ROTATES, 0.0F, 0.7853982F, 0.0F); + this.SUPPORT_PLATE_2_ROTATES = new ModelRenderer(this, 9, 57); + this.SUPPORT_PLATE_2_ROTATES.addBox(-3.0F, 0.0F, -3.0F, 6, 1, 6); + this.SUPPORT_PLATE_2_ROTATES.setRotationPoint(0.0F, 13.0F, 0.0F); + this.SUPPORT_PLATE_2_ROTATES.setTextureSize(128, 128); + this.SUPPORT_PLATE_2_ROTATES.mirror = true; + this.setRotation(this.SUPPORT_PLATE_2_ROTATES, 0.0F, 0.7853982F, 0.0F); + this.FUEL_BAR_1_ROTATES = new ModelRenderer(this, 0, 54); + this.FUEL_BAR_1_ROTATES.addBox(-1.0F, 0.0F, 2.0F, 2, 9, 2); + this.FUEL_BAR_1_ROTATES.setRotationPoint(0.0F, 12.0F, 0.0F); + this.FUEL_BAR_1_ROTATES.setTextureSize(128, 128); + this.FUEL_BAR_1_ROTATES.mirror = true; + this.setRotation(this.FUEL_BAR_1_ROTATES, 0.0F, 0.0F, 0.0F); + this.FUEL_BAR_2_ROTATES = new ModelRenderer(this, 0, 54); + this.FUEL_BAR_2_ROTATES.addBox(2.0F, 0.0F, -1.0F, 2, 9, 2); + this.FUEL_BAR_2_ROTATES.setRotationPoint(0.0F, 12.0F, 0.0F); + this.FUEL_BAR_2_ROTATES.setTextureSize(128, 128); + this.FUEL_BAR_2_ROTATES.mirror = true; + this.setRotation(this.FUEL_BAR_2_ROTATES, 0.0F, 0.0F, 0.0F); + this.FUEL_BAR_3_ROTATES = new ModelRenderer(this, 0, 54); + this.FUEL_BAR_3_ROTATES.addBox(-1.0F, 0.0F, -4.0F, 2, 9, 2); + this.FUEL_BAR_3_ROTATES.setRotationPoint(0.0F, 12.0F, 0.0F); + this.FUEL_BAR_3_ROTATES.setTextureSize(128, 128); + this.FUEL_BAR_3_ROTATES.mirror = true; + this.setRotation(this.FUEL_BAR_3_ROTATES, 0.0F, 0.0F, 0.0F); + this.FUEL_BAR_4_ROTATES = new ModelRenderer(this, 0, 54); + this.FUEL_BAR_4_ROTATES.addBox(-4.0F, 0.0F, -1.0F, 2, 9, 2); + this.FUEL_BAR_4_ROTATES.setRotationPoint(0.0F, 12.0F, 0.0F); + this.FUEL_BAR_4_ROTATES.setTextureSize(128, 128); + this.FUEL_BAR_4_ROTATES.mirror = true; + this.setRotation(this.FUEL_BAR_4_ROTATES, 0.0F, 0.0F, 0.0F); + this.CONVERTER = new ModelRenderer(this, 35, 56); + this.CONVERTER.addBox(0.0F, 0.0F, 0.0F, 7, 10, 1); + this.CONVERTER.setRotationPoint(-1.0F, 13.0F, 6.0F); + this.CONVERTER.setTextureSize(128, 128); + this.CONVERTER.mirror = true; + this.setRotation(this.CONVERTER, 0.0F, 0.296706F, 0.0F); + this.SUB_SHIELD_1 = new ModelRenderer(this, 53, 37); + this.SUB_SHIELD_1.addBox(0.0F, 0.0F, 0.0F, 1, 4, 4); + this.SUB_SHIELD_1.setRotationPoint(8.0F, 19.0F, -5.0F); + this.SUB_SHIELD_1.setTextureSize(128, 128); + this.SUB_SHIELD_1.mirror = true; + this.setRotation(this.SUB_SHIELD_1, 0.0F, -2.094395F, 0.0F); + this.SUB_SHIELD_2 = new ModelRenderer(this, 30, 37); + this.SUB_SHIELD_2.addBox(0.0F, 0.0F, 0.0F, 1, 4, 10); + this.SUB_SHIELD_2.setRotationPoint(7.0F, 19.0F, -5.0F); + this.SUB_SHIELD_2.setTextureSize(128, 128); + this.SUB_SHIELD_2.mirror = true; + this.setRotation(this.SUB_SHIELD_2, 0.0F, 0.0F, 0.0F); + this.Shape1 = new ModelRenderer(this, 10, 65); + this.Shape1.addBox(0.0F, 0.0F, 0.0F, 5, 2, 5); + this.Shape1.setRotationPoint(-7.0F, 22.0F, -7.0F); + this.Shape1.setTextureSize(128, 128); + this.Shape1.mirror = true; + this.setRotation(this.Shape1, 0.1745329F, 0.0F, 0.0F); + } + + public void render(float rotation, float f5) { + this.BASE.render(f5); + this.SHIELD_1.render(f5); + this.SHIELD_2.render(f5); + this.SHIELD_3.render(f5); + this.SHIELD_4.render(f5); + this.REACTOR_SUPPORT_ROD_ROTATES.rotateAngleY = rotation; + this.REACTOR_SUPPORT_ROD_ROTATES.render(f5); + this.SUPPORT_PLATE_1_ROTATES.rotateAngleY = rotation; + this.SUPPORT_PLATE_1_ROTATES.render(f5); + this.SUPPORT_PLATE_2_ROTATES.rotateAngleY = rotation; + this.SUPPORT_PLATE_2_ROTATES.render(f5); + this.FUEL_BAR_1_ROTATES.rotateAngleY = rotation; + this.FUEL_BAR_1_ROTATES.render(f5); + this.FUEL_BAR_2_ROTATES.rotateAngleY = rotation; + this.FUEL_BAR_2_ROTATES.render(f5); + this.FUEL_BAR_3_ROTATES.rotateAngleY = rotation; + this.FUEL_BAR_3_ROTATES.render(f5); + this.FUEL_BAR_4_ROTATES.rotateAngleY = rotation; + this.FUEL_BAR_4_ROTATES.render(f5); + this.CONVERTER.render(f5); + this.SUB_SHIELD_1.render(f5); + this.SUB_SHIELD_2.render(f5); + this.Shape1.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } +} diff --git a/src/main/java/atomicscience/render/RAtomicAssembler.java b/src/main/java/atomicscience/render/RAtomicAssembler.java new file mode 100644 index 0000000..9de20e9 --- /dev/null +++ b/src/main/java/atomicscience/render/RAtomicAssembler.java @@ -0,0 +1,44 @@ +package atomicscience.render; + +import atomicscience.TAtomicAssembler; +import atomicscience.muoxing.MAtomicAssembler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; + +import org.lwjgl.opengl.GL11; + +@SideOnly(Side.CLIENT) +public class RAtomicAssembler extends TileEntitySpecialRenderer { + + public static final MAtomicAssembler MODEL = new MAtomicAssembler(); + public static final String TEXTURE = "atomic_assembler.png"; + //private final RenderBlocks renderBlocks = new RenderBlocks(); + + public void renderModelAt(TAtomicAssembler tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslatef((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F); + this.bindTexture(new ResourceLocation("atomicscience", "textures/models/atomic_assembler.png")); + GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F); + MODEL.render(tileEntity.rotationYaw1, tileEntity.rotationYaw2, tileEntity.rotationYaw3, 0.0625F); + GL11.glPopMatrix(); + RenderItem renderItem = (RenderItem)RenderManager.instance.getEntityClassRenderObject(EntityItem.class); + //RenderEngine renderEngine = Minecraft.getMinecraft().renderEngine; + GL11.glPushMatrix(); + if(tileEntity.entityItem != null) { + renderItem.doRender(tileEntity.entityItem, x + 0.5D, y + 0.4D, z + 0.5D, 0.0F, 0.0F); + } + + GL11.glPopMatrix(); + } + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double var2, double var4, double var6, float var8) { + this.renderModelAt((TAtomicAssembler)tileEntity, var2, var4, var6, var8); + } +} diff --git a/src/main/java/atomicscience/render/RCentrifuge.java b/src/main/java/atomicscience/render/RCentrifuge.java new file mode 100644 index 0000000..6256624 --- /dev/null +++ b/src/main/java/atomicscience/render/RCentrifuge.java @@ -0,0 +1,51 @@ +package atomicscience.render; + +import atomicscience.fenlie.TCentrifuge; +import atomicscience.muoxing.MCentrifuge; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; + +import org.lwjgl.opengl.GL11; + +@SideOnly(Side.CLIENT) +public class RCentrifuge extends TileEntitySpecialRenderer { + public static final MCentrifuge MODEL = new MCentrifuge(); + public static final String TEXTURE = "centrifuge.png"; + + + public void renderAModelAt(TCentrifuge tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslatef((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F); + this.bindTexture(new ResourceLocation("atomicscience", "textures/models/centrifuge.png")); + GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F); + int facingDirection = tileEntity.getBlockMetadata(); + switch(facingDirection) { + case 2: + GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F); + break; + case 3: + GL11.glRotatef(0.0F, 0.0F, 1.0F, 0.0F); + break; + case 4: + GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); + break; + case 5: + GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F); + } + + if(tileEntity.smeltingTicks > 0) { + tileEntity.xuanZhuan = (float)((double)tileEntity.xuanZhuan + (double)f * 0.3D); + } + + MODEL.render(tileEntity.xuanZhuan, 0.0625F); + GL11.glPopMatrix(); + } + + public void renderTileEntityAt(TileEntity tileEntity, double var2, double var4, double var6, float var8) { + this.renderAModelAt((TCentrifuge)tileEntity, var2, var4, var6, var8); + } + +} diff --git a/src/main/java/atomicscience/render/RExtractor.java b/src/main/java/atomicscience/render/RExtractor.java new file mode 100644 index 0000000..e9147c0 --- /dev/null +++ b/src/main/java/atomicscience/render/RExtractor.java @@ -0,0 +1,50 @@ +package atomicscience.render; + +import atomicscience.jiqi.TChemicalExtractor; +import atomicscience.muoxing.MExtractor; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + +@SideOnly(Side.CLIENT) +public class RExtractor extends TileEntitySpecialRenderer { + public static final MExtractor MODEL = new MExtractor(); + public static final String TEXTURE = "extractor.png"; + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, + double z, float f) { + TChemicalExtractor te = (TChemicalExtractor)tileEntity; + GL11.glPushMatrix(); + GL11.glTranslatef((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F); + this.bindTexture( + new ResourceLocation("atomicscience", "textures/models/extractor.png")); + GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F); + switch ( + te.getDirection(te.getWorldObj(), te.xCoord, te.yCoord, te.zCoord)) { + case NORTH: + GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); + break; + case SOUTH: + GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F); + break; + case WEST: + GL11.glRotatef(0.0F, 0.0F, 1.0F, 0.0F); + break; + case EAST: + GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F); + default: + break; + } + + if (te.smeltingTicks > 0) { + te.rotation = (float)((double)te.rotation + (double)f * 0.3D); + } + + MODEL.render(te.rotation, 0.0625F); + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/atomicscience/render/RFusionReactor.java b/src/main/java/atomicscience/render/RFusionReactor.java new file mode 100644 index 0000000..2713e7b --- /dev/null +++ b/src/main/java/atomicscience/render/RFusionReactor.java @@ -0,0 +1,36 @@ +package atomicscience.render; + +import atomicscience.hecheng.TFusionReactor; +import atomicscience.muoxing.MFusionReactor; +import calclavia.lib.render.RenderTaggedTile; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; + +import org.lwjgl.opengl.GL11; + +@SideOnly(Side.CLIENT) +public class RFusionReactor extends RenderTaggedTile { + + public static final MFusionReactor MODEL = new MFusionReactor(); + public static final String TEXTURE = "fusion_reactor.png"; + + + public void renderTileEntityAt(TileEntity t, double x, double y, double z, float f) { + super.renderTileEntityAt(t, x, y, z, f); + TFusionReactor tileEntity = (TFusionReactor)t; + GL11.glPushMatrix(); + GL11.glTranslatef((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F); + this.bindTexture(new ResourceLocation("atomicscience", "textures/models/fusion_reactor.png")); + GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F); + MODEL.render((float)Math.toRadians((double)tileEntity.rotation), 0.0625F); + tileEntity.rotation = (float)((double)tileEntity.rotation + tileEntity.wattsReceived / 500.0D); + if(tileEntity.rotation > 360.0F) { + tileEntity.rotation = 0.0F; + } + + GL11.glPopMatrix(); + } + +} diff --git a/src/main/java/atomicscience/render/RH.java b/src/main/java/atomicscience/render/RH.java new file mode 100644 index 0000000..50fc133 --- /dev/null +++ b/src/main/java/atomicscience/render/RH.java @@ -0,0 +1,74 @@ +package atomicscience.render; + +import atomicscience.AtomicScience; +import cpw.mods.fml.client.FMLClientHandler; +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.IBlockAccess; +import org.lwjgl.opengl.GL11; + +@SideOnly(Side.CLIENT) +public class RH implements ISimpleBlockRenderingHandler { + + public static final int BLOCK_RENDER_ID = + RenderingRegistry.getNextAvailableRenderId(); + + public void renderInventoryBlock(Block block, int metadata, int modelID, + RenderBlocks renderer) { + GL11.glPushMatrix(); + GL11.glTranslatef(0.0F, 1.1F, 0.0F); + GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F); + if (block == AtomicScience.bTurbine) { + FMLClientHandler.instance().getClient().renderEngine.bindTexture( + new ResourceLocation("atomicscience", "textures/models/turbine.png")); + RTurbine.MODEL.render(0.0F, 0.0625F); + } else if (block == AtomicScience.bCentrifuge) { + FMLClientHandler.instance().getClient().renderEngine.bindTexture( + new ResourceLocation("atomicscience", + "textures/models/centrifuge.png")); + RCentrifuge.MODEL.render(0.0F, 0.0625F); + } else if (block == AtomicScience.bChemicalExtractor) { + FMLClientHandler.instance().getClient().renderEngine.bindTexture( + new ResourceLocation("atomicscience", + "textures/models/extractor.png")); + RExtractor.MODEL.render(0.0F, 0.0625F); + } else if (block == AtomicScience.bNuclearBoiler) { + FMLClientHandler.instance().getClient().renderEngine.bindTexture( + new ResourceLocation("atomicscience", + "textures/models/expansion.png")); + RNuclearBoiler.MODEL.render(0.0F, 0.0625F); + } else if (block == AtomicScience.bFusionReactor) { + FMLClientHandler.instance().getClient().renderEngine.bindTexture( + new ResourceLocation("atomicscience", + "textures/models/fusion_reactor.png")); + RFusionReactor.MODEL.render(0.0F, 0.0625F); + } else if (block == AtomicScience.bAtomicAssembler) { + FMLClientHandler.instance().getClient().renderEngine.bindTexture( + new ResourceLocation("atomicscience", + "textures/models/atomic_assembler.png")); + RAtomicAssembler.MODEL.render(0.0F, 0.0F, 0.0F, 0.0625F); + } else if (block == AtomicScience.bFissionReactor) { + FMLClientHandler.instance().getClient().renderEngine.bindTexture( + new ResourceLocation("atomicscience", + "textures/models/reactorCell_top.png")); + RReactorCell.MODEL_TOP.render(0.0625F); + } + + GL11.glPopMatrix(); + } + + public boolean shouldRender3DInInventory(int meta) { return true; } + + public int getRenderId() { return BLOCK_RENDER_ID; } + + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, + Block block, int modelId, + RenderBlocks renderer) { + return false; + } +} diff --git a/src/main/java/atomicscience/render/RMatter.java b/src/main/java/atomicscience/render/RMatter.java new file mode 100644 index 0000000..ae02d15 --- /dev/null +++ b/src/main/java/atomicscience/render/RMatter.java @@ -0,0 +1,87 @@ +package atomicscience.render; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import java.util.Random; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + +@SideOnly(Side.CLIENT) +public class RMatter extends Render { + @Override + public void doRender(Entity entity, double x, double y, double z, float var8, + float var9) { + Tessellator tessellator = Tessellator.instance; + + float par2; + for (par2 = (float)entity.ticksExisted; par2 > 200.0F; par2 -= 100.0F) { + ; + } + + RenderHelper.disableStandardItemLighting(); + float var41 = (5.0F + par2) / 200.0F; + float var51 = 0.0F; + if (var41 > 0.8F) { + var51 = (var41 - 0.8F) / 0.2F; + } + + Random rand = new Random(432L); + GL11.glPushMatrix(); + GL11.glTranslatef((float)x + 0.15F, (float)y + 0.15F, (float)z + 0.15F); + GL11.glScalef(0.15F, 0.15F, 0.15F); + GL11.glDisable(3553); + GL11.glShadeModel(7425); + GL11.glEnable(3042); + GL11.glBlendFunc(770, 1); + GL11.glDisable(3008); + GL11.glEnable(2884); + GL11.glDepthMask(false); + GL11.glPushMatrix(); + GL11.glTranslatef(0.0F, -1.0F, -2.0F); + + for (int i1 = 0; (float)i1 < (var41 + var41 * var41) / 2.0F * 60.0F; ++i1) { + GL11.glRotatef(rand.nextFloat() * 360.0F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(rand.nextFloat() * 360.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(rand.nextFloat() * 360.0F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(rand.nextFloat() * 360.0F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(rand.nextFloat() * 360.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(rand.nextFloat() * 360.0F + var41 * 90.0F, 0.0F, 0.0F, + 1.0F); + tessellator.startDrawing(6); + float var81 = rand.nextFloat() * 20.0F + 5.0F + var51 * 10.0F; + float var91 = rand.nextFloat() * 2.0F + 1.0F + var51 * 2.0F; + tessellator.setColorRGBA_I(16777215, (int)(255.0F * (1.0F - var51))); + tessellator.addVertex(0.0D, 0.0D, 0.0D); + tessellator.setColorRGBA_I(0, 0); + tessellator.addVertex(-0.866D * (double)var91, (double)var81, + (double)(-0.5F * var91)); + tessellator.addVertex(0.866D * (double)var91, (double)var81, + (double)(-0.5F * var91)); + tessellator.addVertex(0.0D, (double)var81, (double)(1.0F * var91)); + tessellator.addVertex(-0.866D * (double)var91, (double)var81, + (double)(-0.5F * var91)); + tessellator.draw(); + } + + GL11.glPopMatrix(); + GL11.glDepthMask(true); + GL11.glDisable(2884); + GL11.glDisable(3042); + GL11.glShadeModel(7424); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glEnable(3553); + GL11.glEnable(3008); + RenderHelper.enableStandardItemLighting(); + GL11.glPopMatrix(); + } + + // TODO: NPE? + @Override + protected ResourceLocation getEntityTexture(Entity arg0) { + return null; + } +} diff --git a/src/main/java/atomicscience/render/RNuclearBoiler.java b/src/main/java/atomicscience/render/RNuclearBoiler.java new file mode 100644 index 0000000..039b214 --- /dev/null +++ b/src/main/java/atomicscience/render/RNuclearBoiler.java @@ -0,0 +1,56 @@ +package atomicscience.render; + +import atomicscience.fenlie.TNuclearBoiler; +import atomicscience.muoxing.MNuclearBoiler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + +@SideOnly(Side.CLIENT) +public class RNuclearBoiler extends TileEntitySpecialRenderer { + public static final MNuclearBoiler MODEL = new MNuclearBoiler(); + public static final String TEXTURE = "expansion.png"; + + public void renderAModelAt(TNuclearBoiler tileEntity, double x, double y, + double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslatef((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F); + this.bindTexture( + new ResourceLocation("atomicscience", "textures/models/expansion.png")); + GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F); + switch (tileEntity.getDirection(tileEntity.getWorldObj(), tileEntity.xCoord, + tileEntity.yCoord, tileEntity.zCoord)) { + case NORTH: + GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); + break; + case SOUTH: + GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F); + break; + case WEST: + GL11.glRotatef(0.0F, 0.0F, 1.0F, 0.0F); + break; + case EAST: + GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F); + default: + break; + } + + if (tileEntity.smeltingTicks > 0) { + tileEntity.rotation = + (float)((double)tileEntity.rotation + (double)f * 0.3D); + } + + MODEL.render(tileEntity.rotation, 0.0625F); + GL11.glPopMatrix(); + } + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double var2, double var4, + double var6, float var8) { + this.renderAModelAt((TNuclearBoiler)tileEntity, var2, var4, var6, var8); + } +} diff --git a/src/main/java/atomicscience/render/RReactorCell.java b/src/main/java/atomicscience/render/RReactorCell.java new file mode 100644 index 0000000..08251b0 --- /dev/null +++ b/src/main/java/atomicscience/render/RReactorCell.java @@ -0,0 +1,67 @@ +package atomicscience.render; + +import atomicscience.fenlie.TFissionReactor; +import atomicscience.muoxing.MCube; +import atomicscience.muoxing.MReactorCellBottom; +import atomicscience.muoxing.MReactorCellMiddle; +import atomicscience.muoxing.MReactorCellTop; +import calclavia.lib.render.RenderTaggedTile; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + +@SideOnly(Side.CLIENT) +public class RReactorCell extends RenderTaggedTile { + public static final MReactorCellTop MODEL_TOP = new MReactorCellTop(); + public static final MReactorCellMiddle MODEL_MIDDLE = + new MReactorCellMiddle(); + public static final MReactorCellBottom MODEL_BOTTOM = + new MReactorCellBottom(); + public static final String TEXTURE_TOP = "reactorCell_top.png"; + public static final String TEXTURE_MIDDLE = "reactorCell_middle.png"; + public static final String TEXTURE_BOTTOM = "reactorCell_bottom.png"; + + public void renderTileEntityAt(TileEntity t, double x, double y, double z, + float f) { + TFissionReactor tileEntity = (TFissionReactor)t; + GL11.glPushMatrix(); + GL11.glTranslatef((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F); + GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F); + switch (tileEntity.getBlockMetadata()) { + case 0: + this.bindTexture(new ResourceLocation( + "atomicscience", "textures/models/reactorCell_bottom.png")); + MODEL_BOTTOM.render(0.0625F); + break; + case 1: + this.bindTexture(new ResourceLocation( + "atomicscience", "textures/models/reactorCell_middle.png")); + MODEL_MIDDLE.render(0.0625F); + break; + case 2: + GL11.glTranslatef(0.0F, -0.4F, 0.0F); + GL11.glScalef(1.0F, 1.3F, 1.0F); + this.bindTexture(new ResourceLocation( + "atomicscience", "textures/models/reactorCell_top.png")); + MODEL_TOP.render(0.0625F); + } + + GL11.glPopMatrix(); + if (tileEntity.getStackInSlot(0) != null) { + float height = (float)tileEntity.getHeight() * + ((float)(tileEntity.getStackInSlot(0).getMaxDamage() - + tileEntity.getStackInSlot(0).getItemDamage()) / + (float)tileEntity.getStackInSlot(0).getMaxDamage()); + GL11.glPushMatrix(); + GL11.glTranslatef((float)x + 0.5F, (float)y + 0.5F * height, + (float)z + 0.5F); + GL11.glScalef(0.4F, 1.0F * height, 0.4F); + this.bindTexture(new ResourceLocation( + "atomicscience", "textures/models/fissileMaterial.png")); + MCube.INSTNACE.render(); + GL11.glPopMatrix(); + } + } +} diff --git a/src/main/java/atomicscience/render/RThermometer.java b/src/main/java/atomicscience/render/RThermometer.java new file mode 100644 index 0000000..e0ee0ff --- /dev/null +++ b/src/main/java/atomicscience/render/RThermometer.java @@ -0,0 +1,101 @@ +package atomicscience.render; + +import atomicscience.api.ITemperature; +import atomicscience.jiqi.TThermometer; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import org.lwjgl.opengl.GL11; + +@SideOnly(Side.CLIENT) +public class RThermometer extends TileEntitySpecialRenderer { + public void renderTileEntityAt(TileEntity var1, double x, double y, double z, + float var8) { + TThermometer tileEntity = (TThermometer)var1; + + for (int side = 2; side < 6; ++side) { + GL11.glPushMatrix(); + GL11.glPolygonOffset(-10.0F, -10.0F); + GL11.glEnable('\u8037'); + float dx = 0.0625F; + float dz = 0.0625F; + float displayWidth = 0.875F; + float displayHeight = 0.875F; + GL11.glTranslatef((float)x, (float)y, (float)z); + switch (side) { + case 0: + GL11.glTranslatef(1.0F, 1.0F, 0.0F); + GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F); + case 1: + default: + break; + case 2: + GL11.glTranslatef(1.0F, 1.0F, 1.0F); + GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); + break; + case 3: + GL11.glTranslatef(0.0F, 1.0F, 0.0F); + GL11.glRotatef(0.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); + break; + case 4: + GL11.glTranslatef(1.0F, 1.0F, 0.0F); + GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); + break; + case 5: + GL11.glTranslatef(0.0F, 1.0F, 1.0F); + GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); + } + + GL11.glTranslatef(dx + displayWidth / 2.0F, 1.0F, + dz + displayHeight / 2.0F); + GL11.glRotatef(-90.0F, 1.0F, 0.0F, 0.0F); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + FontRenderer fontRenderer = this.func_147498_b(); + byte maxWidth = 1; + String wenDu = Math.round(tileEntity.temp) + " C"; + if (tileEntity.shouldEmitRedstone()) { + wenDu = "§4" + wenDu; + } + + String zhuYiWenDu = "Warn: " + tileEntity.getWarningTemp(); + if (tileEntity.linkedTileCoords != null && + tileEntity.linkedTileCoords.getTileEntity(tileEntity.getWorldObj()) + instanceof ITemperature) { + zhuYiWenDu = "§4" + zhuYiWenDu; + } + + int var28 = Math.max(fontRenderer.getStringWidth(wenDu), maxWidth); + var28 = Math.max(fontRenderer.getStringWidth(zhuYiWenDu), var28); + var28 += 4; + int lineHeight = fontRenderer.FONT_HEIGHT + 2; + int requiredHeight = lineHeight * 1; + float scaleX = displayWidth / (float)var28; + float scaleY = displayHeight / (float)requiredHeight; + float scale = (float)((double)Math.min(scaleX, scaleY) * 0.8D); + GL11.glScalef(scale, -scale, scale); + GL11.glDepthMask(false); + int realHeight = (int)Math.floor((double)(displayHeight / scale)); + int realWidth = (int)Math.floor((double)(displayWidth / scale)); + int offsetX = (realWidth - var28) / 2 + 2; + int offsetY = (realHeight - requiredHeight) / 2; + GL11.glDisable(2896); + fontRenderer.drawString(wenDu, offsetX - realWidth / 2, + 1 + offsetY - realHeight / 2 + 0 * lineHeight, 1); + fontRenderer.drawString(zhuYiWenDu, offsetX - realWidth / 2, + 1 + offsetY - realHeight / 2 + 1 * lineHeight, 1); + GL11.glEnable(2896); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glDepthMask(true); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glDisable('\u8037'); + GL11.glPopMatrix(); + } + } +} diff --git a/src/main/java/atomicscience/render/RTurbine.java b/src/main/java/atomicscience/render/RTurbine.java new file mode 100644 index 0000000..9dd2457 --- /dev/null +++ b/src/main/java/atomicscience/render/RTurbine.java @@ -0,0 +1,47 @@ +package atomicscience.render; + +import atomicscience.jiqi.TTurbine; +import atomicscience.muoxing.MLargeTurbine; +import atomicscience.muoxing.MTurbine; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; + +import org.lwjgl.opengl.GL11; + +@SideOnly(Side.CLIENT) +public class RTurbine extends TileEntitySpecialRenderer { + public static final MTurbine MODEL = new MTurbine(); + public static final MLargeTurbine DA_MODEL = new MLargeTurbine(); + public static final String TEXTURE = "turbine.png"; + public static final String DA_TEXTURE = "large_turbine.png"; + + + public void renderAModelAt(TTurbine tileEntity, double x, double y, double z, float f) { + if(!tileEntity.hasMaster()) { + GL11.glPushMatrix(); + GL11.glTranslatef((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F); + GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F); + if(tileEntity.isMultiblock) { + GL11.glScalef(0.9F, 1.0F, 1.0F); + this.bindTexture(new ResourceLocation("atomicscience", "textures/models/large_turbine.png")); + DA_MODEL.render(tileEntity.rotation, 0.0625F); + } else { + GL11.glScalef(1.0F, 1.1F, 1.0F); + this.bindTexture(new ResourceLocation("atomicscience", "textures/models/turbine.png")); + MODEL.render((float)Math.toRadians((double)tileEntity.rotation), 0.0625F); + } + + GL11.glPopMatrix(); + } + + } + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double var2, double var4, double var6, float var8) { + this.renderAModelAt((TTurbine)tileEntity, var2, var4, var6, var8); + } + +} diff --git a/src/main/java/atomicscience/shimian/CFissionReactor.java b/src/main/java/atomicscience/shimian/CFissionReactor.java new file mode 100644 index 0000000..5b382f0 --- /dev/null +++ b/src/main/java/atomicscience/shimian/CFissionReactor.java @@ -0,0 +1,56 @@ +package atomicscience.shimian; + +import atomicscience.fenlie.TFissionReactor; +import atomicscience.wujian.ItFissileFuel; +import calclavia.lib.gui.ContainerBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import universalelectricity.prefab.SlotSpecific; + +public class CFissionReactor extends ContainerBase { + public CFissionReactor(EntityPlayer player, TFissionReactor tileEntity) { + super(tileEntity); + this.addPlayerInventory(player); + this.addSlotToContainer(new SlotSpecific(tileEntity, 0, 79, 21, new Class[]{ItFissileFuel.class})); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par1) { + ItemStack var2 = null; + Slot var3 = (Slot)super.inventorySlots.get(par1); + if(var3 != null && var3.getHasStack()) { + ItemStack itemStack = var3.getStack(); + var2 = itemStack.copy(); + if(par1 >= super.slotCount) { + if(this.getSlot(0).isItemValid(itemStack)) { + if(!this.mergeItemStack(itemStack, 0, 1, false)) { + return null; + } + } else if(par1 < 27 + super.slotCount) { + if(!this.mergeItemStack(itemStack, 27 + super.slotCount, 36 + super.slotCount, false)) { + return null; + } + } else if(par1 >= 27 + super.slotCount && par1 < 36 + super.slotCount && !this.mergeItemStack(itemStack, 4, 30, false)) { + return null; + } + } else if(!this.mergeItemStack(itemStack, super.slotCount, 36 + super.slotCount, false)) { + return null; + } + + if(itemStack.stackSize == 0) { + var3.putStack((ItemStack)null); + } else { + var3.onSlotChanged(); + } + + if(itemStack.stackSize == var2.stackSize) { + return null; + } + + var3.onPickupFromSlot(par1EntityPlayer, itemStack); + } + + return var2; + } +} diff --git a/src/main/java/atomicscience/shimian/GAccelerator.java b/src/main/java/atomicscience/shimian/GAccelerator.java new file mode 100644 index 0000000..730f4af --- /dev/null +++ b/src/main/java/atomicscience/shimian/GAccelerator.java @@ -0,0 +1,89 @@ +package atomicscience.shimian; + +import atomicscience.fanwusu.CAccelerator; +import atomicscience.fanwusu.EMatter; +import atomicscience.fanwusu.TAccelerator; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; +import universalelectricity.core.electricity.ElectricityDisplay; +import universalelectricity.core.vector.Vector3; + +public class GAccelerator extends GuiContainer { + private TAccelerator tileEntity; + private int containerWidth; + private int containerHeight; + + public GAccelerator(InventoryPlayer par1InventoryPlayer, + TAccelerator tileEntity) { + super(new CAccelerator(par1InventoryPlayer, tileEntity)); + this.tileEntity = tileEntity; + } + + @Override + public void drawGuiContainerForegroundLayer(int par1, int par2) { + this.fontRendererObj.drawString(this.tileEntity.getInventoryName(), 40, 10, + 4210752); + String status = ""; + Vector3 position = new Vector3(this.tileEntity); + position.modifyPositionFromSide( + this.tileEntity + .getDirection(this.tileEntity.getWorldObj(), this.tileEntity.xCoord, + this.tileEntity.xCoord, this.tileEntity.zCoord) + .getOpposite()); + if (this.tileEntity.isDisabled()) { + status = "Disabled"; + } else if (!EMatter.canCunZai( + this.tileEntity.getWorldObj(), position, + this.tileEntity + .getDirection(this.tileEntity.getWorldObj(), + this.tileEntity.xCoord, + this.tileEntity.yCoord, + this.tileEntity.zCoord) + .getOpposite())) { + status = "Failure"; + } else if (this.tileEntity.wuSu != null && this.tileEntity.suDu > 0.0F) { + status = "Accelerating"; + } else { + status = "Idle"; + } + + this.fontRendererObj.drawString( + "Velocity: " + Math.round(this.tileEntity.suDu / 1.0F * 100.0F) + "%", + 8, 27, 4210752); + this.fontRendererObj.drawString("Status: " + status, 8, 38, 4210752); + this.fontRendererObj.drawString( + "Used: " + ElectricityDisplay.getDisplayShort( + this.tileEntity.yongDianLiang, + ElectricityDisplay.ElectricUnit.JOULES), + 8, 49, 4210752); + StringBuilder var10001 = new StringBuilder(); + this.tileEntity.getClass(); + this.fontRendererObj.drawString( + var10001 + .append(ElectricityDisplay.getDisplayShort( + (double)(10000 * 20), ElectricityDisplay.ElectricUnit.WATT)) + .append(" ") + .append(ElectricityDisplay.getDisplayShort( + this.tileEntity.getVoltage(), + ElectricityDisplay.ElectricUnit.VOLTAGE)) + .toString(), + 8, 60, 4210752); + this.fontRendererObj.drawString( + "Antimatter: " + this.tileEntity.antimatter + " mg", 8, + this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float par1, int par2, + int par3) { + this.mc.renderEngine.bindTexture(new ResourceLocation( + "atomicscience", "textures/gui/gui_accelerator.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.containerWidth = (this.width - this.xSize) / 2; + this.containerHeight = (this.height - this.ySize) / 2; + this.drawTexturedModalRect(this.containerWidth, this.containerHeight, 0, 0, + this.xSize, this.ySize); + } +} diff --git a/src/main/java/atomicscience/shimian/GAtomicAssembler.java b/src/main/java/atomicscience/shimian/GAtomicAssembler.java new file mode 100644 index 0000000..ad699f3 --- /dev/null +++ b/src/main/java/atomicscience/shimian/GAtomicAssembler.java @@ -0,0 +1,62 @@ +package atomicscience.shimian; + +import atomicscience.TAtomicAssembler; +import atomicscience.jiqi.CAssembler; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; +import org.lwjgl.opengl.GL11; + +public class GAtomicAssembler extends GuiContainer { + private TAtomicAssembler tileEntity; + private int containerWidth; + private int containerHeight; + + public GAtomicAssembler(InventoryPlayer par1InventoryPlayer, + TAtomicAssembler tileEntity) { + super(new CAssembler(par1InventoryPlayer, tileEntity)); + this.tileEntity = tileEntity; + this.ySize = 230; + } + + public void drawGuiContainerForegroundLayer(int par1, int par2) { + this.fontRendererObj.drawString( + this.tileEntity.getInventoryName(), + 65 - this.tileEntity.getInventoryName().length(), 6, 4210752); + String displayText = ""; + if (this.tileEntity.isDisabled()) { + displayText = "Disabled!"; + } else if (this.tileEntity.smeltingTicks > 0) { + StringBuilder var10000 = (new StringBuilder()).append("Process: "); + float var10002 = (float)this.tileEntity.smeltingTicks; + this.tileEntity.getClass(); + displayText = var10000.append((int)(100.0F - var10002 / 1200.0F * 100.0F)) + .append("%") + .toString(); + } else if (this.tileEntity.canWork()) { + displayText = "Ready"; + } else { + displayText = "Idle"; + } + + this.fontRendererObj.drawString(displayText, 100, this.ySize - 108 + 2, + 4210752); + this.fontRendererObj.drawString("Voltage: " + + (int)this.tileEntity.getVoltage(), + 100, this.ySize - 96 + 2, 4210752); + this.fontRendererObj.drawString( + StatCollector.translateToLocal("container.inventory"), 8, + this.ySize - 96 + 2, 4210752); + } + + protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) { + this.mc.renderEngine.bindTexture(new ResourceLocation( + "atomicscience", "textures/gui/gui_atomic_assembler.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.containerWidth = (this.width - this.xSize) / 2; + this.containerHeight = (this.height - this.ySize) / 2; + this.drawTexturedModalRect(this.containerWidth, this.containerHeight, 0, 0, + this.xSize, this.ySize); + } +} diff --git a/src/main/java/atomicscience/shimian/GAutoBuilder.java b/src/main/java/atomicscience/shimian/GAutoBuilder.java new file mode 100644 index 0000000..09f4c18 --- /dev/null +++ b/src/main/java/atomicscience/shimian/GAutoBuilder.java @@ -0,0 +1,81 @@ +package atomicscience.shimian; + +import atomicscience.TAutoBuilder; +import calclavia.lib.gui.GuiScreenBase; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.GuiTextField; +import net.minecraft.tileentity.TileEntity; + +public class GAutoBuilder extends GuiScreenBase { + private TileEntity tileEntity; + private GuiTextField tfBbanJing; + private TAutoBuilder.AutoBuilderType mode = TAutoBuilder.AutoBuilderType.get(0); + + public GAutoBuilder(TileEntity tileEntity) { this.tileEntity = tileEntity; } + + @Override + public void initGui() { + super.initGui(); + this.tfBbanJing = new GuiTextField(this.fontRendererObj, 45, 58, 50, 12); + this.buttonList.add(new GuiButton(0, this.width / 2 - 80, + this.height / 2 - 10, 58, 20, "Build")); + this.buttonList.add(new GuiButton(1, this.width / 2 - 50, + this.height / 2 - 35, 120, 20, "Mode")); + } + + @Override + protected void drawForegroundLayer(int x, int y, float var1) { + this.fontRendererObj.drawString("Auto Builder", 60, 6, 4210752); + this.fontRendererObj.drawString("This is a creative only cheat", 9, 20, + 4210752); + this.fontRendererObj.drawString("which allows you to auto build", 9, 30, + 4210752); + this.fontRendererObj.drawString("structures for testing.", 9, 40, 4210752); + this.fontRendererObj.drawString("Radius: ", 9, 60, 4210752); + this.tfBbanJing.drawTextBox(); + ((GuiButton)this.buttonList.get(1)).displayString = this.mode.name; + this.fontRendererObj.drawString("Mode: ", 9, 80, 4210752); + super.drawForegroundLayer(x, y, var1); + this.fontRendererObj.drawString("Warning!", 9, 130, 4210752); + this.fontRendererObj.drawString("This will replace blocks without", 9, 140, + 4210752); + this.fontRendererObj.drawString("dropping it! You may lose items.", 9, 150, + 4210752); + } + + @Override + protected void keyTyped(char par1, int par2) { + super.keyTyped(par1, par2); + this.tfBbanJing.textboxKeyTyped(par1, par2); + } + + @Override + protected void mouseClicked(int x, int y, int par3) { + super.mouseClicked(x, y, par3); + this.tfBbanJing.mouseClicked(x - super.containerWidth, + y - super.containerHeight, par3); + } + + @Override + protected void actionPerformed(GuiButton par1GuiButton) { + super.actionPerformed(par1GuiButton); + if (par1GuiButton.id == 0) { + int radius = 0; + + try { + radius = Integer.parseInt(this.tfBbanJing.getText()); + } catch (Exception var4) { + ; + } + + if (radius > 0) { + // TODO: WTF + // PacketDispatcher.sendPacketToServer(PacketManager.getPacket("AtomicScience", + // this.tileEntity, new Object[]{Integer.valueOf(this.mode.ordinal()), + // Integer.valueOf(radius)})); + } + } else if (par1GuiButton.id == 1) { + this.mode = this.mode.next(); + } + } +} diff --git a/src/main/java/atomicscience/shimian/GBase.java b/src/main/java/atomicscience/shimian/GBase.java new file mode 100644 index 0000000..3da1008 --- /dev/null +++ b/src/main/java/atomicscience/shimian/GBase.java @@ -0,0 +1,156 @@ +package atomicscience.shimian; + +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.inventory.Container; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + +public class GBase extends GuiContainer { + public static final int METER_HEIGHT = 49; + public static final int METER_WIDTH = 14; + protected int kuanDu; + protected int gaoDu; + + public GBase(Container par1Container) { super(par1Container); } + + @Override + protected void drawGuiContainerBackgroundLayer(float var1, int var2, + int var3) { + this.kuanDu = (this.width - this.xSize) / 2; + this.gaoDu = (this.height - this.ySize) / 2; + this.mc.renderEngine.bindTexture( + new ResourceLocation("atomicscience", "textures/gui/gui_base.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.drawTexturedModalRect(this.kuanDu, this.gaoDu, 0, 0, this.xSize, + this.ySize); + } + + protected void drawSlot(int x, int y, GBase.SlotType type) { + this.mc.renderEngine.bindTexture(new ResourceLocation( + "atomicscience", "textures/gui/gui_components.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.drawTexturedModalRect(this.kuanDu + x, this.gaoDu + y, 0, 0, 18, 18); + switch (type) { + case DIAN: + this.drawTexturedModalRect(this.kuanDu + x, this.gaoDu + y, 0, 18, 18, + 18); + break; + case SHUI: + this.drawTexturedModalRect(this.kuanDu + x, this.gaoDu + y, 0, 36, 18, + 18); + break; + case QI: + this.drawTexturedModalRect(this.kuanDu + x, this.gaoDu + y, 0, 54, 18, + 18); + default: + break; + } + } + + protected void drawSlot(int x, int y) { + this.drawSlot(x, y, GBase.SlotType.NONE); + } + + protected void drawBar(int x, int y, float scale) { + this.mc.renderEngine.bindTexture(new ResourceLocation( + "atomicscience", "textures/gui/gui_components.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.drawTexturedModalRect(this.kuanDu + x, this.gaoDu + y, 18, 0, 22, 15); + if (scale > 0.0F) { + this.drawTexturedModalRect(this.kuanDu + x, this.gaoDu + y, 18, 15, + 22 - (int)(scale * 22.0F), 15); + } + } + + protected void drawMeter(int x, int y, float scale, float r, float g, + float b) { + this.mc.renderEngine.bindTexture(new ResourceLocation( + "atomicscience", "textures/gui/gui_components.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.drawTexturedModalRect(this.kuanDu + x, this.gaoDu + y, 40, 0, 14, 49); + GL11.glColor4f(r, g, b, 1.0F); + int actualScale = (int)(48.0F * scale); + this.drawTexturedModalRect(this.kuanDu + x, + this.gaoDu + y + (48 - actualScale), 40, 49, 13, + actualScale); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.drawTexturedModalRect(this.kuanDu + x, this.gaoDu + y, 40, 98, 14, 49); + } + + public void drawTooltip(int x, int y, String... toolTips) { + GL11.glDisable('\u803a'); + RenderHelper.disableStandardItemLighting(); + GL11.glDisable(2896); + GL11.glDisable(2929); + if (toolTips != null) { + int var5 = 0; + + int var6; + int var7; + for (var6 = 0; var6 < toolTips.length; ++var6) { + var7 = this.fontRendererObj.getStringWidth(toolTips[var6]); + if (var7 > var5) { + var5 = var7; + } + } + + var6 = x + 12; + var7 = y - 12; + int var9 = 8; + if (toolTips.length > 1) { + var9 += 2 + (toolTips.length - 1) * 10; + } + + if (this.guiTop + var7 + var9 + 6 > this.height) { + var7 = this.height - var9 - this.guiTop - 6; + } + + super.zLevel = 300.0F; + int var10 = -267386864; + this.drawGradientRect(var6 - 3, var7 - 4, var6 + var5 + 3, var7 - 3, + var10, var10); + this.drawGradientRect(var6 - 3, var7 + var9 + 3, var6 + var5 + 3, + var7 + var9 + 4, var10, var10); + this.drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, + var7 + var9 + 3, var10, var10); + this.drawGradientRect(var6 - 4, var7 - 3, var6 - 3, var7 + var9 + 3, + var10, var10); + this.drawGradientRect(var6 + var5 + 3, var7 - 3, var6 + var5 + 4, + var7 + var9 + 3, var10, var10); + int var11 = 1347420415; + int var12 = (var11 & 16711422) >> 1 | var11 & -16777216; + this.drawGradientRect(var6 - 3, var7 - 3 + 1, var6 - 3 + 1, + var7 + var9 + 3 - 1, var11, var12); + this.drawGradientRect(var6 + var5 + 2, var7 - 3 + 1, var6 + var5 + 3, + var7 + var9 + 3 - 1, var11, var12); + this.drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, var7 - 3 + 1, + var11, var11); + this.drawGradientRect(var6 - 3, var7 + var9 + 2, var6 + var5 + 3, + var7 + var9 + 3, var12, var12); + + for (int var13 = 0; var13 < toolTips.length; ++var13) { + String var14 = toolTips[var13]; + this.fontRendererObj.drawStringWithShadow(var14, var6, var7, -1); + if (var13 == 0) { + var7 += 2; + } + + var7 += 10; + } + + super.zLevel = 0.0F; + GL11.glEnable(2929); + GL11.glEnable(2896); + RenderHelper.enableGUIStandardItemLighting(); + GL11.glEnable('\u803a'); + } + } + + public static enum SlotType { + NONE, + DIAN, + SHUI, + QI; + } +} diff --git a/src/main/java/atomicscience/shimian/GCentrifuge.java b/src/main/java/atomicscience/shimian/GCentrifuge.java new file mode 100644 index 0000000..c0968f3 --- /dev/null +++ b/src/main/java/atomicscience/shimian/GCentrifuge.java @@ -0,0 +1,69 @@ +package atomicscience.shimian; + +import atomicscience.fenlie.CCentrifuge; +import atomicscience.fenlie.TCentrifuge; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.StatCollector; +import universalelectricity.core.electricity.ElectricityDisplay; + +public class GCentrifuge extends GBase { + private TCentrifuge tileEntity; + + public GCentrifuge(InventoryPlayer par1InventoryPlayer, + TCentrifuge tileEntity) { + super(new CCentrifuge(par1InventoryPlayer, tileEntity)); + this.tileEntity = tileEntity; + } + + @Override + public void drawGuiContainerForegroundLayer(int x, int y) { + this.fontRendererObj.drawString(this.tileEntity.getInventoryName(), 60, 6, + 4210752); + String displayText = ""; + if (this.tileEntity.isDisabled()) { + displayText = "Disabled!"; + } else if (this.tileEntity.smeltingTicks > 0) { + displayText = "Processing"; + } else if (this.tileEntity.canWork()) { + displayText = "Ready"; + } else { + displayText = "Idle"; + } + + this.fontRendererObj.drawString("Status: " + displayText, 70, 50, 4210752); + this.fontRendererObj.drawString( + ElectricityDisplay.getDisplay(10000.0D, + ElectricityDisplay.ElectricUnit.WATT), + 70, 60, 4210752); + this.fontRendererObj.drawString( + ElectricityDisplay.getDisplay(this.tileEntity.getVoltage(), + ElectricityDisplay.ElectricUnit.VOLTAGE), + 70, 70, 4210752); + this.fontRendererObj.drawString( + StatCollector.translateToLocal("container.inventory"), 8, + this.ySize - 96 + 2, 4210752); + if (this.func_146978_c(8, 18, 14, 49, x, y) && + this.tileEntity.gasTank.getFluid() != null) { + this.drawTooltip( + x - this.guiLeft, y - this.guiTop + 10, + new String[] {this.tileEntity.gasTank.getFluid().getLocalizedName(), + (float)this.tileEntity.gasTank.getFluidAmount() / + 1000.0F + + " dm3"}); + } + } + + @Override + protected void drawGuiContainerBackgroundLayer(float par1, int x, int y) { + super.drawGuiContainerBackgroundLayer(par1, x, y); + this.drawSlot(80, 25); + this.drawSlot(100, 25); + this.drawSlot(130, 25, GBase.SlotType.DIAN); + this.drawBar(40, 26, (float)this.tileEntity.smeltingTicks / 2400.0F); + this.drawMeter(8, 18, + (float)this.tileEntity.gasTank.getFluidAmount() / + (float)this.tileEntity.gasTank.getCapacity(), + 0.84F, 0.9F, 0.69F); + this.drawSlot(24, 49, GBase.SlotType.QI); + } +} diff --git a/src/main/java/atomicscience/shimian/GChemicalReactor.java b/src/main/java/atomicscience/shimian/GChemicalReactor.java new file mode 100644 index 0000000..ce53190 --- /dev/null +++ b/src/main/java/atomicscience/shimian/GChemicalReactor.java @@ -0,0 +1,58 @@ +package atomicscience.shimian; + +import atomicscience.hecheng.CChemicalExtractor; +import atomicscience.jiqi.TChemicalExtractor; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.StatCollector; +import universalelectricity.core.electricity.ElectricityDisplay; + +public class GChemicalReactor extends GBase { + private TChemicalExtractor tileEntity; + + public GChemicalReactor(InventoryPlayer par1InventoryPlayer, + TChemicalExtractor tileEntity) { + super(new CChemicalExtractor(par1InventoryPlayer, tileEntity)); + this.tileEntity = tileEntity; + } + + @Override + public void drawGuiContainerForegroundLayer(int x, int y) { + this.fontRendererObj.drawString(this.tileEntity.getInventoryName(), 45, 6, + 4210752); + this.tileEntity.getClass(); + this.fontRendererObj.drawString( + ElectricityDisplay.getDisplay((double)(500.0F * 20.0F), + ElectricityDisplay.ElectricUnit.WATT), + 90, 48, 4210752); + this.fontRendererObj.drawString( + ElectricityDisplay.getDisplay(this.tileEntity.getVoltage(), + ElectricityDisplay.ElectricUnit.VOLTAGE), + 90, 60, 4210752); + this.fontRendererObj.drawString( + StatCollector.translateToLocal("container.inventory"), 8, + this.ySize - 96 + 2, 4210752); + if (this.func_146978_c(8, 18, 14, 49, x, y) && + this.tileEntity.waterTank.getFluid() != null) { + this.drawTooltip( + x - this.guiLeft, y - this.guiTop + 10, + new String[] {this.tileEntity.waterTank.getFluid().getLocalizedName(), + this.tileEntity.waterTank.getFluidAmount() + " ml"}); + } + } + + @Override + protected void drawGuiContainerBackgroundLayer(float par1, int x, int y) { + super.drawGuiContainerBackgroundLayer(par1, x, y); + this.drawSlot(64, 24); + this.drawSlot(64, 48, GBase.SlotType.DIAN); + this.drawSlot(117, 24); + float var10003 = (float)this.tileEntity.smeltingTicks; + this.tileEntity.getClass(); + this.drawBar(87, 24, var10003 / 280.0F); + this.drawMeter(8, 18, + (float)this.tileEntity.waterTank.getFluidAmount() / + (float)this.tileEntity.waterTank.getCapacity(), + 0.16F, 0.52F, 0.99F); + this.drawSlot(24, 49, GBase.SlotType.SHUI); + } +} diff --git a/src/main/java/atomicscience/shimian/GFissionReactor.java b/src/main/java/atomicscience/shimian/GFissionReactor.java new file mode 100644 index 0000000..ad6979b --- /dev/null +++ b/src/main/java/atomicscience/shimian/GFissionReactor.java @@ -0,0 +1,74 @@ +package atomicscience.shimian; + +import atomicscience.fenlie.TFissionReactor; +import calclavia.lib.gui.GuiContainerBase; +import net.minecraft.entity.player.InventoryPlayer; +import universalelectricity.core.electricity.ElectricityDisplay; + +public class GFissionReactor extends GuiContainerBase { + private TFissionReactor tileEntity; + + public GFissionReactor(InventoryPlayer inventory, TFissionReactor tileEntity) { + super(new CFissionReactor(inventory.player, tileEntity)); + this.tileEntity = tileEntity; + } + + @Override + public void drawGuiContainerForegroundLayer(int x, int y) { + this.fontRendererObj.drawString( + this.tileEntity.getInventoryName(), + this.xSize / 2 - this.fontRendererObj.getStringWidth( + this.tileEntity.getInventoryName()) / + 2, + 6, 4210752); + int toxicity = 0; + if (this.tileEntity.wasteTank.getFluid() != null) { + toxicity = this.tileEntity.wasteTank.getFluidAmount(); + } + + this.fontRendererObj.drawString("Toxicity: " + toxicity + " dm3", 9, 45, + 4210752); + this.fontRendererObj.drawString( + "Temperature: " + (int)this.tileEntity.wenDu + " Celsius", 9, 70, + 4210752); + this.fontRendererObj.drawString( + "Steam Emission: " + + ElectricityDisplay.roundDecimals( + (double)(1.0F / (Math.max(40.0F - this.tileEntity.wenDu / + 2000.0F * 40.0F, + 2.0F) / + 20.0F))) + + "/second", + 9, 95, 4210752); + if (this.tileEntity.getStackInSlot(0) != null) { + int ticksLeft = this.tileEntity.getStackInSlot(0).getMaxDamage() - + this.tileEntity.getStackInSlot(0).getItemDamage(); + this.fontRendererObj.drawString( + "Time Left: " + ticksLeft / 20 / this.tileEntity.getHeight() + + " seconds " + ticksLeft, + 9, 105, 4210752); + } + } + + @Override + protected void drawGuiContainerBackgroundLayer(float par1, int x, int y) { + //super.drawGuiContainerBackgroundLayer(par1, x, y); + this.drawSlot(78, 20); + if (this.tileEntity.wasteTank.getFluid() != null) { + int toxicity1 = this.tileEntity.wasteTank.getFluidAmount(); + this.drawForce(10, 55, + (float)toxicity1 / + (float)this.tileEntity.wasteTank.getCapacity()); + } + + this.drawForce(10, 80, this.tileEntity.wenDu / 2000.0F); + if (this.tileEntity.getStackInSlot(0) != null) { + float ticksLeft = + (float)(this.tileEntity.getStackInSlot(0).getMaxDamage() - + this.tileEntity.getStackInSlot(0).getItemDamage()); + this.drawElectricity( + 10, 115, + ticksLeft / (float)this.tileEntity.getStackInSlot(0).getMaxDamage()); + } + } +} diff --git a/src/main/java/atomicscience/shimian/GNuclearBoiler.java b/src/main/java/atomicscience/shimian/GNuclearBoiler.java new file mode 100644 index 0000000..946acb6 --- /dev/null +++ b/src/main/java/atomicscience/shimian/GNuclearBoiler.java @@ -0,0 +1,70 @@ +package atomicscience.shimian; + +import atomicscience.fenlie.TNuclearBoiler; +import atomicscience.hecheng.CNuclearBoiler; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.StatCollector; +import universalelectricity.core.electricity.ElectricityDisplay; + +public class GNuclearBoiler extends GBase { + + private TNuclearBoiler tileEntity; + + public GNuclearBoiler(InventoryPlayer par1InventoryPlayer, TNuclearBoiler tileEntity) { + super(new CNuclearBoiler(par1InventoryPlayer, tileEntity)); + this.tileEntity = tileEntity; + } + + @Override + public void drawGuiContainerForegroundLayer(int x, int y) { + this.fontRendererObj.drawString(this.tileEntity.getInventoryName(), 52, 6, + 4210752); + this.tileEntity.getClass(); + this.fontRendererObj.drawString( + ElectricityDisplay.getDisplay((double)(800.0F * 20.0F), + ElectricityDisplay.ElectricUnit.WATT), + 55, 48, 4210752); + this.fontRendererObj.drawString( + ElectricityDisplay.getDisplay(this.tileEntity.getVoltage(), + ElectricityDisplay.ElectricUnit.VOLTAGE), + 55, 60, 4210752); + this.fontRendererObj.drawString( + StatCollector.translateToLocal("container.inventory"), 8, + this.ySize - 96 + 2, 4210752); + if (this.func_146978_c(8, 18, 14, 49, x, y) && + this.tileEntity.waterTank.getFluid() != null) { + this.drawTooltip( + x - this.guiLeft, y - this.guiTop + 10, + new String[] {this.tileEntity.waterTank.getFluid().getLocalizedName(), + this.tileEntity.waterTank.getFluidAmount() + " ml"}); + } else if (this.func_146978_c(155, 18, 14, 49, x, y) && + this.tileEntity.gasTank.getFluid() != null) { + this.drawTooltip( + x - this.guiLeft, y - this.guiTop + 10, + new String[] {this.tileEntity.gasTank.getFluid().getLocalizedName(), + (float)this.tileEntity.gasTank.getFluidAmount() / + 1000.0F + + " dm3"}); + } + } + + @Override + protected void drawGuiContainerBackgroundLayer(float par1, int x, int y) { + super.drawGuiContainerBackgroundLayer(par1, x, y); + this.drawSlot(55, 25, GBase.SlotType.DIAN); + this.drawSlot(80, 25); + float var10003 = (float)this.tileEntity.smeltingTicks; + this.tileEntity.getClass(); + this.drawBar(110, 26, var10003 / 300.0F); + this.drawMeter(8, 18, + (float)this.tileEntity.waterTank.getFluidAmount() / + (float)this.tileEntity.waterTank.getCapacity(), + 0.16F, 0.52F, 0.99F); + this.drawSlot(24, 49, GBase.SlotType.SHUI); + this.drawMeter(155, 18, + (float)this.tileEntity.gasTank.getFluidAmount() / + (float)this.tileEntity.gasTank.getCapacity(), + 0.84F, 0.9F, 0.69F); + this.drawSlot(135, 49, GBase.SlotType.QI); + } +} diff --git a/src/main/java/atomicscience/strangematter.ogg b/src/main/java/atomicscience/strangematter.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f9baaa12d152b9b0815cefeaed4f34e7c849ad79 GIT binary patch literal 61451 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 literal 0 HcmV?d00001 diff --git a/src/main/java/atomicscience/turbine.ogg b/src/main/java/atomicscience/turbine.ogg new file mode 100644 index 0000000000000000000000000000000000000000..298bf89a56d869a7fecb813129fa12fbc8c9317b GIT binary patch literal 19907 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 literal 0 HcmV?d00001 diff --git a/src/main/java/atomicscience/wujian/ItAS.java b/src/main/java/atomicscience/wujian/ItAS.java new file mode 100644 index 0000000..b58805d --- /dev/null +++ b/src/main/java/atomicscience/wujian/ItAS.java @@ -0,0 +1,12 @@ +package atomicscience.wujian; + +import atomicscience.TabAS; +import net.minecraft.item.Item; + +public class ItAS extends Item { + public ItAS(String name) { + super(); + this.setUnlocalizedName("atomicscience:" + name); + this.setCreativeTab(TabAS.INSTANCE); + } +} diff --git a/src/main/java/atomicscience/wujian/ItBreederFuel.java b/src/main/java/atomicscience/wujian/ItBreederFuel.java new file mode 100644 index 0000000..cac91c0 --- /dev/null +++ b/src/main/java/atomicscience/wujian/ItBreederFuel.java @@ -0,0 +1,25 @@ +package atomicscience.wujian; + +import atomicscience.api.IFissileMaterial; +import atomicscience.api.ITemperature; +import atomicscience.fenlie.ItRadioactive; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class ItBreederFuel extends ItRadioactive implements IFissileMaterial { + public static final int FU_LAN = 40000; + + public ItBreederFuel() { + super("rodBreederFuel"); + this.setMaxDamage('\u9c40'); + this.setMaxStackSize(1); + this.setNoRepair(); + } + + public int onFissile(ITemperature reactor) { + TileEntity tileEntity = (TileEntity)reactor; + World worldObj = tileEntity.getWorldObj(); + reactor.setTemperature((float)((double)reactor.getTemperature() + 1.5D + (double)worldObj.rand.nextFloat() * 0.5D)); + return 0; + } +} diff --git a/src/main/java/atomicscience/wujian/ItCell.java b/src/main/java/atomicscience/wujian/ItCell.java new file mode 100644 index 0000000..dee1bd6 --- /dev/null +++ b/src/main/java/atomicscience/wujian/ItCell.java @@ -0,0 +1,7 @@ +package atomicscience.wujian; + +public class ItCell extends ItAS { + public ItCell(String name) { + super(name); + } +} diff --git a/src/main/java/atomicscience/wujian/ItElectricAS.java b/src/main/java/atomicscience/wujian/ItElectricAS.java new file mode 100644 index 0000000..b060a19 --- /dev/null +++ b/src/main/java/atomicscience/wujian/ItElectricAS.java @@ -0,0 +1,12 @@ +package atomicscience.wujian; + +import atomicscience.TabAS; +import universalelectricity.core.item.ItemElectric; + +public abstract class ItElectricAS extends ItemElectric { + public ItElectricAS(String name) { + super(); + this.setUnlocalizedName("atomicscience:" + name); + this.setCreativeTab(TabAS.INSTANCE); + } +} diff --git a/src/main/java/atomicscience/wujian/ItFissileFuel.java b/src/main/java/atomicscience/wujian/ItFissileFuel.java new file mode 100644 index 0000000..acb8303 --- /dev/null +++ b/src/main/java/atomicscience/wujian/ItFissileFuel.java @@ -0,0 +1,77 @@ +package atomicscience.wujian; + +import atomicscience.api.IFissileMaterial; +import atomicscience.api.IReactor; +import atomicscience.api.ITemperature; +import atomicscience.fenlie.ItRadioactive; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import java.util.List; +import net.minecraft.block.Block; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import universalelectricity.core.vector.Vector3; + +public class ItFissileFuel extends ItRadioactive implements IFissileMaterial { + public static final int FU_LAN = 50000; + + public ItFissileFuel() { + super("rodFissileFuel"); + this.setMaxDamage('\uc350'); + this.setMaxStackSize(1); + this.setNoRepair(); + } + + @Override + public int onFissile(ITemperature reactor) { + TileEntity tileEntity = (TileEntity)reactor; + World worldObj = tileEntity.getWorldObj(); + float wenDu = 0.0F; + int reactors = 0; + + for (int chance = 0; chance < 6; ++chance) { + Vector3 iWenDuDiDian = + (new Vector3(tileEntity)) + .modifyPositionFromSide(ForgeDirection.getOrientation(chance)); + Block fangGe = iWenDuDiDian.getBlock(worldObj); + if (fangGe != null) { + TileEntity tile = iWenDuDiDian.getTileEntity(worldObj); + if (tile instanceof IReactor) { + ++reactors; + } + + if (fangGe instanceof ITemperature) { + wenDu += ((ITemperature)fangGe).getTemperature(); + } else if (tile instanceof ITemperature) { + wenDu += ((ITemperature)tile).getTemperature(); + } + } + } + + if (reactors >= 4) { + float var11 = Math.max((wenDu - 5000.0F) / 2000.0F, 0.0F); + if (Math.random() <= (double)var11) { + return 2; + } else { + return 1; + } + } else { + reactor.setTemperature((float)((double)reactor.getTemperature() + 1.6D + + (double)worldObj.rand.nextFloat() * 0.4D)); + return 0; + } + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, + List par3List) { + par3List.add(new ItemStack(par1, 1, 0)); + par3List.add(new ItemStack(par1, 1, this.getMaxDamage() - 1)); + } +} diff --git a/src/main/java/calclavia/lib/Calclavia.java b/src/main/java/calclavia/lib/Calclavia.java new file mode 100644 index 0000000..ff6b180 --- /dev/null +++ b/src/main/java/calclavia/lib/Calclavia.java @@ -0,0 +1,32 @@ +package calclavia.lib; + +import java.util.ArrayList; +import java.util.List; + +public class Calclavia { + + public static final String RESOURCE_DIRECTORY = "/mods/calclavia/"; + public static final String TEXTURE_DIRECTORY = "/mods/calclavia/textures/"; + public static final String GUI_DIRECTORY = "/mods/calclavia/textures/gui/"; + public static final String GUI_COMPONENTS = "/mods/calclavia/textures/gui/gui_components.png"; + public static final String GUI_BASE_FILE = "/mods/calclavia/textures/gui/gui_base.png"; + public static final String GUI_EMPTY_FILE = "/mods/calclavia/textures/gui/gui_empty.png"; + + + public static List splitStringPerWord(String string, int wordsPerLine) { + String[] words = string.split(" "); + ArrayList lines = new ArrayList<>(); + + for(int lineCount = 0; (double)lineCount < Math.ceil((double)((float)words.length / (float)wordsPerLine)); ++lineCount) { + String stringInLine = ""; + + for(int i = lineCount * wordsPerLine; i < Math.min(wordsPerLine + lineCount * wordsPerLine, words.length); ++i) { + stringInLine = stringInLine + words[i] + " "; + } + + lines.add(stringInLine.trim()); + } + + return lines; + } +} diff --git a/src/main/java/calclavia/lib/CalculationHelper.java b/src/main/java/calclavia/lib/CalculationHelper.java new file mode 100644 index 0000000..1748b8b --- /dev/null +++ b/src/main/java/calclavia/lib/CalculationHelper.java @@ -0,0 +1,111 @@ +package calclavia.lib; + +import java.util.Iterator; +import java.util.List; +import net.minecraft.entity.Entity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import universalelectricity.core.vector.Vector3; + +public class CalculationHelper { + + public static void rotateByAngle(Vector3 vector, double yaw) { + double yawRadians = Math.toRadians(yaw); + double x = vector.x; + double z = vector.z; + if(yaw != 0.0D) { + vector.x = x * Math.cos(yawRadians) - z * Math.sin(yawRadians); + vector.z = x * Math.sin(yawRadians) + z * Math.cos(yawRadians); + } + + } + + public static void rotateByAngle(Vector3 vector, double yaw, double pitch) { + rotateByAngle(vector, yaw, pitch, 0.0D); + } + + public static void rotateByAngle(Vector3 vector, double yaw, double pitch, double roll) { + double yawRadians = Math.toRadians(yaw); + double pitchRadians = Math.toRadians(pitch); + double rollRadians = Math.toRadians(roll); + double x = vector.x; + double y = vector.y; + double z = vector.z; + vector.x = x * Math.cos(yawRadians) * Math.cos(pitchRadians) + z * (Math.cos(yawRadians) * Math.sin(pitchRadians) * Math.sin(rollRadians) - Math.sin(yawRadians) * Math.cos(rollRadians)) + y * (Math.cos(yawRadians) * Math.sin(pitchRadians) * Math.cos(rollRadians) + Math.sin(yawRadians) * Math.sin(rollRadians)); + vector.z = x * Math.sin(yawRadians) * Math.cos(pitchRadians) + z * (Math.sin(yawRadians) * Math.sin(pitchRadians) * Math.sin(rollRadians) + Math.cos(yawRadians) * Math.cos(rollRadians)) + y * (Math.sin(yawRadians) * Math.sin(pitchRadians) * Math.cos(rollRadians) - Math.cos(yawRadians) * Math.sin(rollRadians)); + vector.y = -x * Math.sin(pitchRadians) + z * Math.cos(pitchRadians) * Math.sin(rollRadians) + y * Math.cos(pitchRadians) * Math.cos(rollRadians); + } + + public static Vector3 getDeltaPositionFromRotation(float rotationYaw, float rotationPitch) { + rotationYaw += 90.0F; + rotationPitch = -rotationPitch; + return new Vector3(Math.cos(Math.toRadians((double)rotationYaw)), Math.sin(Math.toRadians((double)rotationPitch)), Math.sin(Math.toRadians((double)rotationYaw))); + } + + public static MovingObjectPosition raytraceEntities(World world, Vector3 startPosition, float rotationYaw, float rotationPitch, boolean collisionFlag, double reachDistance) { + MovingObjectPosition pickedEntity = null; + Vec3 startingPosition = startPosition.toVec3(); + Vec3 look = getDeltaPositionFromRotation(rotationYaw, rotationPitch).toVec3(); + Vec3 reachPoint = Vec3.createVectorHelper(startingPosition.xCoord + look.xCoord * reachDistance, startingPosition.yCoord + look.yCoord * reachDistance, startingPosition.zCoord + look.zCoord * reachDistance); + double playerBorder = 1.1D * reachDistance; + AxisAlignedBB boxToScan = AxisAlignedBB.getBoundingBox(-playerBorder, -playerBorder, -playerBorder, playerBorder, playerBorder, playerBorder); + List entitiesHit = world.getEntitiesWithinAABBExcludingEntity((Entity)null, boxToScan); + double closestEntity = reachDistance; + if(entitiesHit != null && !entitiesHit.isEmpty()) { + Iterator i$ = entitiesHit.iterator(); + + while(i$.hasNext()) { + Entity entityHit = (Entity)i$.next(); + if(entityHit != null && entityHit.canBeCollidedWith() && entityHit.boundingBox != null) { + float border = entityHit.getCollisionBorderSize(); + AxisAlignedBB aabb = entityHit.boundingBox.expand((double)border, (double)border, (double)border); + MovingObjectPosition hitMOP = aabb.calculateIntercept(startingPosition, reachPoint); + if(hitMOP != null) { + if(aabb.isVecInside(startingPosition)) { + if(0.0D < closestEntity || closestEntity == 0.0D) { + pickedEntity = new MovingObjectPosition(entityHit); + if(pickedEntity != null) { + pickedEntity.hitVec = hitMOP.hitVec; + closestEntity = 0.0D; + } + } + } else { + double distance = startingPosition.distanceTo(hitMOP.hitVec); + if(distance < closestEntity || closestEntity == 0.0D) { + pickedEntity = new MovingObjectPosition(entityHit); + pickedEntity.hitVec = hitMOP.hitVec; + closestEntity = distance; + } + } + } + } + } + + return pickedEntity; + } else { + return null; + } + } + + public static MovingObjectPosition raytraceBlocks(World world, Vector3 startPosition, float rotationYaw, float rotationPitch, boolean collisionFlag, double reachDistance) { + Vector3 lookVector = getDeltaPositionFromRotation(rotationYaw, rotationPitch); + Vector3 reachPoint = Vector3.add(startPosition, Vector3.multiply(lookVector, reachDistance)); + return world.rayTraceBlocks(startPosition.toVec3(), reachPoint.toVec3(), collisionFlag); + } + + public static MovingObjectPosition doCustomRayTrace(World world, Vector3 startPosition, float rotationYaw, float rotationPitch, boolean collisionFlag, double reachDistance) { + MovingObjectPosition pickedBlock = raytraceBlocks(world, startPosition, rotationYaw, rotationPitch, collisionFlag, reachDistance); + MovingObjectPosition pickedEntity = raytraceEntities(world, startPosition, rotationYaw, rotationPitch, collisionFlag, reachDistance); + if(pickedBlock == null) { + return pickedEntity; + } else if(pickedEntity == null) { + return pickedBlock; + } else { + double dBlock = startPosition.distanceTo(new Vector3(pickedBlock.hitVec)); + double dEntity = startPosition.distanceTo(new Vector3(pickedEntity.hitVec)); + return dEntity < dBlock?pickedEntity:pickedBlock; + } + } +} diff --git a/src/main/java/calclavia/lib/IPlayerUsing.java b/src/main/java/calclavia/lib/IPlayerUsing.java new file mode 100644 index 0000000..c7681eb --- /dev/null +++ b/src/main/java/calclavia/lib/IPlayerUsing.java @@ -0,0 +1,8 @@ +package calclavia.lib; + +import java.util.HashSet; + +public interface IPlayerUsing { + + HashSet getPlayersUsing(); +} diff --git a/src/main/java/calclavia/lib/IUniversalEnergyTile.java b/src/main/java/calclavia/lib/IUniversalEnergyTile.java new file mode 100644 index 0000000..ed5452c --- /dev/null +++ b/src/main/java/calclavia/lib/IUniversalEnergyTile.java @@ -0,0 +1,7 @@ +package calclavia.lib; + +import universalelectricity.core.block.IConnector; +import universalelectricity.core.block.IVoltage; + +public interface IUniversalEnergyTile extends IConnector, IVoltage { +} diff --git a/src/main/java/calclavia/lib/TileEntityUniversalProducer.java b/src/main/java/calclavia/lib/TileEntityUniversalProducer.java new file mode 100644 index 0000000..e90c0c9 --- /dev/null +++ b/src/main/java/calclavia/lib/TileEntityUniversalProducer.java @@ -0,0 +1,25 @@ +package calclavia.lib; + +import net.minecraftforge.common.util.ForgeDirection; +import universalelectricity.core.electricity.ElectricityNetworkHelper; +import universalelectricity.core.electricity.ElectricityPack; +import universalelectricity.prefab.implement.IRotatable; +import universalelectricity.prefab.tile.TileEntityElectrical; + +public class TileEntityUniversalProducer extends TileEntityElectrical { + public ElectricityPack produce(double watts) { + ElectricityPack pack = + new ElectricityPack(watts / this.getVoltage(), this.getVoltage()); + ElectricityPack remaining = + ElectricityNetworkHelper.produceFromMultipleSides(this, pack); + + return remaining; + } + + @Override + public boolean canConnect(ForgeDirection direction) { + return this instanceof IRotatable + ? direction.ordinal() == this.getBlockMetadata() + : true; + } +} diff --git a/src/main/java/calclavia/lib/TileEntityUniversalRunnable.java b/src/main/java/calclavia/lib/TileEntityUniversalRunnable.java new file mode 100644 index 0000000..19387fb --- /dev/null +++ b/src/main/java/calclavia/lib/TileEntityUniversalRunnable.java @@ -0,0 +1,28 @@ +package calclavia.lib; + +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import universalelectricity.prefab.implement.IRotatable; +import universalelectricity.prefab.tile.TileEntityElectricityRunnable; + +public abstract class TileEntityUniversalRunnable + extends TileEntityElectricityRunnable implements IUniversalEnergyTile { + @Override + public boolean canConnect(ForgeDirection direction) { + return this instanceof IRotatable + ? direction == ForgeDirection.getOrientation(this.getBlockMetadata()) + .getOpposite() + : true; + } + + public ForgeDirection getDirection(IBlockAccess world, int x, int y, int z) { + return ForgeDirection.getOrientation(this.getBlockMetadata()); + } + + public void setDirection(World world, int x, int y, int z, + ForgeDirection facingDirection) { + this.worldObj.setBlockMetadataWithNotify( + this.xCoord, this.yCoord, this.zCoord, facingDirection.ordinal(), 2); + } +} diff --git a/src/main/java/calclavia/lib/TileEntityUniversalStorable.java b/src/main/java/calclavia/lib/TileEntityUniversalStorable.java new file mode 100644 index 0000000..a5a1978 --- /dev/null +++ b/src/main/java/calclavia/lib/TileEntityUniversalStorable.java @@ -0,0 +1,28 @@ +package calclavia.lib; + +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import universalelectricity.prefab.implement.IRotatable; +import universalelectricity.prefab.tile.TileEntityElectricityStorage; + +public abstract class TileEntityUniversalStorable + extends TileEntityElectricityStorage implements IUniversalEnergyTile { + @Override + public boolean canConnect(ForgeDirection direction) { + return this instanceof IRotatable + ? direction == ForgeDirection.getOrientation(this.getBlockMetadata()) + .getOpposite() + : true; + } + + public ForgeDirection getDirection(IBlockAccess world, int x, int y, int z) { + return ForgeDirection.getOrientation(this.getBlockMetadata()); + } + + public void setDirection(World world, int x, int y, int z, + ForgeDirection facingDirection) { + this.worldObj.setBlockMetadataWithNotify( + this.xCoord, this.yCoord, this.zCoord, facingDirection.ordinal(), 2); + } +} diff --git a/src/main/java/calclavia/lib/UniversalRecipes.java b/src/main/java/calclavia/lib/UniversalRecipes.java new file mode 100644 index 0000000..198b506 --- /dev/null +++ b/src/main/java/calclavia/lib/UniversalRecipes.java @@ -0,0 +1,102 @@ +package calclavia.lib; + +import cpw.mods.fml.common.FMLLog; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; + +public class UniversalRecipes { + public static final String PRIMARY_METAL = "ingotSteel"; + public static final String PRIMARY_PLATE = "plateSteel"; + public static final String SECONDARY_METAL = "ingotBronze"; + public static final String SECONDARY_PLATE = "plateBronze"; + public static final String CIRCUIT_T1 = "calclavia:CIRCUIT_T1"; + public static final String CIRCUIT_T2 = "calclavia:CIRCUIT_T2"; + public static final String CIRCUIT_T3 = "calclavia:CIRCUIT_T3"; + public static String ADVANCED_BATTERY = "calclavia:ADVANCED_BATTERY"; + public static String BATTERY = "calclavia:BATTERY"; + public static String BATTERY_BOX = "calclavia:BATTERY_BOX"; + public static final String WRENCH = "calclavia:WRENCH"; + public static final String WIRE = "calclavia:WIRE"; + public static final String MOTOR = "calclavia:MOTOR"; + public static boolean isInit = false; + + public static void init() { + if (!isInit) { + // TODO: WTF + // register("calclavia:CIRCUIT_T1", new Object[]{"circuitBasic", + // Items.getItem("electronicCircuit"), new + // ItemStack(Blocks.redstone_torch)}); register("calclavia:CIRCUIT_T2", + // new Object[]{"circuitAdvanced", Items.getItem("advancedCircuit"), new + // ItemStack(Items.repeater)}); register("calclavia:CIRCUIT_T3", new + // Object[]{"circuitElite", Items.getItem("iridiumPlate"), new + // ItemStack(Block.field_94346_cn)}); register(ADVANCED_BATTERY, new + // Object[]{"advancedBattery", Items.getItem("energyCrystal"), "battery", + // new ItemStack(Items.repeater)}); register(BATTERY, new + // Object[]{"battery", Items.getItem("reBattery"), new + // ItemStack(Items.repeater)}); + // register(BATTERY_BOX, new Object[]{"batteryBox", + // Items.getItem("batBox"), new ItemStack(Block.field_72105_ah)}); + // register("calclavia:WRENCH", new Object[]{"wrench", + // Items.getItem("wrench"), new ItemStack(Item.field_77708_h)}); + // register("calclavia:WIRE", new Object[]{"copperWire", + // "copperCableBlock", new ItemStack(Item.field_77767_aC)}); + // register("calclavia:MOTOR", new Object[]{"motor", + // Items.getItem("generator"), new ItemStack(Block.field_71963_Z)}); + isInit = true; + } + } + + public static void register(String name, Object... possiblities) { + Object[] arr$ = possiblities; + int len$ = possiblities.length; + + for (int i$ = 0; i$ < len$; ++i$) { + Object possiblity = arr$[i$]; + if (possiblity instanceof ItemStack) { + if (registerItemStacksToDictionary( + name, new ItemStack[] {(ItemStack)possiblity})) { + break; + } + } else if (possiblity instanceof String) { + if (registerItemStacksToDictionary(name, (String)possiblity)) { + break; + } + } else { + FMLLog.severe("Universal Recipes: Error Registering " + name, + new Object[0]); + } + } + } + + public static boolean registerItemStacksToDictionary(String name, + List itemStacks) { + boolean returnValue = false; + if (itemStacks != null && itemStacks.size() > 0) { + Iterator i$ = itemStacks.iterator(); + + while (i$.hasNext()) { + ItemStack stack = (ItemStack)i$.next(); + if (stack != null) { + OreDictionary.registerOre(name, stack); + returnValue = true; + } + } + } + + return returnValue; + } + + public static boolean + registerItemStacksToDictionary(String name, ItemStack... itemStacks) { + return registerItemStacksToDictionary(name, Arrays.asList(itemStacks)); + } + + public static boolean registerItemStacksToDictionary(String name, + String stackName) { + return registerItemStacksToDictionary( + name, (List)OreDictionary.getOres(stackName)); + } +} diff --git a/src/main/java/calclavia/lib/gui/ContainerBase.java b/src/main/java/calclavia/lib/gui/ContainerBase.java new file mode 100644 index 0000000..d2c20d4 --- /dev/null +++ b/src/main/java/calclavia/lib/gui/ContainerBase.java @@ -0,0 +1,96 @@ +package calclavia.lib.gui; + +import calclavia.lib.IPlayerUsing; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerBase extends Container { + + protected int slotCount = 0; + private IInventory inventory; + + + public ContainerBase(IInventory inventory) { + this.inventory = inventory; + this.slotCount = inventory.getSizeInventory(); + } + + public void onContainerClosed(EntityPlayer player) { + if(this.inventory instanceof IPlayerUsing) { + ((IPlayerUsing)this.inventory).getPlayersUsing().remove(player); + } + + } + + public void addPlayerInventory(EntityPlayer player) { + if(this.inventory instanceof IPlayerUsing) { + ((IPlayerUsing)this.inventory).getPlayersUsing().add(player); + } + + int var3; + for(var3 = 0; var3 < 3; ++var3) { + for(int var4 = 0; var4 < 9; ++var4) { + this.addSlotToContainer(new Slot(player.inventory, var4 + var3 * 9 + 9, 8 + var4 * 18, 135 + var3 * 18)); + } + } + + for(var3 = 0; var3 < 9; ++var3) { + this.addSlotToContainer(new Slot(player.inventory, var3, 8 + var3 * 18, 193)); + } + + } + + public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int slotID) { + ItemStack var2 = null; + Slot var3 = (Slot)super.inventorySlots.get(slotID); + if(var3 != null && var3.getHasStack()) { + ItemStack itemStack = var3.getStack(); + var2 = itemStack.copy(); + if(slotID >= this.slotCount) { + boolean didTry = false; + + for(int i = 0; i < this.slotCount; ++i) { + if(this.getSlot(i).isItemValid(itemStack)) { + didTry = true; + if(this.mergeItemStack(itemStack, i, i + 1, false)) { + break; + } + } + } + + if(!didTry) { + if(slotID < 27 + this.slotCount) { + if(!this.mergeItemStack(itemStack, 27 + this.slotCount, 36 + this.slotCount, false)) { + return null; + } + } else if(slotID >= 27 + this.slotCount && slotID < 36 + this.slotCount && !this.mergeItemStack(itemStack, this.slotCount, 27 + this.slotCount, false)) { + return null; + } + } + } else if(!this.mergeItemStack(itemStack, this.slotCount, 36 + this.slotCount, false)) { + return null; + } + + if(itemStack.stackSize == 0) { + var3.putStack((ItemStack)null); + } else { + var3.onSlotChanged(); + } + + if(itemStack.stackSize == var2.stackSize) { + return null; + } + + var3.onPickupFromSlot(par1EntityPlayer, itemStack); + } + + return var2; + } + + public boolean canInteractWith(EntityPlayer entityplayer) { + return this.inventory.isUseableByPlayer(entityplayer); + } +} diff --git a/src/main/java/calclavia/lib/gui/GuiContainerBase.java b/src/main/java/calclavia/lib/gui/GuiContainerBase.java new file mode 100644 index 0000000..8d2cad3 --- /dev/null +++ b/src/main/java/calclavia/lib/gui/GuiContainerBase.java @@ -0,0 +1,296 @@ +package calclavia.lib.gui; + +import calclavia.lib.Calclavia; +import java.util.HashMap; +import java.util.Map.Entry; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fluids.FluidStack; +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; +import universalelectricity.core.vector.Vector2; +import universalelectricity.prefab.TranslationHelper; +import universalelectricity.prefab.vector.Region2; + +public class GuiContainerBase extends GuiContainer { + + //private static final int METER_X = 54; + public static final int METER_HEIGHT = 49; + public static final int METER_WIDTH = 14; + public static final int METER_END = 68; + public String tooltip = ""; + protected HashMap tooltips = new HashMap<>(); + protected int containerWidth; + protected int containerHeight; + + public GuiContainerBase(Container container) { + super(container); + this.ySize = 217; + } + + @Override + public void initGui() { + super.initGui(); + } + + @Override + public void onGuiClosed() { + Keyboard.enableRepeatEvents(false); + super.onGuiClosed(); + } + + @Override + protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { + for (Entry entry : this.tooltips.entrySet()) { + if (((Region2)entry.getKey()) + .isIn(new Vector2((double)(mouseX - this.guiLeft), + (double)(mouseY - this.guiTop)))) { + this.tooltip = (String)entry.getValue(); + break; + } + } + + if (this.tooltip != null && this.tooltip != "") { + this.drawTooltip(mouseX - this.guiLeft, mouseY - this.guiTop, + (String[])Calclavia.splitStringPerWord(this.tooltip, 5) + .toArray(new String[0])); + } + + this.tooltip = ""; + } + + @Override + protected void drawGuiContainerBackgroundLayer(float var1, int x, int y) { + this.containerWidth = (this.width - this.xSize) / 2; + this.containerHeight = (this.height - this.ySize) / 2; + this.mc.renderEngine.bindTexture( + new ResourceLocation("calclavia", "textures/gui/gui_base.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.drawTexturedModalRect(this.containerWidth, this.containerHeight, 0, 0, + this.xSize, this.ySize); + } + + protected void drawBulb(int x, int y, boolean isOn) { + this.mc.renderEngine.bindTexture( + new ResourceLocation("calclavia", "textures/gui/gui_base.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + if (isOn) { + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 161, 0, 6, 6); + } else { + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 161, 4, 6, 6); + } + } + + protected void drawSlot(int x, int y, ItemStack itemStack) { + this.mc.renderEngine.bindTexture( + new ResourceLocation("calclavia", "textures/gui/gui_base.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 0, 0, 18, 18); + this.drawItemStack(itemStack, this.containerWidth + x, + this.containerHeight + y); + } + + protected void drawItemStack(ItemStack itemStack, int x, int y) { + ++x; + ++y; + GL11.glTranslatef(0.0F, 0.0F, 32.0F); + itemRender.renderItemAndEffectIntoGUI( + this.fontRendererObj, this.mc.renderEngine, itemStack, x, y); + } + + protected void drawTextWithTooltip(String textName, String format, int x, + int y, int mouseX, int mouseY) { + this.drawTextWithTooltip(textName, format, x, y, mouseX, mouseY, 4210752); + } + + protected void drawTextWithTooltip(String textName, String format, int x, + int y, int mouseX, int mouseY, int color) { + String name = TranslationHelper.getLocal("gui." + textName + ".name"); + String text = format.replaceAll("%1", name); + this.fontRendererObj.drawString(text, x, y, color); + String tooltip = TranslationHelper.getLocal("gui." + textName + ".tooltip"); + if (tooltip != null && tooltip != "" && + this.func_146978_c(x, y, (int)((double)text.length() * 4.8D), 12, + mouseX, mouseY)) { + this.tooltip = tooltip; + } + } + + protected void drawTextWithTooltip(String textName, int x, int y, int mouseX, + int mouseY) { + this.drawTextWithTooltip(textName, "%1", x, y, mouseX, mouseY); + } + + protected void drawSlot(int x, int y, GuiSlotType type, float r, float g, + float b) { + this.mc.renderEngine.bindTexture( + new ResourceLocation("calclavia", "textures/gui/gui_components.png")); + GL11.glColor4f(r, g, b, 1.0F); + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 0, 0, 18, 18); + if (type != GuiSlotType.NONE) { + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 0, + 18 * type.ordinal(), 18, 18); + } + } + + protected void drawSlot(int x, int y, GuiSlotType type) { + this.drawSlot(x, y, type, 1.0F, 1.0F, 1.0F); + } + + protected void drawSlot(int x, int y) { + this.drawSlot(x, y, GuiSlotType.NONE); + } + + protected void drawBar(int x, int y, float scale) { + this.mc.renderEngine.bindTexture( + new ResourceLocation("calclavia", "textures/gui/gui_components.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 18, 0, 22, 15); + if (scale > 0.0F) { + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 18, 15, + 22 - (int)(scale * 22.0F), 15); + } + } + + protected void drawForce(int x, int y, float scale) { + this.mc.renderEngine.bindTexture( + new ResourceLocation("calclavia", "textures/gui/gui_components.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 54, 0, 107, 11); + if (scale > 0.0F) { + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 54, 11, + (int)(scale * 107.0F), 11); + } + } + + protected void drawElectricity(int x, int y, float scale) { + this.mc.renderEngine.bindTexture( + new ResourceLocation("calclavia", "textures/gui/gui_components.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 54, 0, 107, 11); + if (scale > 0.0F) { + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 54, 22, + (int)(scale * 107.0F), 11); + } + } + + protected void drawMeter(int x, int y, float scale, FluidStack liquidStack) { + this.mc.renderEngine.bindTexture( + new ResourceLocation("calclavia", "textures/gui/gui_base.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 40, 0, 14, 49); + this.displayGauge(this.containerWidth + x, this.containerHeight + y, 0, 0, + (int)(48.0F * scale), liquidStack); + this.mc.renderEngine.bindTexture( + new ResourceLocation("calclavia", "textures/gui/gui_base.png")); + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 40, 98, 14, 49); + } + + public void drawTooltip(int x, int y, String... toolTips) { + if (!GuiScreen.isShiftKeyDown()) { + GL11.glDisable('\u803a'); + RenderHelper.disableStandardItemLighting(); + GL11.glDisable(2896); + GL11.glDisable(2929); + if (toolTips != null) { + int var5 = 0; + + int var6; + int var7; + for (var6 = 0; var6 < toolTips.length; ++var6) { + var7 = this.fontRendererObj.getStringWidth(toolTips[var6]); + if (var7 > var5) { + var5 = var7; + } + } + + var6 = x + 12; + var7 = y - 12; + int var9 = 8; + if (toolTips.length > 1) { + var9 += 2 + (toolTips.length - 1) * 10; + } + + if (this.guiTop + var7 + var9 + 6 > this.height) { + var7 = this.height - var9 - this.guiTop - 6; + } + + super.zLevel = 300.0F; + int var10 = -267386864; + this.drawGradientRect(var6 - 3, var7 - 4, var6 + var5 + 3, var7 - 3, + var10, var10); + this.drawGradientRect(var6 - 3, var7 + var9 + 3, var6 + var5 + 3, + var7 + var9 + 4, var10, var10); + this.drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, + var7 + var9 + 3, var10, var10); + this.drawGradientRect(var6 - 4, var7 - 3, var6 - 3, var7 + var9 + 3, + var10, var10); + this.drawGradientRect(var6 + var5 + 3, var7 - 3, var6 + var5 + 4, + var7 + var9 + 3, var10, var10); + int var11 = 1347420415; + int var12 = (var11 & 16711422) >> 1 | var11 & -16777216; + this.drawGradientRect(var6 - 3, var7 - 3 + 1, var6 - 3 + 1, + var7 + var9 + 3 - 1, var11, var12); + this.drawGradientRect(var6 + var5 + 2, var7 - 3 + 1, var6 + var5 + 3, + var7 + var9 + 3 - 1, var11, var12); + this.drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, var7 - 3 + 1, + var11, var11); + this.drawGradientRect(var6 - 3, var7 + var9 + 2, var6 + var5 + 3, + var7 + var9 + 3, var12, var12); + + for (int var13 = 0; var13 < toolTips.length; ++var13) { + String var14 = toolTips[var13]; + this.fontRendererObj.drawStringWithShadow(var14, var6, var7, -1); + var7 += 10; + } + + super.zLevel = 0.0F; + GL11.glEnable(2929); + GL11.glEnable(2896); + RenderHelper.enableGUIStandardItemLighting(); + GL11.glEnable('\u803a'); + } + } + } + + protected void displayGauge(int j, int k, int line, int col, int squaled, + FluidStack liquid) { + if (liquid != null) { + int start = 0; + IIcon liquidIcon = liquid.getFluid().getIcon(); + + int x1; + do { + if (squaled > 16) { + x1 = 16; + squaled -= 16; + } else { + x1 = squaled; + squaled = 0; + } + + this.drawTexturedModelRectFromIcon(j + col, k + line + 58 - x1 - start, + liquidIcon, 16, 16 - (16 - x1)); + start += 16; + } while (x1 != 0 && squaled != 0); + } + } +} diff --git a/src/main/java/calclavia/lib/gui/GuiScreenBase.java b/src/main/java/calclavia/lib/gui/GuiScreenBase.java new file mode 100644 index 0000000..10e570a --- /dev/null +++ b/src/main/java/calclavia/lib/gui/GuiScreenBase.java @@ -0,0 +1,271 @@ +package calclavia.lib.gui; + +import calclavia.lib.Calclavia; +import java.util.HashMap; +import java.util.Map.Entry; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.util.IIcon; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fluids.FluidStack; +import org.lwjgl.opengl.GL11; +import universalelectricity.core.vector.Vector2; +import universalelectricity.prefab.GuiBase; +import universalelectricity.prefab.TranslationHelper; +import universalelectricity.prefab.vector.Region2; + +public class GuiScreenBase extends GuiBase { + + // private static final int METER_X = 54; + public static final int METER_HEIGHT = 49; + public static final int METER_WIDTH = 14; + public static final int METER_END = 68; + public String tooltip = ""; + protected HashMap tooltips = new HashMap<>(); + protected int containerWidth; + protected int containerHeight; + + public GuiScreenBase() { super.ySize = 217; } + + @Override + protected void drawForegroundLayer(int mouseX, int mouseY, float var1) { + for (Entry entry : this.tooltips.entrySet()) { + if (((Region2)entry.getKey()) + .isIn(new Vector2((double)(mouseX - this.guiLeft), + (double)(mouseY - this.guiTop)))) { + this.tooltip = (String)entry.getValue(); + break; + } + } + + if (this.tooltip != null && this.tooltip != "") { + this.drawTooltip(mouseX - this.guiLeft, mouseY - this.guiTop, + (String[])Calclavia.splitStringPerWord(this.tooltip, 5) + .toArray(new String[0])); + } + + this.tooltip = ""; + } + + @Override + protected void drawBackgroundLayer(int x, int y, float var1) { + this.containerWidth = (this.width - this.xSize) / 2; + this.containerHeight = (this.height - this.ySize) / 2; + this.mc.renderEngine.bindTexture( + new ResourceLocation("calclavia", "textures/gui/gui_base.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.drawTexturedModalRect(this.containerWidth, this.containerHeight, 0, 0, + this.xSize, this.ySize); + } + + protected void drawBulb(int x, int y, boolean isOn) { + this.mc.renderEngine.bindTexture( + new ResourceLocation("calclavia", "textures/gui/gui_base.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + if (isOn) { + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 161, 0, 6, 6); + } else { + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 161, 4, 6, 6); + } + } + + protected void drawTextWithTooltip(String textName, String format, int x, + int y, int mouseX, int mouseY) { + this.drawTextWithTooltip(textName, format, x, y, mouseX, mouseY, 4210752); + } + + protected void drawTextWithTooltip(String textName, String format, int x, + int y, int mouseX, int mouseY, int color) { + String name = TranslationHelper.getLocal("gui." + textName + ".name"); + String text = format.replaceAll("%1", name); + this.fontRendererObj.drawString(text, x, y, color); + String tooltip = TranslationHelper.getLocal("gui." + textName + ".tooltip"); + if (tooltip != null && tooltip != "" && + this.isPointInRegion(x, y, (int)((double)text.length() * 4.8D), 12, + mouseX, mouseY)) { + this.tooltip = tooltip; + } + } + + protected boolean isPointInRegion(int par1, int par2, int par3, int par4, + int par5, int par6) { + int k1 = super.guiLeft; + int l1 = super.guiTop; + par5 -= k1; + par6 -= l1; + return par5 >= par1 - 1 && par5 < par1 + par3 + 1 && par6 >= par2 - 1 && + par6 < par2 + par4 + 1; + } + + protected void drawTextWithTooltip(String textName, int x, int y, int mouseX, + int mouseY) { + this.drawTextWithTooltip(textName, "%1", x, y, mouseX, mouseY); + } + + protected void drawSlot(int x, int y, GuiSlotType type, float r, float g, + float b) { + this.mc.renderEngine.bindTexture( + new ResourceLocation("calclavia", "textures/gui/gui_empty.png")); + GL11.glColor4f(r, g, b, 1.0F); + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 0, 0, 18, 18); + if (type != GuiSlotType.NONE) { + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 0, + 18 * type.ordinal(), 18, 18); + } + } + + protected void drawSlot(int x, int y, GuiSlotType type) { + this.drawSlot(x, y, type, 1.0F, 1.0F, 1.0F); + } + + protected void drawSlot(int x, int y) { + this.drawSlot(x, y, GuiSlotType.NONE); + } + + protected void drawBar(int x, int y, float scale) { + this.mc.renderEngine.bindTexture( + new ResourceLocation("calclavia", "textures/gui/gui_empty.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 18, 0, 22, 15); + if (scale > 0.0F) { + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 18, 15, + 22 - (int)(scale * 22.0F), 15); + } + } + + protected void drawForce(int x, int y, float scale) { + this.mc.renderEngine.bindTexture( + new ResourceLocation("calclavia", "textures/gui/gui_empty.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 54, 0, 107, 11); + if (scale > 0.0F) { + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 54, 11, + (int)(scale * 107.0F), 11); + } + } + + protected void drawElectricity(int x, int y, float scale) { + this.mc.renderEngine.bindTexture( + new ResourceLocation("calclavia", "textures/gui/gui_empty.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 54, 0, 107, 11); + if (scale > 0.0F) { + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 54, 22, + (int)(scale * 107.0F), 11); + } + } + + protected void drawMeter(int x, int y, float scale, FluidStack liquidStack) { + this.mc.renderEngine.bindTexture( + new ResourceLocation("calclavia", "textures/gui/gui_empty.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 40, 0, 14, 49); + this.displayGauge(this.containerWidth + x, this.containerHeight + y, 0, 0, + (int)(48.0F * scale), liquidStack); + this.mc.renderEngine.bindTexture( + new ResourceLocation("calclavia", "textures/gui/gui_empty.png")); + this.drawTexturedModalRect(this.containerWidth + x, + this.containerHeight + y, 40, 98, 14, 49); + } + + public void drawTooltip(int x, int y, String... toolTips) { + if (!GuiScreen.isShiftKeyDown()) { + GL11.glDisable('\u803a'); + RenderHelper.disableStandardItemLighting(); + GL11.glDisable(2896); + GL11.glDisable(2929); + if (toolTips != null) { + int var5 = 0; + + int var6; + int var7; + for (var6 = 0; var6 < toolTips.length; ++var6) { + var7 = this.fontRendererObj.getStringWidth(toolTips[var6]); + if (var7 > var5) { + var5 = var7; + } + } + + var6 = x + 12; + var7 = y - 12; + int var9 = 8; + if (toolTips.length > 1) { + var9 += 2 + (toolTips.length - 1) * 10; + } + + if (super.guiTop + var7 + var9 + 6 > this.height) { + var7 = this.height - var9 - super.guiTop - 6; + } + + super.zLevel = 300.0F; + int var10 = -267386864; + this.drawGradientRect(var6 - 3, var7 - 4, var6 + var5 + 3, var7 - 3, + var10, var10); + this.drawGradientRect(var6 - 3, var7 + var9 + 3, var6 + var5 + 3, + var7 + var9 + 4, var10, var10); + this.drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, + var7 + var9 + 3, var10, var10); + this.drawGradientRect(var6 - 4, var7 - 3, var6 - 3, var7 + var9 + 3, + var10, var10); + this.drawGradientRect(var6 + var5 + 3, var7 - 3, var6 + var5 + 4, + var7 + var9 + 3, var10, var10); + int var11 = 1347420415; + int var12 = (var11 & 16711422) >> 1 | var11 & -16777216; + this.drawGradientRect(var6 - 3, var7 - 3 + 1, var6 - 3 + 1, + var7 + var9 + 3 - 1, var11, var12); + this.drawGradientRect(var6 + var5 + 2, var7 - 3 + 1, var6 + var5 + 3, + var7 + var9 + 3 - 1, var11, var12); + this.drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, var7 - 3 + 1, + var11, var11); + this.drawGradientRect(var6 - 3, var7 + var9 + 2, var6 + var5 + 3, + var7 + var9 + 3, var12, var12); + + for (int var13 = 0; var13 < toolTips.length; ++var13) { + String var14 = toolTips[var13]; + this.fontRendererObj.drawStringWithShadow(var14, var6, var7, -1); + var7 += 10; + } + + super.zLevel = 0.0F; + GL11.glEnable(2929); + GL11.glEnable(2896); + RenderHelper.enableGUIStandardItemLighting(); + GL11.glEnable('\u803a'); + } + } + } + + protected void displayGauge(int j, int k, int line, int col, int squaled, + FluidStack liquid) { + if (liquid != null) { + int start = 0; + IIcon liquidIcon = liquid.getFluid().getIcon(); + + int x1; + do { + if (squaled > 16) { + x1 = 16; + squaled -= 16; + } else { + x1 = squaled; + squaled = 0; + } + + this.drawTexturedModelRectFromIcon(j + col, k + line + 58 - x1 - start, + liquidIcon, 16, 16 - (16 - x1)); + start += 16; + } while (x1 != 0 && squaled != 0); + } + } +} diff --git a/src/main/java/calclavia/lib/gui/GuiSlotType.java b/src/main/java/calclavia/lib/gui/GuiSlotType.java new file mode 100644 index 0000000..02757f0 --- /dev/null +++ b/src/main/java/calclavia/lib/gui/GuiSlotType.java @@ -0,0 +1,23 @@ +package calclavia.lib.gui; + + +public enum GuiSlotType { + + NONE("NONE", 0), + BATTERY("BATTERY", 1), + LIQUID("LIQUID", 2), + ARR_UP("ARR_UP", 3), + ARR_DOWN("ARR_DOWN", 4), + ARR_LEFT("ARR_LEFT", 5), + ARR_RIGHT("ARR_RIGHT", 6), + ARR_UP_RIGHT("ARR_UP_RIGHT", 7), + ARR_UP_LEFT("ARR_UP_LEFT", 8), + ARR_DOWN_LEFT("ARR_DOWN_LEFT", 9), + ARR_DOWN_RIGHT("ARR_DOWN_RIGHT", 10); + // $FF: synthetic field + private static final GuiSlotType[] $VALUES = new GuiSlotType[]{NONE, BATTERY, LIQUID, ARR_UP, ARR_DOWN, ARR_LEFT, ARR_RIGHT, ARR_UP_RIGHT, ARR_UP_LEFT, ARR_DOWN_LEFT, ARR_DOWN_RIGHT}; + + + private GuiSlotType(String var1, int var2) {} + +} diff --git a/src/main/java/calclavia/lib/render/CalclaviaRenderHelper.java b/src/main/java/calclavia/lib/render/CalclaviaRenderHelper.java new file mode 100644 index 0000000..120743d --- /dev/null +++ b/src/main/java/calclavia/lib/render/CalclaviaRenderHelper.java @@ -0,0 +1,111 @@ +package calclavia.lib.render; + +import net.minecraft.block.Block; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.entity.RenderManager; +import org.lwjgl.opengl.GL11; + +public class CalclaviaRenderHelper { + + public static void enableBlending() { + GL11.glShadeModel(7425); + GL11.glEnable(3042); + GL11.glBlendFunc(770, 771); + } + + public static void disableBlending() { + GL11.glShadeModel(7424); + GL11.glDisable(2848); + GL11.glDisable(2881); + GL11.glDisable(3042); + } + + public static void enableLighting() { + RenderHelper.enableStandardItemLighting(); + } + + public static void disableLighting() { + RenderHelper.disableStandardItemLighting(); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240.0F, 240.0F); + } + + public static void renderNormalBlockAsItem(Block block, int metadata, RenderBlocks renderer) { + Tessellator tessellator = Tessellator.instance; + block.setBlockBoundsForItemRender(); + renderer.setRenderBoundsFromBlock(block); + GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); + GL11.glTranslatef(-0.5F, -0.5F, -0.5F); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, -1.0F, 0.0F); + renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, -1.0F); + renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, 1.0F); + renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(-1.0F, 0.0F, 0.0F); + renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(1.0F, 0.0F, 0.0F); + renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)); + tessellator.draw(); + GL11.glTranslatef(0.5F, 0.5F, 0.5F); + } + + public static void renderFloatingText(String text, float x, float y, float z) { + renderFloatingText(text, x, y, z, 16777215); + } + + public static void renderFloatingText(String text, float x, float y, float z, int color) { + RenderManager renderManager = RenderManager.instance; + FontRenderer fontRenderer = renderManager.getFontRenderer(); + float scale = 0.027F; + GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.5F); + GL11.glPushMatrix(); + GL11.glTranslatef(x + 0.0F, y + 2.3F, z); + GL11.glNormal3f(0.0F, 1.0F, 0.0F); + GL11.glRotatef(-renderManager.playerViewY, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(renderManager.playerViewX, 1.0F, 0.0F, 0.0F); + GL11.glScalef(-scale, -scale, scale); + GL11.glDisable(2896); + GL11.glDepthMask(false); + GL11.glDisable(2929); + GL11.glEnable(3042); + GL11.glBlendFunc(770, 771); + Tessellator tessellator = Tessellator.instance; + byte yOffset = 0; + GL11.glDisable(3553); + tessellator.startDrawingQuads(); + int stringMiddle = fontRenderer.getStringWidth(text) / 2; + tessellator.setColorRGBA_F(0.0F, 0.0F, 0.0F, 0.5F); + tessellator.addVertex((double)(-stringMiddle - 1), (double)(-1 + yOffset), 0.0D); + tessellator.addVertex((double)(-stringMiddle - 1), (double)(8 + yOffset), 0.0D); + tessellator.addVertex((double)(stringMiddle + 1), (double)(8 + yOffset), 0.0D); + tessellator.addVertex((double)(stringMiddle + 1), (double)(-1 + yOffset), 0.0D); + tessellator.draw(); + GL11.glEnable(3553); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.5F); + fontRenderer.drawString(text, -fontRenderer.getStringWidth(text) / 2, yOffset, color); + GL11.glEnable(2929); + GL11.glDepthMask(true); + fontRenderer.drawString(text, -fontRenderer.getStringWidth(text) / 2, yOffset, color); + GL11.glEnable(2896); + GL11.glDisable(3042); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/calclavia/lib/render/ITagRender.java b/src/main/java/calclavia/lib/render/ITagRender.java new file mode 100644 index 0000000..dad2bb7 --- /dev/null +++ b/src/main/java/calclavia/lib/render/ITagRender.java @@ -0,0 +1,9 @@ +package calclavia.lib.render; + +import java.util.HashMap; +import net.minecraft.entity.player.EntityPlayer; + +public interface ITagRender { + + float addInformation(HashMap var1, EntityPlayer var2); +} diff --git a/src/main/java/calclavia/lib/render/RenderTaggedTile.java b/src/main/java/calclavia/lib/render/RenderTaggedTile.java new file mode 100644 index 0000000..bd1c55c --- /dev/null +++ b/src/main/java/calclavia/lib/render/RenderTaggedTile.java @@ -0,0 +1,64 @@ +package calclavia.lib.render; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map.Entry; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityClientPlayerMP; +import net.minecraft.client.renderer.entity.RendererLivingEntity; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MovingObjectPosition; + +@SideOnly(Side.CLIENT) +public abstract class RenderTaggedTile extends TileEntitySpecialRenderer { + @Override + public void renderTileEntityAt(TileEntity t, double x, double y, double z, + float f) { + if (t != null && t instanceof ITagRender && + this.getPlayer().getDistance((double)t.xCoord, (double)t.yCoord, + (double)t.zCoord) <= + (double)RendererLivingEntity.NAME_TAG_RANGE) { + HashMap tags = new HashMap(); + float height = ((ITagRender)t).addInformation(tags, this.getPlayer()); + EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer; + if (player.ridingEntity == null) { + MovingObjectPosition objectPosition = player.rayTrace(8.0D, 1.0F); + if (objectPosition != null) { + boolean isLooking = false; + + for (int it = 0; (float)it < height; ++it) { + if (objectPosition.blockX == t.xCoord && + objectPosition.blockY == t.yCoord + it && + objectPosition.blockZ == t.zCoord) { + isLooking = true; + } + } + + if (isLooking) { + Iterator var17 = tags.entrySet().iterator(); + + for (int i = 0; var17.hasNext(); ++i) { + Entry entry = (Entry)var17.next(); + if (entry.getKey() != null) { + CalclaviaRenderHelper.renderFloatingText( + (String)entry.getKey(), (float)x + 0.5F, + (float)y + (float)i * 0.25F - 2.0F + height, + (float)z + 0.5F, ((Integer)entry.getValue()).intValue()); + } + } + } + } + } + } + } + + public EntityPlayer getPlayer() { + EntityLivingBase entity = this.field_147501_a.field_147551_g; + return entity instanceof EntityPlayer ? (EntityPlayer)entity : null; + } +} diff --git a/src/main/java/icbm/api/IAmmunition.java b/src/main/java/icbm/api/IAmmunition.java new file mode 100644 index 0000000..34b3071 --- /dev/null +++ b/src/main/java/icbm/api/IAmmunition.java @@ -0,0 +1,10 @@ +package icbm.api; + +import net.minecraft.item.ItemStack; + +public interface IAmmunition { + + boolean hasAmmunition(ItemStack var1); + + boolean useAmmunition(ItemStack var1); +} diff --git a/src/main/java/icbm/api/IBlockFrequency.java b/src/main/java/icbm/api/IBlockFrequency.java new file mode 100644 index 0000000..d831270 --- /dev/null +++ b/src/main/java/icbm/api/IBlockFrequency.java @@ -0,0 +1,9 @@ +package icbm.api; + + +public interface IBlockFrequency { + + int getFrequency(); + + void setFrequency(int var1); +} diff --git a/src/main/java/icbm/api/ICBM.java b/src/main/java/icbm/api/ICBM.java new file mode 100644 index 0000000..5e8e014 --- /dev/null +++ b/src/main/java/icbm/api/ICBM.java @@ -0,0 +1,41 @@ +package icbm.api; + +import icbm.api.explosion.IExplosive; +import java.lang.reflect.Method; +import net.minecraft.entity.Entity; +import net.minecraft.world.World; + +public class ICBM { + + public static final String NAME = "ICBM"; + public static final String VERSION = "1.1.1"; + public static final int BLOCK_ID_PREFIX = 3880; + public static final int ITEM_ID_PREFIX = 3900; + public static Class explosionManager; + + + public static void createExplosion(World worldObj, double x, double y, double z, Entity entity, int explosiveID) { + try { + Method e = explosionManager.getMethod("createExplosion", new Class[]{World.class, Double.class, Double.class, Double.class, Entity.class, Integer.class}); + e.invoke((Object)null, new Object[]{worldObj, Double.valueOf(x), Double.valueOf(y), Double.valueOf(z), entity, Integer.valueOf(explosiveID)}); + } catch (Exception var10) { + System.out.println("ICBM: Failed to create an ICBM explosion with the ID: " + explosiveID); + var10.printStackTrace(); + } + + } + + public static IExplosive getExplosive(String name) { + if(name != null) { + try { + Method e = explosionManager.getMethod("getExplosiveByName", new Class[]{String.class}); + return (IExplosive)e.invoke((Object)null, new Object[]{name}); + } catch (Exception var2) { + System.out.println("ICBM: Failed to get explosive with the name: " + name); + var2.printStackTrace(); + } + } + + return null; + } +} diff --git a/src/main/java/icbm/api/ICBMFlags.java b/src/main/java/icbm/api/ICBMFlags.java new file mode 100644 index 0000000..03ab58c --- /dev/null +++ b/src/main/java/icbm/api/ICBMFlags.java @@ -0,0 +1,15 @@ +package icbm.api; + +public class ICBMFlags { + // TODO: WTF + // public static final String FLAG_BAN_GLOBAL = + // FlagRegistry.registerFlag("ban_icbm"); + // public static final String FLAG_BAN_EXPLOSIVE = + // FlagRegistry.registerFlag("ban_explosive"); + // public static final String FLAG_BAN_GRENADE = + // FlagRegistry.registerFlag("ban_grenade"); + // public static final String FLAG_BAN_MISSILE = + // FlagRegistry.registerFlag("ban_missile"); + // public static final String FLAG_BAN_MINECART = + // FlagRegistry.registerFlag("ban_minecart"); +} diff --git a/src/main/java/icbm/api/ICamouflageMaterial.java b/src/main/java/icbm/api/ICamouflageMaterial.java new file mode 100644 index 0000000..d47aebb --- /dev/null +++ b/src/main/java/icbm/api/ICamouflageMaterial.java @@ -0,0 +1,5 @@ +package icbm.api; + + +public interface ICamouflageMaterial { +} diff --git a/src/main/java/icbm/api/IHackable.java b/src/main/java/icbm/api/IHackable.java new file mode 100644 index 0000000..63d4909 --- /dev/null +++ b/src/main/java/icbm/api/IHackable.java @@ -0,0 +1,10 @@ +package icbm.api; + +import net.minecraft.entity.player.EntityPlayer; + +public interface IHackable { + + void generateNewKey(); + + boolean tryForAccess(EntityPlayer var1, String var2); +} diff --git a/src/main/java/icbm/api/IItemFrequency.java b/src/main/java/icbm/api/IItemFrequency.java new file mode 100644 index 0000000..3ac4618 --- /dev/null +++ b/src/main/java/icbm/api/IItemFrequency.java @@ -0,0 +1,10 @@ +package icbm.api; + +import net.minecraft.item.ItemStack; + +public interface IItemFrequency { + + int getFrequency(ItemStack var1); + + void setFrequency(int var1, ItemStack var2); +} diff --git a/src/main/java/icbm/api/ILauncherContainer.java b/src/main/java/icbm/api/ILauncherContainer.java new file mode 100644 index 0000000..a462a3b --- /dev/null +++ b/src/main/java/icbm/api/ILauncherContainer.java @@ -0,0 +1,13 @@ +package icbm.api; + +import icbm.api.ILauncherController; +import icbm.api.IMissile; + +public interface ILauncherContainer { + + IMissile getContainingMissile(); + + void setContainingMissile(IMissile var1); + + ILauncherController getController(); +} diff --git a/src/main/java/icbm/api/ILauncherController.java b/src/main/java/icbm/api/ILauncherController.java new file mode 100644 index 0000000..cdb9bb0 --- /dev/null +++ b/src/main/java/icbm/api/ILauncherController.java @@ -0,0 +1,28 @@ +package icbm.api; + +import icbm.api.IBlockFrequency; +import icbm.api.IMissile; +import icbm.api.LauncherType; +import net.minecraft.item.ItemStack; +import universalelectricity.core.block.IElectricityStorage; +import universalelectricity.core.vector.Vector3; +import universalelectricity.prefab.implement.IRedstoneReceptor; + +public interface ILauncherController extends IElectricityStorage, IRedstoneReceptor, IBlockFrequency { + + LauncherType getLauncherType(); + + void launch(); + + boolean canLaunch(); + + String getStatus(); + + Vector3 getTarget(); + + void setTarget(Vector3 var1); + + void placeMissile(ItemStack var1); + + IMissile getMissile(); +} diff --git a/src/main/java/icbm/api/IMissile.java b/src/main/java/icbm/api/IMissile.java new file mode 100644 index 0000000..6ea09cd --- /dev/null +++ b/src/main/java/icbm/api/IMissile.java @@ -0,0 +1,26 @@ +package icbm.api; + +import icbm.api.ILauncherContainer; +import icbm.api.explosion.IExplosiveContainer; +import universalelectricity.core.vector.Vector3; + +public interface IMissile extends IExplosiveContainer { + + void explode(); + + void setExplode(); + + void normalExplode(); + + void setNormalExplode(); + + void dropMissileAsItem(); + + int getTicksInAir(); + + ILauncherContainer getLauncher(); + + void launch(Vector3 var1); + + void launch(Vector3 var1, int var2); +} diff --git a/src/main/java/icbm/api/IMissileLockable.java b/src/main/java/icbm/api/IMissileLockable.java new file mode 100644 index 0000000..4474c02 --- /dev/null +++ b/src/main/java/icbm/api/IMissileLockable.java @@ -0,0 +1,11 @@ +package icbm.api; + +import icbm.api.IMissile; +import universalelectricity.core.vector.Vector3; + +public interface IMissileLockable { + + boolean canLock(IMissile var1); + + Vector3 getPredictedPosition(int var1); +} diff --git a/src/main/java/icbm/api/LauncherType.java b/src/main/java/icbm/api/LauncherType.java new file mode 100644 index 0000000..1c8d1c3 --- /dev/null +++ b/src/main/java/icbm/api/LauncherType.java @@ -0,0 +1,14 @@ +package icbm.api; + + +public enum LauncherType { + + TRADITIONAL("TRADITIONAL", 0), + CRUISE("CRUISE", 1); + // $FF: synthetic field + private static final LauncherType[] $VALUES = new LauncherType[]{TRADITIONAL, CRUISE}; + + + private LauncherType(String var1, int var2) {} + +} diff --git a/src/main/java/icbm/api/RadarRegistry.java b/src/main/java/icbm/api/RadarRegistry.java new file mode 100644 index 0000000..83b2bb9 --- /dev/null +++ b/src/main/java/icbm/api/RadarRegistry.java @@ -0,0 +1,110 @@ +package icbm.api; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import net.minecraft.entity.Entity; +import net.minecraft.tileentity.TileEntity; +import universalelectricity.core.vector.Vector2; +import universalelectricity.core.vector.Vector3; +import universalelectricity.prefab.vector.Region2; + +public class RadarRegistry { + private static Set detectableTileEntities = new HashSet<>(); + private static Set detectableEntities = new HashSet<>(); + + public static void register(TileEntity tileEntity) { + if (!detectableTileEntities.contains(tileEntity)) { + detectableTileEntities.add(tileEntity); + } + } + + public static void unregister(TileEntity tileEntity) { + if (detectableTileEntities.contains(tileEntity)) { + detectableTileEntities.remove(tileEntity); + } + } + + public static void register(Entity entity) { + if (!detectableEntities.contains(entity)) { + detectableEntities.add(entity); + } + } + + public static void unregister(Entity entity) { + if (detectableEntities.contains(entity)) { + detectableEntities.remove(entity); + } + } + + public static List getTileEntitiesInArea(Vector2 minVector, + Vector2 maxVector) { + ArrayList returnArray = new ArrayList<>(); + cleanUpArray(); + for (TileEntity tileEntity : detectableTileEntities) { + if ((new Region2(minVector, maxVector)) + .isIn((new Vector3(tileEntity)).toVector2())) { + returnArray.add(tileEntity); + } + } + + return returnArray; + } + + public static List getEntitiesWithinRadius(Vector2 vector, + int radius) { + cleanUpArray(); + ArrayList returnArray = new ArrayList<>(); + for (Entity entity : detectableEntities) { + if (Vector2.distance(vector, (new Vector3(entity)).toVector2()) <= + (double)radius) { + returnArray.add(entity); + } + } + + return returnArray; + } + + public static Set getTileEntities() { + cleanUpArray(); + return detectableTileEntities; + } + + public static Set getEntities() { + cleanUpArray(); + return detectableEntities; + } + + public static void cleanUpArray() { + try { + Iterator e = detectableTileEntities.iterator(); + + while (e.hasNext()) { + TileEntity it2 = e.next(); + if (it2 == null) { + e.remove(); + } else if (it2.isInvalid()) { + e.remove(); + } else if (it2.getWorldObj().getTileEntity(it2.xCoord, it2.yCoord, + it2.zCoord) != it2) { + e.remove(); + } + } + + Iterator it21 = detectableEntities.iterator(); + while (it21.hasNext()) { + Entity entity = (Entity)it21.next(); + if (entity == null) { + it21.remove(); + } else if (entity.isDead) { + it21.remove(); + } + } + } catch (Exception var3) { + System.out.println("Failed to clean up radar list properly."); + var3.printStackTrace(); + } + } +} diff --git a/src/main/java/icbm/api/explosion/ExplosionEvent.java b/src/main/java/icbm/api/explosion/ExplosionEvent.java new file mode 100644 index 0000000..b3fd936 --- /dev/null +++ b/src/main/java/icbm/api/explosion/ExplosionEvent.java @@ -0,0 +1,36 @@ +package icbm.api.explosion; + +import cpw.mods.fml.common.eventhandler.Event; +import net.minecraft.world.World; + +public class ExplosionEvent extends Event { + + public final World world; + public final double x; + public final double y; + public final double z; + public IExplosive explosive; + + + public ExplosionEvent(World world, double x, double y, double z, IExplosive explosive) { + this.world = world; + this.x = x; + this.y = y; + this.z = z; + this.explosive = explosive; + } + + public static class PostExplosionEvent extends ExplosionEvent { + + public PostExplosionEvent(World world, double x, double y, double z, IExplosive explosive) { + super(world, x, y, z, explosive); + } + } + + public static class PreExplosionEvent extends ExplosionEvent { + + public PreExplosionEvent(World world, double x, double y, double z, IExplosive explosive) { + super(world, x, y, z, explosive); + } + } +} diff --git a/src/main/java/icbm/api/explosion/IEMPBlock.java b/src/main/java/icbm/api/explosion/IEMPBlock.java new file mode 100644 index 0000000..c74d838 --- /dev/null +++ b/src/main/java/icbm/api/explosion/IEMPBlock.java @@ -0,0 +1,10 @@ +package icbm.api.explosion; + +import icbm.api.explosion.IExplosive; +import net.minecraft.world.World; +import universalelectricity.core.vector.Vector3; + +public interface IEMPBlock { + + void onEMP(World var1, Vector3 var2, IExplosive var3); +} diff --git a/src/main/java/icbm/api/explosion/IEMPItem.java b/src/main/java/icbm/api/explosion/IEMPItem.java new file mode 100644 index 0000000..32b4e4a --- /dev/null +++ b/src/main/java/icbm/api/explosion/IEMPItem.java @@ -0,0 +1,11 @@ +package icbm.api.explosion; + +import icbm.api.explosion.IExplosive; +import net.minecraft.entity.Entity; +import net.minecraft.item.ItemStack; +import universalelectricity.core.item.IItemElectric; + +public interface IEMPItem extends IItemElectric { + + void onEMP(ItemStack var1, Entity var2, IExplosive var3); +} diff --git a/src/main/java/icbm/api/explosion/IExplosive.java b/src/main/java/icbm/api/explosion/IExplosive.java new file mode 100644 index 0000000..d923615 --- /dev/null +++ b/src/main/java/icbm/api/explosion/IExplosive.java @@ -0,0 +1,23 @@ +package icbm.api.explosion; + + +public interface IExplosive { + + int getID(); + + String getUnlocalizedName(); + + String getExplosiveName(); + + String getGrenadeName(); + + String getMissileName(); + + String getMinecartName(); + + float getRadius(); + + int getTier(); + + double getEnergy(); +} diff --git a/src/main/java/icbm/api/explosion/IExplosiveContainer.java b/src/main/java/icbm/api/explosion/IExplosiveContainer.java new file mode 100644 index 0000000..72f54b6 --- /dev/null +++ b/src/main/java/icbm/api/explosion/IExplosiveContainer.java @@ -0,0 +1,8 @@ +package icbm.api.explosion; + +import icbm.api.explosion.IExplosive; + +public interface IExplosiveContainer { + + IExplosive getExplosiveType(); +} diff --git a/src/main/java/icbm/api/explosion/IExplosiveIgnore.java b/src/main/java/icbm/api/explosion/IExplosiveIgnore.java new file mode 100644 index 0000000..093a592 --- /dev/null +++ b/src/main/java/icbm/api/explosion/IExplosiveIgnore.java @@ -0,0 +1,8 @@ +package icbm.api.explosion; + +import icbm.api.explosion.ExplosionEvent; + +public interface IExplosiveIgnore { + + boolean canIgnore(ExplosionEvent var1); +} diff --git a/src/main/resources/assets/atomicscience/sounds.json b/src/main/resources/assets/atomicscience/sounds.json new file mode 100644 index 0000000..b0b46cf --- /dev/null +++ b/src/main/resources/assets/atomicscience/sounds.json @@ -0,0 +1,56 @@ +{ + "antimatter": { + "category": "master", + "sounds": [ + { + "name": "antimatter", + "stream": false + } + ] + }, + "strangematter": { + "category": "master", + "sounds": [ + { + "name": "strangematter", + "stream": false + } + ] + }, + "alarm": { + "category": "master", + "sounds": [ + { + "name": "alarm", + "stream": false + } + ] + }, + "accelerator": { + "category": "master", + "sounds": [ + { + "name": "accelerator", + "stream": false + } + ] + }, + "turbine": { + "category": "master", + "sounds": [ + { + "name": "turbine", + "stream": false + } + ] + }, + "assembler": { + "category": "master", + "sounds": [ + { + "name": "assembler", + "stream": false + } + ] + } +}

@MhyVth5j+L9Y5P!{1A#%t!PBZO?l^KB!Z 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