From 7305ba719930ea3fbf8aa987aeec48b33cdbd82e Mon Sep 17 00:00:00 2001 From: Foghrye4 Date: Tue, 21 Mar 2017 17:34:07 +0300 Subject: Oregen --- ihl/ClientProxy.java | 496 ++++++++++---------- ihl/IHL3dPathFinder.java | 119 ----- ihl/IHLMod.java | 224 +++------ ihl/IHLModConfig.java | 8 +- ihl/IHLModInfo.java | 2 +- ihl/ServerProxy.java | 22 - ihl/enviroment/LightBulbBlock.java | 185 ++++---- ihl/enviroment/LightBulbTileEntity.java | 361 ++++++--------- ihl/enviroment/SpotlightTileEntity.java | 4 +- ihl/explosion/ChunkAndWorldLoadEventHandler.java | 4 - ihl/explosion/ExplosionVectorBlockV2.java | 40 +- ihl/explosion/ExplosiveTileEntity.java | 4 +- ihl/explosion/PileBlock.java | 10 +- ihl/explosion/PileBlockRender.java | 513 +++++++++------------ ihl/explosion/PileTileEntityRender.java | 268 ++++++----- ihl/flexible_cable/AnchorBlock.java | 213 +++------ ihl/items_blocks/FlexibleCableItem.java | 42 +- ihl/items_blocks/IHLItemBlock.java | 390 ++++++++-------- ihl/items_blocks/IHLTool.java | 9 - ihl/items_blocks/ItemSubstance.java | 2 - ihl/items_blocks/MachineBaseBlock.java | 44 -- ihl/model/FlexibleCableItemRender.java | 13 +- ihl/model/MultiMetaBlockRender.java | 76 --- ihl/model/RenderBlocksExt.java | 67 +++ .../AchesonFurnaceRecipeHandler.java | 30 +- ihl/nei_integration/ChimneyKneeRecipeHandler.java | 73 --- ihl/nei_integration/LeadOvenRecipeHandler.java | 162 +++---- .../MuffleFurnaceRecipeHandler.java | 14 +- ihl/nei_integration/NEIIHLConfig.java | 4 - .../PrecipitatorCondenserRecipeHandler.java | 67 --- ihl/processing/chemistry/AbsorberCoolerModel.java | 78 ---- .../chemistry/ApparatusProcessableInvSlot.java | 54 +-- .../chemistry/ChemicalReactorTileEntity.java | 6 +- .../chemistry/CryogenicDistillerTileEntity.java | 3 +- .../chemistry/ElectrolysisBathTileEntity.java | 6 +- ihl/processing/chemistry/EvaporatorTileEntity.java | 4 +- .../chemistry/FluidizedBedReactorContainer.java | 8 +- .../chemistry/FluidizedBedReactorTileEntity.java | 10 +- .../chemistry/FractionatorBottomTileEntity.java | 2 +- ihl/processing/chemistry/GoldChimneyKneeModel.java | 45 -- .../chemistry/GoldChimneyKneeRender.java | 50 -- .../chemistry/GoldChimneyKneeTileEntity.java | 293 ------------ .../chemistry/LabElectrolyzerTileEntity.java | 2 +- ihl/processing/chemistry/LeadOvenContainer.java | 139 +++--- ihl/processing/chemistry/LeadOvenGui.java | 67 +-- ihl/processing/chemistry/LeadOvenTileEntity.java | 486 +++++++++---------- ihl/processing/chemistry/LoomTileEntity.java | 8 +- .../chemistry/PaperMachineTileEntity.java | 2 +- .../chemistry/PrecipitatorCondenserModel.java | 110 ----- .../chemistry/PrecipitatorCondenserRender.java | 50 -- .../chemistry/PrecipitatorCondenserTileEntity.java | 379 --------------- ihl/processing/invslots/IHLInvSlotOutput.java | 188 +++----- .../SlotRedstoneConverterCableInvSlot.java | 23 - ihl/processing/metallurgy/AchesonFurnaceGui.java | 7 +- .../metallurgy/AchesonFurnanceContainer.java | 7 +- .../metallurgy/AchesonFurnanceTileEntity.java | 57 +-- .../metallurgy/BasicElectricMotorTileEntity.java | 2 + .../metallurgy/BigMachineFrameTileEntity.java | 109 ----- ihl/processing/metallurgy/Crucible.java | 2 +- .../DetonationSprayingMachineTileEntity.java | 12 +- .../metallurgy/ElectricEngineInvSlot.java | 54 --- ihl/processing/metallurgy/ExtruderTileEntity.java | 6 +- .../metallurgy/GasWeldingStationTileEntity.java | 4 +- .../metallurgy/ImpregnatingMachineTileEntity.java | 6 +- .../metallurgy/InjectionMoldTileEntity.java | 9 +- ihl/processing/metallurgy/MuffleFurnaceGui.java | 12 +- .../metallurgy/MuffleFurnanceContainer.java | 7 +- .../metallurgy/MuffleFurnanceTileEntity.java | 38 +- .../metallurgy/RollingMachinePart1TileEntity.java | 8 +- .../VulcanizationExtrudingMoldTileEntity.java | 3 +- ihl/processing/metallurgy/WireMillTileEntity.java | 4 +- .../WoodenRollingMachinePart1TileEntity.java | 6 +- ihl/recipes/RecipeOutputItemStack.java | 63 +-- ihl/recipes/UniversalRecipeInput.java | 60 +-- ihl/recipes/UniversalRecipeManager.java | 20 +- ihl/utils/IHLMathUtils.java | 185 +++----- ihl/utils/IHLUtils.java | 12 - ihl/worldgen/IHLWorldGenerator.java | 300 +++--------- ihl/worldgen/WorldGenLiquidOre.java | 86 ---- ihl/worldgen/WorldGenMinableMeta.java | 126 ----- ihl/worldgen/WorldGeneratorBase.java | 69 +++ ihl/worldgen/WorldGeneratorSurfaceLake.java | 41 ++ ihl/worldgen/WorldGeneratorUndergroundLake.java | 39 ++ ihl/worldgen/WorldGeneratorVein.java | 26 ++ ihl/worldgen/ores/IHLFluid.java | 6 +- 85 files changed, 2266 insertions(+), 4599 deletions(-) delete mode 100644 ihl/IHL3dPathFinder.java delete mode 100644 ihl/model/MultiMetaBlockRender.java create mode 100644 ihl/model/RenderBlocksExt.java delete mode 100644 ihl/nei_integration/ChimneyKneeRecipeHandler.java delete mode 100644 ihl/nei_integration/PrecipitatorCondenserRecipeHandler.java delete mode 100644 ihl/processing/chemistry/AbsorberCoolerModel.java delete mode 100644 ihl/processing/chemistry/GoldChimneyKneeModel.java delete mode 100644 ihl/processing/chemistry/GoldChimneyKneeRender.java delete mode 100644 ihl/processing/chemistry/GoldChimneyKneeTileEntity.java delete mode 100644 ihl/processing/chemistry/PrecipitatorCondenserModel.java delete mode 100644 ihl/processing/chemistry/PrecipitatorCondenserRender.java delete mode 100644 ihl/processing/chemistry/PrecipitatorCondenserTileEntity.java delete mode 100644 ihl/processing/invslots/SlotRedstoneConverterCableInvSlot.java delete mode 100644 ihl/processing/metallurgy/BigMachineFrameTileEntity.java delete mode 100644 ihl/processing/metallurgy/ElectricEngineInvSlot.java delete mode 100644 ihl/worldgen/WorldGenLiquidOre.java delete mode 100644 ihl/worldgen/WorldGenMinableMeta.java create mode 100644 ihl/worldgen/WorldGeneratorBase.java create mode 100644 ihl/worldgen/WorldGeneratorSurfaceLake.java create mode 100644 ihl/worldgen/WorldGeneratorUndergroundLake.java create mode 100644 ihl/worldgen/WorldGeneratorVein.java (limited to 'ihl') diff --git a/ihl/ClientProxy.java b/ihl/ClientProxy.java index 6b0dac0..974a7c4 100644 --- a/ihl/ClientProxy.java +++ b/ihl/ClientProxy.java @@ -2,7 +2,6 @@ package ihl; import java.io.File; import java.io.IOException; -import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -52,14 +51,8 @@ import ihl.processing.chemistry.FractionatorSectionModel; import ihl.processing.chemistry.FractionatorSectionTileEntity; import ihl.processing.chemistry.GaedesMercuryRotaryPumpModel; import ihl.processing.chemistry.GaedesMercuryRotaryPumpTileEntity; -import ihl.processing.chemistry.GoldChimneyKneeModel; -import ihl.processing.chemistry.GoldChimneyKneeRender; -import ihl.processing.chemistry.GoldChimneyKneeTileEntity; import ihl.processing.chemistry.LoomModel; import ihl.processing.chemistry.LoomTileEntity; -import ihl.processing.chemistry.PrecipitatorCondenserModel; -import ihl.processing.chemistry.PrecipitatorCondenserRender; -import ihl.processing.chemistry.PrecipitatorCondenserTileEntity; import ihl.processing.chemistry.RefluxCondenserModel; import ihl.processing.chemistry.RefluxCondenserTileEntity; import ihl.processing.metallurgy.CoilerModel; @@ -115,7 +108,6 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; -import net.minecraft.world.chunk.Chunk; import net.minecraftforge.client.MinecraftForgeClient; import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.common.MinecraftForge; @@ -130,24 +122,24 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class ClientProxy extends ServerProxy { - - public boolean loadMirrorRender=true; + + public boolean loadMirrorRender = true; public IHLRenderUtils renderUtils; - public Map sharedBlockRenders = new HashMap(); - public Map,ISelectionBoxSpecialRenderer> selectionBoxSpecialRendererRegistry = new HashMap,ISelectionBoxSpecialRenderer>(); - public ClientProxy() {} - + public Map sharedBlockRenders = new HashMap(); + public Map, ISelectionBoxSpecialRenderer> selectionBoxSpecialRendererRegistry = new HashMap, ISelectionBoxSpecialRenderer>(); + + public ClientProxy() { + } + @Override - public void load() throws ParserConfigurationException - { - if(channel==null) - { - channel = NetworkRegistry.INSTANCE.newEventDrivenChannel(IHLModInfo.MODID); - channel.register(this); - } - this.renderUtils=new IHLRenderUtils(); + public void load() throws ParserConfigurationException { + if (channel == null) { + channel = NetworkRegistry.INSTANCE.newEventDrivenChannel(IHLModInfo.MODID); + channel.register(this); + } + this.renderUtils = new IHLRenderUtils(); MinecraftForge.EVENT_BUS.register(this.renderUtils); - + registerBlockHandler(new ImpregnatingMachineBlockRender(), MachineType.BronzeTub); registerBlockHandler(new RefluxCondenserBlockRender(), MachineType.RefluxCondenser); registerBlockHandler(new RectifierTransformerUnitBlockRender(), MachineType.RectifierTransformerUnit); @@ -155,292 +147,334 @@ public class ClientProxy extends ServerProxy { PileBlockRender pileBlockRender = new PileBlockRender(); RenderingRegistry.registerBlockHandler(pileBlockRender); ClientRegistry.bindTileEntitySpecialRenderer(PileTileEntity.class, pileBlockRender.pileTileEntityRender); - + RenderingRegistry.registerEntityRenderingHandler(IHLEntityFallingPile.class, new IHLEntityFallingPileRender()); ClientRegistry.bindTileEntitySpecialRenderer(SackTileEntity.class, new SackRender()); - ClientRegistry.bindTileEntitySpecialRenderer(LathePart1TileEntity.class, new UniversalTileRender(new LathePart1Model(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png"))); - ClientRegistry.bindTileEntitySpecialRenderer(LathePart2TileEntity.class, new UniversalTileRender(new LathePart2Model(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png"))); - ClientRegistry.bindTileEntitySpecialRenderer(LoomTileEntity.class, new UniversalTileRender(new LoomModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/detonationSprayingMachine.png"))); - ClientRegistry.bindTileEntitySpecialRenderer(ImpregnatingMachineTileEntity.class, new ImpregnatingMachineRender()); - ClientRegistry.bindTileEntitySpecialRenderer(DetonationSprayingMachineTileEntity.class, new DetonationSprayingMachineRender()); - ClientRegistry.bindTileEntitySpecialRenderer(GoldChimneyKneeTileEntity.class, new GoldChimneyKneeRender()); - ClientRegistry.bindTileEntitySpecialRenderer(PrecipitatorCondenserTileEntity.class, new PrecipitatorCondenserRender()); + ClientRegistry.bindTileEntitySpecialRenderer(LathePart1TileEntity.class, new UniversalTileRender( + new LathePart1Model(), new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(LathePart2TileEntity.class, new UniversalTileRender( + new LathePart2Model(), new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(LoomTileEntity.class, new UniversalTileRender(new LoomModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/detonationSprayingMachine.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(ImpregnatingMachineTileEntity.class, + new ImpregnatingMachineRender()); + ClientRegistry.bindTileEntitySpecialRenderer(DetonationSprayingMachineTileEntity.class, + new DetonationSprayingMachineRender()); ClientRegistry.bindTileEntitySpecialRenderer(CoilerTileEntity.class, new CoilerRender()); ClientRegistry.bindTileEntitySpecialRenderer(IronWorkbenchTileEntity.class, new IronWorkbenchRender()); ClientRegistry.bindTileEntitySpecialRenderer(RollingMachinePart1TileEntity.class, new RollingMachineRender()); - ClientRegistry.bindTileEntitySpecialRenderer(RollingMachinePart2TileEntity.class, new UniversalTileRender(new RollingMachinePart2Model(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png"))); - ClientRegistry.bindTileEntitySpecialRenderer(VulcanizationExtrudingMoldTileEntity.class, new UniversalTileRender(new VulcanizationExtrudingMoldModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png"))); - ClientRegistry.bindTileEntitySpecialRenderer(ExtruderTileEntity.class, new UniversalTileRender(new ExtruderModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png"))); - ClientRegistry.bindTileEntitySpecialRenderer(WoodenRollingMachinePart1TileEntity.class, new WoodenRollingMachineRender()); - ClientRegistry.bindTileEntitySpecialRenderer(WoodenRollingMachinePart2TileEntity.class, new UniversalTileRender(new WoodenRollingMachinePart2Model(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/woodenRollingMachine.png"))); - ClientRegistry.bindTileEntitySpecialRenderer(GasWeldingStationTileEntity.class, new UniversalTileRender(new GasWeldingStationModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/gasWeldingStation.png"))); - ClientRegistry.bindTileEntitySpecialRenderer(GaedesMercuryRotaryPumpTileEntity.class, new UniversalTileRender(new GaedesMercuryRotaryPumpModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/extruder.png"))); - ClientRegistry.bindTileEntitySpecialRenderer(FractionatorBottomTileEntity.class, new UniversalTileRender(new FractionatorBottomModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/splitInjectionMold.png"))); - ClientRegistry.bindTileEntitySpecialRenderer(FractionatorSectionTileEntity.class, new UniversalTileRender(new FractionatorSectionModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/splitInjectionMold.png"))); - ClientRegistry.bindTileEntitySpecialRenderer(FractionatorCoverTileEntity.class, new UniversalTileRender(new FractionatorCoverModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/splitInjectionMold.png"))); - ClientRegistry.bindTileEntitySpecialRenderer(RefluxCondenserTileEntity.class, new UniversalTileRender(new RefluxCondenserModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/splitInjectionMold.png"))); - ClientRegistry.bindTileEntitySpecialRenderer(BatterySwitchUnitTileEntity.class, new UniversalTileRender(new BatterySwitchUnitModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/batterySwitchUnit.png"))); - ClientRegistry.bindTileEntitySpecialRenderer(ElectrolysisBathTileEntity.class, new UniversalTileRender(new ElectrolysisBathModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/electrolysisBath.png"))); - if(loadMirrorRender && IHLMod.config.mirrorReflectionRange>0) - { + ClientRegistry.bindTileEntitySpecialRenderer(RollingMachinePart2TileEntity.class, + new UniversalTileRender(new RollingMachinePart2Model(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(VulcanizationExtrudingMoldTileEntity.class, + new UniversalTileRender(new VulcanizationExtrudingMoldModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(ExtruderTileEntity.class, new UniversalTileRender( + new ExtruderModel(), new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(WoodenRollingMachinePart1TileEntity.class, + new WoodenRollingMachineRender()); + ClientRegistry.bindTileEntitySpecialRenderer(WoodenRollingMachinePart2TileEntity.class, + new UniversalTileRender(new WoodenRollingMachinePart2Model(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/woodenRollingMachine.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(GasWeldingStationTileEntity.class, + new UniversalTileRender(new GasWeldingStationModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/gasWeldingStation.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(GaedesMercuryRotaryPumpTileEntity.class, + new UniversalTileRender(new GaedesMercuryRotaryPumpModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/extruder.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(FractionatorBottomTileEntity.class, + new UniversalTileRender(new FractionatorBottomModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/splitInjectionMold.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(FractionatorSectionTileEntity.class, + new UniversalTileRender(new FractionatorSectionModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/splitInjectionMold.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(FractionatorCoverTileEntity.class, + new UniversalTileRender(new FractionatorCoverModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/splitInjectionMold.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(RefluxCondenserTileEntity.class, + new UniversalTileRender(new RefluxCondenserModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/splitInjectionMold.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(BatterySwitchUnitTileEntity.class, + new UniversalTileRender(new BatterySwitchUnitModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/batterySwitchUnit.png"))); + ClientRegistry.bindTileEntitySpecialRenderer(ElectrolysisBathTileEntity.class, + new UniversalTileRender(new ElectrolysisBathModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/electrolysisBath.png"))); + if (loadMirrorRender && IHLMod.config.mirrorReflectionRange > 0) { ClientRegistry.bindTileEntitySpecialRenderer(MirrorTileEntity.class, new MirrorRender()); } ClientRegistry.bindTileEntitySpecialRenderer(LightBulbTileEntity.class, new LightBulbRender()); ClientRegistry.bindTileEntitySpecialRenderer(SpotlightTileEntity.class, new SpotlightRender()); selectionBoxSpecialRendererRegistry.put(AnchorTileEntity.class, new CableHolderSelectionBoxSpecialRenderer()); - selectionBoxSpecialRendererRegistry.put(RectifierTransformerUnitTileEntity.class, new RectifierTransformerUnitSelectionBoxSpecialRenderer()); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("goldPrecipitatorCondenser"), new BlockItemRender(new PrecipitatorCondenserModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/porcelainBox.png"), 0, 0, 0.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("goldChimneyKnee"), new BlockItemRender(new GoldChimneyKneeModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/porcelainBox.png"), 0, 0, 0.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("cannonBronze"), new BlockItemRender(new DetonationSprayingMachineModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/detonationSprayingMachine.png"), 0, 0, 0.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("lathePart1"), new BlockItemRender(new LathePart1Model(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png"), 0, 0, 0.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("lathePart2"), new BlockItemRender(new LathePart2Model(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png"), 0, 0, 0.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("rollingMachinePart1"), new BlockItemRender(new RollingMachinePart1Model(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png"), 0, 5, 0.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("rollingMachinePart2"), new BlockItemRender(new RollingMachinePart2Model(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png"), 0, 0, 0.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("coiler"), new BlockItemRender(new CoilerModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png"), 0, 6, 0.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("loom"), new BlockItemRender(new LoomModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/detonationSprayingMachine.png"), 0, 0, 0.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("vulcanizationExtrudingMold"), new BlockItemRender(new VulcanizationExtrudingMoldModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png"), 0, 0, 0.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("extruder"), new BlockItemRender(new ExtruderModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png"), 0, 0, 0.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("woodenRollingMachinePart1"), new BlockItemRender(new WoodenRollingMachinePart2Model(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/woodenRollingMachine.png"), 0, 0, 0.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("woodenRollingMachinePart2"), new BlockItemRender(new WoodenRollingMachinePart2Model(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/woodenRollingMachine.png"), 0, 0, 0.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("gasWeldingStation"), new BlockItemRender(new GasWeldingStationModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/gasWeldingStation.png"), 0, 0, 0.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("gaedesMercuryRotaryPump"), new BlockItemRender(new GaedesMercuryRotaryPumpModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/extruder.png"), 0, 0, 0.0F, 0.0F)); + selectionBoxSpecialRendererRegistry.put(RectifierTransformerUnitTileEntity.class, + new RectifierTransformerUnitSelectionBoxSpecialRenderer()); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("cannonBronze"), + new BlockItemRender(new DetonationSprayingMachineModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/detonationSprayingMachine.png"), 0, 0, + 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("lathePart1"), + new BlockItemRender(new LathePart1Model(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"), 0, 0, 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("lathePart2"), + new BlockItemRender(new LathePart2Model(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"), 0, 0, 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("rollingMachinePart1"), + new BlockItemRender(new RollingMachinePart1Model(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"), 0, 5, 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("rollingMachinePart2"), + new BlockItemRender(new RollingMachinePart2Model(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"), 0, 0, 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("coiler"), + new BlockItemRender(new CoilerModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"), 0, 6, 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("loom"), + new BlockItemRender(new LoomModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/detonationSprayingMachine.png"), 0, 0, + 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("vulcanizationExtrudingMold"), + new BlockItemRender(new VulcanizationExtrudingMoldModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"), 0, 0, 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("extruder"), + new BlockItemRender(new ExtruderModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/coiler.png"), 0, 0, 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("woodenRollingMachinePart1"), + new BlockItemRender(new WoodenRollingMachinePart2Model(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/woodenRollingMachine.png"), 0, 0, + 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("woodenRollingMachinePart2"), + new BlockItemRender(new WoodenRollingMachinePart2Model(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/woodenRollingMachine.png"), 0, 0, + 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("gasWeldingStation"), + new BlockItemRender(new GasWeldingStationModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/gasWeldingStation.png"), 0, 0, 0.0F, + 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("gaedesMercuryRotaryPump"), + new BlockItemRender(new GaedesMercuryRotaryPumpModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/extruder.png"), 0, 0, 0.0F, 0.0F)); MinecraftForgeClient.registerItemRenderer(IHLMod.ihlSkull, new SkullItemRender()); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("fractionatorBottom"), new BlockItemRender(new FractionatorBottomModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/splitInjectionMold.png"), 0, 0, 0.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("fractionatorSection"), new BlockItemRender(new FractionatorSectionModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/splitInjectionMold.png"), 0, 0, 0.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("fractionatorCover"), new BlockItemRender(new FractionatorCoverModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/splitInjectionMold.png"), 0, 0, 0.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("refluxCondenser"), new BlockItemRender(new RefluxCondenserModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/splitInjectionMold.png"), 0, 0, 0.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("batterySwitchUnit"), new BlockItemRender(new BatterySwitchUnitModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/batterySwitchUnit.png"), 0, 0, 0.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("electrolysisBath"), new BlockItemRender(new ElectrolysisBathModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/electrolysisBath.png"), 0, 0, 0.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("lightBulb"), new BlockItemRender(new LightBulbModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/lightBulb.png"), 0, 1, 0.0F, 0.0F, true)); - MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("spotlight"), new BlockItemRender(new SpotlightModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/spotlight.png"), 0, 1, 0.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("fractionatorBottom"), + new BlockItemRender(new FractionatorBottomModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/splitInjectionMold.png"), 0, 0, 0.0F, + 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("fractionatorSection"), + new BlockItemRender(new FractionatorSectionModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/splitInjectionMold.png"), 0, 0, 0.0F, + 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("fractionatorCover"), + new BlockItemRender(new FractionatorCoverModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/splitInjectionMold.png"), 0, 0, 0.0F, + 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("refluxCondenser"), + new BlockItemRender(new RefluxCondenserModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/splitInjectionMold.png"), 0, 0, 0.0F, + 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("batterySwitchUnit"), + new BlockItemRender(new BatterySwitchUnitModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/batterySwitchUnit.png"), 0, 0, 0.0F, + 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("electrolysisBath"), + new BlockItemRender(new ElectrolysisBathModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/electrolysisBath.png"), 0, 0, 0.0F, + 0.0F)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("lightBulb"), + new BlockItemRender(new LightBulbModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/lightBulb.png"), 0, 1, 0.0F, 0.0F, + true)); + MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("spotlight"), + new BlockItemRender(new SpotlightModel(), + new ResourceLocation(IHLModInfo.MODID + ":textures/blocks/spotlight.png"), 0, 1, 0.0F, 0.0F)); MinecraftForgeClient.registerItemRenderer(IHLTool.instance, new IHLToolRenderer()); MinecraftForgeClient.registerItemRenderer(FlexibleCableItem.instance, new FlexibleCableItemRender()); RenderingRegistry.registerEntityRenderingHandler(LostHeadEntity.class, new LostHeadRender()); - RenderingRegistry.registerEntityRenderingHandler(FlameEntityFX.class, new FlameRenderFX(IHLModInfo.MODID+":textures/particles/flameTongue.png")); - RenderingRegistry.registerEntityRenderingHandler(BlastEntityFX.class, new FlameRenderFX(IHLModInfo.MODID+":textures/particles/blast.png")); + RenderingRegistry.registerEntityRenderingHandler(FlameEntityFX.class, + new FlameRenderFX(IHLModInfo.MODID + ":textures/particles/flameTongue.png")); + RenderingRegistry.registerEntityRenderingHandler(BlastEntityFX.class, + new FlameRenderFX(IHLModInfo.MODID + ":textures/particles/blast.png")); RenderingRegistry.registerEntityRenderingHandler(BlobEntityFX.class, new BlobRenderFX()); - RenderingRegistry.registerEntityRenderingHandler(ExplosionEntityFX.class, new ExplosionRenderFX(IHLModInfo.MODID+":textures/particles/explosion.png")); + RenderingRegistry.registerEntityRenderingHandler(ExplosionEntityFX.class, + new ExplosionRenderFX(IHLModInfo.MODID + ":textures/particles/explosion.png")); RenderingRegistry.registerEntityRenderingHandler(NodeEntity.class, new NodeRender()); } - + @Override - public void spawnParticle(int particle, World world, double x, double y, double z, double mx, double my, double mz, float particleScale) - { - switch(particle) - { - case 0: - FlameEntityFX flamePEFX1 = new FlameEntityFX(world,x,y,z,mx,my,mz,particleScale); - world.spawnEntityInWorld(flamePEFX1); - break; - case 1: - BlobEntityFX blob = new BlobEntityFX(world,x,y,z,mx,my,mz,particleScale, FluidType.RESIN); - world.spawnEntityInWorld(blob); - break; - case 2: - BlobEntityFX blob2 = new BlobEntityFX(world,x,y,z,mx,my,mz,particleScale, FluidType.SAP); - world.spawnEntityInWorld(blob2); - break; - case 3: - BlastEntityFX blast = new BlastEntityFX(world,x,y,z,mx,my,mz,particleScale); - world.spawnEntityInWorld(blast); - break; - case 4: - world.spawnParticle("smoke",x,y,z,mx,my,mz); - break; - default: - FlameEntityFX flamePEFX2 = new FlameEntityFX(world,x,y,z,mx,my,mz,particleScale); - world.spawnEntityInWorld(flamePEFX2); - break; + public void spawnParticle(int particle, World world, double x, double y, double z, double mx, double my, double mz, + float particleScale) { + switch (particle) { + case 0: + FlameEntityFX flamePEFX1 = new FlameEntityFX(world, x, y, z, mx, my, mz, particleScale); + world.spawnEntityInWorld(flamePEFX1); + break; + case 1: + BlobEntityFX blob = new BlobEntityFX(world, x, y, z, mx, my, mz, particleScale, FluidType.RESIN); + world.spawnEntityInWorld(blob); + break; + case 2: + BlobEntityFX blob2 = new BlobEntityFX(world, x, y, z, mx, my, mz, particleScale, FluidType.SAP); + world.spawnEntityInWorld(blob2); + break; + case 3: + BlastEntityFX blast = new BlastEntityFX(world, x, y, z, mx, my, mz, particleScale); + world.spawnEntityInWorld(blast); + break; + case 4: + world.spawnParticle("smoke", x, y, z, mx, my, mz); + break; + default: + FlameEntityFX flamePEFX2 = new FlameEntityFX(world, x, y, z, mx, my, mz, particleScale); + world.spawnEntityInWorld(flamePEFX2); + break; } } - + @Override - public void createExplosionEffect(World world, int x, int y, int z, float radius) - { - world.playSound(x, y, z, IHLModInfo.MODID+":explosion", 100f, 1f, false); + public void createExplosionEffect(World world, int x, int y, int z, float radius) { + world.playSound(x, y, z, IHLModInfo.MODID + ":explosion", 100f, 1f, false); ExplosionEntityFX explosionFX = new ExplosionEntityFX(world, x, y, z, radius); - world.spawnEntityInWorld(explosionFX); + world.spawnEntityInWorld(explosionFX); } - @Override @SideOnly(Side.CLIENT) @SubscribeEvent - public void registerIcons(TextureStitchEvent.Pre event) - { - if (event.map.getTextureType() == 0) - { + public void registerIcons(TextureStitchEvent.Pre event) { + if (event.map.getTextureType() == 0) { IHLFluid.registerIcons(event.map); } } @Override - public Render getRenderForEntityClass(Class entityClass) - { + public Render getRenderForEntityClass(Class entityClass) { return (Render) RenderManager.instance.entityRenderMap.get(entityClass); } - + @Override - public void initBlockRenderer() - { + public void initBlockRenderer() { new IHLBlockRenderer(); } @Override - public int getGLDisplayList() - { + public int getGLDisplayList() { return GLAllocation.generateDisplayLists(1); } - + @Override - public File getMinecraftDir() - { - return Minecraft.getMinecraft().mcDataDir; - } + public File getMinecraftDir() { + return Minecraft.getMinecraft().mcDataDir; + } @Override - public int shareBlockRendererByMachineType(MachineType type) - { + public int shareBlockRendererByMachineType(MachineType type) { return sharedBlockRenders.get(type); } - - public void registerBlockHandler(ISimpleBlockRenderingHandler handler, MachineType... types) - { + + public void registerBlockHandler(ISimpleBlockRenderingHandler handler, MachineType... types) { RenderingRegistry.registerBlockHandler(handler); - for(MachineType type:types) - { + for (MachineType type : types) { sharedBlockRenders.put(type, handler.getRenderId()); } } - - @SubscribeEvent - public void onPacketFromServerToClient(FMLNetworkEvent.ClientCustomPacketEvent event) throws IOException - { - World world = Minecraft.getMinecraft().theWorld; - ByteBuf data = event.packet.payload(); - ByteBufInputStream byteBufInputStream = new ByteBufInputStream(data); - switch(byteBufInputStream.read()) - { - case 0: - int particleId = byteBufInputStream.read(); - float x=byteBufInputStream.readFloat(); - float y=byteBufInputStream.readFloat(); - float z=byteBufInputStream.readFloat(); - float mx=byteBufInputStream.readFloat(); - float my=byteBufInputStream.readFloat(); - float mz=byteBufInputStream.readFloat(); - float particleScale=byteBufInputStream.readFloat(); - this.spawnParticle(particleId, world, x, y, z, mx, my, mz, particleScale); - break; - case 1: - int entityId = byteBufInputStream.readInt(); - INetworkListener listener = (INetworkListener) world.getEntityByID(entityId); - if(listener!=null) - { - listener.recieveData(byteBufInputStream); - IHLMod.log.debug("Data delivered to client"); - } - else - { - delayedEntityDataPacket.put(entityId, data); - IHLMod.log.debug("Data delayed. Entity ID="+entityId); - } - break; - case 2: - int posX=byteBufInputStream.readInt(); - int posY=byteBufInputStream.readInt(); - int posZ=byteBufInputStream.readInt(); - float radius=byteBufInputStream.readFloat(); - this.createExplosionEffect(world, posX, posY, posZ, radius); - break; - case 3: - int soundId = byteBufInputStream.read(); - x=byteBufInputStream.readFloat(); - y=byteBufInputStream.readFloat(); - z=byteBufInputStream.readFloat(); - float volume=byteBufInputStream.readFloat(); - float pitch=byteBufInputStream.readFloat(); - this.playSound(Minecraft.getMinecraft().theWorld, soundId, x, y, z, volume, pitch); - break; - case 4: - int chunkNum = byteBufInputStream.read(); - for(int i=0;i>32) & 0xFFFFFFFF); - Chunk chunk = world.getChunkProvider().provideChunk(chunkX, chunkZ); - chunk.generateSkylightMap(); - Arrays.fill(chunk.updateSkylightColumns, true); - chunk.func_150804_b(true); - } - break; - } - byteBufInputStream.close(); + + @SubscribeEvent + public void onPacketFromServerToClient(FMLNetworkEvent.ClientCustomPacketEvent event) throws IOException { + WorldClient world = Minecraft.getMinecraft().theWorld; + ByteBuf data = event.packet.payload(); + ByteBufInputStream byteBufInputStream = new ByteBufInputStream(data); + switch (byteBufInputStream.read()) { + case 0: + int particleId = byteBufInputStream.read(); + float x = byteBufInputStream.readFloat(); + float y = byteBufInputStream.readFloat(); + float z = byteBufInputStream.readFloat(); + float mx = byteBufInputStream.readFloat(); + float my = byteBufInputStream.readFloat(); + float mz = byteBufInputStream.readFloat(); + float particleScale = byteBufInputStream.readFloat(); + this.spawnParticle(particleId, world, x, y, z, mx, my, mz, particleScale); + break; + case 1: + int entityId = byteBufInputStream.readInt(); + INetworkListener listener = (INetworkListener) world.getEntityByID(entityId); + if (listener != null) { + listener.recieveData(byteBufInputStream); + IHLMod.log.debug("Data delivered to client"); + } else { + delayedEntityDataPacket.put(entityId, data); + IHLMod.log.debug("Data delayed. Entity ID=" + entityId); + } + break; + case 2: + int posX = byteBufInputStream.readInt(); + int posY = byteBufInputStream.readInt(); + int posZ = byteBufInputStream.readInt(); + float radius = byteBufInputStream.readFloat(); + this.createExplosionEffect(world, posX, posY, posZ, radius); + break; + case 3: + int soundId = byteBufInputStream.read(); + x = byteBufInputStream.readFloat(); + y = byteBufInputStream.readFloat(); + z = byteBufInputStream.readFloat(); + float volume = byteBufInputStream.readFloat(); + float pitch = byteBufInputStream.readFloat(); + this.playSound(world, soundId, x, y, z, volume, pitch); + break; + } + byteBufInputStream.close(); } - - private void playSound(WorldClient world, int soundId, float x, float y, float z, float volume, float pitch) { - world.playSound(x, y, z, IHLModInfo.MODID+":fuse", 1f, 1f, false); + + private void playSound(WorldClient world, int soundId, float x, float y, float z, float volume, float pitch) { + world.playSound(x, y, z, IHLModInfo.MODID + ":fuse", 1f, 1f, false); } @Override - public boolean renderTESpecialSelectionBox(TileEntity te, EntityPlayer player, ItemStack currentItem, MovingObjectPosition target, float partialTicks) - { - ISelectionBoxSpecialRenderer ssbr = selectionBoxSpecialRendererRegistry.get(te.getClass()); - if(ssbr!=null) - { + public boolean renderTESpecialSelectionBox(TileEntity te, EntityPlayer player, ItemStack currentItem, + MovingObjectPosition target, float partialTicks) { + ISelectionBoxSpecialRenderer ssbr = selectionBoxSpecialRendererRegistry.get(te.getClass()); + if (ssbr != null) { ssbr.drawSelectionBox(player, currentItem, target, partialTicks); return true; - } - else - { + } else { return false; } } - - @Override - public void sendItemStackNBTTagFromClientToServerPlayer(EntityPlayer player, int slotNumber, String fieldName, int fieldValue) - { - ByteBuf bb = Unpooled.buffer(36); + + @Override + public void sendItemStackNBTTagFromClientToServerPlayer(EntityPlayer player, int slotNumber, String fieldName, + int fieldValue) { + ByteBuf bb = Unpooled.buffer(36); ByteBufOutputStream byteBufOutputStream = new ByteBufOutputStream(bb); - try - { + try { byteBufOutputStream.write(0); byteBufOutputStream.writeInt(player.getEntityId()); byteBufOutputStream.writeInt(player.worldObj.provider.dimensionId); byteBufOutputStream.writeInt(slotNumber); byteBufOutputStream.writeInt(fieldValue); byteBufOutputStream.writeUTF(fieldName); - channel.sendToServer(new FMLProxyPacket(byteBufOutputStream.buffer(),IHLModInfo.MODID)); + channel.sendToServer(new FMLProxyPacket(byteBufOutputStream.buffer(), IHLModInfo.MODID)); byteBufOutputStream.close(); - } - catch (IOException e) - { + } catch (IOException e) { e.printStackTrace(); } - } - - @Override - public void requestTileEntityInitdataFromClientToServer(int x, int y, int z) - { - EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer; - ByteBuf bb = Unpooled.buffer(36); + } + + @Override + public void requestTileEntityInitdataFromClientToServer(int x, int y, int z) { + EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer; + ByteBuf bb = Unpooled.buffer(36); ByteBufOutputStream byteBufOutputStream = new ByteBufOutputStream(bb); - try - { + try { byteBufOutputStream.write(1); byteBufOutputStream.writeInt(player.getEntityId()); byteBufOutputStream.writeInt(player.worldObj.provider.dimensionId); byteBufOutputStream.writeInt(x); byteBufOutputStream.writeInt(y); byteBufOutputStream.writeInt(z); - channel.sendToServer(new FMLProxyPacket(byteBufOutputStream.buffer(),IHLModInfo.MODID)); + channel.sendToServer(new FMLProxyPacket(byteBufOutputStream.buffer(), IHLModInfo.MODID)); byteBufOutputStream.close(); - } - catch (IOException e) - { + } catch (IOException e) { e.printStackTrace(); } - } + } } diff --git a/ihl/IHL3dPathFinder.java b/ihl/IHL3dPathFinder.java deleted file mode 100644 index 3f0605b..0000000 --- a/ihl/IHL3dPathFinder.java +++ /dev/null @@ -1,119 +0,0 @@ -package ihl; - -import java.util.HashSet; -import java.util.Set; - -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.MathHelper; - -public class IHL3dPathFinder { - public double waypointX; - public double waypointY; - public double waypointZ; - - public int lowestPointX; - public int lowestPointY; - public int lowestPointZ; - - public double targetX; - public double targetY; - public double targetZ; - - private Entity entity; - - public IHL3dPathFinder(Entity entity1) - { - this.entity=entity1; - } - - public boolean findPath(double x2, double y2, double z2) - { - if(this.isCourseTraversable(x2, y2, z2, this.entity.posX, this.entity.posY, this.entity.posZ)) - { - this.waypointX=x2; - this.waypointY=y2; - this.waypointZ=z2; - return true; - } - else - { - return this.takeVector(x2, y2, z2); - } - } - - private boolean isCourseTraversable(double toX, double toY, double toZ, double fromX, double fromY, double fromZ) - { - double var9 = toX - fromX; - double var11 = toY - fromY; - double var13 = toZ - fromZ; - double var7 = MathHelper.sqrt_double(var9 * var9 + var11 * var11 + var13 * var13); - var9 /= var7; - var11 /= var7; - var13 /= var7; - AxisAlignedBB var15 = this.entity.boundingBox.copy(); - for (int var16 = 1; var16 < var7; ++var16) - { - var15.offset(var9, var11, var13); - if (!this.entity.worldObj.getCollidingBoundingBoxes(this.entity, var15).isEmpty()) - { - return false; - } - } - return true; - } - - private boolean takeVector(double toX, double toY, double toZ) - { - int x=Math.round((float)toX); - int y=Math.round((float)toY); - int z=Math.round((float)toZ); - int xyz[] = {0,0,1,0,0,-1,0,0}; - Set list = new HashSet(); - for(int thread=0;thread<=256;thread++) - { - if(this.isCourseTraversable(x+0.5D, y+0.5D, z+0.5D, this.entity.posX, this.entity.posY, this.entity.posZ)) - { - this.waypointX=x+0.5D; - this.waypointY=y+0.5D; - this.waypointZ=z+0.5D; - return true; - } - Block block; - long number = new Long(x*256L*256L+y*256L+z); - list.add(number); - double lastDistanceSquared = this.entity.getDistanceSq(x, y, z); - boolean skip=false; - for(int i=0;i<=5;i++) - { - block = entity.worldObj.getBlock(x+xyz[i], y+xyz[i+1], z+xyz[i+2]); - number = new Long((x+xyz[i])*256L*256L+(y+xyz[i+1])*256L+z+xyz[i+2]); - if(block.isAir(entity.worldObj, x+xyz[i], y+xyz[i+1], z+xyz[i+2]) && !list.contains(number) && this.entity.getDistanceSq((double)x+xyz[i], (double)y+xyz[i+1], (double)z+xyz[i+2]) moltenAmounts = new HashMap(); public static ExplosionVectorBlockV2 explosionHandler; - + @EventHandler public void preInit(FMLPreInitializationEvent evt) throws IOException, ParserConfigurationException { fluidDictionary = new FluidDictionary(); @@ -426,8 +423,9 @@ public class IHLMod implements IFuelHandler { GameRegistry.addShapelessRecipe(IHLUtils.getThisModItemStack("dustSolderingAlloy"), new Object[] { IHLUtils.getOreDictItemStack("dustTin"), IHLUtils.getThisModItemStack("dustTinyAntimony") }); Recipes.advRecipes.addRecipe(IHLUtils.getThisModItemStack("achesonFurnance"), - new Object[] { "BPB", " ", "B B", Character.valueOf('B'), new RecipeInputOreDict("ingotBrick"), - Character.valueOf('P'), new RecipeInputOreDict("plateSteel") }); + new Object[] { "BPB", "S S", "B B", Character.valueOf('B'), new RecipeInputOreDict("ingotBrick"), + Character.valueOf('P'), new RecipeInputOreDict("plateSteel"), + Character.valueOf('S'), new RecipeInputOreDict("stickCoal")}); Recipes.advRecipes.addRecipe(IHLUtils.getThisModItemStack("muffleFurnance"), new Object[] { "BCB", "SDP", "BSB", Character.valueOf('B'), new RecipeInputOreDict("ingotBrick"), Character.valueOf('P'), new RecipeInputOreDict("plateSteel"), Character.valueOf('C'), @@ -515,7 +513,7 @@ public class IHLMod implements IFuelHandler { Recipes.FluidHeatGenerator.addFluid("oleicacid", 10, 16); Recipes.FluidHeatGenerator.addFluid("mineraloil", 10, 16); Recipes.FluidHeatGenerator.addFluid("acetylene", 10, 64); - Recipes.FluidHeatGenerator.addFluid("glyceryl", 10, 16); + Recipes.FluidHeatGenerator.addFluid("glycerol", 10, 16); Recipes.FluidHeatGenerator.addFluid("turpentine", 10, 16); Recipes.FluidHeatGenerator.addFluid("fueloil", 10, 32); Recipes.FluidHeatGenerator.addFluid("crackinggas", 10, 32); @@ -755,57 +753,14 @@ public class IHLMod implements IFuelHandler { IronWorkbenchTileEntity.addRecipe(new IronWorkbenchRecipe(Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStack("hammer"), IHLUtils.getThisModItemStack("handDrillBronze"), IHLUtils.getThisModItemStack("hackSawSteel"), IHLUtils.getThisModItemStack("drillSteelHardened"), - IHLUtils.getThisModItemStack("diceM10x1SteelHardened"), Ic2Items.bronzeAxe }), - Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStackWithSize("barD10Steel", 4), - IHLUtils.getThisModItemStackWithSize("nutM10x1Steel", 8), new ItemStack(Items.leather), - new ItemStack(Items.stick, 8), IHLUtils.getThisModItemStackWithSize("nailSteel", 8) }), - Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStack("loom") }))); - IronWorkbenchTileEntity.addRecipe(new IronWorkbenchRecipe(Arrays.asList(new ItemStack[] { - IHLUtils.getThisModItemStack("hammer"), IHLUtils.getThisModItemStack("handDrillBronze"), - IHLUtils.getThisModItemStack("hackSawSteel"), IHLUtils.getThisModItemStack("drillSteelHardened"), - IHLUtils.getThisModItemStack("diceM10x1SteelHardened"), new ItemStack(Items.iron_axe) }), - Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStackWithSize("barD10Steel", 4), - IHLUtils.getThisModItemStackWithSize("nutM10x1Steel", 8), new ItemStack(Items.leather), - new ItemStack(Items.stick, 8), IHLUtils.getThisModItemStackWithSize("nailSteel", 8) }), - Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStack("loom") }))); - IronWorkbenchTileEntity.addRecipe(new IronWorkbenchRecipe(Arrays.asList(new ItemStack[] { - IHLUtils.getThisModItemStack("hammer"), IHLUtils.getThisModItemStack("handDrillBronze"), - IHLUtils.getThisModItemStack("hackSawSteel"), IHLUtils.getThisModItemStack("drillSteelHardened"), - IHLUtils.getThisModItemStack("diceM10x1SteelHardened"), new ItemStack(Items.golden_axe) }), - Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStackWithSize("barD10Steel", 4), - IHLUtils.getThisModItemStackWithSize("nutM10x1Steel", 8), new ItemStack(Items.leather), - new ItemStack(Items.stick, 8), IHLUtils.getThisModItemStackWithSize("nailSteel", 8) }), - Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStack("loom") }))); - IronWorkbenchTileEntity.addRecipe(new IronWorkbenchRecipe(Arrays.asList(new ItemStack[] { - IHLUtils.getThisModItemStack("hammer"), IHLUtils.getThisModItemStack("handDrillBronze"), - IHLUtils.getThisModItemStack("hackSawSteel"), IHLUtils.getThisModItemStack("drillSteelHardened"), - IHLUtils.getThisModItemStack("diceM10x1SteelHardened"), new ItemStack(Items.diamond_axe) }), + IHLUtils.getThisModItemStack("diceM10x1SteelHardened") }), Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStackWithSize("barD10Steel", 4), IHLUtils.getThisModItemStackWithSize("nutM10x1Steel", 8), new ItemStack(Items.leather), new ItemStack(Items.stick, 8), IHLUtils.getThisModItemStackWithSize("nailSteel", 8) }), Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStack("loom") }))); IronWorkbenchTileEntity.addRecipe(new IronWorkbenchRecipe( Arrays.asList( - new ItemStack[] { IHLUtils.getThisModItemStack("hammer"), Ic2Items.bronzeAxe.copy() }), - Arrays.asList(new ItemStack[] { - IHLUtils.getThisModItemStack("detonationSprayingMachineSetOfMoldedPartsBronze"), - new ItemStack(Blocks.planks), IHLUtils.getThisModItemStackWithSize("nailSteel", 8) }), - Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStack("cannonBronze") }))); - IronWorkbenchTileEntity.addRecipe(new IronWorkbenchRecipe( - Arrays.asList( - new ItemStack[] { IHLUtils.getThisModItemStack("hammer"), new ItemStack(Items.iron_axe) }), - Arrays.asList(new ItemStack[] { - IHLUtils.getThisModItemStack("detonationSprayingMachineSetOfMoldedPartsBronze"), - new ItemStack(Blocks.planks), IHLUtils.getThisModItemStackWithSize("nailSteel", 8) }), - Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStack("cannonBronze") }))); - IronWorkbenchTileEntity.addRecipe(new IronWorkbenchRecipe(Arrays.asList( - new ItemStack[] { IHLUtils.getThisModItemStack("hammer"), new ItemStack(Items.golden_axe) }), - Arrays.asList(new ItemStack[] { - IHLUtils.getThisModItemStack("detonationSprayingMachineSetOfMoldedPartsBronze"), - new ItemStack(Blocks.planks), IHLUtils.getThisModItemStackWithSize("nailSteel", 8) }), - Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStack("cannonBronze") }))); - IronWorkbenchTileEntity.addRecipe(new IronWorkbenchRecipe(Arrays.asList( - new ItemStack[] { IHLUtils.getThisModItemStack("hammer"), new ItemStack(Items.diamond_axe) }), + new ItemStack[] { IHLUtils.getThisModItemStack("hammer")}), Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStack("detonationSprayingMachineSetOfMoldedPartsBronze"), new ItemStack(Blocks.planks), IHLUtils.getThisModItemStackWithSize("nailSteel", 8) }), @@ -884,34 +839,7 @@ public class IHLMod implements IFuelHandler { IronWorkbenchTileEntity.addRecipe(new IronWorkbenchRecipe(Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStack("hammer"), IHLUtils.getThisModItemStack("handDrillBronze"), IHLUtils.getThisModItemStack("hackSawSteel"), IHLUtils.getThisModItemStack("drillSteelHardened"), - IHLUtils.getThisModItemStack("diceM10x1SteelHardened"), Ic2Items.bronzeAxe }), - Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStackWithSize("barD10SteelHot", 7), - IHLUtils.getOreDictItemStack("plateSteel"), new ItemStack(Items.leather), - IHLUtils.getThisModItemStackWithSize("nailSteel", 8), new ItemStack(Blocks.log) }), - Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStack("woodenRollingMachinePart1"), - IHLUtils.getThisModItemStack("woodenRollingMachinePart2") }))); - IronWorkbenchTileEntity.addRecipe(new IronWorkbenchRecipe(Arrays.asList(new ItemStack[] { - IHLUtils.getThisModItemStack("hammer"), IHLUtils.getThisModItemStack("handDrillBronze"), - IHLUtils.getThisModItemStack("hackSawSteel"), IHLUtils.getThisModItemStack("drillSteelHardened"), - IHLUtils.getThisModItemStack("diceM10x1SteelHardened"), new ItemStack(Items.iron_axe) }), - Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStackWithSize("barD10SteelHot", 7), - IHLUtils.getOreDictItemStack("plateSteel"), new ItemStack(Items.leather), - IHLUtils.getThisModItemStackWithSize("nailSteel", 8), new ItemStack(Blocks.log) }), - Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStack("woodenRollingMachinePart1"), - IHLUtils.getThisModItemStack("woodenRollingMachinePart2") }))); - IronWorkbenchTileEntity.addRecipe(new IronWorkbenchRecipe(Arrays.asList(new ItemStack[] { - IHLUtils.getThisModItemStack("hammer"), IHLUtils.getThisModItemStack("handDrillBronze"), - IHLUtils.getThisModItemStack("hackSawSteel"), IHLUtils.getThisModItemStack("drillSteelHardened"), - IHLUtils.getThisModItemStack("diceM10x1SteelHardened"), new ItemStack(Items.golden_axe) }), - Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStackWithSize("barD10SteelHot", 7), - IHLUtils.getOreDictItemStack("plateSteel"), new ItemStack(Items.leather), - IHLUtils.getThisModItemStackWithSize("nailSteel", 8), new ItemStack(Blocks.log) }), - Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStack("woodenRollingMachinePart1"), - IHLUtils.getThisModItemStack("woodenRollingMachinePart2") }))); - IronWorkbenchTileEntity.addRecipe(new IronWorkbenchRecipe(Arrays.asList(new ItemStack[] { - IHLUtils.getThisModItemStack("hammer"), IHLUtils.getThisModItemStack("handDrillBronze"), - IHLUtils.getThisModItemStack("hackSawSteel"), IHLUtils.getThisModItemStack("drillSteelHardened"), - IHLUtils.getThisModItemStack("diceM10x1SteelHardened"), new ItemStack(Items.diamond_axe) }), + IHLUtils.getThisModItemStack("diceM10x1SteelHardened")}), Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStackWithSize("barD10SteelHot", 7), IHLUtils.getOreDictItemStack("plateSteel"), new ItemStack(Items.leather), IHLUtils.getThisModItemStackWithSize("nailSteel", 8), new ItemStack(Blocks.log) }), @@ -969,15 +897,6 @@ public class IHLMod implements IFuelHandler { Arrays.asList(new IRecipeInput[] { new RecipeInputFluidContainer(FluidRegistry.WATER, 1), new RecipeInputOreDict("dustPorcelain") }), Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStack("ovenRawPorcelain") }))); - IronWorkbenchTileEntity.addRecipe(new IronWorkbenchRecipe(null, - Arrays.asList(new IRecipeInput[] { new RecipeInputFluidContainer(FluidRegistry.WATER, 1), - new RecipeInputOreDict("dustPorcelain") }), - Arrays.asList( - new ItemStack[] { IHLUtils.getThisModItemStack("precipitatorCondenserRawPorcelain") }))); - IronWorkbenchTileEntity.addRecipe(new IronWorkbenchRecipe(null, - Arrays.asList(new IRecipeInput[] { new RecipeInputFluidContainer(FluidRegistry.WATER, 1), - new RecipeInputOreDict("dustPorcelain") }), - Arrays.asList(new ItemStack[] { IHLUtils.getThisModItemStack("chimneyKneeRawPorcelain") }))); IronWorkbenchTileEntity.addRecipe(new IronWorkbenchRecipe(null, Arrays.asList(new IRecipeInput[] { new RecipeInputFluidContainer(FluidRegistry.WATER, 1), new RecipeInputOreDict("dustPorcelain") }), @@ -1400,7 +1319,7 @@ public class IHLMod implements IFuelHandler { new RecipeInputOreDict("dustPentaerythritolTetranitrate", 4), new RecipeInputOreDict("ingotTarPitch", 1), new RecipeInputDetonator(detonator) }), Arrays.asList( - new ItemStack[] { IHLUtils.getItemStackWithTag("ihlExplosive", "explosionPower", 1500) }), + new ItemStack[] { IHLUtils.getItemStackWithTag("ihlExplosive", "explosionPower", 15*config.explosionPowerBase) }), null)); IronWorkbenchTileEntity.addRecipe(new IronWorkbenchRecipe(null, Arrays.asList( @@ -1409,7 +1328,15 @@ public class IHLMod implements IFuelHandler { new RecipeInputFluidContainer(FluidRegistry.getFluid("nitroglycerin"), 1), new RecipeInputOreDict("ingotTarPitch", 1), new RecipeInputDetonator(detonator) }), Arrays.asList( - new ItemStack[] { IHLUtils.getItemStackWithTag("ihlExplosive", "explosionPower", 1000) }), + new ItemStack[] { IHLUtils.getItemStackWithTag("ihlExplosive", "explosionPower", 10*config.explosionPowerBase) }), + null)); + IronWorkbenchTileEntity.addRecipe(new IronWorkbenchRecipe(null, + Arrays.asList( + new IRecipeInput[] { new RecipeInputOreDict("platePaper", 2), + new RecipeInputOreDict("dustGunpowder", 8), + new RecipeInputOreDict("ingotTarPitch", 1), new RecipeInputDetonator(detonator) }), + Arrays.asList( + new ItemStack[] { IHLUtils.getItemStackWithTag("ihlExplosive", "explosionPower", 3*config.explosionPowerBase) }), null)); AchesonFurnanceTileEntity.addRecipe(new RecipeInputOreDict("dustSiliconDioxide", 2), @@ -1424,36 +1351,21 @@ public class IHLMod implements IFuelHandler { new RecipeInputOreDict("dustCoal", 8), "dustBoronCarbide"); AchesonFurnanceTileEntity.addRecipe(new RecipeInputOreDict("plateCoal"), new RecipeInputOreDict("dustCoal", 1), "plateGraphite"); - GoldChimneyKneeTileEntity.addRecipe( - new UniversalRecipeInput((new FluidStack[] { IHLUtils.getFluidStackWithSize("ic2steam", 1), - IHLUtils.getFluidStackWithSize("sulfuricanhydride", 1) }), null), - IHLUtils.getFluidStackWithSize("vapour.sulfuricacid", 1)); - if (FluidRegistry.isFluidRegistered("steam")) - GoldChimneyKneeTileEntity.addRecipe( - new UniversalRecipeInput((new FluidStack[] { IHLUtils.getFluidStackWithSize("steam", 1), - IHLUtils.getFluidStackWithSize("sulfuricanhydride", 1) }), null), - IHLUtils.getFluidStackWithSize("vapour.sulfuricacid", 1)); - GoldChimneyKneeTileEntity.addRecipe( - new UniversalRecipeInput( - (new FluidStack[] { IHLUtils.getFluidStackWithSize("ic2superheatedsteam", 15), - IHLUtils.getFluidStackWithSize("sulfuricanhydride", 4) }), - null), - IHLUtils.getFluidStackWithSize("vapour.sulfuricacid", 4)); LeadOvenTileEntity.addRecipe( - new UniversalRecipeInput(null, - (new ItemStack[] { IHLUtils.getOreDictItemStack("dustSulfur"), - IHLUtils.getOreDictItemStack("dustSaltpeter") })), - IHLUtils.getFluidStackWithSize("sulfuricanhydride", 23000)); + new UniversalRecipeInput(new FluidStack[] {IHLUtils.getFluidStackWithSize("water", 400)}, + new IRecipeInput[] { new RecipeInputOreDict("dustSulfur"), + new RecipeInputOreDict("dustSaltpeter") }), + IHLUtils.getFluidStackWithSize("sulfuricacid", 100)); LeadOvenTileEntity.addRecipe( - new UniversalRecipeInput(null, - (new ItemStack[] { IHLUtils.getOreDictItemStack("crushedPurifiedCinnabar") })), - IHLUtils.getFluidStackWithSize("vapour.mercury", 3600)); - LeadOvenTileEntity.addRecipe(IHLUtils.getThisModItemStack("dustStibnite"), + new UniversalRecipeInput(new FluidStack[] {IHLUtils.getFluidStackWithSize("water", 100)}, + new IRecipeInput[] { new RecipeInputOreDict("crushedPurifiedCinnabar") }), + IHLUtils.getFluidStackWithSize("mercury", 36)); + LeadOvenTileEntity.addRecipe(new RecipeInputOreDict("dustStibnite",1), IHLUtils.getThisModItemStack("dustAntimonyOxide")); - LeadOvenTileEntity.addRecipe(IHLUtils.getOreDictItemStackWithSize("dustSodiumHydrogenSulfate", 2), - IHLUtils.getFluidStackWithSize("vapour.sulfuricacid", 20000), + LeadOvenTileEntity.addRecipe(new RecipeInputOreDict("dustSodiumHydrogenSulfate", 2), + IHLUtils.getFluidStackWithSize("sulfuricacid", 20), IHLUtils.getOreDictItemStack("dustSodiumSulfate")); - LeadOvenTileEntity.addRecipe(IHLUtils.getThisModItemStackWithSize("dustSodiumZeoliteCoked", 2), + LeadOvenTileEntity.addRecipe(new RecipeInputOreDict("dustSodiumZeoliteCoked", 2), IHLUtils.getThisModItemStack("dustSodiumZeolite")); ImpregnatingMachineTileEntity.addChemicalRecipe( new UniversalRecipeInput((new FluidStack[] { new FluidStack(FluidRegistry.WATER, 1500) }), @@ -1465,7 +1377,7 @@ public class IHLMod implements IFuelHandler { (new FluidStack[] { new FluidStack(FluidRegistry.WATER, 130), IHLUtils.getFluidStackWithSize("limemilk", 142) }), (new ItemStack[] { IHLUtils.getThisModItemStackWithSize("muttonLard", 6) })), - new UniversalRecipeOutput((new FluidStack[] { IHLUtils.getFluidStackWithSize("glyceryl", 130) }), + new UniversalRecipeOutput((new FluidStack[] { IHLUtils.getFluidStackWithSize("glycerol", 130) }), (new ItemStack[] { IHLUtils.getThisModItemStackWithSize("ingotCalciumSoap", 5) }), 200)); ImpregnatingMachineTileEntity.addChemicalRecipe( new UniversalRecipeInput( @@ -1492,47 +1404,41 @@ public class IHLMod implements IFuelHandler { ItemStack drill = Ic2Items.miningDrill.copy(); drill.setItemDamage(OreDictionary.WILDCARD_VALUE); DetonationSprayingMachineTileEntity.addRecipe(drill, Ic2Items.diamondDrill.copy()); - MuffleFurnanceTileEntity.addRecipe(Ic2Items.plateadviron.copy(), + MuffleFurnanceTileEntity.addRecipe(new RecipeInputOreDict("plateSteel",1), IHLUtils.getThisModItemStack("plateHotSteel")); - MuffleFurnanceTileEntity.addRecipe(Ic2Items.advIronIngot.copy(), + MuffleFurnanceTileEntity.addRecipe(new RecipeInputOreDict("ingotSteel",1), IHLUtils.getOreDictItemStack("ingotHotSteel")); - MuffleFurnanceTileEntity.addRecipe(IHLUtils.getOreDictItemStack("plateTungsten"), + MuffleFurnanceTileEntity.addRecipe(new RecipeInputOreDict("plateTungsten",1), IHLUtils.getThisModItemStack("plateHotTungsten")); - MuffleFurnanceTileEntity.addRecipe(IHLUtils.getThisModItemStack("gaedesPumpBarrelRawPorcelain"), + MuffleFurnanceTileEntity.addRecipe(new RecipeInputItemStack(IHLUtils.getThisModItemStack("gaedesPumpBarrelRawPorcelain"),1), IHLUtils.getThisModItemStack("gaedesPumpBarrelPorcelain")); - MuffleFurnanceTileEntity.addRecipe(new ItemStack(IHLMod.crucible, 1, OreDictionary.WILDCARD_VALUE), + MuffleFurnanceTileEntity.addRecipe(new RecipeInputItemStack(new ItemStack(IHLMod.crucible, 1, OreDictionary.WILDCARD_VALUE),1), new ItemStack(IHLMod.crucible, 1, 1)); - MuffleFurnanceTileEntity.addRecipe(IHLUtils.getThisModItemStackWithSize("injectionMold", 1), + MuffleFurnanceTileEntity.addRecipe(new RecipeInputItemStack(IHLUtils.getThisModItemStackWithSize("injectionMold", 1),1), IHLUtils.getThisModItemStackWithSize("injectionMold", 1)); - MuffleFurnanceTileEntity.addRecipe(IHLUtils.getThisModItemStack("sawBladeSteel"), + MuffleFurnanceTileEntity.addRecipe(new RecipeInputItemStack(IHLUtils.getThisModItemStack("sawBladeSteel"),1), IHLUtils.getThisModItemStack("sawBladeSteelHot")); - MuffleFurnanceTileEntity.addRecipe(IHLUtils.getThisModItemStack("barD10Steel"), + MuffleFurnanceTileEntity.addRecipe(new RecipeInputItemStack(IHLUtils.getThisModItemStack("barD10Steel"),1), IHLUtils.getThisModItemStack("barD10SteelHot")); - MuffleFurnanceTileEntity.addRecipe(IHLUtils.getThisModItemStack("linerIronGraphite"), + MuffleFurnanceTileEntity.addRecipe(new RecipeInputItemStack(IHLUtils.getThisModItemStack("linerIronGraphite"),1), IHLUtils.getThisModItemStack("linerIronGraphiteHot")); MuffleFurnanceTileEntity.addRecipe( new UniversalRecipeInput(null, - (new ItemStack[] { IHLUtils.getOreDictItemStack("dustIronOxide"), - IHLUtils.getOreDictItemStack("dustLithiumOxide") })), + new IRecipeInput[] { new RecipeInputOreDict("dustIronOxide",1), + new RecipeInputOreDict("dustLithiumOxide",1) }), new UniversalRecipeOutput(null, - (new ItemStack[] { IHLUtils.getOreDictItemStackWithSize("dustFerrite", 2) }), 200)); + new RecipeOutputItemStack[] { new RecipeOutputItemStack(IHLUtils.getOreDictItemStackWithSize("dustFerrite", 2)) }, 200)); MuffleFurnanceTileEntity.addRecipe( new UniversalRecipeInput(null, - (new ItemStack[] { IHLUtils.getOreDictItemStackWithSize("dustSiliconDioxide", 3), - IHLUtils.getOreDictItemStackWithSize("dustMagnesium", 2) })), - new UniversalRecipeOutput(null, (new ItemStack[] { IHLUtils.getOreDictItemStack("dustSilicon"), - IHLUtils.getOreDictItemStackWithSize("dustMagnesiumOxide", 4) }), 200)); - MuffleFurnanceTileEntity.addRecipe( - new UniversalRecipeInput(null, - (new ItemStack[] { IHLUtils.getOreDictItemStack("dustBauxite"), - IHLUtils.getOreDictItemStack("dustSodiumHydroxide") })), + new IRecipeInput[] { new RecipeInputOreDict("dustBauxite"), + new RecipeInputOreDict("dustSodiumHydroxide") }), new UniversalRecipeOutput(null, - (new ItemStack[] { IHLUtils.getOreDictItemStack("dustSodiumAluminate") }), 200)); - MuffleFurnanceTileEntity.addRecipe(IHLUtils.getThisModItemStack("drillSteel"), + new RecipeOutputItemStack[] { new RecipeOutputItemStack(IHLUtils.getOreDictItemStack("dustSodiumAluminate")) }, 200)); + MuffleFurnanceTileEntity.addRecipe(new RecipeInputItemStack(IHLUtils.getThisModItemStack("drillSteel")), IHLUtils.getThisModItemStack("drillSteelHot")); - MuffleFurnanceTileEntity.addRecipe(IHLUtils.getThisModItemStack("tapM10x1Steel"), + MuffleFurnanceTileEntity.addRecipe(new RecipeInputItemStack(IHLUtils.getThisModItemStack("tapM10x1Steel")), IHLUtils.getThisModItemStack("tapM10x1SteelHot")); - MuffleFurnanceTileEntity.addRecipe(IHLUtils.getThisModItemStack("diceM10x1Steel"), + MuffleFurnanceTileEntity.addRecipe(new RecipeInputItemStack(IHLUtils.getThisModItemStack("diceM10x1Steel")), IHLUtils.getThisModItemStack("diceM10x1SteelHot")); LoomTileEntity.addRecipe(IHLUtils.getThisModWireItemStackWithLength("fiberGlass", 1024), IHLUtils.getThisModItemStack("meshGlass")); @@ -1566,7 +1472,7 @@ public class IHLMod implements IFuelHandler { (new ItemStack[] { IHLUtils.getThisModItemStack("linerIronGraphiteHot") })), new UniversalRecipeOutput(null, (new ItemStack[] { IHLUtils.getThisModItemStack("linerIronGraphiteGreased") }), 2)); - MuffleFurnanceTileEntity.addRecipe(IHLUtils.getThisModItemStack("foilRubberWithSulfur"), + MuffleFurnanceTileEntity.addRecipe(new RecipeInputItemStack(IHLUtils.getThisModItemStack("foilRubberWithSulfur")), IHLUtils.getThisModItemStack("foilRubber")); MuffleFurnanceTileEntity .addRecipe( @@ -1590,12 +1496,9 @@ public class IHLMod implements IFuelHandler { new UniversalRecipeOutput( (new FluidStack[] { IHLUtils.getFluidStackWithSize("liquidglass", 500) }), null, 200)); - PrecipitatorCondenserTileEntity.addRecipe("vapour.sulfuricacid", "sulfuricacid", 50); - PrecipitatorCondenserTileEntity.addRecipe("vapour.mercury", "mercury", 50); - PrecipitatorCondenserTileEntity.addRecipe("ic2steam", "ic2distilledwater", 100); ChemicalReactorTileEntity.addRecipe( new UniversalRecipeInput((new FluidStack[] { IHLUtils.getFluidStackWithSize("spruceresin", 1000), - IHLUtils.getFluidStackWithSize("glyceryl", 50) }), null), + IHLUtils.getFluidStackWithSize("glycerol", 50) }), null), new UniversalRecipeOutput( (new FluidStack[] { IHLUtils.getFluidStackWithSize("cablingcolophony", 600) }), null, 200, true)); @@ -1731,23 +1634,19 @@ public class IHLMod implements IFuelHandler { (new RecipeOutputItemStack[] { new RecipeOutputItemStack( IHLUtils.getOreDictItemStack("dustTungsticAcid"), 1.0f) }), 200)); - MuffleFurnanceTileEntity.addRecipe(IHLUtils.getOreDictItemStackWithSize("dustTungsticAcid", 2), + MuffleFurnanceTileEntity.addRecipe(new RecipeInputOreDict("dustTungsticAcid", 2), IHLUtils.getOreDictItemStack("dustTungstenOxide"), 1.14f); - MuffleFurnanceTileEntity.addRecipe(IHLUtils.getThisModItemStack("electrolysisBathRawPorcelain"), + MuffleFurnanceTileEntity.addRecipe(new RecipeInputItemStack(IHLUtils.getThisModItemStack("electrolysisBathRawPorcelain")), IHLUtils.getThisModItemStack("electrolysisBathPorcelain")); - MuffleFurnanceTileEntity.addRecipe(IHLUtils.getThisModItemStack("ovenRawPorcelain"), + MuffleFurnanceTileEntity.addRecipe(new RecipeInputItemStack(IHLUtils.getThisModItemStack("ovenRawPorcelain")), IHLUtils.getThisModItemStack("leadOven")); - MuffleFurnanceTileEntity.addRecipe(IHLUtils.getThisModItemStack("precipitatorCondenserRawPorcelain"), - IHLUtils.getThisModItemStack("goldPrecipitatorCondenser")); - MuffleFurnanceTileEntity.addRecipe(IHLUtils.getThisModItemStack("chimneyKneeRawPorcelain"), - IHLUtils.getThisModItemStack("goldChimneyKnee")); - MuffleFurnanceTileEntity.addRecipe(IHLUtils.getThisModItemStack("ringRawPorcelain"), + MuffleFurnanceTileEntity.addRecipe(new RecipeInputItemStack(IHLUtils.getThisModItemStack("ringRawPorcelain")), IHLUtils.getThisModItemStack("ringPorcelain")); - MuffleFurnanceTileEntity.addRecipe(IHLUtils.getThisModItemStack("ringRawFerrite"), + MuffleFurnanceTileEntity.addRecipe(new RecipeInputItemStack(IHLUtils.getThisModItemStack("ringRawFerrite")), IHLUtils.getThisModItemStack("ringFerrite")); - MuffleFurnanceTileEntity.addRecipe(IHLUtils.getThisModItemStack("insulatorRawPorcelain"), + MuffleFurnanceTileEntity.addRecipe(new RecipeInputItemStack(IHLUtils.getThisModItemStack("insulatorRawPorcelain")), IHLUtils.getThisModItemStack("insulatorPorcelain")); - MuffleFurnanceTileEntity.addRecipe(IHLUtils.getThisModItemStack("lampHolderRawPorcelain"), + MuffleFurnanceTileEntity.addRecipe(new RecipeInputItemStack(IHLUtils.getThisModItemStack("lampHolderRawPorcelain")), IHLUtils.getThisModItemStack("lampHolderPorcelain")); LabElectrolyzerTileEntity.addRecipe(IHLUtils.getFluidStackWithSize("water", 300), IHLUtils.getFluidStackWithSize("hydrogen", 200), IHLUtils.getFluidStackWithSize("oxygen", 100), @@ -1921,7 +1820,7 @@ public class IHLMod implements IFuelHandler { } ChemicalReactorTileEntity.addRecipe( new UniversalRecipeInput( - new FluidStack[] { IHLUtils.getFluidStackWithSize("glyceryl", 100), + new FluidStack[] { IHLUtils.getFluidStackWithSize("glycerol", 100), IHLUtils.getFluidStackWithSize("nitricacid", 300)}, null), new UniversalRecipeOutput( @@ -2381,10 +2280,15 @@ public class IHLMod implements IFuelHandler { Recipes.advRecipes.addRecipe(new ItemStack(electricEvaporatorBlock, 1), new Object[] { "CCC", "CCC", " F ", Character.valueOf('C'), IC2Items.getItem("platecopper"), Character.valueOf('F'), IC2Items.getItem("electroFurnace") }); + Recipes.advRecipes.addRecipe(new ItemStack(electricEvaporatorBlock, 1), + new Object[] { " ", " C ", " F ", Character.valueOf('C'), Ic2Items.electronicCircuit.copy(), + Character.valueOf('F'), new ItemStack(evaporatorBlock, 1)}); } if (IHLMod.config.enableFlexibleCablesCrafting) { ItemStack cutter = Ic2Items.cutter.copy(); cutter.setItemDamage(OreDictionary.WILDCARD_VALUE); + ItemStack forgeHammer = Ic2Items.ForgeHammer.copy(); + forgeHammer.setItemDamage(OreDictionary.WILDCARD_VALUE); Recipes.advRecipes.addRecipe(IHLUtils.getThisModItemStack("setOfDies1_5sqmm"), new Object[] { " ", " PC", " ", Character.valueOf('P'), Ic2Items.plateadviron, Character.valueOf('C'), cutter }); Recipes.advRecipes.addRecipe(IHLUtils.getItemStackWithTag("setOfDies1_5sqmm", "transverseSection", 240), @@ -2392,7 +2296,7 @@ public class IHLMod implements IFuelHandler { Character.valueOf('C'), cutter }); Recipes.advRecipes.addRecipe(IHLUtils.getThisModItemStack("ironWorkbench"), new Object[] { "P ", "P ", "P H", Character.valueOf('P'), Ic2Items.plateadviron, - Character.valueOf('H'), Ic2Items.ForgeHammer }); + Character.valueOf('H'), forgeHammer}); } ExtruderTileEntity.addRecipe(IHLUtils.getOreDictItemStackWithSize("itemRubber", 5), IHLUtils.getOreDictItemStackWithSize("dustTinySulfur", 1), diff --git a/ihl/IHLModConfig.java b/ihl/IHLModConfig.java index 99739c9..ef219bc 100644 --- a/ihl/IHLModConfig.java +++ b/ihl/IHLModConfig.java @@ -38,6 +38,7 @@ import net.minecraft.nbt.NBTTagCompound; public class IHLModConfig { public int explosionVectorSizeBits=7; + public int explosionPowerBase=100; public int handpumpTier=1; public int handpumpMaxCharge=30000; @@ -58,7 +59,6 @@ public class IHLModConfig public boolean enableFlexibleCablesCrafting=true; public boolean enableFlexibleCablesGridPowerLossCalculations=true; - public double additionalPowerLossesAtFrequencyGenerator = 0.01D; public boolean generateApatiteOre=true; public boolean generateSaltpeterOre=true; public boolean generateLimestone=true; @@ -75,10 +75,12 @@ public class IHLModConfig public boolean generateDatolite=true; public boolean generateSaltwater=true; public boolean generateBischofite=true; + public int chanceOreWillNotBeGenerated = 100; public int mirrorReflectionRange=14; public int mirrorReflectionUpdateSpeed=128; public String preventMachineBlockRegistrationName="null"; public boolean skipRecipeLoad=false; + public int machineryEnergyConsume=100; public IHLModConfig(FMLPreInitializationEvent evt) throws IOException { @@ -120,13 +122,15 @@ public class IHLModConfig tditEnergyConsumePerStack = config.get(Configuration.CATEGORY_GENERAL, "tditEnergyConsumePerStack", tditEnergyConsumePerStack).getInt(); enableFlexibleCablesGridPowerLossCalculations = config.get(Configuration.CATEGORY_GENERAL, "enableFlexibleCablesGridPowerLossCalculations", enableFlexibleCablesGridPowerLossCalculations).getBoolean(enableFlexibleCablesGridPowerLossCalculations); - additionalPowerLossesAtFrequencyGenerator = config.get(Configuration.CATEGORY_GENERAL, "additionalPowerLossesAtFrequencyGenerator", additionalPowerLossesAtFrequencyGenerator).getDouble(additionalPowerLossesAtFrequencyGenerator); enableFlexibleCablesCrafting = config.get(Configuration.CATEGORY_GENERAL, "enableFlexibleCablesCrafting", enableFlexibleCablesCrafting).getBoolean(enableFlexibleCablesCrafting); mirrorReflectionRange = config.get(Configuration.CATEGORY_GENERAL, "mirrorReflectionRange", mirrorReflectionRange).getInt(); mirrorReflectionUpdateSpeed = config.get(Configuration.CATEGORY_GENERAL, "mirrorReflectionUpdateSpeed", mirrorReflectionUpdateSpeed).getInt(); explosionVectorSizeBits = config.get(Configuration.CATEGORY_GENERAL, "explosionVectorSizeBits", explosionVectorSizeBits).getInt(); + explosionPowerBase = config.get(Configuration.CATEGORY_GENERAL, "explosionPowerBase", explosionPowerBase).getInt(); + chanceOreWillNotBeGenerated = config.get(Configuration.CATEGORY_GENERAL, "chanceOreWillNotBeGenerated", chanceOreWillNotBeGenerated).getInt(); + machineryEnergyConsume = config.get(Configuration.CATEGORY_GENERAL, "machineryEnergyConsume", machineryEnergyConsume).getInt(); config.save(); } diff --git a/ihl/IHLModInfo.java b/ihl/IHLModInfo.java index 58bd594..42fcd88 100644 --- a/ihl/IHLModInfo.java +++ b/ihl/IHLModInfo.java @@ -3,5 +3,5 @@ package ihl; public class IHLModInfo { public static final String MODID = "ihl"; public static final String MODNAME = "IHL Tools & Machines for IC2V2"; - public static final String MODVERSION = "0.619"; + public static final String MODVERSION = "0.624"; } diff --git a/ihl/ServerProxy.java b/ihl/ServerProxy.java index 3af8fbd..24fa937 100644 --- a/ihl/ServerProxy.java +++ b/ihl/ServerProxy.java @@ -275,26 +275,4 @@ public class ServerProxy { public void requestTileEntityInitdataFromClientToServer(int x, int y, int z){} - public void sendChunksLightUpdateQuery(World world, int x, int y, int z, Set clientSideChunkXZKeySet) - { - int chunkNum = clientSideChunkXZKeySet.size(); - ByteBuf bb = Unpooled.buffer(8+(chunkNum<<3)); - ByteBufOutputStream byteBufOutputStream = new ByteBufOutputStream(bb); - try - { - byteBufOutputStream.write(4); - byteBufOutputStream.write(chunkNum); - Iterator cluI = clientSideChunkXZKeySet.iterator(); - while(cluI.hasNext()) - { - byteBufOutputStream.writeLong(cluI.next()); - } - channel.sendToAllAround(new FMLProxyPacket(byteBufOutputStream.buffer(),IHLModInfo.MODID), new TargetPoint(world.provider.dimensionId, x, y, z, 256d)); - byteBufOutputStream.close(); - } - catch (IOException e) - { - e.printStackTrace(); - } - } } diff --git a/ihl/enviroment/LightBulbBlock.java b/ihl/enviroment/LightBulbBlock.java index d78b667..77ee8f8 100644 --- a/ihl/enviroment/LightBulbBlock.java +++ b/ihl/enviroment/LightBulbBlock.java @@ -13,30 +13,26 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -public class LightBulbBlock extends Block implements ITileEntityProvider -{ +public class LightBulbBlock extends Block implements ITileEntityProvider { public static GlowningAirBlock glowningAir; - - public LightBulbBlock(String unlocalizedName1) - { - super(Material.glass); - this.setStepSound(soundTypeGlass); + + public LightBulbBlock(String unlocalizedName1) { + super(Material.glass); + this.setStepSound(soundTypeGlass); this.setBlockName(unlocalizedName1); - GameRegistry.registerBlock(this,IHLItemBlock.class, unlocalizedName1); - this.setHardness(0.3F); - this.setResistance(0.5F); - this.setCreativeTab(IHLCreativeTab.tab); - this.setBlockTextureName("glass"); - } - + GameRegistry.registerBlock(this, IHLItemBlock.class, unlocalizedName1); + this.setHardness(0.3F); + this.setResistance(0.5F); + this.setCreativeTab(IHLCreativeTab.tab); + this.setBlockTextureName("glass"); + } + @Override - public boolean hasTileEntity(int metadata) - { - return true; + public boolean hasTileEntity(int metadata) { + return true; } - - public static void init() - { + + public static void init() { glowningAir = new GlowningAirBlock(); new LightBulbBlock("lightBulb"); new SpotlightBlock("spotlight"); @@ -46,88 +42,77 @@ public class LightBulbBlock extends Block implements ITileEntityProvider SpotlightTileEntity.createLightSphereVectors(); } - /** - * Returns the quantity of items to drop on block destruction. - */ - @Override - public int quantityDropped(Random random) - { - return 0; - } - - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - /** - * The type of render function that is called for this block - */ - @Override - public int getRenderType() - { - return -2; - } - - @Override - public void setBlockBoundsBasedOnState(IBlockAccess iBlockAccess, int x, int y, int z) - { - TileEntity te = iBlockAccess.getTileEntity(x, y, z); - if(te!=null && te instanceof LightBulbTileEntity) - { - LightBulbTileEntity ate = (LightBulbTileEntity) te; - setBlockBoundsBasedOnFacing(ate.getFacing()); - } - } - - private void setBlockBoundsBasedOnFacing(int facing) - { - int var2 = facing & 7; - float var6 = 0.1875F; - float var7 = 0.5F; - - if (var2 == 0) - { - this.setBlockBounds(0.5F - var6, 1.0F - var7, 0.5F - var6, 0.5F + var6, 1.0F, 0.5F + var6); - } - else if (var2 == 1) - { - this.setBlockBounds(0.5F - var6, 0.0F, 0.5F - var6, 0.5F + var6, var7, 0.5F + var6); - } - else if (var2 == 2) - { - this.setBlockBounds(0.5F - var6, 0.5F - var6, 1.0F - var7, 0.5F + var6, 0.5F + var6, 1.0F); - } - else if (var2 == 3) - { - this.setBlockBounds(0.5F - var6, 0.5F - var6, 0.0F, 0.5F + var6, 0.5F + var6, var7); - } - else if (var2 == 4) - { - this.setBlockBounds(1.0F - var7, 0.5F - var6, 0.5F - var6, 1.0F, 0.5F + var6, 0.5F + var6); - } - else if (var2 == 5) - { - this.setBlockBounds(0.0F, 0.5F - var6, 0.5F - var6, var7, 0.5F + var6, 0.5F + var6); - } - } - - @Override - public boolean isOpaqueCube() - { - return false; - } - - @Override - public boolean isNormalCube() - { - return false; - } + /** + * Returns the quantity of items to drop on block destruction. + */ + @Override + public int quantityDropped(Random random) { + return 0; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + /** + * The type of render function that is called for this block + */ + @Override + public int getRenderType() { + return -2; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess iBlockAccess, int x, int y, int z) { + TileEntity te = iBlockAccess.getTileEntity(x, y, z); + if (te != null && te instanceof LightBulbTileEntity) { + LightBulbTileEntity ate = (LightBulbTileEntity) te; + setBlockBoundsBasedOnFacing(ate.getFacing()); + } + } + + private void setBlockBoundsBasedOnFacing(int facing) { + int var2 = facing & 7; + float var6 = 0.1875F; + float var7 = 0.5F; + + if (var2 == 0) { + this.setBlockBounds(0.5F - var6, 1.0F - var7, 0.5F - var6, 0.5F + var6, 1.0F, 0.5F + var6); + } else if (var2 == 1) { + this.setBlockBounds(0.5F - var6, 0.0F, 0.5F - var6, 0.5F + var6, var7, 0.5F + var6); + } else if (var2 == 2) { + this.setBlockBounds(0.5F - var6, 0.5F - var6, 1.0F - var7, 0.5F + var6, 0.5F + var6, 1.0F); + } else if (var2 == 3) { + this.setBlockBounds(0.5F - var6, 0.5F - var6, 0.0F, 0.5F + var6, 0.5F + var6, var7); + } else if (var2 == 4) { + this.setBlockBounds(1.0F - var7, 0.5F - var6, 0.5F - var6, 1.0F, 0.5F + var6, 0.5F + var6); + } else if (var2 == 5) { + this.setBlockBounds(0.0F, 0.5F - var6, 0.5F - var6, var7, 0.5F + var6, 0.5F + var6); + } + } @Override - public TileEntity createNewTileEntity(World arg0, int arg1) - { + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean isNormalCube() { + return false; + } + + @Override + public TileEntity createNewTileEntity(World arg0, int arg1) { return new LightBulbTileEntity(); } + + public int getLightValue(IBlockAccess world, int x, int y, int z) { + TileEntity te = world.getTileEntity(x, y, z); + if (te != null && te instanceof LightBulbTileEntity) { + LightBulbTileEntity ate = (LightBulbTileEntity) te; + return ate.getActive() ? 15 : 0; + } + return 0; + } } diff --git a/ihl/enviroment/LightBulbTileEntity.java b/ihl/enviroment/LightBulbTileEntity.java index c82bc57..283a72f 100644 --- a/ihl/enviroment/LightBulbTileEntity.java +++ b/ihl/enviroment/LightBulbTileEntity.java @@ -3,7 +3,6 @@ package ihl.enviroment; import java.util.List; import java.util.Vector; -import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -20,229 +19,176 @@ import ic2.core.IC2; import ic2.core.ITickCallback; import ihl.utils.IHLUtils; -public class LightBulbTileEntity extends TileEntity implements IEnergySink, IWrenchable, INetworkDataProvider -{ - private boolean active = false; - private short facing = 0; - public boolean prevActive = false; - public short prevFacing = 0; - private double maxEnergy=1.1d; +public class LightBulbTileEntity extends TileEntity implements IEnergySink, IWrenchable, INetworkDataProvider { + private boolean active = false; + private short facing = 0; + public boolean prevActive = false; + public short prevFacing = 0; private double energy; - public boolean addedToEnergyNet = false; + public boolean addedToEnergyNet = false; private boolean loaded = false; private int ticker; - @Override - public void readFromNBT(NBTTagCompound nbttagcompound) - { - super.readFromNBT(nbttagcompound); - this.energy = nbttagcompound.getDouble("energy"); - this.facing = nbttagcompound.getShort("facing"); - } + @Override + public void readFromNBT(NBTTagCompound nbttagcompound) { + super.readFromNBT(nbttagcompound); + this.energy = nbttagcompound.getDouble("energy"); + this.facing = nbttagcompound.getShort("facing"); + } - @Override - public void writeToNBT(NBTTagCompound nbttagcompound) - { - super.writeToNBT(nbttagcompound); - nbttagcompound.setDouble("energy", this.energy); - nbttagcompound.setShort("facing", this.facing); - } + @Override + public void writeToNBT(NBTTagCompound nbttagcompound) { + super.writeToNBT(nbttagcompound); + nbttagcompound.setDouble("energy", this.energy); + nbttagcompound.setShort("facing", this.facing); + } - /** - * validates a tile entity - */ - @Override - public void validate() - { - super.validate(); - IC2.tickHandler.addSingleTickCallback(this.worldObj, new ITickCallback() - { - @SuppressWarnings("unchecked") + /** + * validates a tile entity + */ + @Override + public void validate() { + super.validate(); + IC2.tickHandler.addSingleTickCallback(this.worldObj, new ITickCallback() { + @SuppressWarnings("unchecked") @Override - public void tickCallback(World world) - { - if (!LightBulbTileEntity.this.isInvalid() && world.blockExists(LightBulbTileEntity.this.xCoord, LightBulbTileEntity.this.yCoord, LightBulbTileEntity.this.zCoord)) - { - LightBulbTileEntity.this.onLoaded(); + public void tickCallback(World world) { + if (!LightBulbTileEntity.this.isInvalid() && world.blockExists(LightBulbTileEntity.this.xCoord, + LightBulbTileEntity.this.yCoord, LightBulbTileEntity.this.zCoord)) { + LightBulbTileEntity.this.onLoaded(); + + if (LightBulbTileEntity.this.enableUpdateEntity()) { + world.loadedTileEntityList.add(LightBulbTileEntity.this); + } + } + } + }); + } - if (LightBulbTileEntity.this.enableUpdateEntity()) - { - world.loadedTileEntityList.add(LightBulbTileEntity.this); - } - } - } - }); - } + /** + * invalidates a tile entity + */ + @Override + public void invalidate() { + super.invalidate(); + if (this.loaded) { + this.onUnloaded(); + } + } - /** - * invalidates a tile entity - */ - @Override - public void invalidate() - { - super.invalidate(); - if (this.loaded) - { - this.onUnloaded(); - } - } + @Override + public void onChunkUnload() { + super.onChunkUnload(); + if (this.loaded) { + this.onUnloaded(); + } + } - @Override - public void onChunkUnload() - { - super.onChunkUnload(); - if (this.loaded) - { - this.onUnloaded(); - } - } + public void onLoaded() { + if (IC2.platform.isSimulating() && !this.addedToEnergyNet) { + MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); + this.addedToEnergyNet = true; + } + this.loaded = true; + } - public void onLoaded() - { - if (IC2.platform.isSimulating() && !this.addedToEnergyNet) - { - MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); - this.addedToEnergyNet = true; - } - this.loaded = true; - } + public void onUnloaded() { + if (IC2.platform.isSimulating()) { + if (this.addedToEnergyNet) { + MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this)); + this.addedToEnergyNet = false; + } + this.active = false; + this.updateLightState(true); + } + } - public void onUnloaded() - { - if (IC2.platform.isSimulating()) - { - if(this.addedToEnergyNet) - { - MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this)); - this.addedToEnergyNet = false; - } - this.active=false; - this.updateLightState(); - } - } + @Override + public final boolean canUpdate() { + return false; + } - @Override - public final boolean canUpdate() - { - return false; - } - - @Override - public void updateEntity() - { - if(++this.ticker % 4 == 0) - { - if(this.prevFacing != facing) - { + @Override + public void updateEntity() { + if (++this.ticker % 4 == 0) { + if (this.prevFacing != facing) { this.setFacing(facing); } - if(this.energy>0) - { + if (this.energy > 0) { this.energy--; - this.setActive(this.energy>0); - } - else - { + this.setActive(true); + } else { this.setActive(false); } } - } - - protected void updateLightState() - { - int x,y,z; - int xyz[] = {0,0,1,0,0,-1,0,0}; - Block block; - for(int i=0;i<=5;i++) - { - x=xCoord+xyz[i]; - y=yCoord+xyz[i+1]; - z=zCoord+xyz[i+2]; - block = this.worldObj.getBlock(x,y,z); - if(block.isAir(this.worldObj, x,y,z)) - { - if(this.getActive()) - { - worldObj.setBlock(x, y, z, LightBulbBlock.glowningAir); - } - if(!this.getActive()) - { - worldObj.setBlockToAir(x, y, z); - } - } + } + + protected void updateLightState(boolean spreadDarkness) { + if (IC2.platform.isSimulating()) { + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); } } - - public boolean enableUpdateEntity() - { - return IC2.platform.isSimulating(); - } - + + public boolean enableUpdateEntity() { + return IC2.platform.isSimulating(); + } + @Override - public boolean acceptsEnergyFrom(TileEntity emitter, - ForgeDirection direction) { - switch(direction) - { + public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction) { + switch (direction) { case UP: - return this.getFacing()==0; + return this.getFacing() == 0; case DOWN: - return this.getFacing()==1; + return this.getFacing() == 1; case SOUTH: - return this.getFacing()==2; + return this.getFacing() == 2; case NORTH: - return this.getFacing()==3; + return this.getFacing() == 3; case EAST: - return this.getFacing()==4; + return this.getFacing() == 4; case WEST: - return this.getFacing()==5; + return this.getFacing() == 5; default: return false; } } @Override - public boolean wrenchCanSetFacing(EntityPlayer entityPlayer, int side) - { + public boolean wrenchCanSetFacing(EntityPlayer entityPlayer, int side) { return false; } @Override public short getFacing() { - return this.facing; + return this.facing; } @Override - public void setFacing(short facing1) - { - if (IC2.platform.isSimulating()&&this.addedToEnergyNet) - { - MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this)); - this.addedToEnergyNet = false; - } - this.facing=facing1; - if(IC2.platform.isSimulating()) - { - if (this.prevFacing != facing) - { - IC2.network.get().updateTileEntityField(this, "facing"); - } + public void setFacing(short facing1) { + if (IC2.platform.isSimulating() && this.addedToEnergyNet) { + MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this)); + this.addedToEnergyNet = false; + } + this.facing = facing1; + if (IC2.platform.isSimulating()) { + if (this.prevFacing != facing) { + IC2.network.get().updateTileEntityField(this, "facing"); + } } this.prevFacing = facing; - if (IC2.platform.isSimulating()&&!this.addedToEnergyNet) - { - MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); - this.addedToEnergyNet = true; - } + if (IC2.platform.isSimulating() && !this.addedToEnergyNet) { + MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); + this.addedToEnergyNet = true; + } + } + + @Override + public List getNetworkedFields() { + Vector ret = new Vector(2); + ret.add("active"); + ret.add("facing"); + return ret; } - - @Override - public List getNetworkedFields() - { - Vector ret = new Vector(2); - ret.add("active"); - ret.add("facing"); - return ret; - } @Override public boolean wrenchCanRemove(EntityPlayer entityPlayer) { @@ -260,9 +206,11 @@ public class LightBulbTileEntity extends TileEntity implements IEnergySink, IWre } @Override - public double getDemandedEnergy() - { - return this.maxEnergy-this.energy; + public double getDemandedEnergy() { + if (energy > 10d) { + return 0d; + } + return Integer.MAX_VALUE; } @Override @@ -271,38 +219,27 @@ public class LightBulbTileEntity extends TileEntity implements IEnergySink, IWre } @Override - public double injectEnergy(ForgeDirection directionFrom, double amount, double voltage) - { - if (this.energy >= this.maxEnergy) - { - return amount; - } - else - { - this.energy += amount; - return 0.0D; - } + public double injectEnergy(ForgeDirection directionFrom, double amount, double voltage) { + this.energy += amount; + return 0.0D; } - public boolean getActive() - { - return this.active; - } + public boolean getActive() { + return this.active; + } - public void setActive(boolean active1) - { - this.active = active1; + public void setActive(boolean active1) { + this.active = active1; - if (this.prevActive != active1) - { - IC2.network.get().updateTileEntityField(this, "active"); - updateLightState(); - } - this.prevActive = active1; - } - public void setActiveWithoutNotify(boolean active1) - { - this.active = active1; - this.prevActive = active1; - } + if (this.prevActive != active1) { + IC2.network.get().updateTileEntityField(this, "active"); + updateLightState(!active1); + } + this.prevActive = active1; + } + + public void setActiveWithoutNotify(boolean active1) { + this.active = active1; + this.prevActive = active1; + } } diff --git a/ihl/enviroment/SpotlightTileEntity.java b/ihl/enviroment/SpotlightTileEntity.java index ab18ebe..287ef9f 100644 --- a/ihl/enviroment/SpotlightTileEntity.java +++ b/ihl/enviroment/SpotlightTileEntity.java @@ -111,7 +111,7 @@ public class SpotlightTileEntity extends LightBulbTileEntity implements INetwork if(needLightTargetUpdate) { this.generateGlowningAirList(); - this.updateLightState(); + this.updateLightState(this.getActive()); needLightTargetUpdate=false; } if(this.prevRotationPitch!=this.rotationPitch) @@ -214,7 +214,7 @@ public class SpotlightTileEntity extends LightBulbTileEntity implements INetwork } @Override - protected void updateLightState() + protected void updateLightState(boolean spreadDarkness) { if(this.getActive()) { diff --git a/ihl/explosion/ChunkAndWorldLoadEventHandler.java b/ihl/explosion/ChunkAndWorldLoadEventHandler.java index b85e636..2f49484 100644 --- a/ihl/explosion/ChunkAndWorldLoadEventHandler.java +++ b/ihl/explosion/ChunkAndWorldLoadEventHandler.java @@ -37,10 +37,6 @@ public class ChunkAndWorldLoadEventHandler { IHLMod.explosionHandler.breakBlocksAndGetDescendants(event.world, bwArray[1], bwArray[2], bwArray[3], explosion, bwArray[0], bwArray[4], directionMask); } - if (!IHLMod.explosionHandler.isCalculating) { - IHLMod.explosionHandler.sendChunkUpdateToPlayersInExplosionAffectedZone(event.world, bwArray[1], - bwArray[2], bwArray[3]); - } } } } diff --git a/ihl/explosion/ExplosionVectorBlockV2.java b/ihl/explosion/ExplosionVectorBlockV2.java index 4489e55..daa16ce 100644 --- a/ihl/explosion/ExplosionVectorBlockV2.java +++ b/ihl/explosion/ExplosionVectorBlockV2.java @@ -13,6 +13,7 @@ import java.util.Map; import java.util.Set; import java.util.Map.Entry; +import java.util.Random; import net.minecraft.block.Block; import net.minecraft.entity.Entity; @@ -26,6 +27,8 @@ import net.minecraft.world.Explosion; import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.storage.ExtendedBlockStorage; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.world.ExplosionEvent; public class ExplosionVectorBlockV2 { final Set startVectors = new HashSet(); @@ -39,7 +42,7 @@ public class ExplosionVectorBlockV2 { private final Map cachedDrops = new HashMap(128); final Map blastWaveByDimensionId = new HashMap(); private final Map cachedEntities = new HashMap(); - public boolean isCalculating = false; + private final Random random = new Random(); public ExplosionVectorBlockV2() { this.precalculateExplosion(); @@ -219,11 +222,13 @@ public class ExplosionVectorBlockV2 { } } else { block.onNeighborBlockChange(world, absX, absY, absZ, block); - if ((++absY & 15) != 0) { - int array_index = (absY & 15) << 8 | (absZ & 15) << 4 | (absX & 15); - if (ebs.getBlockLSBArray()[array_index] == 0 && (ebs.getBlockMSBArray() == null - || ebs.getBlockMSBArray().get(absX & 15, absY & 15, absZ & 15) == 0)) { - this.placeDrops(world, absX, absY, absZ); + if (random.nextInt(8) == 0) { + if ((++absY & 15) != 0) { + int array_index = (absY & 15) << 8 | (absZ & 15) << 4 | (absX & 15); + if (ebs.getBlockLSBArray()[array_index] == 0 && (ebs.getBlockMSBArray() == null + || ebs.getBlockMSBArray().get(absX & 15, absY & 15, absZ & 15) == 0)) { + this.placeDrops(world, absX, absY, absZ); + } } } } @@ -275,6 +280,9 @@ public class ExplosionVectorBlockV2 { Iterator> di = this.cachedDrops.entrySet().iterator(); if (di.hasNext()) { Entry cde = di.next(); + while (di.hasNext()) { + cde = di.next(); + } ItemStack stack = cde.getValue(); if (stack != null && stack.getItem() != null && stack.stackSize > 0) { if (stack.stackSize <= stack.getMaxStackSize()) { @@ -328,19 +336,27 @@ public class ExplosionVectorBlockV2 { startPower, directionMask); } // Free and clean resources - this.cachedDrops.clear(); this.cachedEntities.clear(); } public void doExplosion(World world, int sourceX, int sourceY, int sourceZ, final Set startVectors1, int startPower) { IHLMod.log.info("Starting explosion server"); - isCalculating = true; Explosion explosion = new Explosion(world, null, sourceX, sourceY, sourceZ, 100f); - for (int[] directionMask : directionMasks) { - this.doExplosion(world, sourceX, sourceY, sourceZ, startVectors1, startPower, directionMask, explosion); + if (!MinecraftForge.EVENT_BUS.post(new ExplosionEvent.Start(world, explosion))) { + for (int[] directionMask : directionMasks) { + this.doExplosion(world, sourceX, sourceY, sourceZ, startVectors1, startPower, directionMask, explosion); + } + sendChunkUpdateToPlayersInExplosionAffectedZone(world, sourceX, sourceY, sourceZ); + for (Entry entry : this.cachedDrops.entrySet()) { + IHLEntityFallingPile fallingPile = new IHLEntityFallingPile(world); + fallingPile.setPosition(sourceX + 0.5d, sourceY + 0.5d, sourceZ + 0.5d); + fallingPile.setEntityItemStack(entry.getValue()); + fallingPile.setVelocity(random.nextDouble() - 0.5d, random.nextDouble() * 2, + random.nextDouble() - 0.5d); + world.spawnEntityInWorld(fallingPile); + } + this.cachedDrops.clear(); } - sendChunkUpdateToPlayersInExplosionAffectedZone(world, sourceX, sourceY, sourceZ); - isCalculating = false; } } \ No newline at end of file diff --git a/ihl/explosion/ExplosiveTileEntity.java b/ihl/explosion/ExplosiveTileEntity.java index cfae646..b211d3b 100644 --- a/ihl/explosion/ExplosiveTileEntity.java +++ b/ihl/explosion/ExplosiveTileEntity.java @@ -63,11 +63,11 @@ public class ExplosiveTileEntity extends TileEntity { for (int oid : OreDictionary.getOreIDs(player.getCurrentEquippedItem())) { if (OreDictionary.getOreName(oid).matches("toolLighter")) { ignite(); - return true; + return false; } } } - return false; + return true; } public void ignite() { diff --git a/ihl/explosion/PileBlock.java b/ihl/explosion/PileBlock.java index a2c56c3..f9ea862 100644 --- a/ihl/explosion/PileBlock.java +++ b/ihl/explosion/PileBlock.java @@ -1,5 +1,7 @@ package ihl.explosion; +import java.util.ArrayList; + import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -10,6 +12,7 @@ import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; @@ -71,7 +74,7 @@ public class PileBlock extends Block implements ITileEntityProvider @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister par1IconRegister) { - this.blockIcon = par1IconRegister.registerIcon(IHLModInfo.MODID + ":fluidAcetyleneFlowing"); + this.blockIcon = par1IconRegister.registerIcon(IHLModInfo.MODID + ":pileTextureSpace"); } @Override @@ -122,4 +125,9 @@ public class PileBlock extends Block implements ITileEntityProvider @Override public void dropBlockAsItemWithChance(World world, int x, int y, int z, int meta, float chance, int flag){} + + @Override + public ArrayList getDrops(World world, int x, int y, int z, int meta, int fortune) { + return new ArrayList(); + } } diff --git a/ihl/explosion/PileBlockRender.java b/ihl/explosion/PileBlockRender.java index 307cf3c..c5c8060 100644 --- a/ihl/explosion/PileBlockRender.java +++ b/ihl/explosion/PileBlockRender.java @@ -6,10 +6,8 @@ import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import cpw.mods.fml.client.registry.RenderingRegistry; import ihl.utils.IHLMathUtils; import net.minecraft.block.Block; -import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -17,326 +15,271 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; import net.minecraftforge.common.util.ForgeDirection; -public class PileBlockRender implements ISimpleBlockRenderingHandler -{ - public static int renderId; - public final PileTileEntityRender pileTileEntityRender; +public class PileBlockRender implements ISimpleBlockRenderingHandler { + public static int renderId; + public final PileTileEntityRender pileTileEntityRender; - public PileBlockRender() - { - renderId = RenderingRegistry.getNextAvailableRenderId(); + public PileBlockRender() { + renderId = RenderingRegistry.getNextAvailableRenderId(); pileTileEntityRender = new PileTileEntityRender(this); - } + } @Override - public int getRenderId() - { + public int getRenderId() { return renderId; } @Override - public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderblocks) - { - Tessellator tessellator = Tessellator.instance; - block.setBlockBoundsForItemRender(); - renderblocks.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); - renderblocks.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderblocks.getBlockIconFromSideAndMetadata(block, 0, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(0.0F, 1.0F, 0.0F); - renderblocks.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderblocks.getBlockIconFromSideAndMetadata(block, 1, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(0.0F, 0.0F, -1.0F); - renderblocks.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderblocks.getBlockIconFromSideAndMetadata(block, 2, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(0.0F, 0.0F, 1.0F); - renderblocks.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderblocks.getBlockIconFromSideAndMetadata(block, 3, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(-1.0F, 0.0F, 0.0F); - renderblocks.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderblocks.getBlockIconFromSideAndMetadata(block, 4, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(1.0F, 0.0F, 0.0F); - renderblocks.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderblocks.getBlockIconFromSideAndMetadata(block, 5, metadata)); - tessellator.draw(); - GL11.glTranslatef(0.5F, 0.5F, 0.5F); + public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderblocks) { + Tessellator tessellator = Tessellator.instance; + block.setBlockBoundsForItemRender(); + renderblocks.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); + renderblocks.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, + renderblocks.getBlockIconFromSideAndMetadata(block, 0, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + renderblocks.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, + renderblocks.getBlockIconFromSideAndMetadata(block, 1, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, -1.0F); + renderblocks.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, + renderblocks.getBlockIconFromSideAndMetadata(block, 2, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, 1.0F); + renderblocks.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, + renderblocks.getBlockIconFromSideAndMetadata(block, 3, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(-1.0F, 0.0F, 0.0F); + renderblocks.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, + renderblocks.getBlockIconFromSideAndMetadata(block, 4, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(1.0F, 0.0F, 0.0F); + renderblocks.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, + renderblocks.getBlockIconFromSideAndMetadata(block, 5, metadata)); + tessellator.draw(); + GL11.glTranslatef(0.5F, 0.5F, 0.5F); } @Override - public boolean renderWorldBlock(IBlockAccess blockAccess, int x, int y, int z, Block block, int meta, RenderBlocks blockRenderer) - { - TileEntity te = blockAccess.getTileEntity(x, y, z); - if(te instanceof PileTileEntity) - { - PileTileEntity pte = (PileTileEntity) te; - long itemHash = getItemStackHash(pte.content); - if(this.pileTileEntityRender.textureIdMap.containsKey(itemHash)) - { - Tessellator tessellator = Tessellator.instance; - tessellator.draw(); - int texture=this.pileTileEntityRender.textureIdMap.get(itemHash); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture); - int[][][] brightness = new int[3][3][3]; - this.generateBrightnessMatrix(blockAccess, x, y, z, brightness); - tessellator.startDrawing(GL11.GL_TRIANGLES); - tessellator.setColorOpaque_F(1f, 1f, 1f); - boolean[] blocksViewAround = this.getBlocksViewAround(blockAccess, x, y, z); - if( blocksViewAround[0] && - blocksViewAround[1] && - blocksViewAround[2] && - blocksViewAround[3]) - { - this.addFlatTop(tessellator, x, y, z, brightness); - } - else if(!blocksViewAround[0] && - blocksViewAround[1] && - blocksViewAround[2] && - blocksViewAround[3]) - { - this.addSlope(tessellator, x, y, z, 1, 1, 0, 1, brightness); - } - else if(blocksViewAround[0] && - !blocksViewAround[1] && - blocksViewAround[2] && - blocksViewAround[3]) - { - this.addSlope(tessellator, x, y, z, 0, 1, 1, 1, brightness); - } - else if(blocksViewAround[0] && - blocksViewAround[1] && - !blocksViewAround[2] && - blocksViewAround[3]) - { - this.addSlope(tessellator, x, y, z, 1, 1, 1, 0, brightness); - } - else if(blocksViewAround[0] && - blocksViewAround[1] && - blocksViewAround[2] && - !blocksViewAround[3]) - { - this.addSlope(tessellator, x, y, z, 1, 0, 1, 1, brightness); - } - // 2-sided piramid - else if(blocksViewAround[0] && - blocksViewAround[1] && - !blocksViewAround[2] && - !blocksViewAround[3]) - { - this.addSlope(tessellator, x, y, z, 1, 0, 1, 0, brightness); - } - else if(!blocksViewAround[0] && - blocksViewAround[1] && - blocksViewAround[2] && - !blocksViewAround[3]) - { - this.addSlope(tessellator, x, y, z, 1, 0, 0, 1, brightness); - } - else if(!blocksViewAround[0] && - !blocksViewAround[1] && - blocksViewAround[2] && - blocksViewAround[3]) - { - this.addSlope(tessellator, x, y, z, 0, 1, 0, 1, brightness); - } - else if(blocksViewAround[0] && - !blocksViewAround[1] && - !blocksViewAround[2] && - blocksViewAround[3]) - { - this.addSlope(tessellator, x, y, z, 0, 1, 1, 0, brightness); - } - else - { - this.addPyramid(tessellator, x, y, z, brightness); - } - if(!blockAccess.getBlock(x, y-1, z).isOpaqueCube()) - { - this.addBottom(tessellator, x, y, z, brightness); - } - tessellator.draw(); - Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture); - tessellator.startDrawingQuads(); - } - return true; - } - else - { - return false; - } + public boolean renderWorldBlock(IBlockAccess blockAccess, int x, int y, int z, Block block, int meta, + RenderBlocks blockRenderer) { + TileEntity te = blockAccess.getTileEntity(x, y, z); + if (te instanceof PileTileEntity) { + PileTileEntity pte = (PileTileEntity) te; + long itemHash = getItemStackHash(pte.content); + if (this.pileTileEntityRender.subIconIdMap.containsKey(itemHash)) { + Tessellator tessellator = Tessellator.instance; + int subIconId = this.pileTileEntityRender.subIconIdMap.get(itemHash); + int[][][] brightness = new int[3][3][3]; + this.generateBrightnessMatrix(blockAccess, x, y, z, brightness); + tessellator.setColorOpaque_F(1f, 1f, 1f); + boolean[] blocksViewAround = this.getBlocksViewAround(blockAccess, x, y, z); + if (blocksViewAround[0] && blocksViewAround[1] && blocksViewAround[2] && blocksViewAround[3]) { + this.addFlatTop(tessellator, x, y, z, brightness, subIconId); + } else if (!blocksViewAround[0] && blocksViewAround[1] && blocksViewAround[2] && blocksViewAround[3]) { + this.addSlope(tessellator, x, y, z, 0, brightness, subIconId); + } else if (blocksViewAround[0] && !blocksViewAround[1] && blocksViewAround[2] && blocksViewAround[3]) { + this.addSlope(tessellator, x, y, z, 1, brightness, subIconId); + } else if (blocksViewAround[0] && blocksViewAround[1] && !blocksViewAround[2] && blocksViewAround[3]) { + this.addSlope(tessellator, x, y, z, 2, brightness, subIconId); + } else if (blocksViewAround[0] && blocksViewAround[1] && blocksViewAround[2] && !blocksViewAround[3]) { + this.addSlope(tessellator, x, y, z, 3, brightness, subIconId); + } + // 2-sided piramid + else if (blocksViewAround[0] && blocksViewAround[1] && !blocksViewAround[2] && !blocksViewAround[3]) { + this.addTwoSidedPyramid(tessellator, x, y, z, 2, brightness, subIconId); + } else if (!blocksViewAround[0] && blocksViewAround[1] && blocksViewAround[2] && !blocksViewAround[3]) { + this.addTwoSidedPyramid(tessellator, x, y, z, 3, brightness, subIconId); + } else if (!blocksViewAround[0] && !blocksViewAround[1] && blocksViewAround[2] && blocksViewAround[3]) { + this.addTwoSidedPyramid(tessellator, x, y, z, 0, brightness, subIconId); + } else if (blocksViewAround[0] && !blocksViewAround[1] && !blocksViewAround[2] && blocksViewAround[3]) { + this.addTwoSidedPyramid(tessellator, x, y, z, 1, brightness, subIconId); + } else { + this.addPyramid(tessellator, x, y, z, brightness, subIconId); + } + if (!blockAccess.getBlock(x, y - 1, z).isOpaqueCube()) { + this.addBottom(tessellator, x, y, z, brightness, subIconId); + } + } + return true; + } else { + return false; + } } - - private boolean[] getBlocksViewAround(IBlockAccess blockAccess, int x, int y, int z) - { - // +Z - // ^ - //[ ][0][ ] - //[3][x][1] ->+X - //[ ][2][ ] - return new boolean[] { - blockAccess.getBlock(x, y, z+1).isOpaqueCube(), - blockAccess.getBlock(x+1, y, z).isOpaqueCube(), - blockAccess.getBlock(x, y, z-1).isOpaqueCube(), - blockAccess.getBlock(x-1, y, z).isOpaqueCube(), - }; + + private boolean[] getBlocksViewAround(IBlockAccess blockAccess, int x, int y, int z) { + // +Z + // ^ + // [ ][0][ ] + // [3][x][1] ->+X + // [ ][2][ ] + return new boolean[] { blockAccess.getBlock(x, y, z + 1).isOpaqueCube(), + blockAccess.getBlock(x + 1, y, z).isOpaqueCube(), blockAccess.getBlock(x, y, z - 1).isOpaqueCube(), + blockAccess.getBlock(x - 1, y, z).isOpaqueCube(), }; } - private void addBottom(Tessellator tessellator, int x, int y, int z, int[][][] brightness) - { - double[][] triangle1 = new double[3][3]; - double[][] triangle2 = new double[3][3]; - triangle1[0] = new double[] {0D,0D,1D}; - triangle1[1] = new double[] {0D,0D,0D}; - triangle1[2] = new double[] {1D,0D,0D}; - triangle2[0] = triangle1[0]; - triangle2[1] = triangle1[2]; - triangle2[2] = new double[] {1D,0D,1D}; - this.addTriangle(tessellator, triangle1, x, y, z, ForgeDirection.UP, brightness); - this.addTriangle(tessellator, triangle2, x, y, z, ForgeDirection.UP, brightness); + private void addBottom(Tessellator tessellator, int x, int y, int z, int[][][] brightness, int subIconId) { + double[][] quad1 = new double[4][3]; + quad1[0] = new double[] { 0D, 0D, 1D }; + quad1[1] = new double[] { 0D, 0D, 0D }; + quad1[2] = new double[] { 1D, 0D, 0D }; + quad1[3] = new double[] { 1D, 0D, 1D }; + this.addQuad(tessellator, quad1, x, y, z, ForgeDirection.UP, brightness, subIconId); } - - private void addFlatTop(Tessellator tessellator, int x, int y, int z, int[][][] brightness) - { - double[][] triangle1 = new double[3][3]; - double[][] triangle2 = new double[3][3]; + + private void addFlatTop(Tessellator tessellator, int x, int y, int z, int[][][] brightness, int subIconId) { + double[][] quad1 = new double[4][3]; double height = 0.9D; - triangle1[0] = new double[] {1D,height,0D}; - triangle1[1] = new double[] {0D,height,0D}; - triangle1[2] = new double[] {0D,height,1D}; - triangle2[0] = triangle1[2]; - triangle2[1] = new double[] {1D,height,1D}; - triangle2[2] = triangle1[0]; - this.addTriangle(tessellator, triangle1, x, y, z, ForgeDirection.UP, brightness); - this.addTriangle(tessellator, triangle2, x, y, z, ForgeDirection.UP, brightness); + quad1[0] = new double[] { 1D, height, 0D }; + quad1[1] = new double[] { 0D, height, 0D }; + quad1[2] = new double[] { 0D, height, 1D }; + quad1[3] = new double[] { 1D, height, 1D }; + this.addQuad(tessellator, quad1, x, y, z, ForgeDirection.UP, brightness, subIconId); } - - private void addSlope(Tessellator tessellator, int x, int y, int z, int px, int nx, int pz, int nz, int[][][] brightness) - { - double[][] triangle1 = new double[3][3]; - double[][] triangle2 = new double[3][3]; - if(px*pz+nx*nz==1) - { - triangle1[0] = new double[] {1D,px*nz,0D}; //+X -Z - triangle1[1] = new double[] {0D,nx*nz,0D}; //-X -Z - triangle1[2] = new double[] {1D,px*pz,1D}; //-X +Z - triangle2[0] = triangle1[2]; - triangle2[1] = triangle1[1]; //+X +Z - triangle2[2] = new double[] {0D,nx*pz,1D}; - } - else - { - triangle1[0] = new double[] {1D,px*nz,0D}; //+X -Z - triangle1[1] = new double[] {0D,nx*nz,0D}; //-X -Z - triangle1[2] = new double[] {0D,nx*pz,1D}; //-X +Z - triangle2[0] = triangle1[2]; - triangle2[1] = new double[] {1D,px*pz,1D}; //+X +Z - triangle2[2] = triangle1[0]; + + private void addSlope(Tessellator tessellator, int x, int y, int z, int rotation, + int[][][] brightness, int subIconId) { + double[][] quad = new double[4][3]; + quad[0] = new double[] { 1D,1D, 0D }; // +X -Z + quad[1] = new double[] { 0D, 1D, 0D }; // -X -Z + quad[2] = new double[] { 0D, 0D, 1D }; // -X +Z + quad[3] = new double[] { 1D, 0D, 1D }; + while (rotation-- > 0) { + rotateQuadByYAxis(quad); } - this.addTriangle(tessellator, triangle1, x, y, z, ForgeDirection.UP, brightness); - this.addTriangle(tessellator, triangle2, x, y, z, ForgeDirection.UP, brightness); + this.addQuad(tessellator, quad, x, y, z, ForgeDirection.UP, brightness, subIconId); } - private void addPyramid(Tessellator tessellator, int x, int y, int z, int[][][] brightness) - { - double[][] triangle1 = new double[3][3]; - double[][] triangle2 = new double[3][3]; - double[][] triangle3 = new double[3][3]; - double[][] triangle4 = new double[3][3]; + private void addTwoSidedPyramid(Tessellator tessellator, int x, int y, int z, int rotation, + int[][][] brightness, int subIconId) { + double[][] quad = new double[4][3]; + quad[0] = new double[] { 1D, 0D, 0D }; // +X -Z + quad[1] = new double[] { 0D, 1D, 0D }; // -X -Z + quad[2] = new double[] { 0D, 0D, 1D }; // -X +Z + quad[3] = new double[] { 1D, 0D, 1D }; + while (rotation-- > 0) { + rotateQuadByYAxis(quad); + } + this.addQuad(tessellator, quad, x, y, z, ForgeDirection.UP, brightness, subIconId); + } + + private void addPyramid(Tessellator tessellator, int x, int y, int z, int[][][] brightness, int subIconId) { + double[][] quad1 = new double[4][3]; + double[][] quad2 = new double[4][3]; double pileHeight = 0.3D; - triangle1[0] = new double[] {1D,0D,0D}; - triangle1[1] = new double[] {0D,0D,0D}; - triangle1[2] = new double[] {0.5D,pileHeight,0.5D}; - triangle2[0] = triangle1[1]; - triangle2[1] = new double[] {0D,0D,1D}; - triangle2[2] = triangle1[2]; - triangle3[0] = triangle2[1]; - triangle3[1] = new double[] {1D,0D,1D}; - triangle3[2] = triangle1[2]; - triangle4[0] = triangle3[1]; - triangle4[1] = triangle1[0]; - triangle4[2] = triangle1[2]; - this.addTriangle(tessellator, triangle1, x, y, z, ForgeDirection.UP, brightness); - this.addTriangle(tessellator, triangle2, x, y, z, ForgeDirection.UP, brightness); - this.addTriangle(tessellator, triangle3, x, y, z, ForgeDirection.UP, brightness); - this.addTriangle(tessellator, triangle4, x, y, z, ForgeDirection.UP, brightness); + quad1[0] = new double[] { 1D, 0D, 1D }; + quad1[1] = new double[] { 1D, 0D, 0D }; + quad1[2] = new double[] { 0D, 0D, 0D }; + quad1[3] = new double[] { 0.5D, pileHeight, 0.5D }; + quad2 = copyAndRotateQuadByYAxis(quad1,2); + this.addQuad(tessellator, quad1, x, y, z, ForgeDirection.UP, brightness, subIconId); + this.addQuad(tessellator, quad2, x, y, z, ForgeDirection.UP, brightness, subIconId); } - - private void addTriangle(Tessellator tessellator, double[][] triangle, int x, int y, int z, ForgeDirection uvmapping, int[][][] brightness) - { + + private void rotateQuadByYAxis(double[][] quad) { + for (double[] v : quad) { + double newV2 = 1 - v[0]; + v[0] = v[2]; + v[2] = newV2; + } + } + + private double[][] copyAndRotateQuadByYAxis(double[][] quad, int rotation) { + double[][] quadOut = new double[4][3]; + for (int i = 0; i < quad.length * 3; i++) { + quadOut[i / 3][i % 3] = quad[i / 3][i % 3]; + } + + while (rotation-- > 0) { + rotateQuadByYAxis(quadOut); + } + return quadOut; + } + + private void addQuad(Tessellator tessellator, double[][] quad, int x, int y, int z, ForgeDirection uvmapping, + int[][][] brightness, int subIconId) { int iu = 0; int iv = 2; - if(uvmapping.offsetY == 0) - { + if (uvmapping.offsetY == 0) { iv = 1; - if(uvmapping.offsetZ == 0) - { + if (uvmapping.offsetZ == 0) { iu = 2; } } - float[] normal = IHLMathUtils.get_triangle_normal(triangle); - tessellator.setNormal(normal[0], normal[1], normal[2]); - tessellator.setBrightness(this.getBrightness(triangle[0], brightness)); - tessellator.addVertexWithUV(x+triangle[0][0], y+triangle[0][1], z+triangle[0][2], triangle[0][iu], triangle[0][iv]); - tessellator.setBrightness(this.getBrightness(triangle[1], brightness)); - tessellator.addVertexWithUV(x+triangle[1][0], y+triangle[1][1], z+triangle[1][2], triangle[1][iu], triangle[1][iv]); - tessellator.setBrightness(this.getBrightness(triangle[2], brightness)); - tessellator.addVertexWithUV(x+triangle[2][0], y+triangle[2][1], z+triangle[2][2], triangle[2][iu], triangle[2][iv]); + float[] normal = IHLMathUtils.get_triangle_normal(quad); + float minu = pileTileEntityRender.getSubIconMinU(subIconId); + float minv = pileTileEntityRender.getSubIconMinV(subIconId); + float du = pileTileEntityRender.getSubIconDU(subIconId); + float dv = pileTileEntityRender.getSubIconDV(subIconId); + + double u1 = minu + quad[0][iu] * du; + double u2 = minu + quad[1][iu] * du; + double u3 = minu + quad[2][iu] * du; + double u4 = minu + quad[3][iu] * du; + double v1 = minv + quad[0][iv] * dv; + double v2 = minv + quad[1][iv] * dv; + double v3 = minv + quad[2][iv] * dv; + double v4 = minv + quad[3][iv] * dv; + + tessellator.setNormal(normal[0], normal[1], normal[2]); + tessellator.setBrightness(this.getBrightness(quad[0], brightness)); + tessellator.addVertexWithUV(x + quad[0][0], y + quad[0][1], z + quad[0][2], u1, v1); + tessellator.setBrightness(this.getBrightness(quad[1], brightness)); + tessellator.addVertexWithUV(x + quad[1][0], y + quad[1][1], z + quad[1][2], u2, v2); + tessellator.setBrightness(this.getBrightness(quad[2], brightness)); + tessellator.addVertexWithUV(x + quad[2][0], y + quad[2][1], z + quad[2][2], u3, v3); + tessellator.setBrightness(this.getBrightness(quad[3], brightness)); + tessellator.addVertexWithUV(x + quad[3][0], y + quad[3][1], z + quad[3][2], u4, v4); } - - public long getItemStackHash(ItemStack stack) - { - if(stack==null) - { + + public long getItemStackHash(ItemStack stack) { + if (stack == null) { return 0; } - return ((long)Item.getIdFromItem(stack.getItem())<<31^stack.getItemDamage()); + return ((long) Item.getIdFromItem(stack.getItem()) << 31 ^ stack.getItemDamage()); } - - private void generateBrightnessMatrix(IBlockAccess blockAccess, int x, int y, int z, int[][][] brightness) - { - for(int ix = -1; ix <= 1; ix++) - for(int iy = -1; iy <= 1; iy++) - for(int iz = -1; iz <= 1; iz++) - { - Block block = blockAccess.getBlock(ix+x, iy+y, iz+z); - if(block!=null && block!=Blocks.air) - { - brightness[ix+1][iy+1][iz+1] = block.getMixedBrightnessForBlock(blockAccess, ix+x, iy+y, iz+z); - } - else - { - brightness[ix+1][iy+1][iz+1] = block.getMixedBrightnessForBlock(blockAccess, x, y, z); - } - } + + private void generateBrightnessMatrix(IBlockAccess blockAccess, int x, int y, int z, int[][][] brightness) { + for (int ix = -1; ix <= 1; ix++) + for (int iy = -1; iy <= 1; iy++) + for (int iz = -1; iz <= 1; iz++) { + Block block = blockAccess.getBlock(ix + x, iy + y, iz + z); + if (block != null && block != Blocks.air) { + brightness[ix + 1][iy + 1][iz + 1] = block.getMixedBrightnessForBlock(blockAccess, ix + x, + iy + y, iz + z); + } else { + brightness[ix + 1][iy + 1][iz + 1] = block.getMixedBrightnessForBlock(blockAccess, x, y, z); + } + } } - - private int getBrightness(double v[], int[][][] brightness) - { - int x1 = v[0]<0.5d?0:1; - int x2 = x1+1; - int y1 = v[1]<0.5d?0:1; - int y2 = y1+1; - int z1 = v[2]<0.5d?0:1; - int z2 = z1+1; - float dx = v[0]<0.5d?(float)v[0]*2f:(float)v[0]*2f-1f; - float dy = v[1]<0.5d?(float)v[1]*2f:(float)v[1]*2f-1f; - float dz = v[2]<0.5d?(float)v[2]*2f:(float)v[2]*2f-1f; + + private int getBrightness(double v[], int[][][] brightness) { + int x1 = v[0] < 0.5d ? 0 : 1; + int x2 = x1 + 1; + int y1 = v[1] < 0.5d ? 0 : 1; + int y2 = y1 + 1; + int z1 = v[2] < 0.5d ? 0 : 1; + int z2 = z1 + 1; + float dx = v[0] < 0.5d ? (float) v[0] * 2f : (float) v[0] * 2f - 1f; + float dy = v[1] < 0.5d ? (float) v[1] * 2f : (float) v[1] * 2f - 1f; + float dz = v[2] < 0.5d ? (float) v[2] * 2f : (float) v[2] * 2f - 1f; int brightness1 = brightness[x1][y1][z1]; int brightness2 = brightness[x2][y2][z2]; - float d = IHLMathUtils.sqrt(dx*dx+dy*dy+dz*dz); - return (int)(brightness1*(1f-d)*0.8f+brightness2*d*0.8f+brightness[1][1][1]*0.2f) & 16711935; + float d = IHLMathUtils.sqrt(dx * dx + dy * dy + dz * dz); + return (int) (brightness1 * (1f - d) * 0.8f + brightness2 * d * 0.8f + brightness[1][1][1] * 0.2f) & 16711935; } - + @Override - public boolean shouldRender3DInInventory(int arg0) - { + public boolean shouldRender3DInInventory(int arg0) { return true; } } - \ No newline at end of file diff --git a/ihl/explosion/PileTileEntityRender.java b/ihl/explosion/PileTileEntityRender.java index ea8ab4f..2141e83 100644 --- a/ihl/explosion/PileTileEntityRender.java +++ b/ihl/explosion/PileTileEntityRender.java @@ -1,6 +1,5 @@ package ihl.explosion; -import java.nio.IntBuffer; import java.util.HashMap; import java.util.Map; import java.util.Random; @@ -17,7 +16,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; -import org.lwjgl.BufferUtils; import org.lwjgl.opengl.Display; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL30; @@ -27,134 +25,164 @@ import ihl.IHLMod; import ihl.utils.IHLItemRenderer; public class PileTileEntityRender extends TileEntitySpecialRenderer { - -private int fb=-1; -private final int textureWidth=64; -private final int textureHeight=64; -private final PileBlockRender pileBlockRender; -public final Map textureIdMap = new HashMap(); -private IntBuffer textureIDBuffer; -private int nextAvailableId = -1; -private boolean framebufferReady = false; -private Minecraft mc; -private final IHLItemRenderer ihlItemRenderer=new IHLItemRenderer(false); -private final Random random = new Random(); -public PileTileEntityRender(PileBlockRender pileBlockRender1) -{ - pileBlockRender=pileBlockRender1; - mc = Minecraft.getMinecraft(); -} + private int fb = -1; + private final int textureWidth = 64; + private final int textureHeight = 64; + private final PileBlockRender pileBlockRender; + public final Map subIconIdMap = new HashMap(); + private int nextAvailableId = -1; + private boolean framebufferReady = false; + private Minecraft mc; + private final IHLItemRenderer ihlItemRenderer = new IHLItemRenderer(false); + private final Random random = new Random(); -public void renderAModelAt(PileTileEntity tile, double x, double y, double z, float f) -{ - ItemStack stack = tile.content; - if(!framebufferReady) - { - this.generateFrameBuffer(); - Minecraft.getMinecraft().entityRenderer.setupCameraTransform(f, 0); - Minecraft.getMinecraft().getFramebuffer().bindFramebuffer(false); + public PileTileEntityRender(PileBlockRender pileBlockRender1) { + pileBlockRender = pileBlockRender1; + mc = Minecraft.getMinecraft(); } - else if(stack!=null) - { - long hash = this.pileBlockRender.getItemStackHash(stack); - if(!textureIdMap.containsKey(hash)) - { - textureIdMap.put(hash,textureIDBuffer.get(++nextAvailableId)); - this.preparetexture(nextAvailableId); - this.drawTexture(tile); - Minecraft.getMinecraft().entityRenderer.setupCameraTransform(f, 0); - Minecraft.getMinecraft().getFramebuffer().bindFramebuffer(false); - tile.updateBlockRender(); - } + + public void renderAModelAt(PileTileEntity tile, double x, double y, double z, float f) { + ItemStack stack = tile.content; + if (!framebufferReady) { + this.generateFrameBuffer(); + Minecraft.getMinecraft().entityRenderer.setupCameraTransform(f, 0); + Minecraft.getMinecraft().getFramebuffer().bindFramebuffer(false); + } else if (stack != null) { + long hash = this.pileBlockRender.getItemStackHash(stack); + if (!subIconIdMap.containsKey(hash)) { + + subIconIdMap.put(hash, ++nextAvailableId); + this.preparetexture(); + this.drawTexture(tile, nextAvailableId); + Minecraft.getMinecraft().entityRenderer.setupCameraTransform(f, 0); + Minecraft.getMinecraft().getFramebuffer().bindFramebuffer(false); + tile.updateBlockRender(); + } + } + } + + private void generateFrameBuffer() { + fb = GL30.glGenFramebuffers(); + this.preparetexture(); + if (GL30.glCheckFramebufferStatus(GL30.GL_FRAMEBUFFER) != GL30.GL_FRAMEBUFFER_COMPLETE) { + IHLMod.log.error("Something went wrong while creating frame buffer!"); + IHLMod.log.error(GL30.glCheckFramebufferStatus(GL30.GL_FRAMEBUFFER)); + } else { + IHLMod.log.info("FrameBuffer loaded correctly!"); + } + this.framebufferReady = true; + } + + private void preparetexture() { + GL30.glBindFramebuffer(GL30.GL_FRAMEBUFFER, fb); + int texture = Minecraft.getMinecraft().renderEngine.getTexture(TextureMap.locationBlocksTexture) + .getGlTextureId(); + GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture); + GL30.glFramebufferTexture2D(GL30.GL_FRAMEBUFFER, GL30.GL_COLOR_ATTACHMENT0, GL11.GL_TEXTURE_2D, texture, 0); + } + + private void drawTexture(PileTileEntity tile, int subIconId) { + IIcon picon = PileBlock.instance.getIcon(0, 0); + float minu = picon.getMinU(); + float minv = picon.getMinV(); + float maxu = picon.getMaxU(); + float maxv = picon.getMaxV(); + int iconwidth = picon.getIconWidth(); + int iconheight = picon.getIconHeight(); + float du = maxu - minu; + float dv = maxv - minv; + int iconNumU = picon.getIconWidth()/this.textureWidth; + int posu = (int) (minu * iconwidth / du) + subIconId % iconNumU * textureWidth; + int posv = (int) (minv * iconheight / dv) + subIconId / iconNumU * textureHeight; + + GL11.glViewport(posu, posv, textureWidth, textureHeight); + GL11.glMatrixMode(GL11.GL_PROJECTION); + GL11.glLoadIdentity(); + GL11.glOrtho(-1d, 1d, -1d, 1d, 0.05F, this.mc.gameSettings.renderDistanceChunks * 32F); + GL11.glMatrixMode(GL11.GL_MODELVIEW); + GL11.glLoadIdentity(); + ItemStack stack = tile.content; + GL11.glTranslatef(0, 0, -1f); + GLU.gluLookAt(0, 0, 0, -32f/* x reference */, 0f/* y reference */, 0f/* z reference */, 0.0f, 1.0f, 0.0f); + GL11.glColor4f(1f, 1f, 1f, 1f); + GL11.glRotatef(90f, 0, 1f, 0); + GL11.glScalef(2f, 2f, 2f); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 0xf0, 0xf0); + if (stack.getItem() instanceof ItemBlock) { + Block block = ((ItemBlock) stack.getItem()).field_150939_a; + IIcon icon = block.getIcon(0, stack.getItemDamage()); + double u1 = (double) icon.getInterpolatedU(0D); + double u2 = (double) icon.getInterpolatedU(16.0D); + double v1 = (double) icon.getInterpolatedV(0D); + double v2 = (double) icon.getInterpolatedV(16.0D); + Tessellator tessellator = Tessellator.instance; + bindTexture(TextureMap.locationBlocksTexture); + tessellator.startDrawingQuads(); + tessellator.setColorOpaque_F(1f, 1f, 1f); + tessellator.addVertexWithUV(-0.5, -0.5, 0, u1, v1); + tessellator.addVertexWithUV(0.5, -0.5, 0, u1, v2); + tessellator.addVertexWithUV(0.5, 0.5, 0, u2, v2); + tessellator.addVertexWithUV(-0.5, 0.5, 0, u2, v1); + tessellator.draw(); + } + for (int i = 0; i < 128; i++) { + GL11.glPushMatrix(); + float tx = random.nextFloat() - 0.5f; + float ty = random.nextFloat() - 0.5f; + GL11.glTranslatef(tx, ty, 0); + this.ihlItemRenderer.doRender(RenderManager.instance, stack, 0f, 0f, 0f); + GL11.glTranslatef(-tx, -ty, 0); + GL11.glPopMatrix(); + } + GL11.glViewport(0, 0, Display.getWidth(), Display.getHeight()); } -} -private void generateFrameBuffer() -{ - textureIDBuffer = BufferUtils.createIntBuffer(Short.MAX_VALUE); - GL11.glGenTextures(textureIDBuffer); - fb=GL30.glGenFramebuffers(); - this.preparetexture(0); - if (GL30.glCheckFramebufferStatus(GL30.GL_FRAMEBUFFER) != GL30.GL_FRAMEBUFFER_COMPLETE) - { - IHLMod.log.error("Something went wrong while creating frame buffer!"); - IHLMod.log.error(GL30.glCheckFramebufferStatus(GL30.GL_FRAMEBUFFER)); - } - else - { - IHLMod.log.info("FrameBuffer loaded correctly!"); - } - this.framebufferReady=true; -} + public float getSubIconMinU(int index) + { + IIcon picon = PileBlock.instance.getIcon(0, 0); + int iconNumU = picon.getIconWidth()/this.textureWidth; + float minu = picon.getMinU(); + float maxu = picon.getMaxU(); + float du = (maxu - minu)/iconNumU; + return minu + index%iconNumU*du; + } -private void preparetexture(int textureID) -{ - GL30.glBindFramebuffer(GL30.GL_FRAMEBUFFER, fb); - int texture = textureIDBuffer.get(textureID); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture); - GL30.glFramebufferTexture2D(GL30.GL_FRAMEBUFFER, GL30.GL_COLOR_ATTACHMENT0, GL11.GL_TEXTURE_2D, texture, 0); - GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGB8, textureWidth, textureHeight, 0, GL11.GL_RGB, GL11.GL_UNSIGNED_BYTE, (java.nio.ByteBuffer)null); - GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_CLAMP); - GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_CLAMP); - GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER,GL11.GL_NEAREST); - GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST); -} - -private void drawTexture(PileTileEntity tile) -{ - GL11.glViewport(0, 0, textureWidth, textureHeight); - GL11.glClearColor(0f, 0f, 0f, 1f); - GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); - GL11.glMatrixMode(GL11.GL_PROJECTION); - GL11.glLoadIdentity(); - GL11.glOrtho(-1d, 1d, -1d, 1d, 0.05F, this.mc.gameSettings.renderDistanceChunks * 32F); - GL11.glMatrixMode(GL11.GL_MODELVIEW); - GL11.glLoadIdentity(); - ItemStack stack = tile.content; - GL11.glTranslatef(0, 0, -1f); - GLU.gluLookAt(0, 0, 0, -32f/*x reference*/, 0f/*y reference*/, 0f/*z reference*/, 0.0f, 1.0f, 0.0f); - GL11.glColor4f(1f, 1f, 1f, 1f); - GL11.glRotatef(90f,0,1f,0); - GL11.glScalef(2f, 2f, 2f); - OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 0xf0, 0xf0); -// Tessellator.instance.setBrightness(16711935); - if(stack.getItem() instanceof ItemBlock) + public float getSubIconMinV(int index) + { + IIcon picon = PileBlock.instance.getIcon(0, 0); + int iconNumU = picon.getIconWidth()/this.textureWidth; + int iconNumV = picon.getIconHeight()/this.textureHeight; + float minv = picon.getMinV(); + float maxv = picon.getMaxV(); + float dv = (maxv - minv)/iconNumV; + return minv + index/iconNumU*dv; + } + public float getSubIconDU(int index) { - Block block = ((ItemBlock)stack.getItem()).field_150939_a; - IIcon icon = block.getIcon(0, stack.getItemDamage()); - double u1 = (double)icon.getInterpolatedU(0D); - double u2 = (double)icon.getInterpolatedU(16.0D); - double v1 = (double)icon.getInterpolatedV(0D); - double v2 = (double)icon.getInterpolatedV(16.0D); - Tessellator tessellator = Tessellator.instance; - bindTexture(TextureMap.locationBlocksTexture); - tessellator.startDrawingQuads(); - tessellator.setColorOpaque_F(1f, 1f, 1f); - tessellator.addVertexWithUV(-0.5,-0.5, 0,u1,v1); - tessellator.addVertexWithUV( 0.5,-0.5, 0,u1,v2); - tessellator.addVertexWithUV( 0.5, 0.5, 0,u2,v2); - tessellator.addVertexWithUV(-0.5, 0.5, 0,u2,v1); - tessellator.draw(); + IIcon picon = PileBlock.instance.getIcon(0, 0); + int iconNumU = picon.getIconWidth()/this.textureWidth; + float minu = picon.getMinU(); + float maxu = picon.getMaxU(); + float du = (maxu - minu)/iconNumU; + return du; } - for (int i = 0; i < 128; i++) + + public float getSubIconDV(int index) { - GL11.glPushMatrix(); - float tx = random.nextFloat()-0.5f; - float ty = random.nextFloat()-0.5f; - GL11.glTranslatef(tx, ty, 0); - this.ihlItemRenderer.doRender(RenderManager.instance,stack, 0f, 0f, 0f); - GL11.glTranslatef(-tx, -ty, 0); - GL11.glPopMatrix(); + IIcon picon = PileBlock.instance.getIcon(0, 0); + int iconNumV = picon.getIconHeight()/this.textureHeight; + float minv = picon.getMinV(); + float maxv = picon.getMaxV(); + float dv = (maxv - minv)/iconNumV; + return dv; } - GL11.glViewport(0, 0, Display.getWidth(), Display.getHeight()); -// IHLRenderUtils.instance.disableAmbientLighting(); -} -@Override -public void renderTileEntityAt(TileEntity par1TileEntity, double par2, double par4, double par6, float par8) -{ - this.renderAModelAt((PileTileEntity)par1TileEntity, par2, par4, par6, par8); -} + + + @Override + public void renderTileEntityAt(TileEntity par1TileEntity, double par2, double par4, double par6, float par8) { + this.renderAModelAt((PileTileEntity) par1TileEntity, par2, par4, par6, par8); + } } \ No newline at end of file diff --git a/ihl/flexible_cable/AnchorBlock.java b/ihl/flexible_cable/AnchorBlock.java index 9d9c1dc..90fcf80 100644 --- a/ihl/flexible_cable/AnchorBlock.java +++ b/ihl/flexible_cable/AnchorBlock.java @@ -1,4 +1,5 @@ package ihl.flexible_cable; + import ihl.IHLModInfo; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; @@ -9,196 +10,102 @@ import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class AnchorBlock extends Block implements ITileEntityProvider { - private IIcon blockIconSide; - - public AnchorBlock(String unlocalizedName1) - { + public AnchorBlock(String unlocalizedName1) { super(Material.circuits); this.setBlockName(unlocalizedName1); - GameRegistry.registerBlock(this, unlocalizedName1); + GameRegistry.registerBlock(this, unlocalizedName1); } - + @Override - public boolean hasTileEntity(int metadata) - { - return true; + public boolean hasTileEntity(int metadata) { + return true; } - + @Override - public void onBlockPreDestroy(World world, int x, int y, int z, int meta) - { - if(!world.isRemote) - { + public void onBlockPreDestroy(World world, int x, int y, int z, int meta) { + if (!world.isRemote) { TileEntity te = world.getTileEntity(x, y, z); - if(te!=null && te instanceof AnchorTileEntity) - { + if (te != null && te instanceof AnchorTileEntity) { AnchorTileEntity ate = (AnchorTileEntity) te; ate.invalidate(); - for(short i=0;i<6;i++) - { + for (short i = 0; i < 6; i++) { ate.energyNetNodes[i].removeAttachedChains(); } } } super.onBlockPreDestroy(world, x, y, z, meta); } - + @Override public TileEntity createNewTileEntity(World arg0, int arg1) { return new AnchorTileEntity(); } - - @Override - public void dropBlockAsItemWithChance(World world, int x, int y, int z, int meta, float chance, int flag){} - - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) - { - return null; - } - - @Override - public boolean isOpaqueCube() - { - return false; - } - @Override - public boolean renderAsNormalBlock() - { - return false; - } + @Override + public void dropBlockAsItemWithChance(World world, int x, int y, int z, int meta, float chance, int flag) { + } - @Override - public int getRenderType() - { - return -2; + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, + int p_149668_4_) { + return null; } @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) - { - int facing=3; - int mask[] = { - 0,1,2,3,4,5, - 1,0,3,2,4,5, - 3,2,0,1,4,5, - 2,3,1,0,4,5, - 2,3,5,4,0,1, - 2,3,4,5,1,0 - }; - TileEntity te = world.getTileEntity(x, y, z); - if(te!=null) - { - AnchorTileEntity tebh = (AnchorTileEntity) te; - facing=tebh.getFacing(); - } + public boolean isOpaqueCube() { + return false; + } - switch (mask[facing*6+side]) - { - case 0: - return this.blockIcon; - case 1: - return this.blockIconSide; - case 2: - return this.blockIconSide; - case 3: - return this.blockIconSide; - case 4: - return this.blockIconSide; - case 5: - return this.blockIconSide; - default: - return this.blockIconSide; - } + @Override + public boolean renderAsNormalBlock() { + return false; } - + @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int meta) - { - - switch(side) - { - case 0: - return this.blockIconSide; - case 1: - return this.blockIconSide; - case 2: - return this.blockIconSide; - case 3: - return this.blockIcon; - case 4: - return this.blockIconSide; - case 5: - return this.blockIconSide; - default: - return this.blockIconSide; - } + public int getRenderType() { + return -2; } - + @Override @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister par1IconRegister) - { - this.blockIcon = par1IconRegister.registerIcon(IHLModInfo.MODID + ":junctionBoxFront"); - this.blockIconSide = par1IconRegister.registerIcon(IHLModInfo.MODID + ":junctionBox"); + public void registerBlockIcons(IIconRegister par1IconRegister) { + this.blockIcon = par1IconRegister.registerIcon(IHLModInfo.MODID + ":junctionBox"); } - - @Override - public void setBlockBoundsBasedOnState(IBlockAccess iBlockAccess, int x, int y, int z) - { - TileEntity te = iBlockAccess.getTileEntity(x, y, z); - if(te!=null && te instanceof AnchorTileEntity) - { - AnchorTileEntity ate = (AnchorTileEntity) te; - float portSize=0.1f; - float bbMinX = 1f; - float bbMaxX = 0f; - float bbMinY = 1f; - float bbMaxY = 0f; - float bbMinZ = 1f; - float bbMaxZ = 0f; - for(short i=0;i<6;i++) - { - if(ate.hasCableOnSide[i]) - { - float pMinX = (float) (ate.energyNetNodes[i].getPortPos(null)[0]-portSize-x); - float pMaxX = (float) (ate.energyNetNodes[i].getPortPos(null)[0]+portSize-x); - float pMinY = (float) (ate.energyNetNodes[i].getPortPos(null)[1]-portSize-y); - float pMaxY = (float) (ate.energyNetNodes[i].getPortPos(null)[1]+portSize-y); - float pMinZ = (float) (ate.energyNetNodes[i].getPortPos(null)[2]-portSize-z); - float pMaxZ = (float) (ate.energyNetNodes[i].getPortPos(null)[2]+portSize-z); - bbMinX=Math.min(pMinX,bbMinX); - bbMaxX=Math.max(pMaxX,bbMaxX); - bbMinY=Math.min(pMinY,bbMinY); - bbMaxY=Math.max(pMaxY,bbMaxY); - bbMinZ=Math.min(pMinZ,bbMinZ); - bbMaxZ=Math.max(pMaxZ,bbMaxZ); - } - } - this.setBlockBounds(bbMinX, bbMinY, bbMinZ, bbMaxX, bbMaxY, bbMaxZ); - } - } - /* + @Override - public boolean onBlockActivated(World world,int x,int y,int z,EntityPlayer player,int i,float pos_x,float pos_y,float pos_z){ - TileEntity te = world.getTileEntity(x,y,z); - if(IC2.platform.isSimulating()) - { + public void setBlockBoundsBasedOnState(IBlockAccess iBlockAccess, int x, int y, int z) { + TileEntity te = iBlockAccess.getTileEntity(x, y, z); + if (te != null && te instanceof AnchorTileEntity) { AnchorTileEntity ate = (AnchorTileEntity) te; - short facing = IHLUtils.getFacingFromPlayerView(player, true); - System.out.println(ate.energyNetNodes[facing].getGridID()); - System.out.println(ate.getOfferedEnergy()); + float portSize = 0.1f; + float bbMinX = 1f; + float bbMaxX = 0f; + float bbMinY = 1f; + float bbMaxY = 0f; + float bbMinZ = 1f; + float bbMaxZ = 0f; + for (short i = 0; i < 6; i++) { + if (ate.hasCableOnSide[i]) { + float pMinX = (float) (ate.energyNetNodes[i].getPortPos(null)[0] - portSize - x); + float pMaxX = (float) (ate.energyNetNodes[i].getPortPos(null)[0] + portSize - x); + float pMinY = (float) (ate.energyNetNodes[i].getPortPos(null)[1] - portSize - y); + float pMaxY = (float) (ate.energyNetNodes[i].getPortPos(null)[1] + portSize - y); + float pMinZ = (float) (ate.energyNetNodes[i].getPortPos(null)[2] - portSize - z); + float pMaxZ = (float) (ate.energyNetNodes[i].getPortPos(null)[2] + portSize - z); + bbMinX = Math.min(pMinX, bbMinX); + bbMaxX = Math.max(pMaxX, bbMaxX); + bbMinY = Math.min(pMinY, bbMinY); + bbMaxY = Math.max(pMaxY, bbMaxY); + bbMinZ = Math.min(pMinZ, bbMinZ); + bbMaxZ = Math.max(pMaxZ, bbMaxZ); + } + } + this.setBlockBounds(bbMinX, bbMinY, bbMinZ, bbMaxX, bbMaxY, bbMaxZ); } - return false; - }*/ - + } } diff --git a/ihl/items_blocks/FlexibleCableItem.java b/ihl/items_blocks/FlexibleCableItem.java index 9944f4c..e7b7986 100644 --- a/ihl/items_blocks/FlexibleCableItem.java +++ b/ihl/items_blocks/FlexibleCableItem.java @@ -17,7 +17,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import ic2.api.energy.tile.IEnergyTile; @@ -35,13 +35,8 @@ import ihl.utils.IHLUtils; public class FlexibleCableItem extends Item implements IWire { - @SideOnly(Side.CLIENT) - IIcon thickCopper, thinIron, thickIron, insulatedCopperRawruber, insulatedThickCopperRawruber, - insulatedIronRawruber, insulatedThickIronRawruber, insulatedCopperRuber, insulatedThickCopperRuber, - insulatedIronRuber, insulatedThickIronRuber; public static FlexibleCableItem instance; public final Set yellowColoredWires = new HashSet(3); - public boolean isDataCable = false; public FlexibleCableItem() { super(); @@ -98,8 +93,8 @@ public class FlexibleCableItem extends Item implements IWire { if (world.isRemote) world.playSoundEffect(x + 0.5F, y + 0.5F, z + 0.5F, "step.stone", 1.0F, 0.8F); if (!world.isRemote && t != null - && ((t instanceof IEnergyNetNode && !isDataCable) - || (t instanceof IMultiPowerCableHolder && !isDataCable)) + && ((t instanceof IEnergyNetNode) + || (t instanceof IMultiPowerCableHolder)) && stack.stackTagCompound.getInteger("fullLength") >= 1) { double ppx, ppy, ppz; ICableHolder te; @@ -381,7 +376,7 @@ public class FlexibleCableItem extends Item implements IWire { info.add("Insulation thickness: " + this.getInsulationThickness(itemStack) / 10f + " mm"); info.add("Insulation breakdown voltage: " + this.getVoltageLimit(itemStack) / 1000 + " kV"); } - + info.add(StatCollector.translateToLocal("ihl.powerCableTooltip")); } } @@ -399,35 +394,6 @@ public class FlexibleCableItem extends Item implements IWire { @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister par1IconRegister) { this.itemIcon = par1IconRegister.registerIcon(IHLModInfo.MODID + ":copperWire"); - this.thickCopper = par1IconRegister.registerIcon(IHLModInfo.MODID + ":copperWire16x"); - this.thinIron = par1IconRegister.registerIcon(IHLModInfo.MODID + ":steelWire"); - this.thickIron = par1IconRegister.registerIcon(IHLModInfo.MODID + ":steelWire16x"); - this.insulatedIronRawruber = par1IconRegister.registerIcon(IHLModInfo.MODID + ":flexibleCableSteel2"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(ItemStack stack, int i) { - if (stack.stackTagCompound != null) { - if (this.getInsulationMaterial(stack).equals("null")) { - if (this.getTransverseSection(stack) >= 240) { - if (yellowColoredWires.contains(this.getMaterial(stack))) { - return this.thickCopper; - } else { - return this.thickIron; - } - } else { - if (yellowColoredWires.contains(this.getMaterial(stack))) { - return this.itemIcon; - } else { - return this.thinIron; - } - } - } else { - return this.insulatedIronRawruber; - } - } - return this.itemIcon; } @Override diff --git a/ihl/items_blocks/IHLItemBlock.java b/ihl/items_blocks/IHLItemBlock.java index c25450d..499a88b 100644 --- a/ihl/items_blocks/IHLItemBlock.java +++ b/ihl/items_blocks/IHLItemBlock.java @@ -22,226 +22,196 @@ import net.minecraft.util.MathHelper; import net.minecraft.util.StatCollector; import net.minecraft.world.World; -public class IHLItemBlock extends ItemBlock{ +public class IHLItemBlock extends ItemBlock { public Map nameMap = new HashMap(); - public IHLItemBlock(Block block1) - { - super(block1); - this.setFull3D(); + + public IHLItemBlock(Block block1) { + super(block1); + this.setFull3D(); this.setHasSubtypes(true); - this.setCreativeTab(IHLCreativeTab.tab); + this.setCreativeTab(IHLCreativeTab.tab); } - - @Override - public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer player, World world, int x, int y, int z, int par7, float par8, float par9, float par10) - { - Block block = world.getBlock(x, y, z); - - if (block == Blocks.snow_layer && (world.getBlockMetadata(x, y, z) & 7) < 1) - { - par7 = 1; - } - else if (block != Blocks.vine && block != Blocks.tallgrass && block != Blocks.deadbush) - { - if (par7 == 0) - { - --y; - } - - if (par7 == 1) - { - ++y; - } - - if (par7 == 2) - { - --z; - } - - if (par7 == 3) - { - ++z; - } - - if (par7 == 4) - { - --x; - } - - if (par7 == 5) - { - ++x; - } - } - - if (par1ItemStack.stackSize == 0) - { - return false; - } - else if (!player.canPlayerEdit(x, y, z, par7, par1ItemStack)) - { - return false; - } - else if (y == 255) - { - return false; - } - else if (world.canPlaceEntityOnSide(this.field_150939_a, x, y, z, false, par7, player, par1ItemStack)) - { - int metadata = par1ItemStack.getItemDamage(); - int var13 = this.field_150939_a.onBlockPlaced(world, x, y, z, par7, par8, par9, par10, metadata); - - if (world.setBlock(x, y, z, this.field_150939_a, var13, 3)) - { - if (world.getBlock(x, y, z) == this.field_150939_a) - { - this.field_150939_a.onBlockPlacedBy(world, x, y, z, player, par1ItemStack); - this.field_150939_a.onPostBlockPlaced(world, x, y, z, var13); - TileEntity tile=world.getTileEntity(x, y, z); - if(tile instanceof IWrenchable && IC2.platform.isSimulating()) - { - IWrenchable te=(IWrenchable)tile; - int var6 = MathHelper.floor_double(player.rotationPitch * 4.0F / 360.0F + 0.5D) & 3; - int l = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - if(player.isSneaking()) - { - if(var6==1) - { - te.setFacing((short) 0); - } - else if(var6==3) - { - te.setFacing((short) 1); - } - else - { - - switch (l) - { - case 0: - te.setFacing((short)3); - break; - - case 1: - te.setFacing((short)4); - break; - - case 2: - te.setFacing((short)2); - break; - - case 3: - te.setFacing((short)5); - } - } - } - else - { - if(var6==1) - { - te.setFacing((short) 1); - } - else if(var6==3) - { - te.setFacing((short) 0); - } - else - { - - switch (l) - { - case 0: - te.setFacing((short)2); - break; - - case 1: - te.setFacing((short)5); - break; - - case 2: - te.setFacing((short)3); - break; - - case 3: - te.setFacing((short)4); - } } - } - } - } - - world.playSoundEffect(x + 0.5F, y + 0.5F, z + 0.5F, "step.stone", 1.0F, 0.8F); - --par1ItemStack.stackSize; - } - - return true; - } - else - { - return false; - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister par1IconRegister) { - this.itemIcon = par1IconRegister.registerIcon(IHLModInfo.MODID + ":driverItem"); + + @Override + public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer player, World world, int x, int y, int z, int par7, + float par8, float par9, float par10) { + Block block = world.getBlock(x, y, z); + + if (block == Blocks.snow_layer && (world.getBlockMetadata(x, y, z) & 7) < 1) { + par7 = 1; + } else if (block != Blocks.vine && block != Blocks.tallgrass && block != Blocks.deadbush) { + if (par7 == 0) { + --y; + } + + if (par7 == 1) { + ++y; + } + + if (par7 == 2) { + --z; + } + + if (par7 == 3) { + ++z; + } + + if (par7 == 4) { + --x; + } + + if (par7 == 5) { + ++x; + } } - - public Block getBlockContained() - { - return this.field_150939_a; + + if (par1ItemStack.stackSize == 0) { + return false; + } else if (!player.canPlayerEdit(x, y, z, par7, par1ItemStack)) { + return false; + } else if (y == 255) { + return false; + } else if (world.canPlaceEntityOnSide(this.field_150939_a, x, y, z, false, par7, player, par1ItemStack)) { + int metadata = par1ItemStack.getItemDamage(); + int var13 = this.field_150939_a.onBlockPlaced(world, x, y, z, par7, par8, par9, par10, metadata); + + if (world.setBlock(x, y, z, this.field_150939_a, var13, 3)) { + if (world.getBlock(x, y, z) == this.field_150939_a) { + this.field_150939_a.onBlockPlacedBy(world, x, y, z, player, par1ItemStack); + this.field_150939_a.onPostBlockPlaced(world, x, y, z, var13); + TileEntity tile = world.getTileEntity(x, y, z); + if (tile instanceof IWrenchable && IC2.platform.isSimulating()) { + IWrenchable te = (IWrenchable) tile; + int var6 = MathHelper.floor_double(player.rotationPitch * 4.0F / 360.0F + 0.5D) & 3; + int l = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + if (player.isSneaking()) { + if (var6 == 1) { + te.setFacing((short) 0); + } else if (var6 == 3) { + te.setFacing((short) 1); + } else { + + switch (l) { + case 0: + te.setFacing((short) 3); + break; + + case 1: + te.setFacing((short) 4); + break; + + case 2: + te.setFacing((short) 2); + break; + + case 3: + te.setFacing((short) 5); + } + } + } else { + if (var6 == 1) { + te.setFacing((short) 1); + } else if (var6 == 3) { + te.setFacing((short) 0); + } else { + + switch (l) { + case 0: + te.setFacing((short) 2); + break; + + case 1: + te.setFacing((short) 5); + break; + + case 2: + te.setFacing((short) 3); + break; + + case 3: + te.setFacing((short) 4); + } + } + } + } + } + + world.playSoundEffect(x + 0.5F, y + 0.5F, z + 0.5F, "step.stone", 1.0F, 0.8F); + --par1ItemStack.stackSize; + } + + return true; + } else { + return false; } - - @Override - @SideOnly(Side.CLIENT) - public CreativeTabs getCreativeTab() - { - return this.field_150939_a.getCreativeTabToDisplayOn(); - } - + } + @Override - public String getUnlocalizedName(ItemStack stack) - { - if(!nameMap.isEmpty() && nameMap.containsKey(stack.getItemDamage())) - { + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister par1IconRegister) { + this.itemIcon = par1IconRegister.registerIcon(IHLModInfo.MODID + ":sackItem"); + } + + public Block getBlockContained() { + return this.field_150939_a; + } + + @Override + @SideOnly(Side.CLIENT) + public CreativeTabs getCreativeTab() { + return this.field_150939_a.getCreativeTabToDisplayOn(); + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + if (!nameMap.isEmpty() && nameMap.containsKey(stack.getItemDamage())) { return nameMap.get(stack.getItemDamage()); - } - else - { + } else { return this.field_150939_a.getUnlocalizedName(); } } - @SuppressWarnings({ "rawtypes", "unchecked" }) + @SuppressWarnings({ "rawtypes", "unchecked" }) @Override - public void addInformation(ItemStack itemStack, EntityPlayer player, List info, boolean flag) - { - if(itemStack.stackTagCompound!=null && itemStack.stackTagCompound.hasKey("resultSuffix")) - { - String result_suffix = itemStack.stackTagCompound.getString("resultSuffix"); - if(StatCollector.canTranslate("ihl."+result_suffix)) - { - result_suffix = StatCollector.translateToLocal("ihl."+result_suffix); - } - info.add(StatCollector.translateToLocal("result_of_molding")+result_suffix); - if(itemStack.stackTagCompound.hasKey("isContainStearin") && itemStack.stackTagCompound.getBoolean("isContainStearin")) - { - info.add(StatCollector.translateToLocal("ihl.tooltip.step")+" 1: "+StatCollector.translateToLocal("remove_wax_using_muffle_furnace")); - info.add(StatCollector.translateToLocal("ihl.tooltip.step")+" 2: "+StatCollector.translateToLocal("fill_from_top_with_molten_metal")); - info.add(StatCollector.translateToLocal("ihl.tooltip.step")+" 3: "+StatCollector.translateToLocal("wait_for_10_seconds")); - info.add(StatCollector.translateToLocal("ihl.tooltip.step")+" 4: "+StatCollector.translateToLocal("destroy_mold_to_get_results")); - - } - else - { - info.add(StatCollector.translateToLocal("ihl.tooltip.step")+" 1: "+StatCollector.translateToLocal("fill_from_top_with_molten_metal")); - info.add(StatCollector.translateToLocal("ihl.tooltip.step")+" 2: "+StatCollector.translateToLocal("wait_for_10_seconds")); - info.add(StatCollector.translateToLocal("ihl.tooltip.step")+" 3: "+StatCollector.translateToLocal("destroy_mold_to_get_results")); - } - if(itemStack.stackTagCompound.hasKey("detonator_delay")) - { - info.add(StatCollector.translateToLocal("ihl.detonator_delay")+" "+itemStack.stackTagCompound.getInteger("detonator_delay")+StatCollector.translateToLocal("ihl.seconds")); - } - } - } + public void addInformation(ItemStack itemStack, EntityPlayer player, List info, boolean flag) { + if (itemStack.stackTagCompound != null) { + if (itemStack.stackTagCompound.hasKey("resultSuffix")) { + String result_suffix = itemStack.stackTagCompound.getString("resultSuffix"); + if (StatCollector.canTranslate("ihl." + result_suffix)) { + result_suffix = StatCollector.translateToLocal("ihl." + result_suffix); + } + info.add(StatCollector.translateToLocal("result_of_molding") + result_suffix); + if (itemStack.stackTagCompound.hasKey("isContainStearin") + && itemStack.stackTagCompound.getBoolean("isContainStearin")) { + info.add(StatCollector.translateToLocal("ihl.tooltip.step") + " 1: " + + StatCollector.translateToLocal("remove_wax_using_muffle_furnace")); + info.add(StatCollector.translateToLocal("ihl.tooltip.step") + " 2: " + + StatCollector.translateToLocal("fill_from_top_with_molten_metal")); + info.add(StatCollector.translateToLocal("ihl.tooltip.step") + " 3: " + + StatCollector.translateToLocal("wait_for_10_seconds")); + info.add(StatCollector.translateToLocal("ihl.tooltip.step") + " 4: " + + StatCollector.translateToLocal("destroy_mold_to_get_results")); + + } else { + info.add(StatCollector.translateToLocal("ihl.tooltip.step") + " 1: " + + StatCollector.translateToLocal("fill_from_top_with_molten_metal")); + info.add(StatCollector.translateToLocal("ihl.tooltip.step") + " 2: " + + StatCollector.translateToLocal("wait_for_10_seconds")); + info.add(StatCollector.translateToLocal("ihl.tooltip.step") + " 3: " + + StatCollector.translateToLocal("destroy_mold_to_get_results")); + } + + } + if (itemStack.stackTagCompound.hasKey("detonator_delay")) { + info.add(StatCollector.translateToLocal("ihl.detonator_delay") + " " + + itemStack.stackTagCompound.getInteger("detonator_delay") + " " + + StatCollector.translateToLocal("ihl.seconds")); + } + if (itemStack.stackTagCompound.hasKey("explosionPower")) { + info.add(StatCollector.translateToLocal("ihl.explosionPower") + " " + + itemStack.stackTagCompound.getInteger("explosionPower") + " " + + StatCollector.translateToLocal("ihl.mTNT")); + } + } + } } diff --git a/ihl/items_blocks/IHLTool.java b/ihl/items_blocks/IHLTool.java index 4e51b5b..4a4c662 100644 --- a/ihl/items_blocks/IHLTool.java +++ b/ihl/items_blocks/IHLTool.java @@ -33,7 +33,6 @@ import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import ic2.api.reactor.IReactor; -import ic2.core.Ic2Items; import ihl.IHLCreativeTab; import ihl.IHLModInfo; import ihl.flexible_cable.SetOfDiesMiniGUI; @@ -119,14 +118,6 @@ public class IHLTool extends Item implements IItemHasMiniGUI{ public static void init() { - if(IHLUtils.getFirstOreDictName(Ic2Items.bronzeAxe).equals("")) - { - OreDictionary.registerOre("craftingToolAxe", Ic2Items.bronzeAxe.getItem()); - } - if(IHLUtils.getFirstOreDictName(Ic2Items.bronzePickaxe).equals("")) - { - OreDictionary.registerOre("craftingToolPickaxe", Ic2Items.bronzePickaxe.getItem()); - } IHLTool item = new IHLTool(); GameRegistry.registerItem(item,item.getUnlocalizedName()); Type[] var1 = Type.values(); diff --git a/ihl/items_blocks/ItemSubstance.java b/ihl/items_blocks/ItemSubstance.java index 7404a54..30ef694 100644 --- a/ihl/items_blocks/ItemSubstance.java +++ b/ihl/items_blocks/ItemSubstance.java @@ -271,8 +271,6 @@ public class ItemSubstance extends Item implements IItemHasMiniGUI { CrushedPurifiedCinnabar(109, "crushedPurifiedCinnabar", true, "HgS"), CrushedCinnabar(108, "crushedCinnabar", true, "HgS"), OvenRawPorcelain(107, "ovenRawPorcelain"), - PrecipitatorCondenserRawPorcelain(106, "precipitatorCondenserRawPorcelain"), - ChimneyKneeRawPorcelain(105, "chimneyKneeRawPorcelain"), TungstenDust(104, "dustTungsten", true, "W"), ElectrolysisBathPorcelain(103, "electrolysisBathPorcelain"), ElectrolysisBathRawPorcelain(102, "electrolysisBathRawPorcelain"), diff --git a/ihl/items_blocks/MachineBaseBlock.java b/ihl/items_blocks/MachineBaseBlock.java index 80bcd5a..a2d2a98 100644 --- a/ihl/items_blocks/MachineBaseBlock.java +++ b/ihl/items_blocks/MachineBaseBlock.java @@ -20,12 +20,10 @@ import ihl.processing.chemistry.FractionatorBottomTileEntity; import ihl.processing.chemistry.FractionatorCoverTileEntity; import ihl.processing.chemistry.FractionatorSectionTileEntity; import ihl.processing.chemistry.GaedesMercuryRotaryPumpTileEntity; -import ihl.processing.chemistry.GoldChimneyKneeTileEntity; import ihl.processing.chemistry.LabElectrolyzerTileEntity; import ihl.processing.chemistry.LeadOvenTileEntity; import ihl.processing.chemistry.LoomTileEntity; import ihl.processing.chemistry.PaperMachineTileEntity; -import ihl.processing.chemistry.PrecipitatorCondenserTileEntity; import ihl.processing.chemistry.RefluxCondenserTileEntity; import ihl.processing.metallurgy.AchesonFurnanceTileEntity; import ihl.processing.metallurgy.CoilerTileEntity; @@ -93,28 +91,8 @@ public class MachineBaseBlock extends Block implements ITileEntityProvider{ textureFrontMachineCasing, textureFrontPaperMachine, textureBackMachineCasing, - frequencyGeneratorBack, - frequencyGeneratorBottom, - frequencyGeneratorFront, - frequencyGeneratorLeft, - frequencyGeneratorRight, - frequencyGeneratorTop, bronzeTubTop, bronzeTubSide, - glassBoxTop, - glassBoxSide, - glassBoxBottom, - glassBoxInnerSide, - glassBoxInnerBottom, - vacuumInductionMeltingFurnaceFront, - vacuumInductionMeltingFurnaceBack, - vacuumInductionMeltingFurnaceLeft, - vacuumInductionMeltingFurnaceRight, - hydrotransportPulpRegeneratorFront, - hydrotransportPulpRegeneratorBack, - redstoneSignalConverterEmitterSide, - redstoneSignalConverterEmptySide, - redstoneSignalConverterSensorSide, steel, redPaint, greenPaint, @@ -286,28 +264,8 @@ public class MachineBaseBlock extends Block implements ITileEntityProvider{ this.textureBackCryogenicDistiller = par1IconRegister.registerIcon(IHLModInfo.MODID + ":cryogenicDistillerInputSide"); this.textureFrontChemicalReactor = par1IconRegister.registerIcon(IHLModInfo.MODID + ":chemicalReactorOutputSide"); this.textureFrontPaperMachine = par1IconRegister.registerIcon(IHLModInfo.MODID + ":paperMachineFront"); - this.frequencyGeneratorBack = par1IconRegister.registerIcon(IHLModInfo.MODID + ":frequencyGeneratorBack"); - this.frequencyGeneratorFront = par1IconRegister.registerIcon(IHLModInfo.MODID + ":frequencyGeneratorFront"); - this.frequencyGeneratorTop = par1IconRegister.registerIcon(IHLModInfo.MODID + ":frequencyGeneratorTop"); - this.frequencyGeneratorLeft = par1IconRegister.registerIcon(IHLModInfo.MODID + ":frequencyGeneratorLeft"); - this.frequencyGeneratorRight = par1IconRegister.registerIcon(IHLModInfo.MODID + ":frequencyGeneratorRight"); - this.frequencyGeneratorBottom = par1IconRegister.registerIcon(IHLModInfo.MODID + ":frequencyGeneratorBottom"); this.bronzeTubTop = par1IconRegister.registerIcon(IHLModInfo.MODID + ":tubBronzeTop"); this.bronzeTubSide = par1IconRegister.registerIcon(IHLModInfo.MODID + ":tubBronzeSide"); - this.glassBoxBottom = par1IconRegister.registerIcon(IHLModInfo.MODID + ":glassBoxBottom"); - this.glassBoxInnerBottom = par1IconRegister.registerIcon(IHLModInfo.MODID + ":glassBoxInnerBottom"); - this.glassBoxInnerSide = par1IconRegister.registerIcon(IHLModInfo.MODID + ":glassBoxInnerSide"); - this.glassBoxSide = par1IconRegister.registerIcon(IHLModInfo.MODID + ":glassBoxSide"); - this.glassBoxTop = par1IconRegister.registerIcon(IHLModInfo.MODID + ":glassBoxTop"); - this.vacuumInductionMeltingFurnaceFront = par1IconRegister.registerIcon(IHLModInfo.MODID + ":vacuumInductionMeltingFurnaceFront"); - this.vacuumInductionMeltingFurnaceBack = par1IconRegister.registerIcon(IHLModInfo.MODID + ":vacuumInductionMeltingFurnaceBack"); - this.vacuumInductionMeltingFurnaceLeft = par1IconRegister.registerIcon(IHLModInfo.MODID + ":vacuumInductionMeltingFurnaceLeft"); - this.vacuumInductionMeltingFurnaceRight = par1IconRegister.registerIcon(IHLModInfo.MODID + ":vacuumInductionMeltingFurnaceRight"); - this.hydrotransportPulpRegeneratorFront = par1IconRegister.registerIcon(IHLModInfo.MODID + ":hydrotransportPulpRegeneratorFront"); - this.hydrotransportPulpRegeneratorBack = par1IconRegister.registerIcon(IHLModInfo.MODID + ":hydrotransportPulpRegeneratorBack"); - this.redstoneSignalConverterEmitterSide = par1IconRegister.registerIcon(IHLModInfo.MODID + ":redstoneSignalConverterEmitterSide"); - this.redstoneSignalConverterEmptySide = par1IconRegister.registerIcon(IHLModInfo.MODID + ":redstoneSignalConverterEmptySide"); - this.redstoneSignalConverterSensorSide = par1IconRegister.registerIcon(IHLModInfo.MODID + ":redstoneSignalConverterSensorSide"); this.steel = par1IconRegister.registerIcon(IHLModInfo.MODID + ":steel"); this.redPaint = par1IconRegister.registerIcon(IHLModInfo.MODID + ":redPaint"); this.greenPaint = par1IconRegister.registerIcon(IHLModInfo.MODID + ":greenPaint"); @@ -647,8 +605,6 @@ public class MachineBaseBlock extends Block implements ITileEntityProvider{ Coiler("coiler",CoilerTileEntity.class, false, new ItemStack(Items.stick)), Lathe1("lathePart1",LathePart1TileEntity.class, false, IHLUtils.getThisModItemStack("stickSteel")), Lathe2("lathePart2",LathePart2TileEntity.class, false, IHLUtils.getOreDictItemStack("plateSteel")), - PrecipitatorCondenser("goldPrecipitatorCondenser",PrecipitatorCondenserTileEntity.class, false, IHLUtils.getThisModItemStack("dustPorcelain")), - GoldChimneyKnee("goldChimneyKnee",GoldChimneyKneeTileEntity.class, false, IHLUtils.getThisModItemStack("dustPorcelain")), LeadOven("leadOven",LeadOvenTileEntity.class, true, IHLUtils.getThisModItemStack("dustPorcelain")), DetonationSprayingMachine("cannonBronze",DetonationSprayingMachineTileEntity.class, false, new ItemStack(Items.stick)), BronzeTub("tubBronze",ImpregnatingMachineTileEntity.class, false, true, null), diff --git a/ihl/model/FlexibleCableItemRender.java b/ihl/model/FlexibleCableItemRender.java index 02fc5f7..71a8337 100644 --- a/ihl/model/FlexibleCableItemRender.java +++ b/ihl/model/FlexibleCableItemRender.java @@ -109,11 +109,7 @@ public class FlexibleCableItemRender implements IItemRenderer { GL11.glRotatef(360f / this.segmentsAmount, 1f, 0f, 0f); GL11.glTranslatef(0.004f, 0f, 0f); GL11.glRotatef(spiralStepAngle, 0f, 0f, 1f); - if (((FlexibleCableItem) stack.getItem()).isDataCable) { - GL11.glColor3f(1f, 0.2f, 0f); - } else { - GL11.glColor3f(1f, 1f, 1f); - } + GL11.glColor3f(1f, 1f, 1f); if (i == 0) { if (isNoInsulation(stack)) { if (FlexibleCableItem.instance.yellowColoredWires @@ -163,9 +159,7 @@ public class FlexibleCableItemRender implements IItemRenderer { } private int getCableType(ItemStack stack) { - if (((FlexibleCableItem) stack.getItem()).isDataCable) { - return 3; - } else if (isNoInsulation(stack)) { + if (isNoInsulation(stack)) { if (FlexibleCableItem.instance.yellowColoredWires.contains(FlexibleCableItem.instance.getMaterial(stack))) { return 1; } else { @@ -176,7 +170,6 @@ public class FlexibleCableItemRender implements IItemRenderer { } private boolean isNoInsulation(ItemStack stack) { - return stack.stackTagCompound != null && FlexibleCableItem.instance.getInsulationMaterial(stack).equals("null") - && !((FlexibleCableItem) stack.getItem()).isDataCable; + return stack.stackTagCompound != null && FlexibleCableItem.instance.getInsulationMaterial(stack).equals("null"); } } \ No newline at end of file diff --git a/ihl/model/MultiMetaBlockRender.java b/ihl/model/MultiMetaBlockRender.java deleted file mode 100644 index c995989..0000000 --- a/ihl/model/MultiMetaBlockRender.java +++ /dev/null @@ -1,76 +0,0 @@ -package ihl.model; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.world.IBlockAccess; -import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; -import cpw.mods.fml.client.registry.RenderingRegistry; - -public class MultiMetaBlockRender implements ISimpleBlockRenderingHandler -{ - public final static int renderId = RenderingRegistry.getNextAvailableRenderId(); - - @Override - public int getRenderId() - { - return renderId; - } - - @Override - public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderblocks) - { - Tessellator tessellator = Tessellator.instance; - block.setBlockBoundsForItemRender(); - renderblocks.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); - renderblocks.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderblocks.getBlockIconFromSideAndMetadata(block, 0, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(0.0F, 1.0F, 0.0F); - renderblocks.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderblocks.getBlockIconFromSideAndMetadata(block, 1, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(0.0F, 0.0F, -1.0F); - renderblocks.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderblocks.getBlockIconFromSideAndMetadata(block, 2, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(0.0F, 0.0F, 1.0F); - renderblocks.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderblocks.getBlockIconFromSideAndMetadata(block, 3, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(-1.0F, 0.0F, 0.0F); - renderblocks.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderblocks.getBlockIconFromSideAndMetadata(block, 4, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(1.0F, 0.0F, 0.0F); - renderblocks.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderblocks.getBlockIconFromSideAndMetadata(block, 5, metadata)); - tessellator.draw(); - GL11.glTranslatef(0.5F, 0.5F, 0.5F); - } - - @Override - public boolean renderWorldBlock(IBlockAccess blockAccess, int x, int y, int z, Block block, int meta, RenderBlocks blockRenderer) - { - blockRenderer.renderStandardBlock(block, x, y, z); - Tessellator var5 = Tessellator.instance; - var5.setBrightness(block.getMixedBrightnessForBlock(blockAccess, x, y, z)); - int var6 = block.colorMultiplier(blockAccess, x, y, z); - float var7 = (var6 >> 16 & 255) / 255.0F; - float var8 = (var6 >> 8 & 255) / 255.0F; - float var9 = (var6 & 255) / 255.0F; - var5.setColorOpaque_F(var7, var8, var9); - return true; - } - - @Override - public boolean shouldRender3DInInventory(int arg0) - { - return true; - } -} diff --git a/ihl/model/RenderBlocksExt.java b/ihl/model/RenderBlocksExt.java new file mode 100644 index 0000000..6415059 --- /dev/null +++ b/ihl/model/RenderBlocksExt.java @@ -0,0 +1,67 @@ +package ihl.model; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; + +public class RenderBlocksExt extends RenderBlocks { + + public RenderBlocksExt(IBlockAccess blockAccess) { + super(blockAccess); + } + + @Override + public void renderFaceYNeg(Block block, double x, double y, double z, IIcon icon) + { + this.brightnessTopLeft=16711935; + this.brightnessTopRight=16711935; + super.renderFaceYNeg(block,x,y,z,icon); + } + + public void renderFaceYPos(Block block, double x, double y, double z, IIcon icon) + { + if (this.enableAO) + { + System.out.println("AO is on"); + } + else + { + System.out.println("AO is off"); + } + + this.brightnessTopLeft=16711935; + this.brightnessTopRight=16711935; + super.renderFaceYPos(block, x, y, z, icon); + } + + public void renderFaceZNeg(Block block, double x, double y, double z, IIcon icon) + { + this.brightnessTopLeft=16711935; + this.brightnessTopRight=16711935; + super.renderFaceZNeg(block, x, y, z, icon); + } + + public void renderFaceZPos(Block block, double x, double y, double z, IIcon icon) + { + this.brightnessTopLeft=16711935; + this.brightnessTopRight=16711935; + super.renderFaceZPos(block, x, y, z, icon); + } + + public void renderFaceXNeg(Block block, double x, double y, double z, IIcon icon) + { + this.brightnessTopLeft=16711935; + this.brightnessTopRight=16711935; + super.renderFaceXNeg(block, x, y, z, icon); + } + + public void renderFaceXPos(Block block, double x, double y, double z, IIcon icon) + { + this.brightnessTopLeft=16711935; + this.brightnessTopRight=16711935; + super.renderFaceXPos(block, x, y, z, icon); + } + + +} diff --git a/ihl/nei_integration/AchesonFurnaceRecipeHandler.java b/ihl/nei_integration/AchesonFurnaceRecipeHandler.java index 8571f3a..f359c1c 100644 --- a/ihl/nei_integration/AchesonFurnaceRecipeHandler.java +++ b/ihl/nei_integration/AchesonFurnaceRecipeHandler.java @@ -1,17 +1,12 @@ package ihl.nei_integration; import java.awt.Rectangle; -import java.util.ArrayList; -import java.util.List; import java.util.Map; -import codechicken.nei.PositionedStack; import ihl.processing.metallurgy.AchesonFurnaceGui; import ihl.processing.metallurgy.AchesonFurnanceTileEntity; -import ihl.recipes.RecipeInputOreDictionaryList; import ihl.recipes.UniversalRecipeInput; import ihl.recipes.UniversalRecipeOutput; -import ihl.utils.IHLUtils; import net.minecraft.client.gui.inventory.GuiContainer; @@ -26,25 +21,25 @@ public class AchesonFurnaceRecipeHandler extends MachineRecipeHandler @Override protected int[] getInputPosX() { - return new int[]{34-5,34-5}; + return new int[]{40-5,40-5}; } @Override protected int[] getInputPosY() { - return new int[]{41-11,23-11}; + return new int[]{40-11,22-11}; } @Override protected int[] getOutputPosX() { - return new int[]{107-5,107-5}; + return new int[]{98-5}; } @Override protected int[] getOutputPosY() { - return new int[]{41-11,23-11}; + return new int[]{32-11}; } @Override @@ -62,13 +57,13 @@ public class AchesonFurnaceRecipeHandler extends MachineRecipeHandler @Override public String getGuiTexture() { - return "ihl:textures/gui/GUIAchesonFurnaceNEI.png"; + return "ihl:textures/gui/GUIAchesonFurnace.png"; } @Override public void loadTransferRects() { - this.transferRects.add(new RecipeTransferRect(new Rectangle(40-5, 55-11, 90, 30), this.getRecipeId(), new Object[0])); + this.transferRects.add(new RecipeTransferRect(new Rectangle(57-5, 29-11, 40, 30), this.getRecipeId(), new Object[0])); } @Override @@ -82,17 +77,4 @@ public class AchesonFurnaceRecipeHandler extends MachineRecipeHandler { return AchesonFurnanceTileEntity.getRecipes(); } - - @Override - public List getAdditionalIngredients() - { - List ps = new ArrayList(); - RecipeInputOreDictionaryList ari = new RecipeInputOreDictionaryList(new String[] {"stickCoal","stickGraphite"}); - ps.add(new PositionedStack(ari.getInputs(),16-5,41-11)); - ps.add(new PositionedStack(ari.getInputs(),52-5,41-11)); - ps.add(new PositionedStack(IHLUtils.getOreDictItemStack("stickGraphite"),89-5,41-11)); - ps.add(new PositionedStack(IHLUtils.getOreDictItemStack("stickGraphite"),125-5,41-11)); - return ps; - } - } diff --git a/ihl/nei_integration/ChimneyKneeRecipeHandler.java b/ihl/nei_integration/ChimneyKneeRecipeHandler.java deleted file mode 100644 index d60c251..0000000 --- a/ihl/nei_integration/ChimneyKneeRecipeHandler.java +++ /dev/null @@ -1,73 +0,0 @@ -package ihl.nei_integration; - -import java.util.Map; - -import ihl.processing.chemistry.GoldChimneyKneeTileEntity; -import ihl.recipes.UniversalRecipeInput; -import ihl.recipes.UniversalRecipeOutput; -import net.minecraft.client.gui.inventory.GuiContainer; - - -public class ChimneyKneeRecipeHandler extends MachineRecipeHandler -{ - @Override - public Class getGuiClass() - { - return null; - } - - @Override - protected int[] getInputPosX() - { - return new int[]{6-5,6-5,106-5}; - } - - @Override - protected int[] getInputPosY() - { - return new int[]{33-11,53-11}; - } - - @Override - protected int[] getOutputPosX() - { - return new int[]{96-5}; - } - - @Override - protected int[] getOutputPosY() - { - return new int[]{35-11,31-11}; - } - - - @Override - public String getRecipeName() - { - return "Chimney knee"; - } - - @Override - public String getRecipeId() - { - return "ihl.chimneyKnee"; - } - - @Override - public String getGuiTexture() - { - return "ihl:textures/gui/GUIChimneyKneeNEI.png"; - } - - @Override - public String getOverlayIdentifier() - { - return "chimneyKnee"; - } - - @Override - public Map getRecipeList() - { - return GoldChimneyKneeTileEntity.getRecipes(); - } -} diff --git a/ihl/nei_integration/LeadOvenRecipeHandler.java b/ihl/nei_integration/LeadOvenRecipeHandler.java index 5c43f9e..5c376fd 100644 --- a/ihl/nei_integration/LeadOvenRecipeHandler.java +++ b/ihl/nei_integration/LeadOvenRecipeHandler.java @@ -3,98 +3,86 @@ package ihl.nei_integration; import java.awt.Rectangle; import java.util.Map; -import codechicken.lib.gui.GuiDraw; import ihl.processing.chemistry.LeadOvenGui; import ihl.processing.chemistry.LeadOvenTileEntity; import ihl.recipes.UniversalRecipeInput; import ihl.recipes.UniversalRecipeOutput; import net.minecraft.client.gui.inventory.GuiContainer; +public class LeadOvenRecipeHandler extends MachineRecipeHandler { + @Override + public Class getGuiClass() { + return LeadOvenGui.class; + } -public class LeadOvenRecipeHandler extends MachineRecipeHandler -{ - @Override - public Class getGuiClass() - { - return LeadOvenGui.class; - } - - @Override - protected int[] getInputPosX() - { - return new int[]{47-5,65-5}; - } - - @Override - protected int[] getInputPosY() - { - return new int[]{17-11}; - } - - @Override - protected int[] getOutputPosX() - { - return new int[]{112-5}; - } - - @Override - protected int[] getOutputPosY() - { - return new int[]{35-11}; - } - - @Override - protected int[] getFluidOutputPosX() - { - return new int[]{112-5}; - } - - @Override - protected int[] getFluidOutputPosY() - { - return new int[]{17-11}; - } - - @Override - public String getRecipeName() - { - return "Chemically resistant oven"; - } - - @Override - public String getRecipeId() - { - return "ihl.leadOven"; - } - - @Override - public String getGuiTexture() - { - return "ihl:textures/gui/GUILeadOven.png"; - } - - @Override - public String getOverlayIdentifier() - { - return "leadOven"; - } - - @Override - public void drawBackground(int i) - { - super.drawBackground(i); - GuiDraw.drawTexturedModalRect(107-5, 16-11, 199, 0, 26, 18); - } - - @Override - public void loadTransferRects() - { - this.transferRects.add(new RecipeTransferRect(new Rectangle(80-10, 35-10, 22, 15), this.getRecipeId(), new Object[0])); - } - - @Override - public Map getRecipeList() - { - return LeadOvenTileEntity.getRecipes(); - } + @Override + protected int[] getInputPosX() { + return new int[] { 47 - 5, 65 - 5 }; + } + + @Override + protected int[] getInputPosY() { + return new int[] { 17 - 11 }; + } + + @Override + protected int[] getOutputPosX() { + return new int[] { 112 - 5 }; + } + + @Override + protected int[] getOutputPosY() { + return new int[] { 35 - 11 }; + } + + @Override + protected int[] getFluidOutputPosX() { + return new int[] { 9 - 5 }; + } + + @Override + protected int[] getFluidOutputPosY() { + return new int[] { 53 - 11 }; + } + + @Override + protected int[] getFluidInputPosX() { + return new int[] { 9 - 5 }; + } + + @Override + protected int[] getFluidInputPosY() { + return new int[] { 17 - 11 }; + } + + @Override + public String getRecipeName() { + return "Chemical oven"; + } + + @Override + public String getRecipeId() { + return "ihl.leadOven"; + } + + @Override + public String getGuiTexture() { + return "ihl:textures/gui/GUILeadOven.png"; + } + + @Override + public String getOverlayIdentifier() { + return "leadOven"; + } + + @Override + public void loadTransferRects() { + this.transferRects.add( + new RecipeTransferRect(new Rectangle(80 - 10, 35 - 10, 22, 15), this.getRecipeId(), new Object[0])); + } + + @Override + public Map getRecipeList() { + return LeadOvenTileEntity.getRecipes(); + } } diff --git a/ihl/nei_integration/MuffleFurnaceRecipeHandler.java b/ihl/nei_integration/MuffleFurnaceRecipeHandler.java index 46ba9a7..bd57d64 100644 --- a/ihl/nei_integration/MuffleFurnaceRecipeHandler.java +++ b/ihl/nei_integration/MuffleFurnaceRecipeHandler.java @@ -22,25 +22,25 @@ public class MuffleFurnaceRecipeHandler extends MachineRecipeHandler @Override protected int[] getInputPosX() { - return new int[]{51-5,69-5}; + return new int[]{40-5,40-5}; } @Override protected int[] getInputPosY() { - return new int[]{34-11}; + return new int[]{40-11,22-11}; } @Override protected int[] getOutputPosX() { - return new int[]{105-5,123-5}; + return new int[]{98-5}; } - + @Override protected int[] getOutputPosY() { - return new int[]{34-11}; + return new int[]{32-11}; } @Override @@ -58,7 +58,7 @@ public class MuffleFurnaceRecipeHandler extends MachineRecipeHandler @Override public String getGuiTexture() { - return "ihl:textures/gui/GUIMuffleFurnace.png"; + return "ihl:textures/gui/GUIAchesonFurnace.png"; } @Override @@ -70,7 +70,7 @@ public class MuffleFurnaceRecipeHandler extends MachineRecipeHandler @Override public void loadTransferRects() { - this.transferRects.add(new RecipeTransferRect(new Rectangle(40-5, 55-11, 55, 15), this.getRecipeId(), new Object[0])); + this.transferRects.add(new RecipeTransferRect(new Rectangle(57-5, 29-11, 40, 30), this.getRecipeId(), new Object[0])); } diff --git a/ihl/nei_integration/NEIIHLConfig.java b/ihl/nei_integration/NEIIHLConfig.java index 288ab24..8047b27 100644 --- a/ihl/nei_integration/NEIIHLConfig.java +++ b/ihl/nei_integration/NEIIHLConfig.java @@ -95,10 +95,6 @@ public class NEIIHLConfig implements IConfigureNEI API.registerUsageHandler(new CrucibleRecipeHandler()); API.registerRecipeHandler(new FractionationColumnRecipeHandler()); API.registerUsageHandler(new FractionationColumnRecipeHandler()); - API.registerRecipeHandler(new ChimneyKneeRecipeHandler()); - API.registerUsageHandler(new ChimneyKneeRecipeHandler()); - API.registerRecipeHandler(new PrecipitatorCondenserRecipeHandler()); - API.registerUsageHandler(new PrecipitatorCondenserRecipeHandler()); API.registerRecipeHandler(new IronWorkbenchRecipeHandler()); API.registerUsageHandler(new IronWorkbenchRecipeHandler()); this.addSubsets(); diff --git a/ihl/nei_integration/PrecipitatorCondenserRecipeHandler.java b/ihl/nei_integration/PrecipitatorCondenserRecipeHandler.java deleted file mode 100644 index 1b771fc..0000000 --- a/ihl/nei_integration/PrecipitatorCondenserRecipeHandler.java +++ /dev/null @@ -1,67 +0,0 @@ -package ihl.nei_integration; - -import java.awt.Rectangle; -import java.util.Map; - -import ihl.processing.chemistry.PrecipitatorCondenserTileEntity; -import ihl.recipes.UniversalRecipeInput; -import ihl.recipes.UniversalRecipeOutput; -import net.minecraft.client.gui.inventory.GuiContainer; - -public class PrecipitatorCondenserRecipeHandler extends MachineRecipeHandler { - @Override - public Class getGuiClass() { - return null; - } - - @Override - protected int[] getInputPosX() { - return new int[] { 6 - 5, 6 - 5, 106 - 5 }; - } - - @Override - protected int[] getInputPosY() { - return new int[] { 33 - 11, 53 - 11 }; - } - - @Override - protected int[] getOutputPosX() { - return new int[] { 75 - 5 }; - } - - @Override - protected int[] getOutputPosY() { - return new int[] { 53 - 11, 31 - 11 }; - } - - @Override - public String getRecipeName() { - return "Precipitator/Condenser"; - } - - @Override - public String getRecipeId() { - return "ihl.precipitatorCondenser"; - } - - @Override - public String getGuiTexture() { - return "ihl:textures/gui/GUICondenserNEI.png"; - } - - @Override - public String getOverlayIdentifier() { - return "condenser"; - } - - @Override - public void loadTransferRects() { - this.transferRects - .add(new RecipeTransferRect(new Rectangle(23 - 5, 10 - 10, 50, 58), this.getRecipeId(), new Object[0])); - } - - @Override - public Map getRecipeList() { - return PrecipitatorCondenserTileEntity.getRecipes(); - } -} diff --git a/ihl/processing/chemistry/AbsorberCoolerModel.java b/ihl/processing/chemistry/AbsorberCoolerModel.java deleted file mode 100644 index 7dac4c9..0000000 --- a/ihl/processing/chemistry/AbsorberCoolerModel.java +++ /dev/null @@ -1,78 +0,0 @@ -package ihl.processing.chemistry; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; - -public class AbsorberCoolerModel extends ModelBase -{ - //fields - ModelRenderer Base; - - public AbsorberCoolerModel() - { - textureWidth = 64; - textureHeight = 32; - setTextureOffset("Base.Shape1", 26, 0); - setTextureOffset("Base.Shape2", 0, 17); - setTextureOffset("Base.Shape4", 30, 16); - setTextureOffset("Base.Shape3", 0, 15); - setTextureOffset("Base.Shape5", 2, 12); - setTextureOffset("Base.Shape6", 0, 2); - setTextureOffset("Base.Shape7", 24, 4); - setTextureOffset("Base.Shape8", 50, 0); - setTextureOffset("Base.Shape9", 0, 0); - setTextureOffset("Base.Shape10", 0, 0); - setTextureOffset("Base.Shape11", 0, 0); - setTextureOffset("Base.Shape12", 0, 0); - setTextureOffset("Base.Shape13", 0, 0); - setTextureOffset("Base.Shape14", 0, 0); - setTextureOffset("Base.Shape15", 0, 0); - setTextureOffset("Base.Shape16", 0, 0); - setTextureOffset("Base.Shape17", 0, 0); - setTextureOffset("Base.Shape18", 0, 0); - setTextureOffset("Base.Shape19", 0, 0); - setTextureOffset("Base.Shape20", 0, 0); - setTextureOffset("Base.Shape21", 0, 0); - setTextureOffset("Base.Shape22", 0, 0); - setTextureOffset("Base.Shape23", 0, 24); - setTextureOffset("Base.Shape24", 7, 12); - setTextureOffset("Base.Shape25", 21, 8); - setTextureOffset("Base.Shape26", 12, 24); - setTextureOffset("Base.Shape27", 0, 0); - setTextureOffset("Base.Shape28", 0, 18); - setTextureOffset("Base.Shape29", 21, 0); - - Base = new ModelRenderer(this, "Base"); - Base.setRotationPoint(0F, 23F, 0F); - Base.mirror = true; - Base.addBox("Shape1", 6F, -14F, -7F, 1, 14, 14); - Base.addBox("Shape2", -7F, -1F, -8F, 14, 1, 1); - Base.addBox("Shape4", 6F, -14F, -8F, 1, 13, 1); - Base.addBox("Shape3", -7F, -1F, 7F, 14, 1, 1); - Base.addBox("Shape5", -7F, -15F, -8F, 6, 1, 16); - Base.addBox("Shape6", -7F, -14F, 7F, 1, 13, 1); - Base.addBox("Shape7", -7F, -14F, -7F, 1, 14, 14); - Base.addBox("Shape8", -7F, -14F, -8F, 1, 13, 1); - Base.addBox("Shape9", 1F, 0F, -8F, 7, 1, 16); - Base.addBox("Shape10", 6F, -14F, 7F, 1, 13, 1); - Base.addBox("Shape11", 3.5F, -13F, -7F, 1, 1, 14); - Base.addBox("Shape12", 1.5F, -13F, -7F, 1, 1, 14); - Base.addBox("Shape13", -2.5F, -13F, -7F, 1, 1, 14); - Base.addBox("Shape14", -4.5F, -13F, -7F, 1, 1, 14); - Base.addBox("Shape15", -0.5F, -13F, -7F, 1, 1, 14); - Base.addBox("Shape16", -6F, -12.5F, -1.5F, 12, 1, 1); - Base.addBox("Shape17", -6F, -12.5F, -3.5F, 12, 1, 1); - Base.addBox("Shape18", -6F, -12.5F, -5.5F, 12, 1, 1); - Base.addBox("Shape19", -6F, -12.5F, 0.5F, 12, 1, 1); - Base.addBox("Shape20", -6F, -12.5F, 2.5F, 12, 1, 1); - Base.addBox("Shape21", -6F, -12.5F, 4.5F, 12, 1, 1); - Base.addBox("Shape22", -6F, 9F, 7F, 12, 2, 1); - Base.addBox("Shape23", -6F, -14F, -8F, 12, 2, 1); - Base.addBox("Shape24", 1F, -15F, -8F, 6, 1, 16); - Base.addBox("Shape25", -1F, -15F, 1F, 2, 1, 7); - Base.addBox("Shape26", -1F, -15F, -8F, 2, 1, 7); - Base.addBox("Shape27", -8F, 0F, -8F, 7, 1, 16); - Base.addBox("Shape28", -1F, 0F, 1F, 2, 1, 7); - Base.addBox("Shape29", -1F, 0F, -8F, 2, 1, 7); - } -} diff --git a/ihl/processing/chemistry/ApparatusProcessableInvSlot.java b/ihl/processing/chemistry/ApparatusProcessableInvSlot.java index 3698160..84a931b 100644 --- a/ihl/processing/chemistry/ApparatusProcessableInvSlot.java +++ b/ihl/processing/chemistry/ApparatusProcessableInvSlot.java @@ -1,5 +1,6 @@ package ihl.processing.chemistry; +import ic2.api.recipe.IRecipeInput; import ic2.core.block.TileEntityInventory; import ic2.core.block.invslot.InvSlot; import java.util.ArrayList; @@ -10,57 +11,48 @@ import net.minecraft.item.ItemStack; public class ApparatusProcessableInvSlot extends InvSlot { - public ApparatusProcessableInvSlot(TileEntityInventory base1, String name1, - int oldStartIndex1, Access access1, int count, int stackSizeLimit1) { + public ApparatusProcessableInvSlot(TileEntityInventory base1, String name1, int oldStartIndex1, Access access1, + int count, int stackSizeLimit1) { super(base1, name1, oldStartIndex1, access1, count); this.setStackSizeLimit(stackSizeLimit1); } - - public List getItemStackList() - { + + public List getItemStackList() { List list = new ArrayList(); - for(int i=0; i { protected FluidizedBedReactorTileEntity tileEntity; - public int lastFluidAmount = -1; - public int lastNumberOfFluids = -1; + public int lastFluidsHash = -1; public short lastProgress = -1; public short lastTemperature = -1; public short lastEnergy = -1; @@ -53,7 +52,7 @@ public class FluidizedBedReactorContainer extends ContainerBase1000) { - this.input.consume(0,1); + this.input.consume(recipeInput.getItemInputs().get(0)); } } - if(recipeInput.getItemInputs().size()>1)this.input.consume(1, recipeInput.getItemInputs().get(1).getAmount()); + if(recipeInput.getItemInputs().size()>1)this.input.consume(recipeInput.getItemInputs().get(1)); if(output1.getFluidOutputs().size()>0)this.fluidTank.fill(output1.getFluidOutputs().get(0).copy(), true); if(output1.getFluidOutputs().size()>1)this.fluidTank.fill(output1.getFluidOutputs().get(1).copy(), true); if(!output1.getItemOutputs().isEmpty() && output1.getItemOutputs().get(0)!=null)this.outputSlot.add(output1.getItemOutputs()); diff --git a/ihl/processing/chemistry/FractionatorBottomTileEntity.java b/ihl/processing/chemistry/FractionatorBottomTileEntity.java index 20132e9..2f3b43f 100644 --- a/ihl/processing/chemistry/FractionatorBottomTileEntity.java +++ b/ihl/processing/chemistry/FractionatorBottomTileEntity.java @@ -113,7 +113,7 @@ public class FractionatorBottomTileEntity extends TileEntityInventory FluidStack fsCurrentInput = this.fluidTank.getFluid(); if(fsCurrentInput!=null && fsCurrentInput.amount>100 && systemHeat>0) { - UniversalRecipeOutput rOutput = FractionatorBottomTileEntity.recipeManager.getOutputFor(Arrays.asList(new FluidStack [] {this.fluidTank.getFluid()}),null, false, false); + UniversalRecipeOutput rOutput = FractionatorBottomTileEntity.recipeManager.getOutputFor(Arrays.asList(new FluidStack [] {this.fluidTank.getFluid()}),null); UniversalRecipeInput rInput = FractionatorBottomTileEntity.recipeManager.getRecipeInput(Arrays.asList(new FluidStack [] {this.fluidTank.getFluid()}),null); if(rOutput!=null) { diff --git a/ihl/processing/chemistry/GoldChimneyKneeModel.java b/ihl/processing/chemistry/GoldChimneyKneeModel.java deleted file mode 100644 index f98fe15..0000000 --- a/ihl/processing/chemistry/GoldChimneyKneeModel.java +++ /dev/null @@ -1,45 +0,0 @@ -package ihl.processing.chemistry; - -import ihl.model.IHLModelRenderer; -import net.minecraft.client.model.ModelBase; -import net.minecraftforge.common.util.ForgeDirection; - -public class GoldChimneyKneeModel extends ModelBase -{ - //fields - IHLModelRenderer Base; - - public GoldChimneyKneeModel() - { - textureWidth = 64; - textureHeight = 32; - setTextureOffset("Base.Shape1", 26, 0); - setTextureOffset("Base.Shape2", 0, 17); - setTextureOffset("Base.Shape4", 30, 16); - setTextureOffset("Base.Shape3", 0, 15); - setTextureOffset("Base.Shape5", 11, 12); - setTextureOffset("Base.Shape6", 9, 2); - setTextureOffset("Base.Shape7", 24, 7); - setTextureOffset("Base.Shape8", 50, 0); - setTextureOffset("Base.Shape9", 0, 0); - setTextureOffset("Base.Shape10", 6, 0); - setTextureOffset("Base.Shape11", 18, 0); - setTextureOffset("Base.Pipe", 0, 0); - - Base = new IHLModelRenderer(this, "Base"); - Base.setRotationPoint(0F, 23F, -6F); - Base.mirror = true; - Base.addBox("Shape1", 5F, -14F, 0F, 1, 15, 12, false); - Base.addBox("Shape2", -6F, -1F, 0F, 11, 2, 1, false); - Base.addBox("Shape4", 5F, -14F, -2F, 1, 13, 2, false); - Base.addBox("Shape3", -6F, -2F, -2F, 11, 1, 3, false); - Base.addBox("Shape5", -6F, -14F, -2F, 11, 1, 14, false); - Base.addBox("Shape6", -5F, -13F, 11F, 4, 14, 1, false); - Base.addBox("Shape7", -6F, -13F, 1F, 1, 14, 11, false); - Base.addBox("Shape8", -6F, -13F, -2F, 1, 11, 3, false); - Base.addBox("Shape9", 1F, -13F, 11F, 4, 14, 1, false); - Base.addBox("Shape10", -1F, -13F, 11F, 2, 4, 1, false); - Base.addBox("Shape11", -1F, -7F, 11F, 2, 8, 1, false); - Base.addTube("Pipe", -2F, -10F, 2F, 4, 4, 12, 0.5F, 1F,ForgeDirection.NORTH); - } -} diff --git a/ihl/processing/chemistry/GoldChimneyKneeRender.java b/ihl/processing/chemistry/GoldChimneyKneeRender.java deleted file mode 100644 index d862963..0000000 --- a/ihl/processing/chemistry/GoldChimneyKneeRender.java +++ /dev/null @@ -1,50 +0,0 @@ -package ihl.processing.chemistry; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; -import org.lwjgl.opengl.GL11; -import ihl.IHLModInfo; - -public class GoldChimneyKneeRender extends TileEntitySpecialRenderer{ -private GoldChimneyKneeModel model = new GoldChimneyKneeModel(); -private ResourceLocation tex = new ResourceLocation(IHLModInfo.MODID+":textures/blocks/porcelainBox.png"); - -public GoldChimneyKneeRender(){} - -public void renderAModelAt(GoldChimneyKneeTileEntity tile, double d, double d1, double d2, float f) { - int rotation = 0; - if(tile.getWorldObj() != null) - { - switch (tile.getFacing()) - { - case 2: - rotation = 0; - break; - case 5: - rotation = 1; - break; - case 3: - rotation = 2; - break; - case 4: - rotation = 3; - break; - default: - rotation = 0; - } - } - bindTexture(tex); //texture - GL11.glPushMatrix(); - GL11.glTranslatef((float)d + 0.5F, (float)d1 + 1.5F, (float)d2 + 0.5F); - GL11.glScalef(1.0F, -1F, -1F); - GL11.glRotatef(rotation*90, 0.0F, 1.0F, 0.0F); - model.Base.render(1.0F/16.0F); - GL11.glPopMatrix(); //end -} - - @Override - public void renderTileEntityAt(TileEntity par1TileEntity, double par2, double par4, double par6, float par8) - { - this.renderAModelAt((GoldChimneyKneeTileEntity)par1TileEntity, par2, par4, par6, par8); - } -} \ No newline at end of file diff --git a/ihl/processing/chemistry/GoldChimneyKneeTileEntity.java b/ihl/processing/chemistry/GoldChimneyKneeTileEntity.java deleted file mode 100644 index 34b3de2..0000000 --- a/ihl/processing/chemistry/GoldChimneyKneeTileEntity.java +++ /dev/null @@ -1,293 +0,0 @@ -package ihl.processing.chemistry; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; - -import ic2.api.network.INetworkDataProvider; -import ic2.api.tile.IWrenchable; -import ic2.core.IC2; -import ihl.recipes.UniversalRecipeInput; -import ihl.recipes.UniversalRecipeManager; -import ihl.recipes.UniversalRecipeOutput; -import ihl.utils.IHLFluidTank; -import ihl.utils.IHLUtils; -import ihl.worldgen.ores.IHLFluid; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -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.FluidTankInfo; -import net.minecraftforge.fluids.IFluidHandler; - -public class GoldChimneyKneeTileEntity extends TileEntity implements IWrenchable, INetworkDataProvider, IFluidHandler { - private short facing=2; - private short lastFacing=2; - private final IHLFluidTank gasBuffer = new IHLFluidTank(10000); - private final IHLFluidTank fluidTank = new IHLFluidTank(10000); - private static UniversalRecipeManager recipeManager = new UniversalRecipeManager("chimneyknee"); - - - public GoldChimneyKneeTileEntity() - { - super(); - } - - @Override - public boolean wrenchCanSetFacing(EntityPlayer entityPlayer, int side) { - return this.facing!=side; - } - - @Override - public short getFacing() - { - return facing; - } - - @Override - public List getNetworkedFields() - { - List fields = new ArrayList(); - fields.add("facing"); - return fields; - } - - @Override - public void updateEntity() - { - super.updateEntity(); - if(IC2.platform.isSimulating()) - { - if(this.facing!=this.lastFacing) - { - IC2.network.get().updateTileEntityField(this, "facing"); - this.lastFacing=this.facing; - } - if(this.fluidTank.getFluid()!=null && this.gasBuffer.getFluid()!=null) - { - if(this.getOutput()!=null) - { - List output = GoldChimneyKneeTileEntity.recipeManager.getOutputFor(getInput(), true, true).getFluidOutputs(); - if(output.size()>0) - { - this.fillOutputApparatus(getConnectDirection(),output.get(0), true); - } - } - } - if(this.fluidTank.getFluid()!=null) - { - if(this.fillOutputApparatus(getConnectDirection(),this.fluidTank.drain(this.fluidTank.getCapacity(), false), false)>0) - { - this.fillOutputApparatus(getConnectDirection(),this.fluidTank.drain(this.fluidTank.getCapacity(), true), true); - } - } - if(this.gasBuffer.getFluid()!=null) - { - if(this.fillOutputApparatus(getConnectDirection(),this.gasBuffer.drain(this.gasBuffer.getCapacity(), false), false)>0) - { - this.fillOutputApparatus(getConnectDirection(),this.gasBuffer.drain(this.gasBuffer.getCapacity(), true), true); - } - } - - } - } - - private int fillOutputApparatus(ForgeDirection direction,FluidStack fluidStack, boolean doFill) - { - TileEntity te = worldObj.getTileEntity(xCoord+mX(),yCoord, zCoord+mZ()); - if(te instanceof IFluidHandler) - { - return ((IFluidHandler)te).fill(direction, fluidStack, doFill); - } - else - { - return 0; - } - } - - @Override - public void setFacing(short facing1) - { - facing=(short) Math.max(2,facing1); - if(IC2.platform.isSimulating()) - { - IC2.network.get().updateTileEntityField(this, "facing"); - } - } - - @Override - public boolean wrenchCanRemove(EntityPlayer entityPlayer) - { - return true; - } - - @Override - public float getWrenchDropRate() - { - return 1F; - } - - @Override - public ItemStack getWrenchDrop(EntityPlayer entityPlayer) - { - return IHLUtils.getThisModItemStack("goldChimneyKnee"); - } - - @Override - public void writeToNBT(NBTTagCompound nbttagcompound) - { - super.writeToNBT(nbttagcompound); - nbttagcompound.setShort("facing",facing); - NBTTagCompound fluidTankTag = new NBTTagCompound(); - this.fluidTank.writeToNBT(fluidTankTag); - nbttagcompound.setTag("fluidTank", fluidTankTag); - - NBTTagCompound gasBufferTag = new NBTTagCompound(); - this.gasBuffer.writeToNBT(gasBufferTag); - nbttagcompound.setTag("gasBuffer", gasBufferTag); - - } - - @Override - public void readFromNBT(NBTTagCompound nbttagcompound) - { - super.readFromNBT(nbttagcompound); - facing=nbttagcompound.getShort("facing"); - this.fluidTank.readFromNBT(nbttagcompound.getCompoundTag("fluidTank")); - this.gasBuffer.readFromNBT(nbttagcompound.getCompoundTag("gasBuffer")); - } - - protected int mX() - { - switch(this.getFacing()) - { - case 4: - return 1; - case 5: - return -1; - default: - return 0; - } - } - - protected int mZ() - { - switch(this.getFacing()) - { - case 2: - return 1; - case 3: - return -1; - default: - return 0; - } - } - - public TileEntity getConnectedTileEntity() - { - return worldObj.getTileEntity(xCoord+mX(), yCoord, zCoord+mZ()); - } - - public ForgeDirection getConnectDirection() - { - switch(this.getFacing()) - { - case 2: - return ForgeDirection.NORTH; - case 3: - return ForgeDirection.SOUTH; - case 4: - return ForgeDirection.WEST; - case 5: - return ForgeDirection.EAST; - default: - return ForgeDirection.NORTH; - } - } - - @Override - public boolean canDrain(ForgeDirection arg0, Fluid arg1) - { - return false; - } - - @Override - public boolean canFill(ForgeDirection direction, Fluid fluid) - { - return fluid.isGaseous() && (direction==ForgeDirection.DOWN || direction==getConnectDirection()); - } - - @Override - public int fill(ForgeDirection direction, FluidStack fluidStack, boolean doFill) - { - if(direction==getConnectDirection() && fluidStack!=null && fluidStack.getFluid()!=null) - { - if(fluidStack.getFluid().isGaseous() && fluidStack.getFluid().getDensity() getRecipes() - { - return recipeManager.getRecipes(); - } -} diff --git a/ihl/processing/chemistry/LabElectrolyzerTileEntity.java b/ihl/processing/chemistry/LabElectrolyzerTileEntity.java index f8c00ad..11647d6 100644 --- a/ihl/processing/chemistry/LabElectrolyzerTileEntity.java +++ b/ihl/processing/chemistry/LabElectrolyzerTileEntity.java @@ -174,7 +174,7 @@ public class LabElectrolyzerTileEntity extends BasicElectricMotorTileEntity impl } public UniversalRecipeOutput getOutput() { - return LabElectrolyzerTileEntity.recipeManager.getOutputFor(this.getInput(), false, false); + return LabElectrolyzerTileEntity.recipeManager.getOutputFor(this.getInput()); } @SuppressWarnings({ "unchecked", "rawtypes" }) diff --git a/ihl/processing/chemistry/LeadOvenContainer.java b/ihl/processing/chemistry/LeadOvenContainer.java index c273623..2f0ff8a 100644 --- a/ihl/processing/chemistry/LeadOvenContainer.java +++ b/ihl/processing/chemistry/LeadOvenContainer.java @@ -1,78 +1,93 @@ package ihl.processing.chemistry; +import java.util.List; + import ic2.core.ContainerBase; +import ic2.core.IC2; import ic2.core.slot.SlotInvSlot; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ICrafting; import net.minecraft.inventory.Slot; +import net.minecraftforge.fluids.FluidStack; public class LeadOvenContainer extends ContainerBase { - protected LeadOvenTileEntity tileEntity; - public int lastFluidAmount = -1; - public int lastFuel = -1; - public short lastProgress = -1; - private final static int height=166; - - public LeadOvenContainer(EntityPlayer entityPlayer, LeadOvenTileEntity tileEntity1){ - super(tileEntity1); - this.tileEntity = tileEntity1; - int col; - for (col = 0; col < 3; ++col) - { - for (int col1 = 0; col1 < 9; ++col1) - { - this.addSlotToContainer(new Slot(entityPlayer.inventory, col1 + col * 9 + 9, 8 + col1 * 18, height + -82 + col * 18)); - } - } - for (col = 0; col < 9; ++col) - { - this.addSlotToContainer(new Slot(entityPlayer.inventory, col, 8 + col * 18, height + -24)); - } - this.addSlotToContainer(new SlotInvSlot(tileEntity1.fuelSlot, 0, 56, 53)); - this.addSlotToContainer(new SlotInvSlot(tileEntity1.inputSlot, 0, 47, 17)); - this.addSlotToContainer(new SlotInvSlot(tileEntity1.inputSlot, 1, 65, 17)); - this.addSlotToContainer(new SlotInvSlot(tileEntity1.outputSlot, 0, 112, 35)); - } + protected LeadOvenTileEntity tileEntity; + public int lastInputFluidAmount = -1; + public int lastOutputFluidAmount = -1; + public int lastFuel = -1; + public short lastProgress = -1; + private final static int height = 166; + public List inputTankFluidList; + public List outputTankFluidList; + + public LeadOvenContainer(EntityPlayer entityPlayer, LeadOvenTileEntity tileEntity1) { + super(tileEntity1); + this.tileEntity = tileEntity1; + inputTankFluidList = this.tileEntity.inputTank.getFluidList(); + outputTankFluidList = this.tileEntity.outputTank.getFluidList(); + int col; + for (col = 0; col < 3; ++col) { + for (int col1 = 0; col1 < 9; ++col1) { + this.addSlotToContainer( + new Slot(entityPlayer.inventory, col1 + col * 9 + 9, 8 + col1 * 18, height + -82 + col * 18)); + } + } + for (col = 0; col < 9; ++col) { + this.addSlotToContainer(new Slot(entityPlayer.inventory, col, 8 + col * 18, height + -24)); + } + this.addSlotToContainer(new SlotInvSlot(tileEntity1.fuelSlot, 0, 56, 53)); + this.addSlotToContainer(new SlotInvSlot(tileEntity1.inputSlot, 0, 47, 17)); + this.addSlotToContainer(new SlotInvSlot(tileEntity1.inputSlot, 1, 65, 17)); + this.addSlotToContainer(new SlotInvSlot(tileEntity1.outputSlot, 0, 112, 35)); + this.addSlotToContainer(new SlotInvSlot(tileEntity1.fillInputSlot, 0, 9, 53)); + this.addSlotToContainer(new SlotInvSlot(tileEntity1.drainInputSlot, 0, 9, 17)); + this.addSlotToContainer(new SlotInvSlot(tileEntity1.emptyFluidItemsSlot, 0, 9, 35)); + this.addSlotToContainer(new SlotInvSlot(tileEntity1.fillInputSlot2, 0, 150, 53)); + this.addSlotToContainer(new SlotInvSlot(tileEntity1.drainInputSlot2, 0, 150, 17)); + this.addSlotToContainer(new SlotInvSlot(tileEntity1.emptyFluidItemsSlot, 1, 150, 35)); + } + + @Override + public void detectAndSendChanges() { + super.detectAndSendChanges(); + for (int i = 0; i < this.crafters.size(); ++i) { + ICrafting icrafting = (ICrafting) this.crafters.get(i); + if (this.tileEntity.inputTank.getFluidAmount() != this.lastInputFluidAmount) { + IC2.network.get().sendContainerField(this, "inputTankFluidList"); + } + if (this.tileEntity.outputTank.getFluidAmount() != this.lastOutputFluidAmount) { + IC2.network.get().sendContainerField(this, "outputTankFluidList"); + } + + if (this.tileEntity.fuel != this.lastFuel) { + icrafting.sendProgressBarUpdate(this, 0, this.tileEntity.fuel); + } - @Override - public void detectAndSendChanges() - { - super.detectAndSendChanges(); - for (int i = 0; i < this.crafters.size(); ++i) - { - ICrafting icrafting = (ICrafting)this.crafters.get(i); + if (this.tileEntity.progress != this.lastProgress) { + icrafting.sendProgressBarUpdate(this, 1, this.tileEntity.progress); + } + } + this.lastFuel = this.tileEntity.fuel; + this.lastProgress = this.tileEntity.progress; + this.lastInputFluidAmount = this.tileEntity.inputTank.getFluidAmount(); + this.lastOutputFluidAmount = this.tileEntity.outputTank.getFluidAmount(); + } - if (this.tileEntity.fuel != this.lastFuel) - { - icrafting.sendProgressBarUpdate(this, 0, this.tileEntity.fuel); - } - - if (this.tileEntity.progress != this.lastProgress) - { - icrafting.sendProgressBarUpdate(this, 1, this.tileEntity.progress); - } - } - this.lastFuel = this.tileEntity.fuel; - this.lastProgress = this.tileEntity.progress; - } - - @Override - public void updateProgressBar(int index, int value) - { - super.updateProgressBar(index, value); + @Override + public void updateProgressBar(int index, int value) { + super.updateProgressBar(index, value); + + switch (index) { + case 0: + this.tileEntity.fuel = value; + break; + case 1: + this.tileEntity.progress = (short) value; + break; + } + } - switch (index) - { - case 0: - this.tileEntity.fuel=value; - break; - case 1: - this.tileEntity.progress=(short) value; - break; - } - } - @Override public boolean canInteractWith(EntityPlayer var1) { return tileEntity.isUseableByPlayer(var1); diff --git a/ihl/processing/chemistry/LeadOvenGui.java b/ihl/processing/chemistry/LeadOvenGui.java index 2d8e785..0c35a21 100644 --- a/ihl/processing/chemistry/LeadOvenGui.java +++ b/ihl/processing/chemistry/LeadOvenGui.java @@ -3,6 +3,7 @@ package ihl.processing.chemistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import ihl.utils.IHLRenderUtils; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; @@ -12,35 +13,43 @@ public class LeadOvenGui extends GuiContainer { private static final ResourceLocation background = new ResourceLocation("ihl", "textures/gui/GUILeadOven.png"); private LeadOvenContainer container; - public LeadOvenGui (LeadOvenContainer container1) { - //the container is instanciated and passed to the superclass for handling - super(container1); - this.container=container1; - } - - @Override - protected void drawGuiContainerForegroundLayer(int par1, int par2) { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - this.mc.renderEngine.bindTexture(background); - } + public LeadOvenGui(LeadOvenContainer container1) { + // the container is instanciated and passed to the superclass for + // handling + super(container1); + this.container = container1; + } - @Override - protected void drawGuiContainerBackgroundLayer(float par1, int par2, - int par3) { - //draw your Gui here, only thing you need to change is the path - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - this.mc.renderEngine.bindTexture(background); - int x = (width - xSize) / 2; - int y = (height - ySize) / 2; - this.drawTexturedModalRect(x, y, 0, 0, xSize, ySize); - int i1; - if (this.container.tileEntity.fuel > 0) - { - i1 = this.container.tileEntity.gaugeFuelScaled(12); - this.drawTexturedModalRect(x + 56, y + 36 + 12 - i1, 176, 12 - i1, 14, i1 + 2); - } - i1 = this.container.tileEntity.gaugeProgressScaled(24); - this.drawTexturedModalRect(x + 79, y + 34, 176, 14, i1 + 1, 16); + @Override + protected void drawGuiContainerForegroundLayer(int par1, int par2) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.mc.renderEngine.bindTexture(background); + int x = (width - xSize) / 2; + int y = (height - ySize) / 2; + if (this.container.tileEntity.inputTank.getFluidAmount() > 0) { + IHLRenderUtils.instance.renderIHLFluidTank(this.container.tileEntity.inputTank, 30, 19, 42, 66, zLevel, + par1, par2, x, y); + } + if (this.container.tileEntity.outputTank.getFluidAmount() > 0) { + IHLRenderUtils.instance.renderIHLFluidTank(this.container.tileEntity.outputTank, 133, 19, 145, 66, zLevel, + par1, par2, x, y); + } + } - } + @Override + protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) { + // draw your Gui here, only thing you need to change is the path + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.mc.renderEngine.bindTexture(background); + int x = (width - xSize) / 2; + int y = (height - ySize) / 2; + this.drawTexturedModalRect(x, y, 0, 0, xSize, ySize); + int i1; + if (this.container.tileEntity.fuel > 0) { + i1 = this.container.tileEntity.gaugeFuelScaled(12); + this.drawTexturedModalRect(x + 56, y + 36 + 12 - i1, 176, 12 - i1, 14, i1 + 2); + } + i1 = this.container.tileEntity.gaugeProgressScaled(24); + this.drawTexturedModalRect(x + 79, y + 34, 176, 14, i1 + 1, 16); + } } \ No newline at end of file diff --git a/ihl/processing/chemistry/LeadOvenTileEntity.java b/ihl/processing/chemistry/LeadOvenTileEntity.java index 340d848..c2067d8 100644 --- a/ihl/processing/chemistry/LeadOvenTileEntity.java +++ b/ihl/processing/chemistry/LeadOvenTileEntity.java @@ -11,327 +11,277 @@ import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; 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.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; import ic2.api.recipe.IRecipeInput; import ic2.core.ContainerBase; import ic2.core.IC2; import ic2.core.IHasGui; -import ic2.core.block.TileEntityLiquidTankInventory; +import ic2.core.block.TileEntityInventory; +import ic2.core.block.invslot.InvSlot; import ic2.core.block.invslot.InvSlotConsumableFuel; +import ic2.core.block.invslot.InvSlotConsumableLiquid; +import ic2.core.block.invslot.InvSlotOutput; import ic2.core.block.invslot.InvSlot.Access; import ihl.processing.invslots.IHLInvSlotOutput; +import ihl.processing.invslots.InvSlotConsumableLiquidIHL; import ihl.recipes.RecipeOutputItemStack; import ihl.recipes.UniversalRecipeInput; import ihl.recipes.UniversalRecipeManager; import ihl.recipes.UniversalRecipeOutput; +import ihl.utils.IHLFluidTank; import ihl.utils.IHLUtils; -public class LeadOvenTileEntity extends TileEntityLiquidTankInventory implements IHasGui -{ - public final InvSlotConsumableFuel fuelSlot; - public final ApparatusProcessableInvSlot inputSlot; - public final IHLInvSlotOutput outputSlot; - public short progress = 0; - public final short maxProgress = 160; - public int fuel = 0; - public int maxFuel = 0; +public class LeadOvenTileEntity extends TileEntityInventory implements IHasGui, IFluidHandler { + public final InvSlotConsumableFuel fuelSlot; + public final ApparatusProcessableInvSlot inputSlot; + public final IHLInvSlotOutput outputSlot; + public final IHLFluidTank inputTank = new IHLFluidTank(1000); + public final IHLFluidTank outputTank = new IHLFluidTank(1000); + public final InvSlotConsumableLiquidIHL drainInputSlot; + public final InvSlotConsumableLiquidIHL fillInputSlot; + public final InvSlotOutput emptyFluidItemsSlot; + public final InvSlotConsumableLiquidIHL drainInputSlot2; + public final InvSlotConsumableLiquidIHL fillInputSlot2; + public short progress = 0; + public final short maxProgress = 160; + public int fuel = 0; + public int maxFuel = 0; protected static final UniversalRecipeManager recipeManager = new UniversalRecipeManager("chemicaloven"); - private ItemStack burnedFuel; - - public LeadOvenTileEntity() - { - super(1000); - this.fuelSlot = new InvSlotConsumableFuel(this, "fuel", 1, 1, true); - this.inputSlot = new ApparatusProcessableInvSlot(this, "input", 2, Access.IO, 2, 64); - this.outputSlot = new IHLInvSlotOutput(this, "output", 0, 1); - } - - public static void addRecipe(UniversalRecipeInput input,UniversalRecipeOutput output) - { - recipeManager.addRecipe(input, output); - } - - @Override - public void readFromNBT(NBTTagCompound nbttagcompound) - { - super.readFromNBT(nbttagcompound); - - try - { - this.fuel = nbttagcompound.getInteger("fuel"); - } - catch (Throwable var4) - { - this.fuel = nbttagcompound.getShort("fuel"); - } - - try - { - this.maxFuel = nbttagcompound.getInteger("maxFuel"); - } - catch (Throwable var3) - { - this.maxFuel = nbttagcompound.getShort("maxFuel"); - } - this.progress = nbttagcompound.getShort("progress"); - } - - @Override - public void writeToNBT(NBTTagCompound nbttagcompound) - { - super.writeToNBT(nbttagcompound); - nbttagcompound.setInteger("fuel", this.fuel); - nbttagcompound.setInteger("maxFuel", this.maxFuel); - nbttagcompound.setShort("progress", this.progress); - NBTTagCompound gasBufferTag = new NBTTagCompound(); - nbttagcompound.setTag("gasBuffer", gasBufferTag); - } - + + public LeadOvenTileEntity() { + super(); + this.fuelSlot = new InvSlotConsumableFuel(this, "fuel", 1, 1, true); + this.inputSlot = new ApparatusProcessableInvSlot(this, "input", 2, Access.IO, 2, 64); + this.outputSlot = new IHLInvSlotOutput(this, "output", 0, 1); + this.drainInputSlot = new InvSlotConsumableLiquidIHL(this, "drainInput", -1, InvSlot.Access.I, 1, + InvSlot.InvSide.TOP, InvSlotConsumableLiquid.OpType.Drain); + this.fillInputSlot = new InvSlotConsumableLiquidIHL(this, "fillInput", -1, InvSlot.Access.I, 1, + InvSlot.InvSide.BOTTOM, InvSlotConsumableLiquid.OpType.Fill); + this.drainInputSlot2 = new InvSlotConsumableLiquidIHL(this, "drainInput", -1, InvSlot.Access.I, 1, + InvSlot.InvSide.TOP, InvSlotConsumableLiquid.OpType.Drain); + this.fillInputSlot2 = new InvSlotConsumableLiquidIHL(this, "fillInput", -1, InvSlot.Access.I, 1, + InvSlot.InvSide.BOTTOM, InvSlotConsumableLiquid.OpType.Fill); + this.emptyFluidItemsSlot = new InvSlotOutput(this, "fluidCellsOutput", 2, 2); + } + + public static void addRecipe(UniversalRecipeInput input, UniversalRecipeOutput output) { + recipeManager.addRecipe(input, output); + } + @Override - public boolean wrenchCanSetFacing(EntityPlayer entityPlayer, int side) - { - return this.getFacing()!=(short)side && side!=0 && side!=1; + public void readFromNBT(NBTTagCompound nbttagcompound) { + super.readFromNBT(nbttagcompound); + this.fuel = nbttagcompound.getInteger("fuel"); + this.maxFuel = nbttagcompound.getInteger("maxFuel"); + this.progress = nbttagcompound.getShort("progress"); + this.inputTank.readFromNBT(nbttagcompound.getCompoundTag("inputTank")); + this.outputTank.readFromNBT(nbttagcompound.getCompoundTag("outputTank")); } - + @Override - public ItemStack getWrenchDrop(EntityPlayer entityPlayer) - { - return IHLUtils.getThisModItemStack("leadOven"); + public void writeToNBT(NBTTagCompound nbttagcompound) { + super.writeToNBT(nbttagcompound); + nbttagcompound.setInteger("fuel", this.fuel); + nbttagcompound.setInteger("maxFuel", this.maxFuel); + nbttagcompound.setShort("progress", this.progress); + NBTTagCompound inputTankTag = new NBTTagCompound(); + this.inputTank.writeToNBT(inputTankTag); + nbttagcompound.setTag("inputTank", inputTankTag); + NBTTagCompound outputTankTag = new NBTTagCompound(); + this.outputTank.writeToNBT(outputTankTag); + nbttagcompound.setTag("outputTank", outputTankTag); } - - public int gaugeProgressScaled(int i) - { - return this.progress * i / maxProgress; - } - - public int gaugeFuelScaled(int i) - { - if (this.maxFuel == 0) - { - this.maxFuel = this.fuel; - - if (this.maxFuel == 0) - { - this.maxFuel = 160; - } - } - - return this.fuel * i / this.maxFuel; - } - - public boolean enableUpdateEntity() - { - return IC2.platform.isSimulating(); - } - - @Override - public void updateEntityServer() - { - super.updateEntityServer(); - if(this.getFluidTank().getFluid()!=null) - { - FluidStack fs; - if(this.maxProgress>0 && this.getOutput()!=null && this.getOutput().getFluidOutputs()!=null && this.getOutput().getFluidOutputs().size()>0) - { - fs = this.getFluidTank().drain(this.getOutput().getFluidOutputs().get(0).amount/this.maxProgress, true); - } - else - { - fs = this.getFluidTank().drain(1000, true); - } - TileEntity te = worldObj.getTileEntity(xCoord, yCoord+1, zCoord); - if(te!=null) - { - ForgeDirection direction = ForgeDirection.DOWN; - if(te instanceof IFluidHandler) - { - ((IFluidHandler)te).fill(direction, fs, true); - } - } - } - if (this.fuel <= 0 && this.canOperate()) - { - if(this.fuelSlot.get()!=null) - { - if(burnedFuel!=null && IHLUtils.isItemsHaveSameOreDictionaryEntry(this.fuelSlot.get(), burnedFuel)) - { - burnedFuel.stackSize++; - } - else if(burnedFuel==null) - { - burnedFuel=this.fuelSlot.get().copy(); - burnedFuel.stackSize=1; - } - } - this.fuel = this.maxFuel = this.fuelSlot.consumeFuel(); - } - - if (this.isBurning() && this.canOperate()) - { - ++this.progress; - - if (this.progress >= maxProgress) - { - this.progress = 0; - this.operate(); - } - } - else - { - this.progress = 0; - } - - if (this.fuel > 0) - { - --this.fuel; - } - - if (this.getActive() != this.isBurning()) - { - this.setActive(this.isBurning()); - } - } - - public boolean isBurning() - { - return this.fuel > 0; - } - - public boolean canOperate() - { - return this.getOutput()!=null; - } - - /** - * Returns the name of the inventory - */ - @Override - public String getInventoryName() - { - return "goldOven"; - } - - @Override - public ContainerBase getGuiContainer(EntityPlayer entityPlayer) - { - return new LeadOvenContainer(entityPlayer, this); - } - + @Override - @SideOnly(Side.CLIENT) - public GuiScreen getGui(EntityPlayer entityPlayer, boolean isAdmin) - { - return new LeadOvenGui(new LeadOvenContainer(entityPlayer, this)); - } - - @Override - public void onGuiClosed(EntityPlayer entityPlayer) {} - - public int mX() - { - switch(this.getFacing()) - { - case 4: - return -1; - case 5: - return 1; - default: - return 0; + public boolean wrenchCanSetFacing(EntityPlayer entityPlayer, int side) { + return this.getFacing() != (short) side && side != 0 && side != 1; + } + + @Override + public ItemStack getWrenchDrop(EntityPlayer entityPlayer) { + return IHLUtils.getThisModItemStack("leadOven"); + } + + public int gaugeProgressScaled(int i) { + return this.progress * i / maxProgress; + } + + public int gaugeFuelScaled(int i) { + if (this.maxFuel == 0) { + this.maxFuel = this.fuel; + + if (this.maxFuel == 0) { + this.maxFuel = 160; + } } + + return this.fuel * i / this.maxFuel; } - - public int mZ() - { - switch(this.getFacing()) - { - case 2: - return -1; - case 3: - return 1; - default: - return 0; + + public boolean enableUpdateEntity() { + return IC2.platform.isSimulating(); + } + + @Override + public void updateEntityServer() { + super.updateEntityServer(); + IHLUtils.handleFluidSlotsBehaviour(fillInputSlot, drainInputSlot, emptyFluidItemsSlot, inputTank); + IHLUtils.handleFluidSlotsBehaviour(fillInputSlot2, drainInputSlot2, emptyFluidItemsSlot, outputTank); + if (this.fuel <= 0 && this.canOperate()) { + this.fuel = this.maxFuel = this.fuelSlot.consumeFuel(); + } + + if (this.isBurning() && this.canOperate()) { + ++this.progress; + + if (this.progress >= maxProgress) { + this.progress = 0; + this.operate(); + } + } else { + this.progress = 0; } + + if (this.fuel > 0) { + --this.fuel; + } + + if (this.getActive() != this.isBurning()) { + this.setActive(this.isBurning()); + } + } + + public boolean isBurning() { + return this.fuel > 0; + } + + public boolean canOperate() { + return this.getOutput() != null; + } + + /** + * Returns the name of the inventory + */ + @Override + public String getInventoryName() { + return "goldOven"; + } + + @Override + public ContainerBase getGuiContainer(EntityPlayer entityPlayer) { + return new LeadOvenContainer(entityPlayer, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen getGui(EntityPlayer entityPlayer, boolean isAdmin) { + return new LeadOvenGui(new LeadOvenContainer(entityPlayer, this)); + } + + @Override + public void onGuiClosed(EntityPlayer entityPlayer) { + } + + public UniversalRecipeOutput getOutput() { + return LeadOvenTileEntity.recipeManager.getOutputFor(this.getInput()); } - - public UniversalRecipeOutput getOutput() - { - return LeadOvenTileEntity.recipeManager.getOutputFor(this.getInput(), false, false); - } @SuppressWarnings("rawtypes") - public List[] getInput() - { - if(this.inputSlot.get(1)!=null) - { - return new List[] {null, Arrays.asList(new ItemStack[] {this.inputSlot.get(0),this.inputSlot.get(1)})}; + public List[] getInput() { + if (this.inputSlot.get(1) != null) { + return new List[] { this.inputTank.getFluidList(), + Arrays.asList(new ItemStack[] { this.inputSlot.get(0), this.inputSlot.get(1) }) }; } - return new List[] {null, Arrays.asList(new ItemStack[] {this.inputSlot.get()})}; + return new List[] { this.inputTank.getFluidList(), Arrays.asList(new ItemStack[] { this.inputSlot.get() }) }; } - - public void operate() - { - List rinput = LeadOvenTileEntity.recipeManager.getRecipeInput(getInput()).getItemInputs(); - UniversalRecipeOutput routput = LeadOvenTileEntity.recipeManager.getOutputFor(getInput(), false, false); + + public void operate() { + UniversalRecipeInput rinput = LeadOvenTileEntity.recipeManager.getRecipeInput(getInput()); + List rinputItems = rinput.getItemInputs(); + UniversalRecipeOutput routput = LeadOvenTileEntity.recipeManager.getOutputFor(getInput()); List output2 = routput.getFluidOutputs(); - if(!output2.isEmpty()) - { - this.getFluidTank().fill(output2.get(0), true); + if (!output2.isEmpty()) { + this.outputTank.fill(output2.get(0), true); } + this.inputTank.drain(rinput.getFluidInputs(), true); List itemOutputs = routput.getItemOutputs(); - if(itemOutputs!=null && !itemOutputs.isEmpty()) - { + if (itemOutputs != null && !itemOutputs.isEmpty()) { this.outputSlot.add(itemOutputs); } - for(int i=0; i=rinput.get(i).getAmount()) - { - this.burnedFuel.stackSize-=rinput.get(i).getAmount(); - if(this.burnedFuel.stackSize<=0) - { - this.burnedFuel=null; - } - } - else - { - this.inputSlot.consume(i, rinput.get(i).getAmount()); - } - if(this.inputSlot.get(i)!=null && this.inputSlot.get(i).stackSize<=0) - { - this.inputSlot.put(i, null); - } + for (int i = 0; i < rinputItems.size(); i++) { + this.inputSlot.consume(rinputItems.get(i)); } - + } + @Override + public FluidStack drain(ForgeDirection from, int amount, boolean doDrain) { + switch (from) { + case UP: + return this.outputTank.drainLightest(amount, doDrain); + case NORTH: + return this.outputTank.drainLightest(amount, doDrain); + case SOUTH: + return this.outputTank.drainLightest(amount, doDrain); + case WEST: + return this.outputTank.drainLightest(amount, doDrain); + case EAST: + return this.outputTank.drainLightest(amount, doDrain); + case DOWN: + return this.outputTank.drain(amount, doDrain); + default: + return this.outputTank.drain(amount, doDrain); + } + } + + // 1.7.10 API @Override public boolean canDrain(ForgeDirection arg0, Fluid arg1) { - return false; + return true; } @Override - public boolean canFill(ForgeDirection arg0, Fluid arg1) { - return false; + public boolean canFill(ForgeDirection direction, Fluid arg1) { + return direction.equals(ForgeDirection.getOrientation(this.getFacing()).getOpposite()); } - public static void addRecipe(UniversalRecipeInput input, FluidStack fluidStackWithSize) - { - recipeManager.addRecipe(input, new UniversalRecipeOutput((new FluidStack[]{fluidStackWithSize}),null,20)); + public static void addRecipe(UniversalRecipeInput input, FluidStack fluidStackWithSize) { + recipeManager.addRecipe(input, new UniversalRecipeOutput((new FluidStack[] { fluidStackWithSize }), null, 20)); } public static Map getRecipes() { return recipeManager.getRecipes(); } - public static void addRecipe(ItemStack input, FluidStack fluidStackOutput, ItemStack output) { - recipeManager.addRecipe(new UniversalRecipeInput(null, (new ItemStack[] {input})),new UniversalRecipeOutput((new FluidStack[] {fluidStackOutput}),(new ItemStack[] {output}),20)); + public static void addRecipe(IRecipeInput recipeInputOreDict, FluidStack fluidStackOutput, ItemStack output) { + recipeManager.addRecipe(new UniversalRecipeInput(null, (new IRecipeInput[] { recipeInputOreDict })), + new UniversalRecipeOutput((new FluidStack[] { fluidStackOutput }), (new ItemStack[] { output }), 20)); + } + + public static void addRecipe(IRecipeInput input, ItemStack output) { + recipeManager.addRecipe(new UniversalRecipeInput(null, (new IRecipeInput[] { input })), + new UniversalRecipeOutput(null, (new ItemStack[] { output }), 20)); + } + + @Override + public FluidStack drain(ForgeDirection arg0, FluidStack fluidStack, boolean doDrain) { + if (outputTank.getFluid() != null && outputTank.getFluid().containsFluid(fluidStack)) { + return this.outputTank.drain(fluidStack, doDrain); + } + return null; } - public static void addRecipe(ItemStack input, ItemStack output) { - recipeManager.addRecipe(new UniversalRecipeInput(null, (new ItemStack[] {input})),new UniversalRecipeOutput(null,(new ItemStack[] {output}),20)); + @Override + public int fill(ForgeDirection arg0, FluidStack arg1, boolean arg2) { + return this.inputTank.fill(arg1, arg2); + } + + @Override + public FluidTankInfo[] getTankInfo(ForgeDirection arg0) { + return new FluidTankInfo[] { this.inputTank.getInfo() }; } } \ No newline at end of file diff --git a/ihl/processing/chemistry/LoomTileEntity.java b/ihl/processing/chemistry/LoomTileEntity.java index e81680d..4ff9bc4 100644 --- a/ihl/processing/chemistry/LoomTileEntity.java +++ b/ihl/processing/chemistry/LoomTileEntity.java @@ -105,7 +105,7 @@ public class LoomTileEntity extends TileEntityInventory implements IHasGui, INet public void operate() { List input1 = LoomTileEntity.recipeManager.getRecipeInput(getInput()).getItemInputs(); - List output1 = LoomTileEntity.recipeManager.getOutputFor(getInput(), false, false).getItemOutputs(); + List output1 = LoomTileEntity.recipeManager.getOutputFor(getInput()).getItemOutputs(); this.output.add(output1); if(input1.get(0) instanceof RecipeInputWire) { @@ -118,7 +118,7 @@ public class LoomTileEntity extends TileEntityInventory implements IHasGui, INet } else { - this.input.consume(0, input1.get(0).getAmount()); + this.input.consume(input1.get(0)); } } @@ -130,8 +130,8 @@ public class LoomTileEntity extends TileEntityInventory implements IHasGui, INet public boolean canOperate() { - if(LoomTileEntity.recipeManager.getOutputFor(getInput(), false, false)==null) return false; - List output1 = LoomTileEntity.recipeManager.getOutputFor(getInput(), false, false).getItemOutputs(); + if(LoomTileEntity.recipeManager.getOutputFor(getInput())==null) return false; + List output1 = LoomTileEntity.recipeManager.getOutputFor(getInput()).getItemOutputs(); return this.output.canAdd(output1); } diff --git a/ihl/processing/chemistry/PaperMachineTileEntity.java b/ihl/processing/chemistry/PaperMachineTileEntity.java index 4784d38..eb28314 100644 --- a/ihl/processing/chemistry/PaperMachineTileEntity.java +++ b/ihl/processing/chemistry/PaperMachineTileEntity.java @@ -171,7 +171,7 @@ public class PaperMachineTileEntity extends BasicElectricMotorTileEntity impleme public UniversalRecipeOutput getOutput() { - return PaperMachineTileEntity.recipeManager.getOutputFor(this.getInput(), false, false); + return PaperMachineTileEntity.recipeManager.getOutputFor(this.getInput()); } @Override diff --git a/ihl/processing/chemistry/PrecipitatorCondenserModel.java b/ihl/processing/chemistry/PrecipitatorCondenserModel.java deleted file mode 100644 index dd6f15a..0000000 --- a/ihl/processing/chemistry/PrecipitatorCondenserModel.java +++ /dev/null @@ -1,110 +0,0 @@ -package ihl.processing.chemistry; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; - -public class PrecipitatorCondenserModel extends ModelBase -{ - //fields - ModelRenderer Base; - - public PrecipitatorCondenserModel() - { - textureWidth = 64; - textureHeight = 32; - setTextureOffset("Base.Shape1", 22, 0); - setTextureOffset("Base.Shape2", 22, 17); - setTextureOffset("Base.Shape4", 30, 16); - setTextureOffset("Base.Shape3", 30, 15); - setTextureOffset("Base.Shape6", 30, 2); - setTextureOffset("Base.Shape7", 20, 0); - setTextureOffset("Base.Shape8", 50, 0); - setTextureOffset("Base.Shape9", 0, 0); - setTextureOffset("Base.Shape10", 24, 0); - setTextureOffset("Base.Shape11", 0, 0); - setTextureOffset("Base.Shape12", 0, 0); - setTextureOffset("Base.Shape13", 0, 0); - setTextureOffset("Base.Shape14", 0, 0); - setTextureOffset("Base.Shape15", 0, 0); - setTextureOffset("Base.Shape16", 0, 0); - setTextureOffset("Base.Shape17", 0, 0); - setTextureOffset("Base.Shape18", 0, 0); - setTextureOffset("Base.Shape19", 0, 0); - setTextureOffset("Base.Shape20", 0, 0); - setTextureOffset("Base.Shape21", 0, 0); - setTextureOffset("Base.Shape25", 0, 1); - setTextureOffset("Base.Shape26", 12, 24); - setTextureOffset("Base.Shape27", 0, 0); - setTextureOffset("Base.Shape28", 0, 18); - setTextureOffset("Base.Shape29", 21, 0); - setTextureOffset("Base.Shape30", 0, 0); - setTextureOffset("Base.Shape31", 0, 0); - setTextureOffset("Base.Shape32", 0, 0); - setTextureOffset("Base.Shape33", 0, 0); - setTextureOffset("Base.Shape34", 0, 0); - setTextureOffset("Base.Shape35", 0, 0); - setTextureOffset("Base.Shape36", 0, 0); - setTextureOffset("Base.Shape37", 0, 0); - setTextureOffset("Base.Shape38", 0, 0); - setTextureOffset("Base.Shape39", 0, 0); - setTextureOffset("Base.Shape40", 0, 0); - setTextureOffset("Base.Shape5", 0, 0); - setTextureOffset("Base.Shape23", 31, 0); - setTextureOffset("Base.Shape24", 10, 0); - setTextureOffset("Base.Shape41", 27, 26); - setTextureOffset("Base.Shape42", 0, 0); - setTextureOffset("Base.Shape43", 0, 0); - setTextureOffset("Base.Shape44", 0, 0); - setTextureOffset("Base.Shape45", 0, 0); - setTextureOffset("Base.Shape46", 0, 0); - - Base = new ModelRenderer(this, "Base"); - Base.setRotationPoint(0F, 23F, 0F); - Base.mirror = true; - Base.addBox("Shape1", 6F, -15F, -7F, 1, 12, 14); - Base.addBox("Shape2", -7F, -3F, -8F, 14, 3, 1); - Base.addBox("Shape4", 6F, -15F, -8F, 1, 12, 1); - Base.addBox("Shape3", -7F, -3F, 7F, 14, 3, 1); - Base.addBox("Shape6", -7F, -15F, 7F, 1, 12, 1); - Base.addBox("Shape7", -7F, -15F, -7F, 1, 15, 14); - Base.addBox("Shape8", -7F, -15F, -8F, 1, 12, 1); - Base.addBox("Shape9", 1F, 0F, -8F, 6, 1, 16); - Base.addBox("Shape10", 6F, -15F, 7F, 1, 12, 1); - Base.addBox("Shape11", -4F, -13F, 3F, 1, 12, 3); - Base.addBox("Shape12", 4F, -2F, -1F, 2, 1, 3); - Base.addBox("Shape13", 3F, -13F, -1F, 1, 12, 3); - Base.addBox("Shape14", -3F, -13F, 5F, 9, 12, 1); - Base.addBox("Shape15", -6F, -2F, -2F, 12, 1, 1); - Base.addBox("Shape16", -4F, -13F, -5F, 1, 12, 3); - Base.addBox("Shape17", -6F, -2F, 6F, 12, 1, 1); - Base.addBox("Shape18", -6F, -2F, -7F, 12, 1, 2); - Base.addBox("Shape19", -6F, -2F, -5F, 2, 1, 3); - Base.addBox("Shape20", -6F, -2F, 2F, 12, 1, 1); - Base.addBox("Shape21", -6F, -2F, 3F, 2, 1, 3); - Base.addBox("Shape25", -6F, -15F, 7F, 12, 3, 1); - Base.addBox("Shape26", -6F, -15F, -8F, 12, 3, 1); - Base.addBox("Shape27", -8F, 0F, -8F, 7, 1, 16); - Base.addBox("Shape28", -1F, 0F, 1F, 2, 1, 7); - Base.addBox("Shape29", -1F, 0F, -8F, 2, 1, 7); - Base.addBox("Shape30", -3F, -13F, 3F, 9, 12, 1); - Base.addBox("Shape31", -6F, -13F, 1F, 9, 12, 1); - Base.addBox("Shape32", -6F, -13F, -1F, 9, 12, 1); - Base.addBox("Shape33", -3F, -13F, -3F, 9, 12, 1); - Base.addBox("Shape34", -3F, -13F, -5F, 9, 12, 1); - Base.addBox("Shape35", -6F, -13F, -7F, 12, 1, 2); - Base.addBox("Shape36", -6F, -13F, -2F, 12, 1, 1); - Base.addBox("Shape37", -6F, -13F, 2F, 12, 1, 1); - Base.addBox("Shape38", -6F, -13F, 6F, 12, 1, 1); - Base.addBox("Shape39", -6F, -13F, -5F, 2, 1, 3); - Base.addBox("Shape40", -6F, -13F, 3F, 2, 1, 3); - Base.addBox("Shape5", 4F, -13F, -1F, 2, 1, 3); - Base.addBox("Shape23", 6F, -2F, -7F, 1, 2, 14); - Base.addBox("Shape24", 6F, -3F, 3F, 1, 1, 4); - Base.addBox("Shape41", 6F, -3F, -7F, 1, 1, 5); - Base.addBox("Shape42", 7F, -4F, -2F, 4, 1, 5); - Base.addBox("Shape43", 8F, 0F, -2F, 1, 1, 5); - Base.addBox("Shape44", 10F, -3F, -2F, 1, 4, 5); - Base.addBox("Shape45", 7F, -4F, 3F, 4, 5, 1); - Base.addBox("Shape46", 7F, -4F, -3F, 4, 5, 1); - } -} diff --git a/ihl/processing/chemistry/PrecipitatorCondenserRender.java b/ihl/processing/chemistry/PrecipitatorCondenserRender.java deleted file mode 100644 index ae68bbf..0000000 --- a/ihl/processing/chemistry/PrecipitatorCondenserRender.java +++ /dev/null @@ -1,50 +0,0 @@ -package ihl.processing.chemistry; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; -import org.lwjgl.opengl.GL11; -import ihl.IHLModInfo; - -public class PrecipitatorCondenserRender extends TileEntitySpecialRenderer{ -private PrecipitatorCondenserModel model = new PrecipitatorCondenserModel(); -private ResourceLocation tex = new ResourceLocation(IHLModInfo.MODID+":textures/blocks/porcelainBox.png"); - -public PrecipitatorCondenserRender(){} - -public void renderAModelAt(PrecipitatorCondenserTileEntity tile, double d, double d1, double d2, float f) { - int rotation = 0; - if(tile.getWorldObj() != null) - { - switch (tile.getFacing()) - { - case 2: - rotation = 0; - break; - case 5: - rotation = 1; - break; - case 3: - rotation = 2; - break; - case 4: - rotation = 3; - break; - default: - rotation = 0; - } - } - bindTexture(tex); //texture - GL11.glPushMatrix(); - GL11.glTranslatef((float)d + 0.5F, (float)d1 + 1.5F, (float)d2 + 0.5F); - GL11.glScalef(1.0F, -1F, -1F); - GL11.glRotatef(rotation*90, 0.0F, 1.0F, 0.0F); - model.Base.render(1.0F/16.0F); - GL11.glPopMatrix(); //end -} - - @Override - public void renderTileEntityAt(TileEntity par1TileEntity, double par2, double par4, double par6, float par8) - { - this.renderAModelAt((PrecipitatorCondenserTileEntity)par1TileEntity, par2, par4, par6, par8); - } -} \ No newline at end of file diff --git a/ihl/processing/chemistry/PrecipitatorCondenserTileEntity.java b/ihl/processing/chemistry/PrecipitatorCondenserTileEntity.java deleted file mode 100644 index 6f3b43f..0000000 --- a/ihl/processing/chemistry/PrecipitatorCondenserTileEntity.java +++ /dev/null @@ -1,379 +0,0 @@ -package ihl.processing.chemistry; - -import java.util.Arrays; -import java.util.Map; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -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.FluidTankInfo; -import net.minecraftforge.fluids.IFluidHandler; -import ic2.core.IC2; -import ic2.core.block.TileEntityInventory; -import ihl.recipes.UniversalRecipeInput; -import ihl.recipes.UniversalRecipeManager; -import ihl.recipes.UniversalRecipeOutput; -import ihl.utils.IHLFluidTank; -import ihl.utils.IHLUtils; -import ihl.worldgen.ores.IHLFluid; - -public class PrecipitatorCondenserTileEntity extends TileEntityInventory implements IFluidHandler -{ - private final static UniversalRecipeManager recipeManager = new UniversalRecipeManager("precipitatorcondenser"); - private static float kF = 24000F; - private static float fluidC = 4F; - private static float H = 2256F; - private final IHLFluidTank gasBuffer = new IHLFluidTank(10000); - private final IHLFluidTank fluidTank = new IHLFluidTank(100); - private ForgeDirection gasInputDirection = ForgeDirection.WEST; - private int amountOfGasCondensed=0; - - public PrecipitatorCondenserTileEntity() - { - super(); - } - - @Override - public void readFromNBT(NBTTagCompound nbttagcompound) - { - super.readFromNBT(nbttagcompound); - this.fluidTank.readFromNBT(nbttagcompound.getCompoundTag("fluidTank")); - this.gasBuffer.readFromNBT(nbttagcompound.getCompoundTag("gasBuffer")); - this.amountOfGasCondensed=nbttagcompound.getInteger("amountOfGasCondensed"); - } - - public static void addRecipe(String fluidNameIn, String fluidNameOut, int conversionRateToGas) - { - recipeManager.addRecipe(new UniversalRecipeInput((new FluidStack[] {IHLUtils.getFluidStackWithSize(fluidNameIn, conversionRateToGas)}), null), new UniversalRecipeOutput((new FluidStack[] {IHLUtils.getFluidStackWithSize(fluidNameOut, 1)}),null,2)); - } - - @Override - public void writeToNBT(NBTTagCompound nbttagcompound) - { - super.writeToNBT(nbttagcompound); - NBTTagCompound fluidTankTag = new NBTTagCompound(); - this.fluidTank.writeToNBT(fluidTankTag); - nbttagcompound.setTag("fluidTank", fluidTankTag); - - NBTTagCompound gasBufferTag = new NBTTagCompound(); - this.gasBuffer.writeToNBT(gasBufferTag); - nbttagcompound.setTag("gasBuffer", gasBufferTag); - - nbttagcompound.setInteger("amountOfGasCondensed",this.amountOfGasCondensed); - } - - @Override - public boolean wrenchCanSetFacing(EntityPlayer entityPlayer, int side) { - return this.getFacing()!=(short)side && side!=0 && side!=1; - } - - @Override - public ItemStack getWrenchDrop(EntityPlayer entityPlayer) { - return IHLUtils.getThisModItemStack("goldPrecipitatorCondenser"); - } - - public boolean enableUpdateEntity() - { - return IC2.platform.isSimulating(); - } - - @Override - public void updateEntityServer() - { - super.updateEntityServer(); - FluidStack fluidStack = this.fluidTank.getFluid(); - FluidStack gasStack = this.gasBuffer.getFluid(); - if(fluidStack!=null && gasStack!=null && fluidStack.amount>0 && gasStack.amount>0) - { - int t1 = this.fluidTank.getTemperature(); - float densityOfCoolant = IHLFluid.getRealDensity(fluidStack.getFluid()); - float densityOfGas = IHLFluid.getRealDensity(gasStack.getFluid()); - int boilingPointOfGas = IHLFluid.getBoilingPoint(gasStack.getFluid()); - amountOfGasCondensed += this.getAmountOfCondensedGas(fluidStack.amount, this.gasBuffer.getFluidAmount(), boilingPointOfGas, t1, densityOfGas, densityOfCoolant); - } - if(amountOfGasCondensed>10000) - { - UniversalRecipeOutput rOutput = null; - UniversalRecipeInput rInput = null; - FluidStack fs = null; - for(int i=0;ithis.gasBuffer.getCapacity()*2) - { - FluidStack passingGas = this.gasBuffer.drainLightest(this.gasBuffer.getCapacity()/2, true); - this.fillGaseousOutputApparatus(gasInputDirection, passingGas, true); - } - if(this.fluidTank.getFluid()!=null) - { - FluidStack coolant = this.fluidTank.drain(5, true); - this.fillHeatTransferAgentOutputApparatus(ForgeDirection.UP, coolant, true); - } - } - - private int getAmountOfCondensedGas(int amountOfCoolant, int amountOfGas, int boilingPointOfGas, int temperatureOfCoolant, float densityOfGas, float densityOfCoolant) - { - if(amountOfCoolant<=0 || amountOfGas<=0 || boilingPointOfGas-202*dt2) - { - deltaT = (float) ((dt1-dt2)/Math.log((double)dt2/(double)dt1)); - } - else - { - deltaT = (dt1+dt2)*0.5F; - } - float Q1 = kF*deltaT; - if(Q1>=maxQ) - { - break; - } - else - { - int next_L = (int)(Q1/H/densityOfGas); - if(Math.abs(next_L-L)<4) - { - L=next_L; - break; - } - L=next_L; - } - } - if(t1_1>t1) - { - this.fluidTank.setTemperature(t1_1); - } - else - { - this.fluidTank.setTemperature(t1+1); - } - return L; - } - - @Override - public String getInventoryName() - { - return "precipitatorCondenser"; - } - - public void onGuiClosed(EntityPlayer entityPlayer) {} - - public int mX() - { - switch(this.getFacing()) - { - case 4: - return -1; - case 5: - return 1; - default: - return 0; - } - } - - public int mZ() - { - switch(this.getFacing()) - { - case 2: - return -1; - case 3: - return 1; - default: - return 0; - } - } - - public int mLZ() - { - switch(this.getFacing()) - { - case 4: - return -1; - case 5: - return 1; - default: - return 0; - } - } - - public int mLX() - { - switch(this.getFacing()) - { - case 2: - return 1; - case 3: - return -1; - default: - return 0; - } - } - - @Override - public boolean canDrain(ForgeDirection arg0, Fluid arg1) { - return false; - } - - @Override - public boolean canFill(ForgeDirection direction, Fluid fluid) { - return direction==ForgeDirection.UP || (gasCanPass(direction) && fluid.isGaseous()); - } - - @Override - public int fill(ForgeDirection direction, FluidStack fluidStack, boolean doFill) - { - if(fluidStack!=null && fluidStack.getFluid()!=null && fluidStack.amount>0) - { - if(gasCanPass(direction) && fluidStack!=null && fluidStack.getFluid()!=null && fluidStack.amount>0) - { - this.gasInputDirection=direction; - if(fluidStack.getFluid().isGaseous() && fluidStack.getFluid().getDensity() getRecipes() - { - return recipeManager.getRecipes(); - } - - @Override - public boolean shouldRenderInPass(int pass) - { - return pass==0; - } -} \ No newline at end of file diff --git a/ihl/processing/invslots/IHLInvSlotOutput.java b/ihl/processing/invslots/IHLInvSlotOutput.java index 7e10ab3..d683221 100644 --- a/ihl/processing/invslots/IHLInvSlotOutput.java +++ b/ihl/processing/invslots/IHLInvSlotOutput.java @@ -16,114 +16,88 @@ import ic2.core.block.invslot.InvSlotOutput; import ihl.recipes.RecipeOutputItemStack; import ihl.utils.IHLUtils; -public class IHLInvSlotOutput extends InvSlotOutput{ +public class IHLInvSlotOutput extends InvSlotOutput { + + private final Map substanceAmount = new HashMap(); - private final Map substanceAmount = new HashMap(); public IHLInvSlotOutput(TileEntityInventory base1, String name1, int oldStartIndex1, int count) { super(base1, name1, oldStartIndex1, count); } @SuppressWarnings("rawtypes") @Override - public boolean canAdd(List itemOutputs) - { - if(itemOutputs==null || itemOutputs.isEmpty()) - { + public boolean canAdd(List itemOutputs) { + if (itemOutputs == null || itemOutputs.isEmpty()) { return true; } Iterator ioi = itemOutputs.iterator(); - if(this.size()>=itemOutputs.size()) - { + if (this.size() >= itemOutputs.size()) { Object rois; - if(ioi.hasNext()) - { + if (ioi.hasNext()) { rois = ioi.next(); - } - else - { + } else { return true; } - for(int i=0;i=1) - { + amount += rois.quantity; + while (amount >= 1) { amount--; this.add(rois.itemStack.copy()); } @@ -132,80 +106,62 @@ public class IHLInvSlotOutput extends InvSlotOutput{ @Override @SuppressWarnings("rawtypes") - public int add(List itemOutputs) - { - if(itemOutputs==null || itemOutputs.isEmpty()) - { + public int add(List itemOutputs) { + if (itemOutputs == null || itemOutputs.isEmpty()) { return 0; } Iterator ioi = itemOutputs.iterator(); - if(this.size()>=itemOutputs.size() && ioi.hasNext()) - { + if (this.size() >= itemOutputs.size() && ioi.hasNext()) { Object rois = ioi.next(); - for(int i=0;i> entrySetIterator = this.substanceAmount.entrySet().iterator(); - while(entrySetIterator.hasNext()) - { - Entry entry = entrySetIterator.next(); - NBTTagCompound tag = new NBTTagCompound(); - tag.setLong("substanceKey", entry.getKey()); - tag.setFloat("substanceAmount", entry.getValue()); - sAmountsList.appendTag(tag); - } - nbtTagCompound.setTag("substanceAmountMap", sAmountsList); - } + NBTTagList sAmountsList = new NBTTagList(); + Iterator> entrySetIterator = this.substanceAmount.entrySet().iterator(); + while (entrySetIterator.hasNext()) { + Entry entry = entrySetIterator.next(); + NBTTagCompound tag = new NBTTagCompound(); + tag.setLong("substanceKey", entry.getKey()); + tag.setFloat("substanceAmount", entry.getValue()); + sAmountsList.appendTag(tag); + } + nbtTagCompound.setTag("substanceAmountMap", sAmountsList); + } } diff --git a/ihl/processing/invslots/SlotRedstoneConverterCableInvSlot.java b/ihl/processing/invslots/SlotRedstoneConverterCableInvSlot.java deleted file mode 100644 index 461c3cc..0000000 --- a/ihl/processing/invslots/SlotRedstoneConverterCableInvSlot.java +++ /dev/null @@ -1,23 +0,0 @@ -package ihl.processing.invslots; - -import net.minecraft.entity.player.EntityPlayer; -import ic2.core.block.invslot.InvSlot; -import ic2.core.slot.SlotInvSlot; - -public class SlotRedstoneConverterCableInvSlot extends SlotInvSlot { - - public InvSlot invSlot; - - public SlotRedstoneConverterCableInvSlot(InvSlot invSlot1, int index1, - int xDisplayPosition1, int yDisplayPosition1) { - super(invSlot1, index1, xDisplayPosition1, yDisplayPosition1); - this.invSlot=invSlot1; - } - - @Override - public boolean canTakeStack(EntityPlayer player) - { - return false; - } - -} diff --git a/ihl/processing/metallurgy/AchesonFurnaceGui.java b/ihl/processing/metallurgy/AchesonFurnaceGui.java index 70e9d05..7665635 100644 --- a/ihl/processing/metallurgy/AchesonFurnaceGui.java +++ b/ihl/processing/metallurgy/AchesonFurnaceGui.java @@ -6,11 +6,10 @@ import net.minecraft.util.StatCollector; import org.lwjgl.opengl.GL11; public class AchesonFurnaceGui extends GuiContainer { - protected static final ResourceLocation achesonFurnaceBackground = new ResourceLocation("ihl", "textures/gui/GUIAchesonFurnance.png"); + protected static final ResourceLocation achesonFurnaceBackground = new ResourceLocation("ihl", "textures/gui/GUIAchesonFurnace.png"); private MachineBaseContainer container; public AchesonFurnaceGui(MachineBaseContainer machineBaseContainer) { - //the container is instanciated and passed to the superclass for handling super(machineBaseContainer); this.container=machineBaseContainer; } @@ -27,8 +26,8 @@ public class AchesonFurnaceGui extends GuiContainer { } if (this.container.tileEntity.progress > 0) { - i1 = Math.min(this.container.tileEntity.gaugeProgressScaled(50),50); - this.drawTexturedModalRect(64, 63, 197, 0, i1 + 1, 13); + i1 = Math.min(this.container.tileEntity.gaugeProgressScaled(17),17); + this.drawTexturedModalRect(70,34, 197, 0, i1 + 1, 13); } fontRendererObj.drawStringWithShadow(StatCollector.translateToLocal("ihl.gui.achesonFurnance"), 40, 12, 16768125); } diff --git a/ihl/processing/metallurgy/AchesonFurnanceContainer.java b/ihl/processing/metallurgy/AchesonFurnanceContainer.java index 140ec97..2580c6c 100644 --- a/ihl/processing/metallurgy/AchesonFurnanceContainer.java +++ b/ihl/processing/metallurgy/AchesonFurnanceContainer.java @@ -8,10 +8,9 @@ public class AchesonFurnanceContainer extends MachineBaseContainer { public AchesonFurnanceContainer(EntityPlayer entityPlayer, AchesonFurnanceTileEntity tileEntity1) { super(entityPlayer, tileEntity1); - this.addSlotToContainer(new SlotInvSlot(tileEntity1.inputElectrode, 0, 63, 40)); - this.addSlotToContainer(new SlotInvSlot(tileEntity1.inputElectrode, 1, 99, 40)); - this.addSlotToContainer(new SlotInvSlot(tileEntity1.input, 0, 81, 40)); - this.addSlotToContainer(new SlotInvSlot(tileEntity1.input, 1, 81, 22)); + this.addSlotToContainer(new SlotInvSlot(tileEntity1.input, 0, 40, 22)); + this.addSlotToContainer(new SlotInvSlot(tileEntity1.input, 1, 40, 40)); + this.addSlotToContainer(new SlotInvSlot(tileEntity1.outputSlot, 0, 98, 32)); } } diff --git a/ihl/processing/metallurgy/AchesonFurnanceTileEntity.java b/ihl/processing/metallurgy/AchesonFurnanceTileEntity.java index 5709cb9..1692e62 100644 --- a/ihl/processing/metallurgy/AchesonFurnanceTileEntity.java +++ b/ihl/processing/metallurgy/AchesonFurnanceTileEntity.java @@ -4,11 +4,9 @@ import java.util.List; import java.util.Map; import ic2.api.recipe.IRecipeInput; -import ic2.api.recipe.RecipeInputOreDict; import ic2.core.ContainerBase; -import ic2.core.block.invslot.InvSlot.Access; import ihl.IHLMod; -import ihl.processing.chemistry.ApparatusProcessableInvSlot; +import ihl.processing.invslots.IHLInvSlotOutput; import ihl.recipes.RecipeOutputItemStack; import ihl.recipes.UniversalRecipeInput; import ihl.recipes.UniversalRecipeManager; @@ -22,15 +20,12 @@ import cpw.mods.fml.relauncher.SideOnly; public class AchesonFurnanceTileEntity extends MachineBaseTileEntity { - public final ApparatusProcessableInvSlot inputElectrode; - protected static UniversalRecipeManager recipeManager = new UniversalRecipeManager("achesonfurnace"); - private final RecipeInputOreDict[] validElectrodeTypes = new RecipeInputOreDict[] { - new RecipeInputOreDict("stickCoal"), new RecipeInputOreDict("stickGraphite"), - new RecipeInputOreDict("plateCoal"), new RecipeInputOreDict("plateGraphite") }; + protected static final UniversalRecipeManager recipeManager = new UniversalRecipeManager("achesonfurnace"); + public final IHLInvSlotOutput outputSlot; public AchesonFurnanceTileEntity() { super(2); - inputElectrode = new ApparatusProcessableInvSlot(this, "inputElectrode", 1, Access.IO, 2, 1); + this.outputSlot = new IHLInvSlotOutput(this, "output", 0, 1); } public static void addRecipe(IRecipeInput input1, IRecipeInput input2, String output1) { @@ -71,36 +66,23 @@ public class AchesonFurnanceTileEntity extends MachineBaseTileEntity { @Override public void operate() { - List output = AchesonFurnanceTileEntity.recipeManager - .getOutputFor(getInput(), true, true).getItemOutputs(); - for (int i = 0; i < this.inputElectrode.size(); i++) { - ItemStack electrodeIS = this.inputElectrode.get(i); - if (this.validElectrodeTypes[0].matches(electrodeIS)) { - this.inputElectrode.put(i, IHLUtils.getThisModItemStack("stickGraphite")); - } else if (this.validElectrodeTypes[2].matches(electrodeIS)) { - this.inputElectrode.put(i, IHLUtils.getThisModItemStack("plateGraphite")); - } - } - for (int i = 0; i < this.input.size(); i++) { - if (output.size() > i) { - ItemStack stack = output.get(i).itemStack.copy(); - stack.stackSize = Math.round(output.get(i).quantity); - this.input.put(i, stack); - } - if (this.input.get(i) != null && this.input.get(i).stackSize <= 0) { - this.input.put(i, null); - } - } ItemStack crucible = input.getItemStack(IHLMod.crucible); if (crucible != null) { ((Crucible) crucible.getItem()).processContent(crucible, this); + return; + } + List output = recipeManager + .getOutputFor(getInput()).getItemOutputs(); + List rinput = recipeManager.getRecipeInput(getInput()).getItemInputs(); + for (int i = 0; i < rinput.size(); i++) { + this.input.consume(rinput.get(i)); } + this.outputSlot.add(output); } @Override public boolean canOperate() { - return this.isValidElectrode(this.inputElectrode.get(0)) && this.isValidElectrode(this.inputElectrode.get(1)) - && this.getOutput() != null; + return this.getOutput() != null; } @Override @@ -114,17 +96,6 @@ public class AchesonFurnanceTileEntity extends MachineBaseTileEntity { @Override public UniversalRecipeOutput getOutput() { - return AchesonFurnanceTileEntity.recipeManager.getOutputFor(this.getInput(), false, false); - } - - private boolean isValidElectrode(ItemStack stack) { - if (stack != null) { - for (int i = 0; i < this.validElectrodeTypes.length; i++) { - if (validElectrodeTypes[i].matches(stack)) { - return true; - } - } - } - return false; + return AchesonFurnanceTileEntity.recipeManager.getOutputFor(this.getInput()); } } diff --git a/ihl/processing/metallurgy/BasicElectricMotorTileEntity.java b/ihl/processing/metallurgy/BasicElectricMotorTileEntity.java index a2fa219..7f82532 100644 --- a/ihl/processing/metallurgy/BasicElectricMotorTileEntity.java +++ b/ihl/processing/metallurgy/BasicElectricMotorTileEntity.java @@ -11,6 +11,7 @@ import ic2.core.IC2; import ic2.core.IHasGui; import ic2.core.block.invslot.InvSlot; import ic2.core.block.invslot.InvSlot.Access; +import ihl.IHLMod; import ihl.flexible_cable.FlexibleCableHolderBaseTileEntity; import ihl.flexible_cable.NodeEntity; import ihl.utils.IHLInvSlotDischarge; @@ -34,6 +35,7 @@ public abstract class BasicElectricMotorTileEntity extends FlexibleCableHolderBa public BasicElectricMotorTileEntity() { super(); + energyConsume = IHLMod.config.machineryEnergyConsume/100d; dischargeSlot = new IHLInvSlotDischarge(this, 1, Access.IO, 4, InvSlot.InvSide.BOTTOM); } diff --git a/ihl/processing/metallurgy/BigMachineFrameTileEntity.java b/ihl/processing/metallurgy/BigMachineFrameTileEntity.java deleted file mode 100644 index 0922355..0000000 --- a/ihl/processing/metallurgy/BigMachineFrameTileEntity.java +++ /dev/null @@ -1,109 +0,0 @@ -package ihl.processing.metallurgy; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import ihl.interfaces.IWorkspaceElement; -import ihl.utils.IHLUtils; - -public class BigMachineFrameTileEntity extends TileEntity implements IWorkspaceElement { - - @Override - public boolean wrenchCanSetFacing(EntityPlayer entityPlayer, int side) - { - return false; - } - - @Override - public short getFacing() - { - return 0; - } - - @Override - public void setFacing(short facing) {} - - @Override - public boolean wrenchCanRemove(EntityPlayer entityPlayer) - { - return true; - } - - @Override - public float getWrenchDropRate() - { - return 1.0f; - } - - @Override - public ItemStack getWrenchDrop(EntityPlayer entityPlayer) - { - return IHLUtils.getThisModItemStack("frameSteel"); - } - - @Override - public boolean canBeUsed() - { - int ix,iy,iz; - int x = xCoord; - int y = yCoord; - int z = zCoord; - int x0 = xCoord; - int y0 = yCoord; - int z0 = zCoord; - for(ix=x;ix>x-3;ix--) - { - for(iy=y;iy>y-3;iy--) - { - for(iz=z;iz>z-3;iz--) - { - TileEntity te = worldObj.getTileEntity(ix, iy, iz); - if(te instanceof BigMachineFrameTileEntity) - { - x0=ix+1; - y0=iy+1; - z0=iz+1; - } - } - } - } - for(ix=x0-1;ix[] getInput() @@ -126,7 +124,8 @@ public class DetonationSprayingMachineTileEntity extends TileEntityInventory imp //file tags - "GT.ToolStats"->"MaxDamage" & "Damage" if(this.canOperate()) { - List output1 = DetonationSprayingMachineTileEntity.recipeManager.getOutputFor(getInput(), false, false).getItemOutputs(); + List input1 = DetonationSprayingMachineTileEntity.recipeManager.getRecipeInput(getInput()).getItemInputs(); + List output1 = DetonationSprayingMachineTileEntity.recipeManager.getOutputFor(getInput()).getItemOutputs(); ItemStack resultStack = output1.get(0).itemStack.copy(); resultStack.stackSize=this.input.get(0).stackSize; if(resultStack.stackTagCompound==null) @@ -162,9 +161,10 @@ public class DetonationSprayingMachineTileEntity extends TileEntityInventory imp } } } + for(IRecipeInput stack:input1){ + this.input.consume(stack); + } this.input.put(0,resultStack); - this.input.consume(1,1); - this.input.consume(2,1); ExplosionIC2 explosion = new ExplosionIC2(worldObj, null, this.xCoord+0.5D, this.yCoord+0.5D, this.zCoord+0.5D, 0.5F, 0.3F, ExplosionIC2.Type.Normal, null, 0); explosion.doExplosion(); IC2.network.get().initiateTileEntityEvent(this, 0, true); diff --git a/ihl/processing/metallurgy/ElectricEngineInvSlot.java b/ihl/processing/metallurgy/ElectricEngineInvSlot.java deleted file mode 100644 index c89c50f..0000000 --- a/ihl/processing/metallurgy/ElectricEngineInvSlot.java +++ /dev/null @@ -1,54 +0,0 @@ -package ihl.processing.metallurgy; - -import ic2.core.Ic2Items; -import ic2.core.block.TileEntityInventory; -import ic2.core.block.invslot.InvSlot; -import net.minecraft.item.ItemStack; - -public class ElectricEngineInvSlot extends InvSlot { - - public ElectricEngineInvSlot(TileEntityInventory base1, String name1, - int oldStartIndex1, Access access1, int count, int stackSizeLimit1) { - super(base1, name1, oldStartIndex1, access1, count); - this.setStackSizeLimit(stackSizeLimit1); - } - - public float getEfficiency() - { - if(this.isEmpty()) - { - return 0F; - } - else if(this.get().getItem() instanceof ElectricEngineItem) - { - return ((ElectricEngineItem)this.get().getItem()).type.efficiency; - } - else if(this.get().getItem() == Ic2Items.elemotor.getItem() && this.get().getItemDamage() == Ic2Items.elemotor.getItemDamage()) - { - return 0.2f; - } - else - { - return 0f; - } - } - - @Override - public boolean accepts(ItemStack stack) - { - if(stack!=null && stack.getItem() == Ic2Items.elemotor.getItem() && stack.getItemDamage() == Ic2Items.elemotor.getItemDamage()) - { - return true; - } - else - { - return stack==null?true:stack.getItem() instanceof ElectricEngineItem; - } - } - - public boolean correctContent() - { - return this.get()==null?false:this.get().stackSize==1 && ((this.get().getItem() instanceof ElectricEngineItem) || (this.get().getItem() == Ic2Items.elemotor.getItem() && this.get().getItemDamage() == Ic2Items.elemotor.getItemDamage())); - } - -} diff --git a/ihl/processing/metallurgy/ExtruderTileEntity.java b/ihl/processing/metallurgy/ExtruderTileEntity.java index a654bfc..53447b4 100644 --- a/ihl/processing/metallurgy/ExtruderTileEntity.java +++ b/ihl/processing/metallurgy/ExtruderTileEntity.java @@ -89,13 +89,13 @@ public class ExtruderTileEntity extends BasicElectricMotorTileEntity{ { UniversalRecipeInput ri = ExtruderTileEntity.recipeManager.getRecipeInput(getInput()); this.fluidTank.fill(getOutput().getFluidOutputs().get(0), true); - this.input.consume(0,ri.getItemInputs().get(0).getAmount()); - this.input2.consume(0,ri.getItemInputs().get(1).getAmount()); + this.input.consume(ri.getItemInputs().get(0)); + this.input2.consume(ri.getItemInputs().get(1)); } public UniversalRecipeOutput getOutput() { - return ExtruderTileEntity.recipeManager.getOutputFor(this.getInput(), false, false); + return ExtruderTileEntity.recipeManager.getOutputFor(this.getInput()); } @SuppressWarnings({ "unchecked", "rawtypes" }) diff --git a/ihl/processing/metallurgy/GasWeldingStationTileEntity.java b/ihl/processing/metallurgy/GasWeldingStationTileEntity.java index ff15f5a..54f4177 100644 --- a/ihl/processing/metallurgy/GasWeldingStationTileEntity.java +++ b/ihl/processing/metallurgy/GasWeldingStationTileEntity.java @@ -148,7 +148,7 @@ public class GasWeldingStationTileEntity extends TileEntityInventory implements public boolean canProduceGas() { - UniversalRecipeOutput rOutput = GasWeldingStationTileEntity.acetyleneRecipeManager.getOutputFor(Arrays.asList(new FluidStack[]{this.flammableGasTank.getFluid()}), Arrays.asList(new ItemStack[]{this.input.get()}), false, false); + UniversalRecipeOutput rOutput = GasWeldingStationTileEntity.acetyleneRecipeManager.getOutputFor(Arrays.asList(new FluidStack[]{this.flammableGasTank.getFluid()}), Arrays.asList(new ItemStack[]{this.input.get()})); return rOutput!=null; } @@ -157,7 +157,7 @@ public class GasWeldingStationTileEntity extends TileEntityInventory implements if(canProduceGas()) { UniversalRecipeInput rInput = GasWeldingStationTileEntity.acetyleneRecipeManager.getRecipeInput(Arrays.asList(new FluidStack[]{this.flammableGasTank.getFluid()}), Arrays.asList(new ItemStack[]{this.input.get()})); - UniversalRecipeOutput rOutput = GasWeldingStationTileEntity.acetyleneRecipeManager.getOutputFor(Arrays.asList(new FluidStack[]{this.flammableGasTank.getFluid()}), Arrays.asList(new ItemStack[]{this.input.get()}), false, false); + UniversalRecipeOutput rOutput = GasWeldingStationTileEntity.acetyleneRecipeManager.getOutputFor(Arrays.asList(new FluidStack[]{this.flammableGasTank.getFluid()}), Arrays.asList(new ItemStack[]{this.input.get()})); FluidStack output1 = rOutput.getFluidOutputs().get(0).copy(); FluidStack output2 = rOutput.getFluidOutputs().get(1).copy(); this.flammableGasTank.drain(rInput.getFluidInputs().get(0), true); diff --git a/ihl/processing/metallurgy/ImpregnatingMachineTileEntity.java b/ihl/processing/metallurgy/ImpregnatingMachineTileEntity.java index 2ea5d2e..1a15f06 100644 --- a/ihl/processing/metallurgy/ImpregnatingMachineTileEntity.java +++ b/ihl/processing/metallurgy/ImpregnatingMachineTileEntity.java @@ -216,7 +216,7 @@ public class ImpregnatingMachineTileEntity extends TileEntityInventory implement public UniversalRecipeOutput getOutput() { - return ImpregnatingMachineTileEntity.recipeManager.getOutputFor(this.getInput(), false, false); + return ImpregnatingMachineTileEntity.recipeManager.getOutputFor(this.getInput()); } @SuppressWarnings("rawtypes") @@ -229,7 +229,7 @@ public class ImpregnatingMachineTileEntity extends TileEntityInventory implement if(i!=i1) { List[] rInput = new List[]{Arrays.asList(new FluidStack[]{fluidTank.getFluid(i),fluidTank.getFluid(i1)}), this.input.getItemStackList()}; - if(ImpregnatingMachineTileEntity.recipeManager.getOutputFor(rInput, false, false)!=null) + if(ImpregnatingMachineTileEntity.recipeManager.getOutputFor(rInput)!=null) { return rInput; } @@ -245,7 +245,7 @@ public class ImpregnatingMachineTileEntity extends TileEntityInventory implement UniversalRecipeOutput output1 = getOutput(); for(int i=0; i resultList = OreDictionary.getOres(this.resultSuffix+formattedFluidName); if(resultList.isEmpty() || fluidAmountPerItem<=0) { -// IHLMod.log.info("Injection mold: resultList.isEmpty() || fluidAmountPerItem<=0"); resultList=new ArrayList(); List fi = Arrays.asList(new FluidStack[] {this.fluidTank.getFluid()}); List ii = Arrays.asList(new ItemStack[] {IHLUtils.getThisModItemStackWithDamage("injectionMold", this.resultSuffix.hashCode() & Integer.MAX_VALUE)}); - UniversalRecipeOutput ro = recipeManager.getOutputFor(fi, ii, false, false); + UniversalRecipeOutput ro = recipeManager.getOutputFor(fi, ii); if(ro!=null) { - // IHLMod.log.info("Injection mold: ro not null"); ItemStack stack = ro.getItemOutputs().get(0).itemStack.copy(); stack.stackSize=Math.round(ro.getItemOutputs().get(0).quantity); resultList.add(stack); UniversalRecipeInput ri = recipeManager.getRecipeInput(fi, ii); fluidAmountPerItem = ri.getFluidInputs().get(0).getAmount(); - // IHLMod.log.info("fluidAmountPerItem="+fluidAmountPerItem); - } - else - { - // IHLMod.log.info("Injection mold: ro is null. Input stack: "+ii.get(0).toString()); } } int fluidAmountPerItem2 = Details.getMeltingFluidAmount("nugget"); diff --git a/ihl/processing/metallurgy/MuffleFurnaceGui.java b/ihl/processing/metallurgy/MuffleFurnaceGui.java index ffd664d..bf0df24 100644 --- a/ihl/processing/metallurgy/MuffleFurnaceGui.java +++ b/ihl/processing/metallurgy/MuffleFurnaceGui.java @@ -6,7 +6,7 @@ import net.minecraft.util.StatCollector; import org.lwjgl.opengl.GL11; public class MuffleFurnaceGui extends GuiContainer { - protected static final ResourceLocation muffleFurnaceBackground = new ResourceLocation("ihl", "textures/gui/GUIMuffleFurnace.png"); + protected static final ResourceLocation muffleFurnaceBackground = new ResourceLocation("ihl", "textures/gui/GUIAchesonFurnace.png"); private MachineBaseContainer container; public MuffleFurnaceGui(MachineBaseContainer machineBaseContainer) { @@ -17,22 +17,18 @@ public class MuffleFurnaceGui extends GuiContainer { @Override protected void drawGuiContainerForegroundLayer(int par1, int par2) { - int xOffset = (this.width - xSize) / 2; - int yOffset = (this.height - ySize) / 2; GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.mc.renderEngine.bindTexture(muffleFurnaceBackground); int i1; if (this.container.tileEntity.getEnergy() > 0D) { i1 = Math.min(this.container.tileEntity.getGUIEnergy(12),12); - this.drawTexturedModalRect(8, 14 + 12 - i1, 179, 12 - i1, 14, i1 + 2); + this.drawTexturedModalRect(8, 6 + 12 - i1, 179, 12 - i1, 14, i1 + 2); } if (this.container.tileEntity.progress > 0) { - i1 = Math.min(this.container.tileEntity.gaugeProgressScaled(50),50); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - this.drawTexturedModalRect(44, 57, 197, 0, i1 + 1, 13); + i1 = Math.min(this.container.tileEntity.gaugeProgressScaled(17),17); + this.drawTexturedModalRect(70,34, 197, 0, i1 + 1, 13); } fontRendererObj.drawStringWithShadow(StatCollector.translateToLocal("ihl.gui.muffleFurnace"), 40, 12, 16768125); diff --git a/ihl/processing/metallurgy/MuffleFurnanceContainer.java b/ihl/processing/metallurgy/MuffleFurnanceContainer.java index a36ac3c..1ae7203 100644 --- a/ihl/processing/metallurgy/MuffleFurnanceContainer.java +++ b/ihl/processing/metallurgy/MuffleFurnanceContainer.java @@ -6,10 +6,11 @@ import net.minecraft.entity.player.EntityPlayer; public class MuffleFurnanceContainer extends MachineBaseContainer { public MuffleFurnanceContainer(EntityPlayer entityPlayer, - MachineBaseTileEntity tileEntity1) { + MuffleFurnanceTileEntity tileEntity1) { super(entityPlayer, tileEntity1); - this.addSlotToContainer(new SlotInvSlot(tileEntity1.input, 0, 51, 34)); - this.addSlotToContainer(new SlotInvSlot(tileEntity1.input, 1, 69, 34)); + this.addSlotToContainer(new SlotInvSlot(tileEntity1.input, 0, 40, 22)); + this.addSlotToContainer(new SlotInvSlot(tileEntity1.input, 1, 40, 40)); + this.addSlotToContainer(new SlotInvSlot(tileEntity1.outputSlot, 0, 98, 32)); } } diff --git a/ihl/processing/metallurgy/MuffleFurnanceTileEntity.java b/ihl/processing/metallurgy/MuffleFurnanceTileEntity.java index 55db3db..3994bd7 100644 --- a/ihl/processing/metallurgy/MuffleFurnanceTileEntity.java +++ b/ihl/processing/metallurgy/MuffleFurnanceTileEntity.java @@ -3,8 +3,11 @@ package ihl.processing.metallurgy; import java.util.List; import java.util.Map; +import ic2.api.recipe.IRecipeInput; +import ic2.api.recipe.RecipeInputOreDict; import ic2.core.ContainerBase; import ihl.IHLMod; +import ihl.processing.invslots.IHLInvSlotOutput; import ihl.recipes.RecipeOutputItemStack; import ihl.recipes.UniversalRecipeInput; import ihl.recipes.UniversalRecipeManager; @@ -19,10 +22,11 @@ import cpw.mods.fml.relauncher.SideOnly; public class MuffleFurnanceTileEntity extends MachineBaseTileEntity { protected static UniversalRecipeManager recipeManager = new UniversalRecipeManager("mufflefurnace"); + public final IHLInvSlotOutput outputSlot; public MuffleFurnanceTileEntity() { super(2); - this.input.setStackSizeLimit(32); + this.outputSlot = new IHLInvSlotOutput(this, "output", 0, 1); } @Override @@ -81,27 +85,17 @@ public class MuffleFurnanceTileEntity extends MachineBaseTileEntity { mold.stackTagCompound.setBoolean("isContainStearin", false); return; } - if (this.getOutput() != null) { - UniversalRecipeOutput routput = recipeManager - .getOutputFor(null, this.input.getItemStackList(), true, true); - List output = routput.getItemOutputs(); - for (int i = 0; i < this.input.size(); i++) { - if (i < output.size() && output.get(i) != null) { - ItemStack outStack = output.get(i).itemStack.copy(); - outStack.stackSize = Math.round(output.get(i).quantity); - if (this.input.get(i) != null) { - outStack.stackTagCompound = this.input.get(i).stackTagCompound; - } - this.input.put(i, outStack); - } - if (this.input.get(i) != null && this.input.get(i).stackSize <= 0) - this.input.put(i, null); - } + List output = recipeManager + .getOutputFor(getInput()).getItemOutputs(); + List rinput = recipeManager.getRecipeInput(getInput()).getItemInputs(); + for (int i = 0; i < rinput.size(); i++) { + this.input.consume(rinput.get(i)); } + this.outputSlot.add(output); } - public static void addRecipe(ItemStack input1, ItemStack output) { - recipeManager.addRecipe(new UniversalRecipeInput(null, (new ItemStack[] { input1 })), + public static void addRecipe(IRecipeInput recipeInputOreDict, ItemStack output) { + recipeManager.addRecipe(new UniversalRecipeInput(null, (new IRecipeInput[] { recipeInputOreDict })), new UniversalRecipeOutput(null, (new ItemStack[] { output }), 20)); } @@ -111,7 +105,7 @@ public class MuffleFurnanceTileEntity extends MachineBaseTileEntity { @Override public UniversalRecipeOutput getOutput() { - return MuffleFurnanceTileEntity.recipeManager.getOutputFor(null, this.input.getItemStackList(), false, false); + return MuffleFurnanceTileEntity.recipeManager.getOutputFor(null, this.input.getItemStackList()); } public static void addRecipe(UniversalRecipeInput universalRecipeInput, @@ -119,8 +113,8 @@ public class MuffleFurnanceTileEntity extends MachineBaseTileEntity { recipeManager.addRecipe(universalRecipeInput, universalRecipeOutput); } - public static void addRecipe(ItemStack input1, ItemStack output, float f) { - recipeManager.addRecipe(new UniversalRecipeInput(null, (new ItemStack[] { input1 })), new UniversalRecipeOutput( + public static void addRecipe(IRecipeInput recipeInputOreDict, ItemStack output, float f) { + recipeManager.addRecipe(new UniversalRecipeInput(null, (new IRecipeInput[] { recipeInputOreDict })), new UniversalRecipeOutput( null, (new RecipeOutputItemStack[] { new RecipeOutputItemStack(output, f) }), 20)); } } diff --git a/ihl/processing/metallurgy/RollingMachinePart1TileEntity.java b/ihl/processing/metallurgy/RollingMachinePart1TileEntity.java index a3d6ae6..dc2d293 100644 --- a/ihl/processing/metallurgy/RollingMachinePart1TileEntity.java +++ b/ihl/processing/metallurgy/RollingMachinePart1TileEntity.java @@ -4,6 +4,7 @@ import java.util.Arrays; import java.util.List; import java.util.Map; +import ic2.api.recipe.IRecipeInput; import ic2.core.ContainerBase; import ic2.core.IC2; import ic2.core.block.invslot.InvSlot.Access; @@ -38,7 +39,7 @@ public class RollingMachinePart1TileEntity extends BasicElectricMotorTileEntity{ public UniversalRecipeOutput getOutput() { - return RollingMachinePart1TileEntity.recipeManager.getOutputFor(this.getInput(), false, false); + return RollingMachinePart1TileEntity.recipeManager.getOutputFor(this.getInput()); } @Override @@ -101,9 +102,10 @@ public class RollingMachinePart1TileEntity extends BasicElectricMotorTileEntity{ @Override public void operate() { - List output = RollingMachinePart1TileEntity.recipeManager.getOutputFor(getInput(), false, false).getItemOutputs(); + List rinput = recipeManager.getRecipeInput(getInput()).getItemInputs(); + List output = RollingMachinePart1TileEntity.recipeManager.getOutputFor(getInput()).getItemOutputs(); this.output.add(output); - this.input.consume(0, 1); + this.input.consume(rinput.get(0)); } @SuppressWarnings({ "rawtypes", "unchecked" }) diff --git a/ihl/processing/metallurgy/VulcanizationExtrudingMoldTileEntity.java b/ihl/processing/metallurgy/VulcanizationExtrudingMoldTileEntity.java index e052ad7..bb51ced 100644 --- a/ihl/processing/metallurgy/VulcanizationExtrudingMoldTileEntity.java +++ b/ihl/processing/metallurgy/VulcanizationExtrudingMoldTileEntity.java @@ -175,8 +175,7 @@ public class VulcanizationExtrudingMoldTileEntity extends TileEntity private ItemStack processWire(ItemStack wire, boolean doProcess) { UniversalRecipeOutput rOutput = VulcanizationExtrudingMoldTileEntity.recipeManager.getOutputFor( - Arrays.asList(new FluidStack[] { this.fluidTank.getFluid() }), Arrays.asList(new ItemStack[] { wire }), - false, false); + Arrays.asList(new FluidStack[] { this.fluidTank.getFluid() }), Arrays.asList(new ItemStack[] { wire })); if (rOutput == null || this.energy < this.energyConsume) { return wire; } diff --git a/ihl/processing/metallurgy/WireMillTileEntity.java b/ihl/processing/metallurgy/WireMillTileEntity.java index 4216960..f69ea9a 100644 --- a/ihl/processing/metallurgy/WireMillTileEntity.java +++ b/ihl/processing/metallurgy/WireMillTileEntity.java @@ -124,7 +124,7 @@ public class WireMillTileEntity extends BasicElectricMotorTileEntity implements } else { - dice.consume(0, 1); + dice.consume(rInputDice); } } if(this.drainInputSlot.get()!=null && !rInput.getItemInputs().isEmpty() && rInput.getItemInputs().get(0).matches(this.drainInputSlot.get())) @@ -157,7 +157,7 @@ public class WireMillTileEntity extends BasicElectricMotorTileEntity implements public UniversalRecipeOutput getOutput() { - return WireMillTileEntity.recipeManager.getOutputFor(this.getInput(), false, false); + return WireMillTileEntity.recipeManager.getOutputFor(this.getInput()); } public static void addRecipe(FluidStack moltenMetal, IRecipeInput inputDice,ItemStack output1) diff --git a/ihl/processing/metallurgy/WoodenRollingMachinePart1TileEntity.java b/ihl/processing/metallurgy/WoodenRollingMachinePart1TileEntity.java index 5c786c5..4dd1f1c 100644 --- a/ihl/processing/metallurgy/WoodenRollingMachinePart1TileEntity.java +++ b/ihl/processing/metallurgy/WoodenRollingMachinePart1TileEntity.java @@ -40,7 +40,7 @@ public class WoodenRollingMachinePart1TileEntity extends BasicElectricMotorTileE public UniversalRecipeOutput getOutput() { - return WoodenRollingMachinePart1TileEntity.recipeManager.getOutputFor(this.getInput(), false, false); + return WoodenRollingMachinePart1TileEntity.recipeManager.getOutputFor(this.getInput()); } @Override @@ -104,11 +104,11 @@ public class WoodenRollingMachinePart1TileEntity extends BasicElectricMotorTileE public void operate() { List rInput = WoodenRollingMachinePart1TileEntity.recipeManager.getRecipeInput(getInput()).getItemInputs(); - List rOutput = WoodenRollingMachinePart1TileEntity.recipeManager.getOutputFor(getInput(), false, false).getItemOutputs(); + List rOutput = WoodenRollingMachinePart1TileEntity.recipeManager.getOutputFor(getInput()).getItemOutputs(); this.output.add(rOutput); for(int i=0;i fluidInputs = new ArrayList(); private final List itemInputs = new ArrayList(); - private int multiplier = Integer.MAX_VALUE; public UniversalRecipeInput(Object[] fluidStacks, Object[] iRecipeInputs) { if (fluidStacks != null) { @@ -55,7 +54,7 @@ public class UniversalRecipeInput { } public boolean matches(List fluidInputs1, List itemInputs1) { - return this.adjustAmounts(fluidInputs1, itemInputs1, false, false); + return this.matches(fluidInputs1, itemInputs1, false); } public List getFluidInputs() { @@ -84,9 +83,7 @@ public class UniversalRecipeInput { return this.matches(rInputsFluids, rInputsItems); } - public boolean adjustAmounts(List fluidInputs1, List itemInputs1, boolean doCheckAmounts, - boolean doAdjustAmounts) { - this.multiplier = Integer.MAX_VALUE; + public boolean matches(List fluidInputs1, List itemInputs1, boolean doCheckAmounts) { if (incorrectInputAmount(fluidInputs1, itemInputs1)) { return false; } @@ -96,21 +93,9 @@ public class UniversalRecipeInput { IRecipeInputFluid fs = fi.next(); FluidStack fs1 = getMatchedFluidStack(fs, fluidInputs1); if (fs1 == null || !fs.matches(fs1)) { - multiplier = 0; return false; } else if (doCheckAmounts && fs1.amount < fs.getAmount()) { - multiplier = 0; return false; - } else if (doAdjustAmounts) { - if (fs.getAmount() > 0) { - int multiplier1 = fs1.amount / fs.getAmount(); - if (multiplier1 < multiplier) { - multiplier = multiplier1; - } - } - fs1.amount -= fs.getAmount(); - if (fs1.amount <= 0) - fs1 = null; } } } @@ -120,21 +105,9 @@ public class UniversalRecipeInput { IRecipeInput is = ii.next(); ItemStack is1 = getMatchedItemStack(is, itemInputs1); if (is1 == null || !is.matches(is1)) { - multiplier = 0; return false; } else if (doCheckAmounts && is1.stackSize < is.getAmount()) { - multiplier = 0; return false; - } else if (doAdjustAmounts) { - if (is.getAmount() > 0) { - int multiplier1 = is1.stackSize / is.getAmount(); - if (multiplier1 < multiplier) { - multiplier = multiplier1; - } - } - if (IHLUtils.reduceItemStackAmountUsingIRecipeInput(is, is1, multiplier)) { - is1 = null; - } } } } @@ -161,35 +134,6 @@ public class UniversalRecipeInput { return null; } - public boolean adjustAmounts(UniversalRecipeInput input, boolean doAdjustAmounts) { - List rInputs = input.getItemInputs(); - Iterator ii = rInputs.iterator(); - List rInputsItems = new ArrayList(); - while (ii.hasNext()) { - IRecipeInput is = ii.next(); - rInputsItems.add(is.getInputs().get(0)); - } - List rInputsFluids = new ArrayList(); - List rInputsF = input.getFluidInputs(); - Iterator iiF = rInputsF.iterator(); - while (iiF.hasNext()) { - IRecipeInputFluid is = iiF.next(); - rInputsFluids.add(is.getInputs().get(0)); - } - return this.adjustAmounts(rInputsFluids, rInputsItems, true, doAdjustAmounts); - } - - public int getMultiplierAndAdjustAmounts(List fluidInputs1, List itemInputs1) { - if (this.adjustAmounts(fluidInputs1, itemInputs1, true, true)) { - if (multiplier < Integer.MAX_VALUE) { - return multiplier; - } else - return 1; - } else { - return 0; - } - } - public boolean containItemStack(ItemStack ingredient) { if (itemInputs == null || itemInputs.isEmpty()) { return false; diff --git a/ihl/recipes/UniversalRecipeManager.java b/ihl/recipes/UniversalRecipeManager.java index 169d6f6..6c09bb1 100644 --- a/ihl/recipes/UniversalRecipeManager.java +++ b/ihl/recipes/UniversalRecipeManager.java @@ -78,8 +78,7 @@ public class UniversalRecipeManager { this.keywordMap.put(keyword, input); } - public UniversalRecipeOutput getOutputFor(List fluidInputs, List itemInputs, - boolean adjustInput, boolean inputAffectOutput) { + public UniversalRecipeOutput getOutputFor(List fluidInputs, List itemInputs) { if (fluidInputs == null && itemInputs == null) { return null; } else { @@ -94,15 +93,8 @@ public class UniversalRecipeManager { continue; } - if (recipeInput.adjustAmounts(fluidInputs, itemInputs, true, false)) { - UniversalRecipeOutput output = entry.getValue(); - if (inputAffectOutput) { - int multiplier = recipeInput.getMultiplierAndAdjustAmounts(fluidInputs, itemInputs); - return output.copyWithMultiplier(multiplier); - } else if (adjustInput) { - recipeInput.adjustAmounts(fluidInputs, itemInputs, true, true); - } - return output; + if (recipeInput.matches(fluidInputs, itemInputs, true)) { + return entry.getValue(); } } @@ -128,7 +120,7 @@ public class UniversalRecipeManager { continue; } - if (recipeInput.adjustAmounts(fluidInputs1, itemInputs1, true, false)) { + if (recipeInput.matches(fluidInputs1, itemInputs1, true)) { return recipeInput; } } @@ -139,8 +131,8 @@ public class UniversalRecipeManager { } @SuppressWarnings({ "unchecked", "rawtypes" }) - public UniversalRecipeOutput getOutputFor(List[] input, boolean adjustInput, boolean inputAffectOutput) { - return this.getOutputFor(input[0], input[1], adjustInput, inputAffectOutput); + public UniversalRecipeOutput getOutputFor(List[] input) { + return this.getOutputFor(input[0], input[1]); } @SuppressWarnings({ "unchecked", "rawtypes" }) diff --git a/ihl/utils/IHLMathUtils.java b/ihl/utils/IHLMathUtils.java index 1200fd5..47f3913 100644 --- a/ihl/utils/IHLMathUtils.java +++ b/ihl/utils/IHLMathUtils.java @@ -1,152 +1,103 @@ package ihl.utils; -public class IHLMathUtils -{ - private final static int accuracy_level=65536; - private final static float[] sin_table=new float[accuracy_level]; - private final static float[] atan_table=new float[accuracy_level]; - private final static float[] sqrt_table=new float[accuracy_level]; - private final static float PI=(float)Math.PI; - - public static float sin(float angle) - { - float angle1 = angle % (2*PI); - if(angle1<0) - { - angle1+=2*PI; - } - return sin_table[(int)(angle1*accuracy_level/2/PI)]; - } - - public static float sqrt(float value) - { +public class IHLMathUtils { + private final static int accuracy_level = 1024; + private final static float[] sqrt_table = new float[accuracy_level]; + + public static float sqrt(float value) { float value1 = value; int multiplier = 2; - while(value1 >= 1.0f) - { - multiplier*=multiplier; - value1 /=multiplier*multiplier; + while (value1 >= 1.0f) { + multiplier *= multiplier; + value1 /= multiplier * multiplier; } - return ((multiplier>2)?multiplier:1)*sqrt_table[(int)(value1*accuracy_level)]; + return ((multiplier > 2) ? multiplier : 1) * sqrt_table[(int) (value1 * accuracy_level)]; } - - public static float atan(float tan_value) - { - if(tan_value<-32f) - { - return -1.54f; - } - else if(tan_value>32f) - { - return 1.54f; - } - else - { - return atan_table[(int)((tan_value+32f)*accuracy_level/64f)]; - } - } - - public static float[] vector_vector_multiply(float[] v1, float[] v2) - { - float c_x = v1[1]*v2[2] - v2[1]*v1[2]; - float c_y = v2[0]*v1[2] - v1[0]*v2[2]; - float c_z = v1[0]*v2[1] - v2[0]*v1[1]; - return new float[] {c_x,c_y,c_z}; + + public static float[] vector_vector_multiply(float[] v1, float[] v2) { + float c_x = v1[1] * v2[2] - v2[1] * v1[2]; + float c_y = v2[0] * v1[2] - v1[0] * v2[2]; + float c_z = v1[0] * v2[1] - v2[0] * v1[1]; + return new float[] { c_x, c_y, c_z }; } - public static void normalize_vector(float[] v1) - { - float d = (float)Math.sqrt(v1[0]*v1[0]+v1[1]*v1[1]+v1[2]*v1[2]); - if(d == 0) - { // Nothing can we do. Create new vector towards up direction. - v1[0]=0; - v1[1]=1; - v1[2]=0; - } - else - { - v1[0]/=d; - v1[1]/=d; - v1[2]/=d; + public static void normalize_vector(float[] v1) { + float d = (float) Math.sqrt(v1[0] * v1[0] + v1[1] * v1[1] + v1[2] * v1[2]); + if (d == 0) { // Nothing can we do. Create new vector towards up + // direction. + v1[0] = 0; + v1[1] = 1; + v1[2] = 0; + } else { + v1[0] /= d; + v1[1] /= d; + v1[2] /= d; } } - public static void scale_vector_to_value(float[] v1, float v2) - { - float d = (float)Math.sqrt(v1[0]*v1[0]+v1[1]*v1[1]+v1[2]*v1[2]); - if(d == 0) - { // Nothing can we do. Create new vector towards up direction. - v1[0]=0; - v1[1]=v2; - v1[2]=0; - } - else - { - v1[0]=v1[0]*v2/d; - v1[1]=v1[1]*v2/d; - v1[2]=v1[2]*v2/d; + public static void scale_vector_to_value(float[] v1, float v2) { + float d = (float) Math.sqrt(v1[0] * v1[0] + v1[1] * v1[1] + v1[2] * v1[2]); + if (d == 0) { // Nothing can we do. Create new vector towards up + // direction. + v1[0] = 0; + v1[1] = v2; + v1[2] = 0; + } else { + v1[0] = v1[0] * v2 / d; + v1[1] = v1[1] * v2 / d; + v1[2] = v1[2] * v2 / d; } } - + public static void vector_add(float[] fs, float x, float y, float z) { - fs[0]+=x; - fs[1]+=y; - fs[2]+=z; + fs[0] += x; + fs[1] += y; + fs[2] += z; } - - static - { - for(int i=0;i 0) + return 1; + else if (value < 0) + return -1; + else + return 0; + } + } diff --git a/ihl/utils/IHLUtils.java b/ihl/utils/IHLUtils.java index 84c04a1..f47673c 100644 --- a/ihl/utils/IHLUtils.java +++ b/ihl/utils/IHLUtils.java @@ -15,10 +15,6 @@ import ihl.metallurgy.constants.*; import ihl.processing.invslots.InvSlotConsumableLiquidIHL; import ihl.recipes.IRecipeInputFluid; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileOutputStream; -import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; @@ -926,18 +922,10 @@ public class IHLUtils { if (block1 != Blocks.air) { --ebs.blockRefCount; - - if (block1.getTickRandomly()) { - --ebs.tickRefCount; - } } if (block != Blocks.air) { ++ebs.blockRefCount; - - if (block.getTickRandomly()) { - ++ebs.tickRefCount; - } } int i1 = Block.getIdFromBlock(block); diff --git a/ihl/worldgen/IHLWorldGenerator.java b/ihl/worldgen/IHLWorldGenerator.java index 7a5c83d..95a91f3 100644 --- a/ihl/worldgen/IHLWorldGenerator.java +++ b/ihl/worldgen/IHLWorldGenerator.java @@ -4,248 +4,98 @@ import ihl.IHLMod; import ihl.utils.IHLUtils; import ihl.worldgen.ores.IHLFluid; -import java.util.HashMap; import java.util.HashSet; -import java.util.Map; import java.util.Random; import java.util.Set; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.chunk.IChunkProvider; import cpw.mods.fml.common.IWorldGenerator; public class IHLWorldGenerator implements IWorldGenerator { - - private WorldGenMinableMeta - apatiteGenerator, - saltpeterGenerator, - limestoneGenerator, - gypsumGenerator, - potassiumFeldsparGenerator, - tronaGenerator, - gyubneraGenerator, - rocksaltGenerator, - cinnabarGenerator, - bauxiteGenerator, - chromiteGenerator, - muscoviteGenerator, - oilGenerator, - datoliteGenerator, - saltwaterGenerator, - bischofiteGenerator; - private WorldGenMinableMeta currentGenerator; - protected final Map> oreCoordinatesToChunkCoordinates = new HashMap>(); - protected final Map blockToOreCoordinates = new HashMap(); - public final Set precalculatedChunkChache = new HashSet(); + + private static final Block[] replaceableMinerals = new Block[] { Blocks.stone, Blocks.gravel , Blocks.gold_ore, Blocks.coal_ore, Blocks.iron_ore, Blocks.lapis_ore, Blocks.clay, Blocks.diamond_ore, Blocks.redstone_ore, Blocks.emerald_ore}; + private static final Block[] replaceableSand = new Block[] { Blocks.sand }; + private static final Block[] replaceableForOil = new Block[] { Blocks.lava, Blocks.flowing_lava}; public static IHLWorldGenerator instance; - - + private final Set generators = new HashSet(8); + public IHLWorldGenerator() { super(); - apatiteGenerator = new WorldGenMinableMeta(precalculatedChunkChache,blockToOreCoordinates, oreCoordinatesToChunkCoordinates, IHLUtils.getOreDictBlock("oreApatite"), 0, 360, new Block[] {Blocks.stone,Blocks.gravel}); - saltpeterGenerator = new WorldGenMinableMeta(precalculatedChunkChache,blockToOreCoordinates, oreCoordinatesToChunkCoordinates,IHLUtils.getOreDictBlock("oreSaltpeter"), 0, 140, new Block[] {Blocks.stone,Blocks.gravel}); - limestoneGenerator = new WorldGenMinableMeta(precalculatedChunkChache,blockToOreCoordinates, oreCoordinatesToChunkCoordinates,IHLUtils.getOreDictBlock("oreLimestone"), 0, 140, new Block[] {Blocks.stone,Blocks.gravel}); - gypsumGenerator = new WorldGenMinableMeta(precalculatedChunkChache,blockToOreCoordinates, oreCoordinatesToChunkCoordinates,IHLUtils.getOreDictBlock("oreGypsum"), 0, 140, new Block[] {Blocks.stone,Blocks.gravel}); - potassiumFeldsparGenerator = new WorldGenMinableMeta(precalculatedChunkChache,blockToOreCoordinates, oreCoordinatesToChunkCoordinates,IHLUtils.getOreDictBlock("orePotassiumFeldspar"), 0, 140, new Block[] {Blocks.stone,Blocks.gravel}); - tronaGenerator = new WorldGenMinableMeta(precalculatedChunkChache,blockToOreCoordinates, oreCoordinatesToChunkCoordinates,IHLUtils.getOreDictBlock("oreTrona"), 0, 700, new Block[] {Blocks.stone,Blocks.gravel}); - gyubneraGenerator = new WorldGenMinableMeta(precalculatedChunkChache,blockToOreCoordinates, oreCoordinatesToChunkCoordinates,IHLUtils.getOreDictBlock("oreGyubnera"), 0, 700, new Block[] {Blocks.stone,Blocks.gravel}); - rocksaltGenerator = new WorldGenMinableMeta(precalculatedChunkChache,blockToOreCoordinates, oreCoordinatesToChunkCoordinates,IHLUtils.getOreDictBlock("oreRockSalt"), 0, 140, new Block[] {Blocks.stone,Blocks.gravel}); - cinnabarGenerator = new WorldGenMinableMeta(precalculatedChunkChache,blockToOreCoordinates, oreCoordinatesToChunkCoordinates,IHLUtils.getOreDictBlock("oreCinnabar"), 0, 700, new Block[] {Blocks.stone,Blocks.gravel}); - bauxiteGenerator = new WorldGenMinableMeta(precalculatedChunkChache,blockToOreCoordinates, oreCoordinatesToChunkCoordinates,IHLUtils.getOreDictBlock("oreBauxite"), 0, 700, new Block[] {Blocks.stone,Blocks.gravel}); - chromiteGenerator = new WorldGenMinableMeta(precalculatedChunkChache,blockToOreCoordinates, oreCoordinatesToChunkCoordinates,IHLUtils.getOreDictBlock("oreChromite"), 0, 700, new Block[] {Blocks.stone,Blocks.gravel}); - muscoviteGenerator = new WorldGenMinableMeta(precalculatedChunkChache,blockToOreCoordinates, oreCoordinatesToChunkCoordinates,IHLUtils.getOreDictBlock("oreMica"), 0, 140, new Block[] {Blocks.stone,Blocks.gravel}); - oilGenerator = new WorldGenLiquidOre(precalculatedChunkChache,blockToOreCoordinates, oreCoordinatesToChunkCoordinates,IHLFluid.getBlock("oil"),Blocks.clay, 0, 32, 0, 8, new Block[] {Blocks.lava,Blocks.clay}); - datoliteGenerator = new WorldGenMinableMeta(precalculatedChunkChache,blockToOreCoordinates, oreCoordinatesToChunkCoordinates,IHLUtils.getOreDictBlock("oreDatolite"), 0, 700, new Block[] {Blocks.stone,Blocks.gravel}); - saltwaterGenerator = new WorldGenLiquidOre(precalculatedChunkChache,blockToOreCoordinates, oreCoordinatesToChunkCoordinates,IHLFluid.getBlock("saltwater"),Blocks.sandstone, 0, 32, 62, 62, new Block[] {Blocks.sand,Blocks.sandstone}); - bischofiteGenerator = new WorldGenMinableMeta(precalculatedChunkChache,blockToOreCoordinates, oreCoordinatesToChunkCoordinates,IHLUtils.getOreDictBlock("oreBischofite"), 0, 1400, new Block[] {Blocks.stone,Blocks.gravel}); - instance=this; - } - - @Override - public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) - { - for(int ix=-16+chunkX;ix<=16+chunkX;ix++) + if (IHLMod.config.generateApatiteOre) { - for(int iz=-16+chunkZ;iz<=16+chunkZ;iz++) - { - long chunkKey = (ix<<16)+iz; - if(!this.precalculatedChunkChache.contains(chunkKey)) - { - if(!world.getChunkProvider().chunkExists(ix, iz) || (ix==chunkX && iz==chunkZ)) - { - currentGenerator = switchCurrentOreGenerator(world, random, ix, iz); - if(currentGenerator!=null) - { - if(currentGenerator.generateNewVein(random, ix, iz)) - { - - } - } - } - this.precalculatedChunkChache.add(chunkKey); - } - } - } - long chunkKey = (chunkX<<16)+chunkZ; - if(this.precalculatedChunkChache.contains(chunkKey)) + generators.add(new WorldGeneratorVein(IHLUtils.getOreDictBlock("oreApatite"), replaceableMinerals)); + } + if (IHLMod.config.generateSaltpeterOre) { - Set oreCoordinatesSet = this.oreCoordinatesToChunkCoordinates.get(chunkKey); - if(oreCoordinatesSet!=null) - { - Object[] oreCoordinatesSetA = oreCoordinatesSet.toArray(); - for(int i=0;i 1.9f && biome.rainfall==0f) - { - return saltwaterGenerator; - } - } - break; - case 14: - if (IHLMod.config.generateDatolite) - { - if (random.nextFloat() < 0.25F) - { - return datoliteGenerator; - } - } - break; - case 15: - if (IHLMod.config.generateBischofite) - { - if (random.nextFloat() < 0.25F) - { - return bischofiteGenerator; - } - } - } - return null; + generators.add(new WorldGeneratorSurfaceLake(IHLFluid.getBlock("saltwater"), replaceableSand)); + } + if (IHLMod.config.generateDatolite) + { + generators.add(new WorldGeneratorVein(IHLUtils.getOreDictBlock("oreDatolite"), replaceableMinerals)); + } + if (IHLMod.config.generateBischofite) + { + generators.add(new WorldGeneratorVein(IHLUtils.getOreDictBlock("oreBischofite"), replaceableMinerals)); + } + instance=this; + } + + @Override + public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, + IChunkProvider chunkProvider) { + for (WorldGeneratorBase generator : generators) { + generator.generate(world, chunkX, chunkZ); + } } } diff --git a/ihl/worldgen/WorldGenLiquidOre.java b/ihl/worldgen/WorldGenLiquidOre.java deleted file mode 100644 index f59fb2e..0000000 --- a/ihl/worldgen/WorldGenLiquidOre.java +++ /dev/null @@ -1,86 +0,0 @@ -package ihl.worldgen; - -import java.util.Map; -import java.util.Random; -import java.util.Set; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.init.Blocks; -import net.minecraft.world.World; - -public class WorldGenLiquidOre extends WorldGenMinableMeta { - - public WorldGenLiquidOre(Set precalculatedChunkChache1,Map blockToOreCoordinates, Map> oreCoordinatesToChunkCoordinates, Block block, Block liquidBedBlock1, int meta, int numberOfBlocks1, int veinMinHeightLimit1, int veinMaxHeightLimit1, Block... replacedBlock1) - { - super(precalculatedChunkChache1,blockToOreCoordinates, oreCoordinatesToChunkCoordinates,block, liquidBedBlock1, meta, numberOfBlocks1, veinMinHeightLimit1, veinMaxHeightLimit1, replacedBlock1); - } - - @Override - public boolean generate(World world, Random random, int x, int y, int z) - { - if(replaceableBlocks.contains(world.getBlock(x, y, z))) - { - if(y<44 || world.getBlock(x, y+1, z).isAir(world, x, y+1, z) || world.getBlock(x, y+1, z).equals(Blocks.air)) - { - world.setBlock(x, y, z, mineableBlock, mineableBlockMeta, 2); - int x1,y1,z1; - int xyz[] = {0,0,1,0,0,-1,0,0}; - Block block; - for(int i=0;i<=5;i++) - { - x1=x+xyz[i]; - y1=y+xyz[i+1]; - z1=z+xyz[i+2]; - block = world.getBlock(x1,y1,z1); - if(block!=mineableBlock) - { - if(block.getMaterial()==Material.lava) - { - world.setBlock(x1, y1, z1, Blocks.obsidian, 0, 2); - } - else if(!block.isAir(world, x1, y1, z1) || xyz[i+1]<=0) - { - world.setBlock(x1, y1, z1, liquidBedBlock, 0, 2); - } - } - } - return true; - } - } - return false; - } - - @Override - public boolean generateNewVein(Random random, int chunkX1, int chunkZ1) - { - int chunkX = chunkX1; - int chunkZ = chunkZ1; - int x0=chunkX << 4; - int z0=chunkZ << 4; - long chunkKey = (chunkX<<16)+chunkZ; - for(int ix=x0-this.numberOfBlocks/2;ix>4; - chunkZ=z0>>4; - chunkKey = (chunkX<<16)+chunkZ; - updateOreCoordinatesToChunkCoordinates(chunkKey, oreCoordinatesArray); - this.blockToOreCoordinates.put(oreCoordinatesKey, this); - this.precalculatedChunkChache.add(chunkKey); - } - } - } - } - } - return true; - } -} diff --git a/ihl/worldgen/WorldGenMinableMeta.java b/ihl/worldgen/WorldGenMinableMeta.java deleted file mode 100644 index f80edba..0000000 --- a/ihl/worldgen/WorldGenMinableMeta.java +++ /dev/null @@ -1,126 +0,0 @@ -package ihl.worldgen; - -import java.util.Arrays; -import java.util.HashSet; -import java.util.Map; -import java.util.Random; -import java.util.Set; - -import net.minecraft.block.Block; -import net.minecraft.init.Blocks; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; -import net.minecraftforge.common.util.ForgeDirection; - -public class WorldGenMinableMeta extends WorldGenerator { - - protected final Block mineableBlock; - protected final Set replaceableBlocks=new HashSet(); - protected final Block liquidBedBlock; - protected final int mineableBlockMeta; - protected final int numberOfBlocks; - protected int blockCounter; - protected final int veinMaxHeightLimit; - protected final int veinMinHeightLimit; - - public boolean maxBlockReached=false; - public int lastX=-1; - public int lastY=64; - public int lastZ=-1; - protected ForgeDirection veinDirection = ForgeDirection.SOUTH;//EAST - protected final Map> oreCoordinatesToChunkCoordinates; - protected final Map blockToOreCoordinates; - protected final Set precalculatedChunkChache; - - public WorldGenMinableMeta(Set precalculatedChunkChache1, Map blockToOreCoordinates1, Map> oreCoordinatesToChunkCoordinates2, Block block, int meta, int numberOfBlocks1, Block... blocks) { - this(precalculatedChunkChache1 ,blockToOreCoordinates1, oreCoordinatesToChunkCoordinates2, block, Blocks.clay, meta, numberOfBlocks1, 0, 128, blocks); - } - - public WorldGenMinableMeta(Set precalculatedChunkChache1, Map blockToOreCoordinates1, Map> oreCoordinatesToChunkCoordinates1, Block block, Block liquidBedBlock1, int meta, int numberOfBlocks1, int veinMinHeightLimit1, int veinMaxHeightLimit1, Block... replacedBlock1) - { - precalculatedChunkChache=precalculatedChunkChache1; - blockToOreCoordinates=blockToOreCoordinates1; - oreCoordinatesToChunkCoordinates=oreCoordinatesToChunkCoordinates1; - mineableBlock = block; - replaceableBlocks.addAll(Arrays.asList(replacedBlock1)); - mineableBlockMeta = meta; - liquidBedBlock=liquidBedBlock1; - numberOfBlocks = numberOfBlocks1; - veinMaxHeightLimit=veinMaxHeightLimit1; - veinMinHeightLimit=veinMinHeightLimit1; - } - - @Override - public boolean generate(World world, Random random, int x, int y, int z) - { - int chunkX = x>>4; - int chunkZ = z>>4; - int xyz[] = {0,0,1,0,0,-1,0,0}; - for(int i=0;i<=5;i++) - { - int x0 = x+xyz[i]; - int y0 = y+xyz[i+1]; - int z0 = z+xyz[i+2]; - if(x0>>4==chunkX && z0>>4==chunkZ) - { - if(replaceableBlocks.contains(world.getBlock(x0, y0, z0))) - { - world.setBlock(x0, y0, z0, mineableBlock, mineableBlockMeta, 2); - } - } - } - return false; - } - - public boolean generateNewVein(Random random, int chunkX1, int chunkZ1) - { - Vec3 veinVector = Vec3.createVectorHelper(random.nextFloat()*2-1f, random.nextFloat()-0.5f, random.nextFloat()*2-1f); - veinVector.normalize(); - int chunkX = chunkX1; - int chunkZ = chunkZ1; - int x0=chunkX << 4; - int z0=chunkZ << 4; - int y0=random.nextInt(veinMaxHeightLimit); - //System.out.println("generated new vein with height="+y0); - float fx=x0; - float fy=y0; - float fz=z0; - long chunkKey = (chunkX<<16)+chunkZ; - for(int i=0;i>4; - chunkZ=z0>>4; - chunkKey = (chunkX<<16)+chunkZ; - updateOreCoordinatesToChunkCoordinates(chunkKey, oreCoordinatesArray); - this.blockToOreCoordinates.put(oreCoordinatesKey, this); - this.precalculatedChunkChache.add(chunkKey); - } - fx+=veinVector.xCoord+random.nextFloat()*0.25f; - fy+=veinVector.yCoord+random.nextFloat()*0.25f; - fz+=veinVector.zCoord+random.nextFloat()*0.25f; - x0=Math.round(fx); - y0=Math.round(fy); - z0=Math.round(fz); - } - return true; - } - - protected void updateOreCoordinatesToChunkCoordinates(long chunkKey, int[] oreCoordinates) - { - if(this.oreCoordinatesToChunkCoordinates.containsKey(chunkKey)) - { - this.oreCoordinatesToChunkCoordinates.get(chunkKey).add(oreCoordinates); - } - else - { - Set oreCoordinatesS = new HashSet(); - oreCoordinatesS.add(oreCoordinates); - this.oreCoordinatesToChunkCoordinates.put(chunkKey, oreCoordinatesS); - } - } - -} diff --git a/ihl/worldgen/WorldGeneratorBase.java b/ihl/worldgen/WorldGeneratorBase.java new file mode 100644 index 0000000..aaaaa66 --- /dev/null +++ b/ihl/worldgen/WorldGeneratorBase.java @@ -0,0 +1,69 @@ +package ihl.worldgen; + +import java.util.HashSet; +import java.util.Random; +import java.util.Set; + +import ihl.utils.IHLUtils; +import net.minecraft.block.Block; +import net.minecraft.world.World; +import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.chunk.storage.ExtendedBlockStorage; + +public abstract class WorldGeneratorBase { + private final Random random = new Random(); + protected final Block ore; + private final Set replaceableBlocks = new HashSet(2); + + public WorldGeneratorBase(Block oreIn, Block... replaceableBlocksIn) { + ore = oreIn; + for (Block block : replaceableBlocksIn) { + replaceableBlocks.add(block); + } + } + + public void generate(World world, int chunkX, int chunkZ) { + int[] centralPOI = this.getPOI(world, chunkX, chunkZ, 0, 0); + int[] xz = new int[] { 0, 1, 0, -1, 0 }; + for (int i = 0; i < 4; i++) { + int[] surroundPOI = this.getPOI(world, chunkX + xz[i], chunkZ + xz[i + 1], xz[i], xz[i + 1]); + this.replaceBlocks(world, centralPOI, surroundPOI, chunkX << 4, chunkZ << 4); + } + } + + protected abstract void replaceBlocks(World world, final int[] centralPOI, final int[] surroundPOI, + final int startX, final int startZ); + + protected boolean replace(World world, int absX, int absY, int absZ, final Block block) { + if (!world.getChunkProvider().chunkExists(absX >> 4, absZ >> 4)) { + throw new IllegalStateException("quered chunk is not yet generated!"); + } + Chunk chunk = world.getChunkFromBlockCoords(absX, absZ); + ExtendedBlockStorage ebs = chunk.getBlockStorageArray()[absY >> 4]; + if (ebs != null && replaceableBlocks.contains(ebs.getBlockByExtId(absX & 15, absY & 15, absZ & 15))) { + IHLUtils.setBlockRaw(ebs, absX & 15, absY & 15, absZ & 15, block); + return true; + } + return false; + } + + protected boolean replaceAll(World world, int absX, int absY, int absZ, final Block block) { + if (!world.getChunkProvider().chunkExists(absX >> 4, absZ >> 4)) { + throw new IllegalStateException("quered chunk is not yet generated!"); + } + Chunk chunk = world.getChunkFromBlockCoords(absX, absZ); + ExtendedBlockStorage ebs = chunk.getBlockStorageArray()[absY >> 4]; + if (ebs != null) { + IHLUtils.setBlockRaw(ebs, absX & 15, absY & 15, absZ & 15, block); + return true; + } + return false; + } + + private int[] getPOI(World world, int chunkX, int chunkZ, int xOffset, int zOffset) { + long seed = (long) chunkX << 16 ^ chunkZ << 8 ^ Block.getIdFromBlock(ore); + random.setSeed(seed); + return new int[] { random.nextInt(16) + xOffset * 16, random.nextInt(world.getActualHeight()/2), + random.nextInt(16) + zOffset * 16 }; + } +} diff --git a/ihl/worldgen/WorldGeneratorSurfaceLake.java b/ihl/worldgen/WorldGeneratorSurfaceLake.java new file mode 100644 index 0000000..3affdaf --- /dev/null +++ b/ihl/worldgen/WorldGeneratorSurfaceLake.java @@ -0,0 +1,41 @@ +package ihl.worldgen; + +import ihl.utils.IHLMathUtils; +import ihl.utils.IHLUtils; +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.chunk.storage.ExtendedBlockStorage; + +public class WorldGeneratorSurfaceLake extends WorldGeneratorBase { + + public WorldGeneratorSurfaceLake(Block oreIn, Block[] replaceableBlocksIn) { + super(oreIn, replaceableBlocksIn); + } + + @Override + protected void replaceBlocks(World world, int[] centralPOI, int[] surroundPOI, int startX, int startZ) { + BiomeGenBase biome = world.getBiomeGenForCoords(startX, startZ); + if (biome.temperature < 1.9f || biome.rainfall != 0f) { + return; + } + int x = centralPOI[0], y = centralPOI[1], z = centralPOI[2]; + for (int ix = x; ix < 16 && ix >= 0; ix += IHLMathUtils.sign(surroundPOI[0] - x)) { + int y2 = y += IHLMathUtils.sign(surroundPOI[1] - world.getActualHeight() / 4 - y); + for (int iz = z; iz < 16 && iz >= 0; iz += IHLMathUtils.sign(surroundPOI[2] - z)) { + y2 += IHLMathUtils.sign(surroundPOI[1] - world.getActualHeight() / 4 - y2); + if (y2 > world.getActualHeight() * 3 / 8 + && world.getBlock(ix + startX, 64, iz + startZ) == Blocks.air) { + this.replace(world, ix + startX, 63, iz + startZ, ore); + } + if (surroundPOI[2] == z) { + break; + } + } + if (surroundPOI[0] == x) { + break; + } + } + } +} diff --git a/ihl/worldgen/WorldGeneratorUndergroundLake.java b/ihl/worldgen/WorldGeneratorUndergroundLake.java new file mode 100644 index 0000000..6cd0870 --- /dev/null +++ b/ihl/worldgen/WorldGeneratorUndergroundLake.java @@ -0,0 +1,39 @@ +package ihl.worldgen; + +import ihl.utils.IHLMathUtils; +import net.minecraft.block.Block; +import net.minecraft.world.World; + +public class WorldGeneratorUndergroundLake extends WorldGeneratorBase { + + private final Block clayBlock; + + public WorldGeneratorUndergroundLake(Block oreIn, Block clayIn, Block[] replaceableBlocksIn) { + super(oreIn, replaceableBlocksIn); + clayBlock = clayIn; + } + + @Override + protected void replaceBlocks(World world, int[] centralPOI, int[] surroundPOI, int startX, int startZ) { + int x = centralPOI[0], y = centralPOI[1] - world.getActualHeight() / 4, z = centralPOI[2]; + for (int ix = x; ix < 16 && ix >= 0; ix += IHLMathUtils.sign(surroundPOI[0] - x)) { + int y2 = y += IHLMathUtils.sign(surroundPOI[1] - world.getActualHeight() / 4 - y); + for (int iz = z; iz < 16 && iz >= 0; iz += IHLMathUtils.sign(surroundPOI[2] - z)) { + y2 += IHLMathUtils.sign(surroundPOI[1] - world.getActualHeight() / 4 - y2); + if (y2 > 1) { + this.replace(world, ix + startX, y2 + 1, iz + startZ, clayBlock); + for (int iy = y2; iy > 0; iy--) { + this.replace(world, ix + startX, iy, iz + startZ, ore); + } + } + if (surroundPOI[2] == z) { + break; + } + } + if (surroundPOI[0] == x) { + break; + } + } + } + +} diff --git a/ihl/worldgen/WorldGeneratorVein.java b/ihl/worldgen/WorldGeneratorVein.java new file mode 100644 index 0000000..3be74e0 --- /dev/null +++ b/ihl/worldgen/WorldGeneratorVein.java @@ -0,0 +1,26 @@ +package ihl.worldgen; + +import ihl.utils.IHLMathUtils; +import net.minecraft.block.Block; +import net.minecraft.world.World; + +public class WorldGeneratorVein extends WorldGeneratorBase { + + public WorldGeneratorVein(Block oreIn, Block[] replaceableBlocksIn) { + super(oreIn, replaceableBlocksIn); + } + + @Override + protected void replaceBlocks(World world, int[] centralPOI, int[] surroundPOI, int startX, int startZ) { + int x = centralPOI[0], y = centralPOI[1], z = centralPOI[2]; + while (x < 16 && x >= 0 && y >= 0 && y < world.getActualHeight() && z >= 0 && z < 16) { + this.replace(world, x + startX, y, z + startZ, ore); + x += IHLMathUtils.sign(surroundPOI[0] - x); + y += IHLMathUtils.sign(surroundPOI[1] - y); + z += IHLMathUtils.sign(surroundPOI[2] - z); + if (IHLMathUtils.sign(surroundPOI[0] - x) == 0 && IHLMathUtils.sign(surroundPOI[1] - y) == 0 + && IHLMathUtils.sign(surroundPOI[2] - z) == 0) + break; + } + } +} diff --git a/ihl/worldgen/ores/IHLFluid.java b/ihl/worldgen/ores/IHLFluid.java index ce98b86..51e0999 100644 --- a/ihl/worldgen/ores/IHLFluid.java +++ b/ihl/worldgen/ores/IHLFluid.java @@ -181,7 +181,7 @@ public class IHLFluid extends Fluid { fluidRubberTreeSap("fluidRubberTreeSap", "fluidRubberTreeSap", 10019, 293, 273, 393, 1200f, "fluidrubbertreesap", Material.water, true, true, false, false), SpruceResin("SpruceResin","fluidSpruceResin", 10018, 293, 273, 533, 1080, "spruceresin", Material.water, true, true, true, false), CablingColophony("CablingColophony", 10017, 363, 363, 533, 1070, "cablingcolophony", Material.water, true, false, true), - Glyceryl("Glyceryl", 10016, 293, 291, 583, 1261, "glyceryl", Material.water, true, false, true), + Glycerol("Glycerol", 10016, 293, 291, 583, 1261, "glycerol", Material.water, true, false, true), SeedOil("SeedOil", 10015, 293, 256, 583, 920, "seedoil", Material.water, true, false, true), AquaRegia("AquaRegia", 10014, 293, 231, 356, 1060), SodiumPeroxide("SodiumPeroxide", 10013, 950, 950, 2223, 1800), @@ -202,10 +202,6 @@ public class IHLFluid extends Fluid { MoltenCopper("MoltenCopper", "fluidMolten", 10048, 1356, 1356, 2840, 8920, "molten.copper", Material.lava, false, false, false), MoltenBronze("MoltenBronze", 10005, 940, 940, 2840, 8000, "molten.bronze", Material.lava, false, false, false), MoltenGold("MoltenGold", 10005, 1337, 1337, 3129, 17310, "molten.gold", Material.lava, false, false, false), - VapourSulfuricAcid("VapourSulfuricAcid", 10004, 610, 283, 610, 4.522F, "vapour.sulfuricacid", new MaterialLiquid( - MapColor.redColor), false, false, false), - SulfuricAnhydride("SulfuricAnhydride", 10003, 45, 17, 45, 2, "sulfuricanhydride", new MaterialLiquid( - MapColor.redColor), true, false, false), SulfuricAcid("SulfuricAcid", 10002, 293, 283, 610, 1836), NitricAcid("NitricAcid", 10001, 293, 231, 356, 1100); -- cgit v1.2.3