From ccc575c173d0755fea4cf80983884aead80a8c1c Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 25 Jul 2022 20:29:01 +0200 Subject: [PATCH] removed trash, improved turbofan, boxy pipes and more --- .../java/com/hbm/blocks/ITooltipProvider.java | 17 + src/main/java/com/hbm/blocks/ModBlocks.java | 28 +- .../hbm/blocks/generic/BlockDoorGeneric.java | 55 +- .../com/hbm/blocks/generic/BlockMarker.java | 21 +- .../java/com/hbm/blocks/generic/BlockOre.java | 2 +- .../com/hbm/blocks/machine/FurnaceIron.java | 11 +- .../com/hbm/blocks/machine/FurnaceSteel.java | 11 +- .../com/hbm/blocks/machine/FusionCore.java | 42 - .../com/hbm/blocks/machine/FusionHatch.java | 121 -- .../com/hbm/blocks/machine/HeaterFirebox.java | 11 +- .../blocks/machine/MachineLiquefactor.java | 13 +- .../hbm/blocks/machine/MachineSolidifier.java | 13 +- .../com/hbm/blocks/network/FluidDuctBox.java | 154 ++ .../java/com/hbm/entity/EntityMappings.java | 424 +++++ .../hbm/entity/effect/EntityFalloutRain.java | 13 +- .../entity/logic/EntityNukeExplosionMK4.java | 77 +- .../hbm/entity/mob/EntityNuclearCreeper.java | 565 +++--- src/main/java/com/hbm/handler/GUIHandler.java | 14 - .../container/ContainerFusionMultiblock.java | 130 -- .../inventory/gui/GUIFusionMultiblock.java | 62 - .../hbm/inventory/gui/GUIMachineTurbofan.java | 3 +- .../inventory/recipes/AssemblerRecipes.java | 8 + .../inventory/recipes/anvil/AnvilRecipes.java | 16 + .../hbm/items/machine/ItemMachineUpgrade.java | 26 +- .../com/hbm/items/tool/ItemToolAbility.java | 4 - .../java/com/hbm/items/tool/ItemWandS.java | 48 +- src/main/java/com/hbm/lib/Library.java | 17 - src/main/java/com/hbm/main/ClientProxy.java | 8 +- .../java/com/hbm/main/CraftingManager.java | 3 +- src/main/java/com/hbm/main/MainRegistry.java | 219 +-- .../com/hbm/main/ModEventHandlerClient.java | 13 + .../java/com/hbm/main/ResourceManager.java | 6 +- .../com/hbm/packet/LoopedSoundPacket.java | 2 +- .../java/com/hbm/packet/TETurbofanPacket.java | 2 +- .../com/hbm/render/block/RenderBoxDuct.java | 160 ++ .../com/hbm/render/block/RenderTestPipe.java | 1 - .../render/tileentity/RenderFluidTank.java | 25 + .../tileentity/RenderStructureMaker.java | 179 +- .../hbm/render/tileentity/RenderTurbofan.java | 16 +- .../sound/AudioWrapperClientStartStop.java | 4 +- .../java/com/hbm/sound/SoundLoopTurbofan.java | 2 +- .../java/com/hbm/tileentity/DoorDecl.java | 87 + .../hbm/tileentity/TileEntityDoorGeneric.java | 7 - .../java/com/hbm/tileentity/TileMappings.java | 1 - .../machine/TileEntityFusionMultiblock.java | 1193 ------------- ...eEntityMachineSchrabidiumTransmutator.java | 28 +- .../machine/TileEntityMachineTurbofan.java | 743 +++----- .../machine/TileEntityStructureMarker.java | 14 +- .../com/hbm/world/dungeon/Spaceship2.java | 2 - .../hbm/world/machine/FactoryAdvanced.java | 70 - .../hbm/world/machine/FactoryTitanium.java | 89 - .../com/hbm/world/machine/FusionReactor.java | 1590 ----------------- src/main/resources/assets/hbm/lang/de_DE.lang | 3 + src/main/resources/assets/hbm/lang/en_US.lang | 8 +- .../assets/hbm/models/doors/fire_door.obj | 464 +++++ src/main/resources/assets/hbm/sounds.json | 3 + .../assets/hbm/sounds/block/door/alarm6.ogg | Bin 0 -> 23197 bytes .../hbm/sounds/block/door/wgh_start.ogg | Bin 0 -> 104790 bytes .../assets/hbm/sounds/block/door/wgh_stop.ogg | Bin 0 -> 29927 bytes .../hbm/textures/blocks/boxduct_copper.png | Bin 0 -> 1709 bytes .../blocks/boxduct_copper_curve_bl.png | Bin 0 -> 465 bytes .../blocks/boxduct_copper_curve_br.png | Bin 0 -> 440 bytes .../blocks/boxduct_copper_curve_tl.png | Bin 0 -> 417 bytes .../blocks/boxduct_copper_curve_tr.png | Bin 0 -> 483 bytes .../textures/blocks/boxduct_copper_end.png | Bin 0 -> 619 bytes .../blocks/boxduct_copper_junction.png | Bin 0 -> 352 bytes .../blocks/boxduct_copper_straight.png | Bin 0 -> 350 bytes .../hbm/textures/blocks/boxduct_silver.png | Bin 0 -> 1394 bytes .../textures/blocks/boxduct_silver_curve.png | Bin 0 -> 296 bytes .../blocks/boxduct_silver_curve_bl.png | Bin 0 -> 380 bytes .../blocks/boxduct_silver_curve_br.png | Bin 0 -> 372 bytes .../blocks/boxduct_silver_curve_tl.png | Bin 0 -> 355 bytes .../blocks/boxduct_silver_curve_tr.png | Bin 0 -> 395 bytes .../textures/blocks/boxduct_silver_end.png | Bin 0 -> 495 bytes .../blocks/boxduct_silver_junction.png | Bin 0 -> 280 bytes .../blocks/boxduct_silver_straight.png | Bin 0 -> 293 bytes .../assets/hbm/textures/blocks/fire_door.png | Bin 0 -> 233 bytes .../hbm/textures/blocks/fluid_duct_box.png | Bin 0 -> 259 bytes .../hbm/textures/models/doors/fire_door.png | Bin 0 -> 72927 bytes 79 files changed, 2154 insertions(+), 4694 deletions(-) delete mode 100644 src/main/java/com/hbm/blocks/machine/FusionCore.java create mode 100644 src/main/java/com/hbm/blocks/network/FluidDuctBox.java create mode 100644 src/main/java/com/hbm/entity/EntityMappings.java delete mode 100644 src/main/java/com/hbm/inventory/container/ContainerFusionMultiblock.java delete mode 100644 src/main/java/com/hbm/inventory/gui/GUIFusionMultiblock.java create mode 100644 src/main/java/com/hbm/render/block/RenderBoxDuct.java delete mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityFusionMultiblock.java delete mode 100644 src/main/java/com/hbm/world/machine/FactoryAdvanced.java delete mode 100644 src/main/java/com/hbm/world/machine/FactoryTitanium.java delete mode 100644 src/main/java/com/hbm/world/machine/FusionReactor.java create mode 100644 src/main/resources/assets/hbm/models/doors/fire_door.obj create mode 100644 src/main/resources/assets/hbm/sounds/block/door/alarm6.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/door/wgh_start.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/door/wgh_stop.ogg create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_copper.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_bl.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_br.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_tl.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_tr.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_copper_end.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_copper_straight.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_silver.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_bl.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_br.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_tl.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_tr.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_silver_end.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_silver_straight.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/fire_door.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/fluid_duct_box.png create mode 100644 src/main/resources/assets/hbm/textures/models/doors/fire_door.png diff --git a/src/main/java/com/hbm/blocks/ITooltipProvider.java b/src/main/java/com/hbm/blocks/ITooltipProvider.java index ae2ecff15..e959db070 100644 --- a/src/main/java/com/hbm/blocks/ITooltipProvider.java +++ b/src/main/java/com/hbm/blocks/ITooltipProvider.java @@ -2,13 +2,30 @@ package com.hbm.blocks; import java.util.List; +import org.lwjgl.input.Keyboard; + +import com.hbm.util.I18nUtil; + +import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumRarity; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; public interface ITooltipProvider { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext); + + public default void addStandardInfo(ItemStack stack, EntityPlayer player, List list, boolean ext) { + + if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { + for(String s : I18nUtil.resolveKeyArray(((Block)this).getUnlocalizedName() + ".desc")) list.add(EnumChatFormatting.YELLOW + s); + } else { + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + + EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + + EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); + } + } public default EnumRarity getRarity(ItemStack stack) { return EnumRarity.common; diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 0190c5b17..c0a76641d 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -26,6 +26,7 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockFalling; import net.minecraft.block.material.*; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.ItemBlock; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; @@ -548,6 +549,7 @@ public class ModBlocks { public static Block vault_door; public static Block blast_door; + public static Block fire_door; public static Block transition_seal; public static Block door_metal; @@ -750,6 +752,7 @@ public class ModBlocks { public static Block fluid_duct; public static Block fluid_duct_solid; public static Block fluid_duct_neo; + public static Block fluid_duct_box; public static Block conveyor; public static Block conveyor_double; @@ -824,9 +827,8 @@ public class ModBlocks { public static Block fusion_motor; public static Block fusion_heater; public static Block fusion_hatch; - public static Block fusion_core; + //public static Block fusion_core; public static Block plasma; - public static final int guiID_fusion_multiblock = 27; public static Block iter; public static final int guiID_iter = 98; @@ -1912,6 +1914,7 @@ public class ModBlocks { fluid_duct = new BlockFluidDuct(Material.iron).setBlockName("fluid_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_icon"); fluid_duct_solid = new BlockFluidDuctSolid(Material.iron).setBlockName("fluid_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_solid"); fluid_duct_neo = new FluidDuctStandard(Material.iron).setBlockName("fluid_duct_neo").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pipe_neo"); + fluid_duct_box = new FluidDuctBox(Material.iron).setBlockName("fluid_duct_box").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box"); conveyor = new BlockConveyor().setBlockName("conveyor").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor"); conveyor_double = new BlockConveyorDouble().setBlockName("conveyor_double").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor_double"); @@ -1984,7 +1987,7 @@ public class ModBlocks { fusion_motor = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_motor_top_alt").setBlockName("fusion_motor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_motor_side_alt"); fusion_heater = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_heater_top").setBlockName("fusion_heater").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_heater_side"); fusion_hatch = new FusionHatch(Material.iron).setBlockName("fusion_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_hatch"); - fusion_core = new FusionCore(Material.iron).setBlockName("fusion_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_core_side"); + //fusion_core = new FusionCore(Material.iron).setBlockName("fusion_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fusion_core_side"); plasma = new BlockPlasma(Material.iron).setBlockName("plasma").setHardness(5.0F).setResistance(6000.0F).setLightLevel(1.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":plasma"); iter = new MachineITER().setBlockName("iter").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":iter"); plasma_heater = new MachinePlasmaHeater().setBlockName("plasma_heater").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":plasma_heater"); @@ -2030,6 +2033,7 @@ public class ModBlocks { vault_door = new VaultDoor(Material.iron).setBlockName("vault_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vault_door"); blast_door = new BlastDoor(Material.iron).setBlockName("blast_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":blast_door"); + fire_door = new BlockDoorGeneric(Material.iron, DoorDecl.FIRE_DOOR).setBlockName("fire_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fire_door"); transition_seal = new BlockDoorGeneric(Material.iron, DoorDecl.TRANSITION_SEAL).setBlockName("transition_seal").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":transition_seal"); door_metal = new BlockModDoor(Material.iron).setBlockName("door_metal").setHardness(5.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":door_metal"); @@ -2926,6 +2930,7 @@ public class ModBlocks { //Vault Door GameRegistry.registerBlock(vault_door, vault_door.getUnlocalizedName()); GameRegistry.registerBlock(blast_door, blast_door.getUnlocalizedName()); + GameRegistry.registerBlock(fire_door, fire_door.getUnlocalizedName()); GameRegistry.registerBlock(transition_seal, transition_seal.getUnlocalizedName()); //Doors @@ -2967,9 +2972,9 @@ public class ModBlocks { GameRegistry.registerBlock(press_preheater, press_preheater.getUnlocalizedName()); GameRegistry.registerBlock(machine_press, machine_press.getUnlocalizedName()); GameRegistry.registerBlock(machine_epress, machine_epress.getUnlocalizedName()); - GameRegistry.registerBlock(heater_firebox, heater_firebox.getUnlocalizedName()); - GameRegistry.registerBlock(furnace_iron, furnace_iron.getUnlocalizedName()); - GameRegistry.registerBlock(furnace_steel, furnace_steel.getUnlocalizedName()); + register(heater_firebox); + register(furnace_iron); + register(furnace_steel); GameRegistry.registerBlock(machine_difurnace_off, machine_difurnace_off.getUnlocalizedName()); GameRegistry.registerBlock(machine_difurnace_on, machine_difurnace_on.getUnlocalizedName()); GameRegistry.registerBlock(machine_difurnace_rtg_off, machine_difurnace_rtg_off.getUnlocalizedName()); @@ -3079,6 +3084,7 @@ public class ModBlocks { GameRegistry.registerBlock(gas_duct_solid, gas_duct_solid.getUnlocalizedName()); GameRegistry.registerBlock(fluid_duct, fluid_duct.getUnlocalizedName()); GameRegistry.registerBlock(fluid_duct_neo, ItemBlockBase.class, fluid_duct_neo.getUnlocalizedName()); + GameRegistry.registerBlock(fluid_duct_box, ItemBlockBase.class, fluid_duct_box.getUnlocalizedName()); GameRegistry.registerBlock(fluid_duct_solid, fluid_duct_solid.getUnlocalizedName()); GameRegistry.registerBlock(crane_extractor, crane_extractor.getUnlocalizedName()); @@ -3232,7 +3238,7 @@ public class ModBlocks { GameRegistry.registerBlock(fusion_motor, fusion_motor.getUnlocalizedName()); GameRegistry.registerBlock(fusion_heater, fusion_heater.getUnlocalizedName()); GameRegistry.registerBlock(fusion_hatch, fusion_hatch.getUnlocalizedName()); - GameRegistry.registerBlock(fusion_core, fusion_core.getUnlocalizedName()); + //GameRegistry.registerBlock(fusion_core, fusion_core.getUnlocalizedName()); GameRegistry.registerBlock(plasma, ItemBlockLore.class, plasma.getUnlocalizedName()); GameRegistry.registerBlock(iter, iter.getUnlocalizedName()); GameRegistry.registerBlock(plasma_heater, plasma_heater.getUnlocalizedName()); @@ -3395,4 +3401,12 @@ public class ModBlocks { GameRegistry.registerBlock(pink_stairs, pink_stairs.getUnlocalizedName()); GameRegistry.registerBlock(ff, ff.getUnlocalizedName()); } + + private static void register(Block b) { + GameRegistry.registerBlock(b, ItemBlockBase.class, b.getUnlocalizedName()); + } + + private static void register(Block b, Class clazz) { + GameRegistry.registerBlock(b, clazz, b.getUnlocalizedName()); + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java b/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java index e05f0f4ca..4dad6a3a9 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java @@ -5,6 +5,8 @@ import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.tileentity.DoorDecl; import com.hbm.tileentity.TileEntityDoorGeneric; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.Rotation; import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -70,12 +72,21 @@ public class BlockDoorGeneric extends BlockDummyable { @Override public void addCollisionBoxesToList(World worldIn, int x, int y, int z, AxisAlignedBB entityBox, List collidingBoxes, Entity entityIn) { - AxisAlignedBB box = getCollisionBoundingBoxFromPool(worldIn, x, y, z); - if(box.minY == 0 && box.maxY == 0) + AxisAlignedBB box = getBoundingBox(worldIn, x, y ,z); + box = AxisAlignedBB.getBoundingBox( + Math.min(box.minX, box.maxX), Math.min(box.minY, box.maxY), Math.min(box.minZ, box.maxZ), + Math.max(box.minX, box.maxX), Math.max(box.minY, box.maxY), Math.max(box.minZ, box.maxZ)); + + if(box.minY == y && box.maxY == y) return; - if(hasExtra(worldIn.getBlockMetadata(x, y, z))) - return; - super.addCollisionBoxesToList( worldIn, x, y, z, entityBox, collidingBoxes, entityIn); + + if(box != null && box.intersectsWith(entityBox)) { + collidingBoxes.add(box); + } + + //if(hasExtra(worldIn.getBlockMetadata(x, y, z))) //transition hatch only worked with this, but fire door doesn't + // return; + //super.addCollisionBoxesToList(worldIn, x, y, z, entityBox, collidingBoxes, entityIn); } @Override @@ -96,25 +107,31 @@ public class BlockDoorGeneric extends BlockDummyable { } @Override - public AxisAlignedBB getSelectedBoundingBoxFromPool(World source, int x, int y, int z) { - int meta = source.getBlockMetadata(x, y, z); - TileEntity te = source.getTileEntity(x, y, z); - int[] core = this.findCore(source, x, y, z); - boolean open = hasExtra(meta) || (te instanceof TileEntityDoorGeneric && ((TileEntityDoorGeneric)te).shouldUseBB); + public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { + return getBoundingBox(world, x, y, z); + //return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 1, z + 1); + } + + public AxisAlignedBB getBoundingBox(World world, int x, int y, int z) { + int meta = world.getBlockMetadata(x, y, z); + TileEntity te = world.getTileEntity(x, y, z); + int[] core = this.findCore(world, x, y, z); + boolean open = hasExtra(meta) || (te instanceof TileEntityDoorGeneric && ((TileEntityDoorGeneric)te).state != 0); if(core == null){ - return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1); + return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 1, z + 1); } - TileEntity te2 = source.getTileEntity(core[0], core[1], core[2]); + TileEntity te2 = world.getTileEntity(core[0], core[1], core[2]); ForgeDirection dir = ForgeDirection.getOrientation(te2.getBlockMetadata() - BlockDummyable.offset); - AxisAlignedBB box = type.getBlockBound(x - core[0], y - core[1], z - core[2], open ); //.rotate(dir.getBlockRotation().add(Rotation.COUNTERCLOCKWISE_90)), open); TODO: add rotation - //System.out.println(te2.getBlockMetadata()-offset); + BlockPos pos = new BlockPos(x - core[0], y - core[1], z - core[2]).rotate(Rotation.getBlockRotation(dir).add(Rotation.COUNTERCLOCKWISE_90)); + AxisAlignedBB box = type.getBlockBound(pos.getX(), pos.getY(), pos.getZ(), open); + switch(te2.getBlockMetadata() - offset){ - case 2: return AxisAlignedBB.getBoundingBox(1 - box.minX, box.minY, 1 - box.minZ, 1 - box.maxX, box.maxY, 1 - box.maxZ); - case 4: return AxisAlignedBB.getBoundingBox(1 - box.minZ, box.minY, box.minX, 1 - box.maxZ, box.maxY, box.maxX); - case 3: return AxisAlignedBB.getBoundingBox(box.minX, box.minY, box.minZ, box.maxX, box.maxY, box.maxZ); - case 5: return AxisAlignedBB.getBoundingBox(box.minZ, box.minY, 1 - box.minX, box.maxZ, box.maxY, 1 - box.maxX); + case 2: return AxisAlignedBB.getBoundingBox(x + 1 - box.minX, y + box.minY, z + 1 - box.minZ, x + 1 - box.maxX, y + box.maxY, z + 1 - box.maxZ); + case 4: return AxisAlignedBB.getBoundingBox(x + 1 - box.minZ, y + box.minY, z + box.minX, x + 1 - box.maxZ, y + box.maxY, z + box.maxX); + case 3: return AxisAlignedBB.getBoundingBox(x + box.minX, y + box.minY, z + box.minZ, x + box.maxX, y + box.maxY, z + box.maxZ); + case 5: return AxisAlignedBB.getBoundingBox(x + box.minZ, y + box.minY, z + 1 - box.maxX, x + box.maxZ, y + box.maxY, z + 1 - box.minX); } - return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1); + return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 1, z + 1); } } \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/BlockMarker.java b/src/main/java/com/hbm/blocks/generic/BlockMarker.java index 86b90ff83..e613f02da 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockMarker.java +++ b/src/main/java/com/hbm/blocks/generic/BlockMarker.java @@ -172,22 +172,11 @@ public class BlockMarker extends BlockContainer { if(world.isRemote) { int i = ((TileEntityStructureMarker)world.getTileEntity(x, y, z)).type + 1; - if(i > 6) - i -= 7; - if(i == 0) - player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Factory")); - if(i == 1) - player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Nuclear Reactor")); - if(i == 2) - player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Nuclear Reactor with Concrete Casing")); - if(i == 3) - player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Fusion Reactor")); - if(i == 4) - player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Fusion Reactor with Internal Coating")); - if(i == 5) - player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Watz Power Plant")); - if(i == 6) - player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Fusionary Watz Plant")); + if(i > 2) + i -= 3; + if(i == 0) player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Nuclear Reactor")); + if(i == 1) player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Watz Power Plant")); + if(i == 2) player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Fusionary Watz Plant")); return true; } else if(!player.isSneaking()) { diff --git a/src/main/java/com/hbm/blocks/generic/BlockOre.java b/src/main/java/com/hbm/blocks/generic/BlockOre.java index 7efae6b9d..c96ee03d5 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOre.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOre.java @@ -119,7 +119,7 @@ public class BlockOre extends Block { case 19: return Item.getItemFromBlock(ModBlocks.fusion_heater); case 20: - return Item.getItemFromBlock(ModBlocks.fusion_core); + return ModItems.circuit_red_copper; case 21: return Item.getItemFromBlock(ModBlocks.watz_element); case 22: diff --git a/src/main/java/com/hbm/blocks/machine/FurnaceIron.java b/src/main/java/com/hbm/blocks/machine/FurnaceIron.java index 608963f7c..1b5ab3f20 100644 --- a/src/main/java/com/hbm/blocks/machine/FurnaceIron.java +++ b/src/main/java/com/hbm/blocks/machine/FurnaceIron.java @@ -1,15 +1,19 @@ package com.hbm.blocks.machine; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityFurnaceIron; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -public class FurnaceIron extends BlockDummyable { +public class FurnaceIron extends BlockDummyable implements ITooltipProvider { public FurnaceIron() { super(Material.iron); @@ -35,4 +39,9 @@ public class FurnaceIron extends BlockDummyable { public int getOffset() { return 0; } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } } diff --git a/src/main/java/com/hbm/blocks/machine/FurnaceSteel.java b/src/main/java/com/hbm/blocks/machine/FurnaceSteel.java index 0aa5c2af0..4d0d84c23 100644 --- a/src/main/java/com/hbm/blocks/machine/FurnaceSteel.java +++ b/src/main/java/com/hbm/blocks/machine/FurnaceSteel.java @@ -1,15 +1,19 @@ package com.hbm.blocks.machine; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityFurnaceSteel; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -public class FurnaceSteel extends BlockDummyable { +public class FurnaceSteel extends BlockDummyable implements ITooltipProvider { public FurnaceSteel() { super(Material.iron); @@ -35,4 +39,9 @@ public class FurnaceSteel extends BlockDummyable { public int getOffset() { return 1; } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } } diff --git a/src/main/java/com/hbm/blocks/machine/FusionCore.java b/src/main/java/com/hbm/blocks/machine/FusionCore.java deleted file mode 100644 index d2a26bc1d..000000000 --- a/src/main/java/com/hbm/blocks/machine/FusionCore.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.hbm.blocks.machine; - -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.machine.TileEntityFusionMultiblock; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; - -public class FusionCore extends BlockContainer { - - @SideOnly(Side.CLIENT) - private IIcon iconTop; - - public FusionCore(Material p_i45386_1_) { - super(p_i45386_1_); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":fusion_center_top_alt"); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":fusion_core_side_alt"); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityFusionMultiblock(); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.blockIcon); - } - -} diff --git a/src/main/java/com/hbm/blocks/machine/FusionHatch.java b/src/main/java/com/hbm/blocks/machine/FusionHatch.java index 5ef103e83..6c549c609 100644 --- a/src/main/java/com/hbm/blocks/machine/FusionHatch.java +++ b/src/main/java/com/hbm/blocks/machine/FusionHatch.java @@ -1,23 +1,14 @@ package com.hbm.blocks.machine; -import java.util.Random; - -import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; -import com.hbm.tileentity.machine.TileEntityFusionMultiblock; -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.ChatComponentText; import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; @@ -46,49 +37,6 @@ public class FusionHatch extends Block { return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : (metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon))); } - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) - { - return Item.getItemFromBlock(this); - } - - @Override - public void onBlockAdded(World world, int x, int y, int z) { - super.onBlockAdded(world, x, y, z); - //this.setDefaultDirection(world, x, y, z); - } - - private void setDefaultDirection(World world, int x, int y, int z) { - if(!world.isRemote) - { - Block block1 = world.getBlock(x, y, z - 1); - Block block2 = world.getBlock(x, y, z + 1); - Block block3 = world.getBlock(x - 1, y, z); - Block block4 = world.getBlock(x + 1, y, z); - - byte b0 = 3; - - if(block1.func_149730_j() && !block2.func_149730_j()) - { - b0 = 3; - } - if(block2.func_149730_j() && !block1.func_149730_j()) - { - b0 = 2; - } - if(block3.func_149730_j() && !block4.func_149730_j()) - { - b0 = 5; - } - if(block4.func_149730_j() && !block3.func_149730_j()) - { - b0 = 4; - } - - world.setBlockMetadataWithNotify(x, y, z, b0, 2); - } - } - @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; @@ -110,73 +58,4 @@ public class FusionHatch extends Block { world.setBlockMetadataWithNotify(x, y, z, 4, 2); } } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(world.isRemote) - { - return true; - } else if(!player.isSneaking()) - { - if(world.getBlockMetadata(x, y, z) == 2) - { - if(world.getTileEntity(x, y, z + 8) instanceof TileEntityFusionMultiblock) - { - if(((TileEntityFusionMultiblock)world.getTileEntity(x, y, z + 8)).isStructureValid(world)) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_fusion_multiblock, world, x, y, z + 8); - } else { - player.addChatMessage(new ChatComponentText("[Fusion Reactor] Error: Reactor Structure not valid!")); - } - } else { - player.addChatMessage(new ChatComponentText("[Fusion Reactor] Error: Reactor Core not found!")); - } - } - if(world.getBlockMetadata(x, y, z) == 3) - { - if(world.getTileEntity(x, y, z - 8) instanceof TileEntityFusionMultiblock) - { - if(((TileEntityFusionMultiblock)world.getTileEntity(x, y, z - 8)).isStructureValid(world)) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_fusion_multiblock, world, x, y, z - 8); - } else { - player.addChatMessage(new ChatComponentText("[Fusion Reactor] Error: Reactor Structure not valid!")); - } - } else { - player.addChatMessage(new ChatComponentText("[Fusion Reactor] Error: Reactor Core not found!")); - } - } - if(world.getBlockMetadata(x, y, z) == 4) - { - if(world.getTileEntity(x + 8, y, z) instanceof TileEntityFusionMultiblock) - { - if(((TileEntityFusionMultiblock)world.getTileEntity(x + 8, y, z)).isStructureValid(world)) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_fusion_multiblock, world, x + 8, y, z); - } else { - player.addChatMessage(new ChatComponentText("[Fusion Reactor] Error: Reactor Structure not valid!")); - } - } else { - player.addChatMessage(new ChatComponentText("[Fusion Reactor] Error: Reactor Core not found!")); - } - } - if(world.getBlockMetadata(x, y, z) == 5) - { - if(world.getTileEntity(x - 8, y, z) instanceof TileEntityFusionMultiblock) - { - if(((TileEntityFusionMultiblock)world.getTileEntity(x - 8, y, z)).isStructureValid(world)) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_fusion_multiblock, world, x - 8, y, z); - } else { - player.addChatMessage(new ChatComponentText("[Fusion Reactor] Error: Reactor Structure not valid!")); - } - } else { - player.addChatMessage(new ChatComponentText("[Fusion Reactor] Error: Reactor Core not found!")); - } - } - return true; - } else { - return false; - } - } } diff --git a/src/main/java/com/hbm/blocks/machine/HeaterFirebox.java b/src/main/java/com/hbm/blocks/machine/HeaterFirebox.java index 762b291c3..e502b1a3b 100644 --- a/src/main/java/com/hbm/blocks/machine/HeaterFirebox.java +++ b/src/main/java/com/hbm/blocks/machine/HeaterFirebox.java @@ -1,15 +1,19 @@ package com.hbm.blocks.machine; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityHeaterFirebox; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -public class HeaterFirebox extends BlockDummyable { +public class HeaterFirebox extends BlockDummyable implements ITooltipProvider { public HeaterFirebox() { super(Material.iron); @@ -42,4 +46,9 @@ public class HeaterFirebox extends BlockDummyable { public int getOffset() { return 1; } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineLiquefactor.java b/src/main/java/com/hbm/blocks/machine/MachineLiquefactor.java index 00009050b..48165752b 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineLiquefactor.java +++ b/src/main/java/com/hbm/blocks/machine/MachineLiquefactor.java @@ -2,19 +2,15 @@ package com.hbm.blocks.machine; import java.util.List; -import org.lwjgl.input.Keyboard; - import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineLiquefactor; -import com.hbm.util.I18nUtil; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -68,13 +64,6 @@ public class MachineLiquefactor extends BlockDummyable implements ITooltipProvid @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - - if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { - for(String s : I18nUtil.resolveKeyArray(this.getUnlocalizedName() + ".desc")) list.add(EnumChatFormatting.YELLOW + s); - } else { - list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + - EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + - EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); - } + this.addStandardInfo(stack, player, list, ext); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineSolidifier.java b/src/main/java/com/hbm/blocks/machine/MachineSolidifier.java index 33bb6db37..c7ece049d 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineSolidifier.java +++ b/src/main/java/com/hbm/blocks/machine/MachineSolidifier.java @@ -2,19 +2,15 @@ package com.hbm.blocks.machine; import java.util.List; -import org.lwjgl.input.Keyboard; - import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineSolidifier; -import com.hbm.util.I18nUtil; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -68,13 +64,6 @@ public class MachineSolidifier extends BlockDummyable implements ITooltipProvide @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - - if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { - for(String s : I18nUtil.resolveKeyArray(this.getUnlocalizedName() + ".desc")) list.add(EnumChatFormatting.YELLOW + s); - } else { - list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + - EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + - EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); - } + this.addStandardInfo(stack, player, list, ext); } } diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctBox.java b/src/main/java/com/hbm/blocks/network/FluidDuctBox.java new file mode 100644 index 000000000..2a398267e --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/FluidDuctBox.java @@ -0,0 +1,154 @@ +package com.hbm.blocks.network; + +import java.util.List; + +import com.hbm.blocks.IBlockMulti; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.lib.Library; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityPipeBaseNT; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; + +public class FluidDuctBox extends FluidDuctBase implements IBlockMulti { + + @SideOnly(Side.CLIENT) protected IIcon[] iconStraight; + @SideOnly(Side.CLIENT) protected IIcon[] iconEnd; + @SideOnly(Side.CLIENT) protected IIcon[] iconCurveTL; + @SideOnly(Side.CLIENT) protected IIcon[] iconCurveTR; + @SideOnly(Side.CLIENT) protected IIcon[] iconCurveBL; + @SideOnly(Side.CLIENT) protected IIcon[] iconCurveBR; + @SideOnly(Side.CLIENT) protected IIcon[] iconJunction; + + private static final String[] materials = new String[] { "silver", "copper" }; + + public FluidDuctBox(Material mat) { + super(mat); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + + int count = materials.length; + iconStraight = new IIcon[count]; + iconEnd = new IIcon[count]; + iconCurveTL = new IIcon[count]; + iconCurveTR = new IIcon[count]; + iconCurveBL = new IIcon[count]; + iconCurveBR = new IIcon[count]; + iconJunction = new IIcon[count]; + + for(int i = 0; i < count; i++) { + iconStraight[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_straight"); + iconEnd[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_end"); + iconCurveTL[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_curve_tl"); + iconCurveTR[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_curve_tr"); + iconCurveBL[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_curve_bl"); + iconCurveBR[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_curve_br"); + iconJunction[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_junction"); + } + } + + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + + FluidType type = Fluids.NONE; + + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityPipeBaseNT) { + TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te; + type = pipe.getType(); + } + + boolean pX = Library.canConnectFluid(world, x + 1, y, z, Library.NEG_X, type); + boolean nX = Library.canConnectFluid(world, x - 1, y, z, Library.POS_X, type); + boolean pY = Library.canConnectFluid(world, x, y + 1, z, Library.NEG_Y, type); + boolean nY = Library.canConnectFluid(world, x, y - 1, z, Library.POS_Y, type); + boolean pZ = Library.canConnectFluid(world, x, y, z + 1, Library.NEG_Z, type); + boolean nZ = Library.canConnectFluid(world, x, y, z - 1, Library.POS_Z, type); + + int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); + int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0); + + int m = rectify(world.getBlockMetadata(x, y, z)); + + if((mask & 0b001111) == 0 && mask > 0) { + return (side == 4 || side == 5) ? iconEnd[m] : iconStraight[m]; + } else if((mask & 0b111100) == 0 && mask > 0) { + return (side == 2 || side == 3) ? iconEnd[m] : iconStraight[m]; + } else if((mask & 0b110011) == 0 && mask > 0) { + return (side == 0 || side == 1) ? iconEnd[m] : iconStraight[m]; + } else if(count == 2) { + + if(side == 0 && nY || side == 1 && pY || side == 2 && nZ || side == 3 && pZ || side == 4 && nX || side == 5 && pX) + return iconEnd[m]; + if(side == 1 && nY || side == 0 && pY || side == 3 && nZ || side == 2 && pZ || side == 5 && nX || side == 4 && pX) + return iconStraight[m]; + + if(nY && pZ) return side == 4 ? iconCurveBR[m] : iconCurveBL[m]; + if(nY && nZ) return side == 5 ? iconCurveBR[m] : iconCurveBL[m]; + if(nY && pX) return side == 3 ? iconCurveBR[m] : iconCurveBL[m]; + if(nY && nX) return side == 2 ? iconCurveBR[m] : iconCurveBL[m]; + if(pY && pZ) return side == 4 ? iconCurveTR[m] : iconCurveTL[m]; + if(pY && nZ) return side == 5 ? iconCurveTR[m] : iconCurveTL[m]; + if(pY && pX) return side == 3 ? iconCurveTR[m] : iconCurveTL[m]; + if(pY && nX) return side == 2 ? iconCurveTR[m] : iconCurveTL[m]; + + if(pX && nZ) return side == 0 ? iconCurveTR[m] : iconCurveTR[m]; + if(pX && pZ) return side == 0 ? iconCurveBR[m] : iconCurveBR[m]; + if(nX && nZ) return side == 0 ? iconCurveTL[m] : iconCurveTL[m]; + if(nX && pZ) return side == 0 ? iconCurveBL[m] : iconCurveBL[m]; + + return iconJunction[m]; + } + + return iconJunction[m]; + } + + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item item, CreativeTabs tab, List list) { + for(int i = 0; i < 2; ++i) { + list.add(new ItemStack(item, 1, i)); + } + } + + public int damageDropped(int meta) { + return rectify(meta); + } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return renderID; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public int getSubCount() { + return 2; + } +} diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java new file mode 100644 index 000000000..c05204f3f --- /dev/null +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -0,0 +1,424 @@ +package com.hbm.entity; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.entity.cart.EntityMinecartBogie; +import com.hbm.entity.cart.EntityMinecartCrate; +import com.hbm.entity.cart.EntityMinecartDestroyer; +import com.hbm.entity.cart.EntityMinecartOre; +import com.hbm.entity.cart.EntityMinecartPowder; +import com.hbm.entity.cart.EntityMinecartSemtex; +import com.hbm.entity.effect.EntityBlackHole; +import com.hbm.entity.effect.EntityCloudFleija; +import com.hbm.entity.effect.EntityCloudFleijaRainbow; +import com.hbm.entity.effect.EntityCloudSolinium; +import com.hbm.entity.effect.EntityCloudTom; +import com.hbm.entity.effect.EntityEMPBlast; +import com.hbm.entity.effect.EntityFalloutRain; +import com.hbm.entity.effect.EntityNukeCloudBig; +import com.hbm.entity.effect.EntityNukeCloudNoShroom; +import com.hbm.entity.effect.EntityNukeCloudSmall; +import com.hbm.entity.effect.EntityNukeTorex; +import com.hbm.entity.effect.EntityQuasar; +import com.hbm.entity.effect.EntityRagingVortex; +import com.hbm.entity.effect.EntitySpear; +import com.hbm.entity.effect.EntityVortex; +import com.hbm.entity.grenade.EntityGrenadeASchrab; +import com.hbm.entity.grenade.EntityGrenadeBlackHole; +import com.hbm.entity.grenade.EntityGrenadeBouncyGeneric; +import com.hbm.entity.grenade.EntityGrenadeBreach; +import com.hbm.entity.grenade.EntityGrenadeBurst; +import com.hbm.entity.grenade.EntityGrenadeCloud; +import com.hbm.entity.grenade.EntityGrenadeCluster; +import com.hbm.entity.grenade.EntityGrenadeDynamite; +import com.hbm.entity.grenade.EntityGrenadeElectric; +import com.hbm.entity.grenade.EntityGrenadeFire; +import com.hbm.entity.grenade.EntityGrenadeFlare; +import com.hbm.entity.grenade.EntityGrenadeFrag; +import com.hbm.entity.grenade.EntityGrenadeGas; +import com.hbm.entity.grenade.EntityGrenadeGascan; +import com.hbm.entity.grenade.EntityGrenadeGeneric; +import com.hbm.entity.grenade.EntityGrenadeIFBouncy; +import com.hbm.entity.grenade.EntityGrenadeIFBrimstone; +import com.hbm.entity.grenade.EntityGrenadeIFConcussion; +import com.hbm.entity.grenade.EntityGrenadeIFGeneric; +import com.hbm.entity.grenade.EntityGrenadeIFHE; +import com.hbm.entity.grenade.EntityGrenadeIFHopwire; +import com.hbm.entity.grenade.EntityGrenadeIFImpact; +import com.hbm.entity.grenade.EntityGrenadeIFIncendiary; +import com.hbm.entity.grenade.EntityGrenadeIFMystery; +import com.hbm.entity.grenade.EntityGrenadeIFNull; +import com.hbm.entity.grenade.EntityGrenadeIFSpark; +import com.hbm.entity.grenade.EntityGrenadeIFSticky; +import com.hbm.entity.grenade.EntityGrenadeIFToxic; +import com.hbm.entity.grenade.EntityGrenadeImpactGeneric; +import com.hbm.entity.grenade.EntityGrenadeLemon; +import com.hbm.entity.grenade.EntityGrenadeMIRV; +import com.hbm.entity.grenade.EntityGrenadeMk2; +import com.hbm.entity.grenade.EntityGrenadeNuclear; +import com.hbm.entity.grenade.EntityGrenadeNuke; +import com.hbm.entity.grenade.EntityGrenadePC; +import com.hbm.entity.grenade.EntityGrenadePlasma; +import com.hbm.entity.grenade.EntityGrenadePoison; +import com.hbm.entity.grenade.EntityGrenadePulse; +import com.hbm.entity.grenade.EntityGrenadeSchrabidium; +import com.hbm.entity.grenade.EntityGrenadeShrapnel; +import com.hbm.entity.grenade.EntityGrenadeSmart; +import com.hbm.entity.grenade.EntityGrenadeStrong; +import com.hbm.entity.grenade.EntityGrenadeTau; +import com.hbm.entity.grenade.EntityGrenadeZOMG; +import com.hbm.entity.grenade.EntityWastePearl; +import com.hbm.entity.item.EntityFireworks; +import com.hbm.entity.item.EntityMagnusCartus; +import com.hbm.entity.item.EntityMinecartTest; +import com.hbm.entity.item.EntityMovingItem; +import com.hbm.entity.item.EntityTNTPrimedBase; +import com.hbm.entity.logic.EntityBalefire; +import com.hbm.entity.logic.EntityBomber; +import com.hbm.entity.logic.EntityDeathBlast; +import com.hbm.entity.logic.EntityEMP; +import com.hbm.entity.logic.EntityNukeExplosion; +import com.hbm.entity.logic.EntityNukeExplosionAdvanced; +import com.hbm.entity.logic.EntityNukeExplosionMK3; +import com.hbm.entity.logic.EntityNukeExplosionMK4; +import com.hbm.entity.logic.EntityNukeExplosionNT; +import com.hbm.entity.logic.EntityNukeExplosionPlus; +import com.hbm.entity.logic.EntityTomBlast; +import com.hbm.entity.missile.EntityBobmazon; +import com.hbm.entity.missile.EntityBombletSelena; +import com.hbm.entity.missile.EntityBombletTheta; +import com.hbm.entity.missile.EntityBooster; +import com.hbm.entity.missile.EntityCarrier; +import com.hbm.entity.missile.EntityMIRV; +import com.hbm.entity.missile.EntityMinerRocket; +import com.hbm.entity.missile.EntityMissileAntiBallistic; +import com.hbm.entity.missile.EntityMissileBHole; +import com.hbm.entity.missile.EntityMissileBunkerBuster; +import com.hbm.entity.missile.EntityMissileBurst; +import com.hbm.entity.missile.EntityMissileBusterStrong; +import com.hbm.entity.missile.EntityMissileCluster; +import com.hbm.entity.missile.EntityMissileClusterStrong; +import com.hbm.entity.missile.EntityMissileCustom; +import com.hbm.entity.missile.EntityMissileDoomsday; +import com.hbm.entity.missile.EntityMissileDrill; +import com.hbm.entity.missile.EntityMissileEMP; +import com.hbm.entity.missile.EntityMissileEMPStrong; +import com.hbm.entity.missile.EntityMissileEndo; +import com.hbm.entity.missile.EntityMissileExo; +import com.hbm.entity.missile.EntityMissileGeneric; +import com.hbm.entity.missile.EntityMissileIncendiary; +import com.hbm.entity.missile.EntityMissileIncendiaryStrong; +import com.hbm.entity.missile.EntityMissileInferno; +import com.hbm.entity.missile.EntityMissileMicro; +import com.hbm.entity.missile.EntityMissileMirv; +import com.hbm.entity.missile.EntityMissileNuclear; +import com.hbm.entity.missile.EntityMissileRain; +import com.hbm.entity.missile.EntityMissileSchrabidium; +import com.hbm.entity.missile.EntityMissileShuttle; +import com.hbm.entity.missile.EntityMissileStrong; +import com.hbm.entity.missile.EntityMissileTaint; +import com.hbm.entity.missile.EntityMissileVolcano; +import com.hbm.entity.missile.EntitySiegeDropship; +import com.hbm.entity.missile.EntitySoyuz; +import com.hbm.entity.missile.EntitySoyuzCapsule; +import com.hbm.entity.missile.EntityTestMissile; +import com.hbm.entity.mob.EntityBlockSpider; +import com.hbm.entity.mob.EntityCyberCrab; +import com.hbm.entity.mob.EntityDuck; +import com.hbm.entity.mob.EntityFBI; +import com.hbm.entity.mob.EntityGhost; +import com.hbm.entity.mob.EntityHunterChopper; +import com.hbm.entity.mob.EntityMaskMan; +import com.hbm.entity.mob.EntityNuclearCreeper; +import com.hbm.entity.mob.EntityQuackos; +import com.hbm.entity.mob.EntityRADBeast; +import com.hbm.entity.mob.EntityTaintCrab; +import com.hbm.entity.mob.EntityTaintedCreeper; +import com.hbm.entity.mob.EntityTeslaCrab; +import com.hbm.entity.mob.EntityUFO; +import com.hbm.entity.mob.botprime.EntityBOTPrimeBody; +import com.hbm.entity.mob.botprime.EntityBOTPrimeHead; +import com.hbm.entity.mob.siege.EntitySiegeCraft; +import com.hbm.entity.mob.siege.EntitySiegeSkeleton; +import com.hbm.entity.mob.siege.EntitySiegeTunneler; +import com.hbm.entity.mob.siege.EntitySiegeUFO; +import com.hbm.entity.mob.siege.EntitySiegeZombie; +import com.hbm.entity.particle.EntityBSmokeFX; +import com.hbm.entity.particle.EntityChlorineFX; +import com.hbm.entity.particle.EntityCloudFX; +import com.hbm.entity.particle.EntityDSmokeFX; +import com.hbm.entity.particle.EntityFogFX; +import com.hbm.entity.particle.EntityGasFX; +import com.hbm.entity.particle.EntityOilSpillFX; +import com.hbm.entity.particle.EntityOrangeFX; +import com.hbm.entity.particle.EntityPinkCloudFX; +import com.hbm.entity.particle.EntitySSmokeFX; +import com.hbm.entity.particle.EntitySmokeFX; +import com.hbm.entity.particle.EntityTSmokeFX; +import com.hbm.entity.projectile.EntityAAShell; +import com.hbm.entity.projectile.EntityArtilleryShell; +import com.hbm.entity.projectile.EntityBeamVortex; +import com.hbm.entity.projectile.EntityBombletZeta; +import com.hbm.entity.projectile.EntityBoxcar; +import com.hbm.entity.projectile.EntityBuilding; +import com.hbm.entity.projectile.EntityBullet; +import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBurningFOEQ; +import com.hbm.entity.projectile.EntityChopperMine; +import com.hbm.entity.projectile.EntityCombineBall; +import com.hbm.entity.projectile.EntityDischarge; +import com.hbm.entity.projectile.EntityDuchessGambit; +import com.hbm.entity.projectile.EntityExplosiveBeam; +import com.hbm.entity.projectile.EntityFallingNuke; +import com.hbm.entity.projectile.EntityFire; +import com.hbm.entity.projectile.EntityLN2; +import com.hbm.entity.projectile.EntityLaser; +import com.hbm.entity.projectile.EntityLaserBeam; +import com.hbm.entity.projectile.EntityMeteor; +import com.hbm.entity.projectile.EntityMinerBeam; +import com.hbm.entity.projectile.EntityModBeam; +import com.hbm.entity.projectile.EntityNightmareBlast; +import com.hbm.entity.projectile.EntityOilSpill; +import com.hbm.entity.projectile.EntityPlasmaBeam; +import com.hbm.entity.projectile.EntityRBMKDebris; +import com.hbm.entity.projectile.EntityRainbow; +import com.hbm.entity.projectile.EntityRocket; +import com.hbm.entity.projectile.EntityRocketHoming; +import com.hbm.entity.projectile.EntityRubble; +import com.hbm.entity.projectile.EntitySchrab; +import com.hbm.entity.projectile.EntityShrapnel; +import com.hbm.entity.projectile.EntitySiegeLaser; +import com.hbm.entity.projectile.EntitySparkBeam; +import com.hbm.entity.projectile.EntityTom; +import com.hbm.entity.projectile.EntityWaterSplash; +import com.hbm.entity.projectile.EntityZirnoxDebris; +import com.hbm.entity.qic.EntitySPV; +import com.hbm.main.MainRegistry; +import com.hbm.util.Tuple.Quartet; + +import cpw.mods.fml.common.registry.EntityRegistry; +import net.minecraft.entity.Entity; + +public class EntityMappings { + + public static List, String, Integer, Boolean>> entityMappings = new ArrayList(); + public static List, String, Integer, Integer>> mobMappings = new ArrayList(); + + public static void writeMappings() { + + addEntity(EntityRocket.class, "entity_rocket", 250); + addEntity(EntityNukeExplosion.class, "entity_nuke_explosion", 250); + addEntity(EntityNukeExplosionAdvanced.class, "entity_nuke_explosion_advanced", 250); + addEntity(EntityGrenadeGeneric.class, "entity_grenade_generic", 250); + addEntity(EntityGrenadeStrong.class, "entity_grenade_strong", 250); + addEntity(EntityGrenadeFrag.class, "entity_grenade_frag", 250); + addEntity(EntityGrenadeFire.class, "entity_grenade_fire", 250); + addEntity(EntityGrenadeCluster.class, "entity_grenade_cluster", 250); + addEntity(EntityTestMissile.class, "entity_test_missile", 1000); + addEntity(EntityNukeCloudSmall.class, "entity_nuke_cloud_small", 10000); + addEntity(EntityBullet.class, "entity_bullet", 250); + addEntity(EntityGrenadeFlare.class, "entity_grenade_flare", 500); + addEntity(EntityGrenadeElectric.class, "entity_grenade_electric", 500); + addEntity(EntityGrenadePoison.class, "entity_grenade_poison", 500); + addEntity(EntityGrenadeGas.class, "entity_grenade_gas", 500); + addEntity(EntityGrenadeSchrabidium.class, "entity_grenade_schrab", 500); + addEntity(EntityGrenadeNuke.class, "entity_grenade_nuke", 500); + addEntity(EntitySchrab.class, "entity_schrabnel", 500); + addEntity(EntityMissileGeneric.class, "entity_missile_generic", 1000); + addEntity(EntityMissileStrong.class, "entity_missile_strong", 1000); + addEntity(EntityMissileNuclear.class, "entity_missile_nuclear", 1000); + addEntity(EntityMissileCluster.class, "entity_missile_cluster", 1000); + addEntity(EntityMissileIncendiary.class, "entity_missile_incendiary", 1000); + addEntity(EntityMissileAntiBallistic.class, "entity_missile_anti", 1000); + addEntity(EntityMissileBunkerBuster.class, "entity_missile_buster", 1000); + addEntity(EntityMissileIncendiaryStrong.class, "entity_missile_incendiary_strong", 1000); + addEntity(EntityMissileClusterStrong.class, "entity_missile_cluster_strong", 1000); + addEntity(EntityMissileBusterStrong.class, "entity_missile_buster_strong", 1000); + addEntity(EntityMissileBurst.class, "entity_missile_burst", 1000); + addEntity(EntityMissileInferno.class, "entity_missile_inferno", 1000); + addEntity(EntityMissileRain.class, "entity_missile_rain", 1000); + addEntity(EntityMissileDrill.class, "entity_missile_drill", 1000); + addEntity(EntityMissileEndo.class, "entity_missile_endo", 1000); + addEntity(EntityMissileExo.class, "entity_missile_exo", 1000); + addEntity(EntityMissileMirv.class, "entity_missile_mirv", 1000); + addEntity(EntityMIRV.class, "entity_mirvlet", 1000); + addEntity(EntitySmokeFX.class, "entity_smoke_fx", 1000); + addEntity(EntityNukeCloudBig.class, "entity_nuke_cloud_big", 1000); + addEntity(EntityGrenadeNuclear.class, "entity_grenade_nuclear", 1000); + addEntity(EntityBSmokeFX.class, "entity_b_smoke_fx", 1000); + addEntity(EntityGrenadePlasma.class, "entity_grenade_plasma", 500); + addEntity(EntityGrenadeTau.class, "entity_grenade_tau", 500); + addEntity(EntityChopperMine.class, "entity_chopper_mine", 1000); + addEntity(EntityCombineBall.class, "entity_combine_ball", 1000); + addEntity(EntityRainbow.class, "entity_rainbow", 1000); + addEntity(EntityGrenadeLemon.class, "entity_grenade_lemon", 500); + addEntity(EntityCloudFleija.class, "entity_cloud_fleija", 500); + addEntity(EntityGrenadeMk2.class, "entity_grenade_mk2", 500); + addEntity(EntityGrenadeZOMG.class, "entity_grenade_zomg", 500); + addEntity(EntityGrenadeASchrab.class, "entity_grenade_aschrab", 500); + addEntity(EntityNukeCloudNoShroom.class, "entity_nuke_cloud_no", 1000); + addEntity(EntityFalloutRain.class, "entity_fallout", 1000); + addEntity(EntityDischarge.class, "entity_emp_discharge", 500); + addEntity(EntityEMPBlast.class, "entity_emp_blast", 1000); + addEntity(EntityFire.class, "entity_fire", 1000); + addEntity(EntityPlasmaBeam.class, "entity_immolator_beam", 1000); + addEntity(EntityLN2.class, "entity_LN2", 1000); + addEntity(EntityNightmareBlast.class, "entity_ominous_bullet", 1000); + addEntity(EntityGrenadePulse.class, "entity_grenade_pulse", 1000); + addEntity(EntityNukeExplosionPlus.class, "entity_nuke_explosion_advanced", 250); + addEntity(EntityLaserBeam.class, "entity_laser_beam", 1000); + addEntity(EntityMinerBeam.class, "entity_miner_beam", 1000); + addEntity(EntityRubble.class, "entity_rubble", 1000); + addEntity(EntityDSmokeFX.class, "entity_d_smoke_fx", 1000); + addEntity(EntitySSmokeFX.class, "entity_s_smoke_fx", 1000); + addEntity(EntityShrapnel.class, "entity_shrapnel", 1000); + addEntity(EntityGrenadeShrapnel.class, "entity_grenade_shrapnel", 250); + addEntity(EntityBlackHole.class, "entity_black_hole", 250); + addEntity(EntityGrenadeBlackHole.class, "entity_grenade_black_hole", 250); + addEntity(EntityOilSpillFX.class, "entity_spill_fx", 1000); + addEntity(EntityOilSpill.class, "entity_oil_spill", 1000); + addEntity(EntityGasFX.class, "entity_spill_fx", 1000); + addEntity(EntityMinecartTest.class, "entity_minecart_test", 1000); + addEntity(EntitySparkBeam.class, "entity_spark_beam", 1000); + addEntity(EntityMissileDoomsday.class, "entity_missile_doomsday", 1000); + addEntity(EntityBombletTheta.class, "entity_theta", 1000); + addEntity(EntityBombletSelena.class, "entity_selena", 1000); + addEntity(EntityTSmokeFX.class, "entity_t_smoke_fx", 1000); + addEntity(EntityNukeExplosionMK3.class, "entity_nuke_mk3", 1000); + addEntity(EntityVortex.class, "entity_vortex", 250); + addEntity(EntityMeteor.class, "entity_meteor", 1000); + addEntity(EntityLaser.class, "entity_laser", 1000); + addEntity(EntityBoxcar.class, "entity_boxcar", 1000); + addEntity(EntityMissileTaint.class, "entity_missile_taint", 1000); + addEntity(EntityGrenadeGascan.class, "entity_grenade_gascan", 1000); + addEntity(EntityNukeExplosionMK4.class, "entity_nuke_mk4", 1000); + addEntity(EntityCloudFleijaRainbow.class, "entity_cloud_rainbow", 1000); + addEntity(EntityExplosiveBeam.class, "entity_beam_bomb", 1000); + addEntity(EntityAAShell.class, "entity_aa_shell", 1000); + addEntity(EntityRocketHoming.class, "entity_stinger", 1000); + addEntity(EntityMissileMicro.class, "entity_missile_micronuclear", 1000); + addEntity(EntityCloudSolinium.class, "entity_cloud_rainbow", 1000); + addEntity(EntityRagingVortex.class, "entity_raging_vortex", 250); + addEntity(EntityCarrier.class, "entity_missile_carrier", 1000); + addEntity(EntityBooster.class, "entity_missile_booster", 1000); + addEntity(EntityModBeam.class, "entity_beam_bang", 1000); + addEntity(EntityMissileBHole.class, "entity_missile_blackhole", 1000); + addEntity(EntityMissileSchrabidium.class, "entity_missile_schrabidium", 1000); + addEntity(EntityMissileEMP.class, "entity_missile_emp", 1000); + addEntity(EntityChlorineFX.class, "entity_chlorine_fx", 1000); + addEntity(EntityPinkCloudFX.class, "entity_pink_cloud_fx", 1000); + addEntity(EntityCloudFX.class, "entity_cloud_fx", 1000); + addEntity(EntityGrenadePC.class, "entity_grenade_pink_cloud", 250); + addEntity(EntityGrenadeCloud.class, "entity_grenade_cloud", 250); + addEntity(EntityBomber.class, "entity_bomber", 1000); + addEntity(EntityBombletZeta.class, "entity_zeta", 1000); + addEntity(EntityOrangeFX.class, "entity_agent_orange", 1000); + addEntity(EntityDeathBlast.class, "entity_laser_blast", 1000); + addEntity(EntityGrenadeSmart.class, "entity_grenade_smart", 250); + addEntity(EntityGrenadeMIRV.class, "entity_grenade_mirv", 250); + addEntity(EntityGrenadeBreach.class, "entity_grenade_breach", 250); + addEntity(EntityGrenadeBurst.class, "entity_grenade_burst", 250); + addEntity(EntityBurningFOEQ.class, "entity_burning_foeq", 1000); + addEntity(EntityGrenadeIFGeneric.class, "entity_grenade_ironshod", 250); + addEntity(EntityGrenadeIFHE.class, "entity_grenade_ironshod_he", 250); + addEntity(EntityGrenadeIFBouncy.class, "entity_grenade_ironshod_bouncy", 250); + addEntity(EntityGrenadeIFSticky.class, "entity_grenade_ironshod_sticky", 250); + addEntity(EntityGrenadeIFImpact.class, "entity_grenade_ironshod_impact", 250); + addEntity(EntityGrenadeIFIncendiary.class, "entity_grenade_ironshod_fire", 250); + addEntity(EntityGrenadeIFToxic.class, "entity_grenade_ironshod_toxic", 250); + addEntity(EntityGrenadeIFConcussion.class, "entity_grenade_ironshod_con", 250); + addEntity(EntityGrenadeIFBrimstone.class, "entity_grenade_ironshod_brim", 250); + addEntity(EntityGrenadeIFMystery.class, "entity_grenade_ironshod_m", 250); + addEntity(EntityGrenadeIFSpark.class, "entity_grenade_ironshod_s", 250); + addEntity(EntityGrenadeIFHopwire.class, "entity_grenade_ironshod_hopwire", 250); + addEntity(EntityGrenadeIFNull.class, "entity_grenade_ironshod_null", 250); + addEntity(EntityFallingNuke.class, "entity_falling_bomb", 1000); + addEntity(EntityBulletBase.class, "entity_bullet_mk2", 250); + addEntity(EntityMinerRocket.class, "entity_miner_lander", 1000); + addEntity(EntityFogFX.class, "entity_nuclear_fog", 1000); + addEntity(EntityDuchessGambit.class, "entity_duchessgambit", 1000); + addEntity(EntityMissileEMPStrong.class, "entity_missile_emp_strong", 1000); + addEntity(EntityEMP.class, "entity_emp_logic", 1000); + addEntity(EntityWaterSplash.class, "entity_water_splash", 1000); + addEntity(EntityBobmazon.class, "entity_bobmazon_delivery", 1000); + addEntity(EntityMissileCustom.class, "entity_custom_missile", 1000); + addEntity(EntityBalefire.class, "entity_balefire", 1000); + addEntity(EntityTom.class, "entity_tom_the_moonstone", 1000); + addEntity(EntityTomBlast.class, "entity_tom_bust", 1000); + addEntity(EntityBuilding.class, "entity_falling_building", 1000); + addEntity(EntitySoyuz.class, "entity_soyuz", 1000); + addEntity(EntitySoyuzCapsule.class, "entity_soyuz_capsule", 1000); + addEntity(EntityMovingItem.class, "entity_c_item", 1000); + addEntity(EntityCloudTom.class, "entity_moonstone_blast", 1000); + addEntity(EntityBeamVortex.class, "entity_vortex_beam", 1000); + addEntity(EntityFireworks.class, "entity_firework_ball", 1000); + addEntity(EntityWastePearl.class, "entity_waste_pearl", 1000); + addEntity(EntityBOTPrimeHead.class, "entity_balls_o_tron", 1000); + addEntity(EntityBOTPrimeBody.class, "entity_balls_o_tron_seg", 1000); + addEntity(EntityBlockSpider.class, "entity_taintcrawler", 1000); + addEntity(EntityRBMKDebris.class, "entity_rbmk_debris", 1000); + addEntity(EntityUFO.class, "entity_ntm_ufo", 1000); + addEntity(EntityNukeExplosionNT.class, "entity_ntm_explosion_nt", 1000); + addEntity(EntityQuasar.class, "entity_digamma_quasar", 250); + addEntity(EntitySpear.class, "entity_digamma_spear", 1000); + addEntity(EntityMissileVolcano.class, "entity_missile_volcano", 1000); + addEntity(EntityMissileShuttle.class, "entity_missile_shuttle", 1000); + addEntity(EntityZirnoxDebris.class, "entity_zirnox_debris", 1000); + addEntity(EntityGhost.class, "entity_ntm_ghost", 1000); + addEntity(EntityGrenadeDynamite.class, "entity_grenade_dynamite", 250); + addEntity(EntitySiegeLaser.class, "entity_ntm_siege_laser", 1000); + addEntity(EntitySiegeDropship.class, "entity_ntm_siege_dropship", 1000); + addEntity(EntityTNTPrimedBase.class, "entity_ntm_tnt_primed", 1000); + addEntity(EntityGrenadeBouncyGeneric.class, "entity_grenade_bouncy_generic", 250); + addEntity(EntityGrenadeImpactGeneric.class, "entity_grenade_impact_generic", 250); + addEntity(EntityMinecartCrate.class, "entity_ntm_cart_crate", 250, false); + addEntity(EntityMinecartDestroyer.class, "entity_ntm_cart_crate", 250, false); + addEntity(EntityMinecartOre.class, "entity_ntm_cart_ore", 250, false); + addEntity(EntityMinecartBogie.class, "entity_ntm_cart_bogie", 250, false); + addEntity(EntityMagnusCartus.class, "entity_ntm_cart_chungoid", 250, false); + addEntity(EntityMinecartPowder.class, "entity_ntm_cart_powder", 250, false); + addEntity(EntityMinecartSemtex.class, "entity_ntm_cart_semtex", 250, false); + addEntity(EntityNukeTorex.class, "entity_effect_torex", 250, false); + addEntity(EntityArtilleryShell.class, "entity_artillery_shell", 1000); + addEntity(EntitySiegeTunneler.class, "entity_meme_tunneler", 1000); + addEntity(EntitySPV.class, "entity_self_propelled_vehicle_mark_1", 1000); + + addMob(EntityNuclearCreeper.class, "entity_mob_nuclear_creeper", 0x204131, 0x75CE00); + addMob(EntityTaintedCreeper.class, "entity_mob_tainted_creeper", 0x813b9b, 0xd71fdd); + addMob(EntityHunterChopper.class, "entity_mob_hunter_chopper", 0x000020, 0x2D2D72); + addMob(EntityCyberCrab.class, "entity_cyber_crab", 0xAAAAAA, 0x444444); + addMob(EntityTeslaCrab.class, "entity_tesla_crab", 0xAAAAAA, 0x440000); + addMob(EntityTaintCrab.class, "entity_taint_crab", 0xAAAAAA, 0xFF00FF); + addMob(EntityMaskMan.class, "entity_mob_mask_man", 0x818572, 0xC7C1B7); + addMob(EntityDuck.class, "entity_fucc_a_ducc", 0xd0d0d0, 0xFFBF00); + addMob(EntityQuackos.class, "entity_elder_one", 0xd0d0d0, 0xFFBF00); + addMob(EntityFBI.class, "entity_ntm_fbi", 0x008000, 0x404040); + addMob(EntityRADBeast.class, "entity_ntm_radiation_blaze", 0x303030, 0x008000); + addMob(EntitySiegeZombie.class, "entity_meme_zombie", 0x303030, 0x008000); + addMob(EntitySiegeSkeleton.class, "entity_meme_skeleton", 0x303030, 0x000080); + addMob(EntitySiegeUFO.class, "entity_meme_ufo", 0x303030, 0x800000); + addMob(EntitySiegeCraft.class, "entity_meme_craft", 0x303030, 0x808000); + + int id = 0; + for(Quartet, String, Integer, Boolean> entry : entityMappings) { + EntityRegistry.registerModEntity(entry.getW(), entry.getX(), id++, MainRegistry.instance, entry.getY(), 1, entry.getZ()); + } + + for(Quartet, String, Integer, Integer> entry : mobMappings) { + EntityRegistry.registerGlobalEntityID(entry.getW(), entry.getX(), EntityRegistry.findGlobalUniqueEntityId(), entry.getY(), entry.getZ()); + } + } + + private static void addEntity(Class clazz, String name, int trackingRange) { + addEntity(clazz, name, trackingRange, true); + } + + private static void addEntity(Class clazz, String name, int trackingRange, boolean velocityUpdates) { + entityMappings.add(new Quartet(clazz, name, trackingRange, velocityUpdates)); + } + + private static void addMob(Class clazz, String name, int color1, int color2) { + mobMappings.add(new Quartet(clazz, name, color1, color2)); + } +} diff --git a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java index a6cef460f..92b21609a 100644 --- a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java +++ b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java @@ -146,13 +146,13 @@ public class EntityFalloutRain extends Entity { double d = dist / 100; - double chance = 0.05 - Math.pow((d - 0.6) * 0.5, 2); + double chance = 0.1 - Math.pow((d - 0.7) * 1.0, 2); if(chance >= rand.nextDouble() && ModBlocks.fallout.canPlaceBlockAt(worldObj, x, y + 1, z)) setBlock(x, y + 1, z, ModBlocks.fallout); } - if(b.isFlammable(worldObj, x, y, z, ForgeDirection.UP)) { + if(dist < 65 && b.isFlammable(worldObj, x, y, z, ForgeDirection.UP)) { if(rand.nextInt(5) == 0) setBlock(x, y + 1, z, Blocks.fire); } @@ -171,10 +171,15 @@ public class EntityFalloutRain extends Entity { } if(dist < 65 && b.getBlockHardness(worldObj, x, y, z) <= Blocks.stonebrick.getExplosionResistance(null)) { + Block bl = worldObj.getBlock(x, y - 1, z); if(bl == Blocks.air) { - EntityFallingBlock entityfallingblock = new EntityFallingBlock(worldObj, x + 0.5D, y + 0.5D, z + 0.5D, worldObj.getBlock(x, y, z), worldObj.getBlockMetadata(x, y, z)); - worldObj.spawnEntityInWorld(entityfallingblock); + for(int i = 0; i <= depth; i++) { + if(worldObj.getBlock(x, y + i, z).getBlockHardness(worldObj, x, y + i, z) <= Blocks.stonebrick.getExplosionResistance(null)) { + EntityFallingBlock entityfallingblock = new EntityFallingBlock(worldObj, x + 0.5D, y + 0.5D + i, z + 0.5D, worldObj.getBlock(x, y + i, z), worldObj.getBlockMetadata(x, y + i, z)); + worldObj.spawnEntityInWorld(entityfallingblock); + } + } } } diff --git a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK4.java b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK4.java index 6d0a40d70..ece1c9a82 100644 --- a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK4.java +++ b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK4.java @@ -1,5 +1,7 @@ package com.hbm.entity.logic; +import java.util.List; + import org.apache.logging.log4j.Level; import com.hbm.config.BombConfig; @@ -8,11 +10,19 @@ import com.hbm.entity.effect.EntityFalloutRain; import com.hbm.explosion.ExplosionNukeGeneric; import com.hbm.explosion.ExplosionNukeRay; import com.hbm.handler.radiation.ChunkRadiationManager; +import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; +import com.hbm.util.ContaminationUtil; +import com.hbm.util.ContaminationUtil.ContaminationType; +import com.hbm.util.ContaminationUtil.HazardType; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; +import net.minecraft.util.Vec3; import net.minecraft.world.World; public class EntityNukeExplosionMK4 extends Entity { @@ -55,13 +65,13 @@ public class EntityNukeExplosionMK4 extends Entity { for(Object player : this.worldObj.playerEntities) ((EntityPlayer)player).triggerAchievement(MainRegistry.achManhattan); - if(!worldObj.isRemote && fallout && explosion != null) { + if(!worldObj.isRemote && fallout && explosion != null && this.ticksExisted < 10) { + + radiate(500_000, this.length * 2); - //float radMax = (float) (length / 2F * Math.pow(length, 2) / 35F); - float radMax = Math.min((float) (length / 2F * Math.pow(length, 1.5) / 35F), 15000); - //System.out.println(radMax); + /*float radMax = Math.min((float) (length / 2F * Math.pow(length, 1.5) / 35F), 15000); float rad = radMax / 4F; - ChunkRadiationManager.proxy.incrementRad(worldObj, (int) Math.floor(posX), (int) Math.floor(posY), (int) Math.floor(posZ), rad); + ChunkRadiationManager.proxy.incrementRad(worldObj, (int) Math.floor(posX), (int) Math.floor(posY), (int) Math.floor(posZ), rad);*/ } if(!mute) { @@ -74,30 +84,14 @@ public class EntityNukeExplosionMK4 extends Entity { if(explosion == null) { explosion = new ExplosionNukeRay(worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, this.strength, this.count, this.speed, this.length); - - //MainRegistry.logger.info("START: " + System.currentTimeMillis()); - - /*if(!worldObj.isRemote) - for(int x = (int) (posX - 1); x <= (int) (posX + 1); x++) - for(int y = (int) (posY - 1); y <= (int) (posY + 1); y++) - for(int z = (int) (posZ - 1); z <= (int) (posZ + 1); z++) - worldObj.setBlock(x, y, z, Blocks.air);*/ } - //if(explosion.getStoredSize() < count / length) { if(!explosion.isAusf3Complete) { - //if(!worldObj.isRemote) - //MainRegistry.logger.info(explosion.getStoredSize() + " / " + count / length); - //explosion.collectTip(speed * 10); explosion.collectTipMk4_5(speed * 10); } else if(explosion.getStoredSize() > 0) { - //if(!worldObj.isRemote) - //MainRegistry.logger.info(explosion.getProgress() + " / " + count / length); explosion.processTip(BombConfig.mk4); } else if(fallout) { - //MainRegistry.logger.info("STOP: " + System.currentTimeMillis()); - EntityFalloutRain fallout = new EntityFalloutRain(this.worldObj); fallout.posX = this.posX; fallout.posY = this.posY; @@ -111,14 +105,45 @@ public class EntityNukeExplosionMK4 extends Entity { this.setDead(); } } - - @Override - protected void entityInit() { + + private void radiate(float rads, double range) { + List entities = worldObj.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(posX, posY, posZ, posX, posY, posZ).expand(range, range, range)); + + for(EntityLivingBase e : entities) { + + Vec3 vec = Vec3.createVectorHelper(e.posX - posX, (e.posY + e.getEyeHeight()) - posY, e.posZ - posZ); + double len = vec.lengthVector(); + vec = vec.normalize(); + + float res = 0; + + for(int i = 1; i < len; i++) { + + int ix = (int)Math.floor(posX + vec.xCoord * i); + int iy = (int)Math.floor(posY + vec.yCoord * i); + int iz = (int)Math.floor(posZ + vec.zCoord * i); + + res += worldObj.getBlock(ix, iy, iz).getExplosionResistance(null); + } + + if(res < 1) + res = 1; + + float eRads = rads; + eRads /= (float)res; + eRads /= (float)(len * len); + + ContaminationUtil.contaminate(e, HazardType.RADIATION, ContaminationType.CREATIVE, eRads); + } } + @Override + protected void entityInit() { } + @Override protected void readEntityFromNBT(NBTTagCompound nbt) { + this.ticksExisted = nbt.getInteger("ticksExisted"); /*strength = nbt.getInteger("strength"); count = nbt.getInteger("count"); @@ -131,7 +156,9 @@ public class EntityNukeExplosionMK4 extends Entity { } @Override - protected void writeEntityToNBT(NBTTagCompound nbt) { } + protected void writeEntityToNBT(NBTTagCompound nbt) { + nbt.setInteger("ticksExisted", this.ticksExisted); + } public static EntityNukeExplosionMK4 statFac(World world, int r, double x, double y, double z) { diff --git a/src/main/java/com/hbm/entity/mob/EntityNuclearCreeper.java b/src/main/java/com/hbm/entity/mob/EntityNuclearCreeper.java index 0aa26034c..2d431699e 100644 --- a/src/main/java/com/hbm/entity/mob/EntityNuclearCreeper.java +++ b/src/main/java/com/hbm/entity/mob/EntityNuclearCreeper.java @@ -44,334 +44,305 @@ import net.minecraft.util.DamageSource; import net.minecraft.world.World; public class EntityNuclearCreeper extends EntityMob { - - private int lastActiveTime; - private int timeSinceIgnited; - private int fuseTime = 75; - public EntityNuclearCreeper(World p_i1733_1_) - { - super(p_i1733_1_); - this.tasks.addTask(1, new EntityAISwimming(this)); - this.tasks.addTask(2, new EntityAINuclearCreeperSwell(this)); - this.tasks.addTask(3, new EntityAIAttackOnCollide(this, 1.0D, false)); - this.tasks.addTask(4, new EntityAIWander(this, 0.8D)); - this.tasks.addTask(5, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); - this.tasks.addTask(6, new EntityAILookIdle(this)); - this.targetTasks.addTask(1, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true)); - this.targetTasks.addTask(2, new EntityAIHurtByTarget(this, false)); - this.targetTasks.addTask(3, new EntityAINearestAttackableTarget(this, EntityOcelot.class, 0, true)); - } + private int lastActiveTime; + private int timeSinceIgnited; + private int fuseTime = 75; - @Override - protected void applyEntityAttributes() - { - super.applyEntityAttributes(); - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(50.0D); - this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.3D); - } - - @Override + public EntityNuclearCreeper(World p_i1733_1_) { + super(p_i1733_1_); + this.tasks.addTask(1, new EntityAISwimming(this)); + this.tasks.addTask(2, new EntityAINuclearCreeperSwell(this)); + this.tasks.addTask(3, new EntityAIAttackOnCollide(this, 1.0D, false)); + this.tasks.addTask(4, new EntityAIWander(this, 0.8D)); + this.tasks.addTask(5, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); + this.tasks.addTask(6, new EntityAILookIdle(this)); + this.targetTasks.addTask(1, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true)); + this.targetTasks.addTask(2, new EntityAIHurtByTarget(this, false)); + this.targetTasks.addTask(3, new EntityAINearestAttackableTarget(this, EntityOcelot.class, 0, true)); + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(50.0D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.3D); + } + + @Override public boolean attackEntityFrom(DamageSource source, float amount) { - - if(source == ModDamageSource.radiation || source == ModDamageSource.mudPoisoning) { - this.heal(amount); - return false; - } + + if(source == ModDamageSource.radiation || source == ModDamageSource.mudPoisoning) { + this.heal(amount); + return false; + } return super.attackEntityFrom(source, amount); } - - @Override - public boolean isAIEnabled() - { - return true; - } - - @Override - public int getMaxSafePointTries() - { - return this.getAttackTarget() == null ? 3 : 3 + (int)(this.getHealth() - 1.0F); - } - - @Override - protected void fall(float p_70069_1_) - { - super.fall(p_70069_1_); - this.timeSinceIgnited = (int)(this.timeSinceIgnited + p_70069_1_ * 1.5F); - if (this.timeSinceIgnited > this.fuseTime - 5) - { - this.timeSinceIgnited = this.fuseTime - 5; - } - } + @Override + public boolean isAIEnabled() { + return true; + } - @Override - protected void entityInit() - { - super.entityInit(); - this.dataWatcher.addObject(16, Byte.valueOf((byte) - 1)); - this.dataWatcher.addObject(17, Byte.valueOf((byte)0)); - this.dataWatcher.addObject(18, Byte.valueOf((byte)0)); - } - - @Override - public void writeEntityToNBT(NBTTagCompound p_70014_1_) - { - super.writeEntityToNBT(p_70014_1_); + @Override + public int getMaxSafePointTries() { + return this.getAttackTarget() == null ? 3 : 3 + (int) (this.getHealth() - 1.0F); + } - if (this.dataWatcher.getWatchableObjectByte(17) == 1) - { - p_70014_1_.setBoolean("powered", true); - } + @Override + protected void fall(float p_70069_1_) { + super.fall(p_70069_1_); + this.timeSinceIgnited = (int) (this.timeSinceIgnited + p_70069_1_ * 1.5F); - p_70014_1_.setShort("Fuse", (short)this.fuseTime); - p_70014_1_.setBoolean("ignited", this.func_146078_ca()); - } - - @Override - public void readEntityFromNBT(NBTTagCompound p_70037_1_) - { - super.readEntityFromNBT(p_70037_1_); - this.dataWatcher.updateObject(17, Byte.valueOf((byte)(p_70037_1_.getBoolean("powered") ? 1 : 0))); + if(this.timeSinceIgnited > this.fuseTime - 5) { + this.timeSinceIgnited = this.fuseTime - 5; + } + } - if (p_70037_1_.hasKey("Fuse", 99)) - { - this.fuseTime = p_70037_1_.getShort("Fuse"); - } + @Override + protected void entityInit() { + super.entityInit(); + this.dataWatcher.addObject(16, Byte.valueOf((byte) -1)); + this.dataWatcher.addObject(17, Byte.valueOf((byte) 0)); + this.dataWatcher.addObject(18, Byte.valueOf((byte) 0)); + } - if (p_70037_1_.getBoolean("ignited")) - { - this.func_146079_cb(); - } - } - - @Override - public void onUpdate() - { - if(this.isDead) - { - this.isDead = false; - this.heal(10.0F); - } - - if (this.isEntityAlive()) - { - this.lastActiveTime = this.timeSinceIgnited; + @Override + public void writeEntityToNBT(NBTTagCompound p_70014_1_) { + super.writeEntityToNBT(p_70014_1_); - if (this.func_146078_ca()) - { - this.setCreeperState(1); - } + if(this.dataWatcher.getWatchableObjectByte(17) == 1) { + p_70014_1_.setBoolean("powered", true); + } - int i = this.getCreeperState(); + p_70014_1_.setShort("Fuse", (short) this.fuseTime); + p_70014_1_.setBoolean("ignited", this.func_146078_ca()); + } - if (i > 0 && this.timeSinceIgnited == 0) - { - this.playSound("creeper.primed", 1.0F * 30 / 75, 0.5F); - } + @Override + public void readEntityFromNBT(NBTTagCompound p_70037_1_) { + super.readEntityFromNBT(p_70037_1_); + this.dataWatcher.updateObject(17, Byte.valueOf((byte) (p_70037_1_.getBoolean("powered") ? 1 : 0))); - this.timeSinceIgnited += i; + if(p_70037_1_.hasKey("Fuse", 99)) { + this.fuseTime = p_70037_1_.getShort("Fuse"); + } - if (this.timeSinceIgnited < 0) - { - this.timeSinceIgnited = 0; - } + if(p_70037_1_.getBoolean("ignited")) { + this.func_146079_cb(); + } + } - if (this.timeSinceIgnited >= this.fuseTime) - { - this.timeSinceIgnited = this.fuseTime; - this.func_146077_cc(); - } - } - - List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, AxisAlignedBB.getBoundingBox(posX - 2, posY - 2, posZ - 2, posX + 2, posY + 2, posZ + 2)); + @Override + public void onUpdate() { + if(this.isDead) { + this.isDead = false; + this.heal(10.0F); + } - for(Entity e : list) - if(e instanceof EntityLivingBase) { - ContaminationUtil.contaminate((EntityLivingBase)e, HazardType.RADIATION, ContaminationType.CREATIVE, 0.25F); - } + if(this.isEntityAlive()) { + this.lastActiveTime = this.timeSinceIgnited; - super.onUpdate(); - - if(this.getHealth() < this.getMaxHealth() && this.ticksExisted % 10 == 0) - { - this.heal(1.0F); - } - } - - @Override - protected String getHurtSound() - { - return "mob.creeper.say"; - } - - @Override - protected String getDeathSound() - { - return "mob.creeper.death"; - } - - @Override - public void onDeath(DamageSource p_70645_1_) - { - super.onDeath(p_70645_1_); - - List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, this.boundingBox.expand(50, 50, 50)); - - for(EntityPlayer player : players) { - player.triggerAchievement(MainRegistry.bossCreeper); - } + if(this.func_146078_ca()) { + this.setCreeperState(1); + } - if (p_70645_1_.getEntity() instanceof EntitySkeleton || (p_70645_1_.isProjectile() && p_70645_1_.getEntity() instanceof EntityArrow && ((EntityArrow)(p_70645_1_.getEntity())).shootingEntity == null)) - { - int i = rand.nextInt(11); - int j = rand.nextInt(3); - if(i == 0) - this.dropItem(ModItems.nugget_u235, j); - if(i == 1) - this.dropItem(ModItems.nugget_pu238, j); - if(i == 2) - this.dropItem(ModItems.nugget_pu239, j); - if(i == 3) - this.dropItem(ModItems.nugget_neptunium, j); - if(i == 4) - this.dropItem(ModItems.man_core, 1); - if(i == 5) - { - this.dropItem(ModItems.sulfur, j * 2); - this.dropItem(ModItems.niter, j * 2); - } - if(i == 6) - this.dropItem(ModItems.syringe_awesome, 1); - if(i == 7) - this.dropItem(ModItems.fusion_core, 1); - if(i == 8) - this.dropItem(ModItems.syringe_metal_stimpak, 1); - if(i == 9) - { - switch(rand.nextInt(4)) - { - case 0: this.dropItem(ModItems.t45_helmet, 1); break; - case 1: this.dropItem(ModItems.t45_plate, 1); break; - case 2: this.dropItem(ModItems.t45_legs, 1); break; - case 3: this.dropItem(ModItems.t45_boots, 1); break; - } - this.dropItem(ModItems.fusion_core, 1); - } - if(i == 10) - this.dropItem(ModItems.ammo_nuke_high, 1); - } - } + int i = this.getCreeperState(); - @Override - public boolean attackEntityAsMob(Entity p_70652_1_) - { - return true; - } - - public boolean getPowered() - { - return this.dataWatcher.getWatchableObjectByte(17) == 1; - } - - @SideOnly(Side.CLIENT) - public float getCreeperFlashIntensity(float p_70831_1_) - { - return (this.lastActiveTime + (this.timeSinceIgnited - this.lastActiveTime) * p_70831_1_) / (this.fuseTime - 2); - } + if(i > 0 && this.timeSinceIgnited == 0) { + this.playSound("creeper.primed", 1.0F * 30 / 75, 0.5F); + } - @Override - protected Item getDropItem() - { - return Item.getItemFromBlock(Blocks.tnt); - } + this.timeSinceIgnited += i; - @Override - protected void dropFewItems(boolean p_70628_1_, int p_70628_2_) { - - super.dropFewItems(p_70628_1_, p_70628_2_); - - if(rand.nextInt(3) == 0) - this.dropItem(ModItems.coin_creeper, 1); - } - - public int getCreeperState() - { - return this.dataWatcher.getWatchableObjectByte(16); - } - - public void setCreeperState(int p_70829_1_) - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte)p_70829_1_)); - } - - @Override - public void onStruckByLightning(EntityLightningBolt p_70077_1_) - { - super.onStruckByLightning(p_70077_1_); - this.dataWatcher.updateObject(17, Byte.valueOf((byte)1)); - } - - @Override - protected boolean interact(EntityPlayer p_70085_1_) - { - ItemStack itemstack = p_70085_1_.inventory.getCurrentItem(); + if(this.timeSinceIgnited < 0) { + this.timeSinceIgnited = 0; + } - if (itemstack != null && itemstack.getItem() == Items.flint_and_steel) - { - this.worldObj.playSoundEffect(this.posX + 0.5D, this.posY + 0.5D, this.posZ + 0.5D, "fire.ignite", 1.0F, this.rand.nextFloat() * 0.4F + 0.8F); - p_70085_1_.swingItem(); + if(this.timeSinceIgnited >= this.fuseTime) { + this.timeSinceIgnited = this.fuseTime; + this.func_146077_cc(); + } + } - if (!this.worldObj.isRemote) - { - this.func_146079_cb(); - itemstack.damageItem(1, p_70085_1_); - return true; - } - } + List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, AxisAlignedBB.getBoundingBox(posX - 5, posY - 5, posZ - 5, posX + 5, posY + 5, posZ + 5)); - return super.interact(p_70085_1_); - } + for(Entity e : list) + if(e instanceof EntityLivingBase) { + ContaminationUtil.contaminate((EntityLivingBase) e, HazardType.RADIATION, ContaminationType.CREATIVE, 0.25F); + } - private void func_146077_cc() - { - if (!this.worldObj.isRemote) - { - boolean flag = this.worldObj.getGameRules().getGameRuleBooleanValue("mobGriefing"); + super.onUpdate(); - if (this.getPowered()) { - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "muke"); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY + 0.5, posZ), new TargetPoint(dimension, posX, posY, posZ, 250)); - worldObj.playSoundEffect(posX, posY + 0.5, posZ, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); + if(this.getHealth() < this.getMaxHealth() && this.ticksExisted % 10 == 0) { + this.heal(1.0F); + } + } - if(flag) { - worldObj.spawnEntityInWorld(EntityNukeExplosionMK4.statFac(worldObj, 50, posX, posY, posZ).mute()); - } else { - ExplosionNukeGeneric.dealDamage(worldObj, posX, posY + 0.5, posZ, 100); - } - } else { - - ExplosionNukeSmall.explode(worldObj, posX, posY + 0.5, posZ, ExplosionNukeSmall.medium); - } + @Override + protected String getHurtSound() { + return "mob.creeper.say"; + } - this.setDead(); - } - } + @Override + protected String getDeathSound() { + return "mob.creeper.death"; + } - public boolean func_146078_ca() - { - return this.dataWatcher.getWatchableObjectByte(18) != 0; - } + @Override + public void onDeath(DamageSource p_70645_1_) { + super.onDeath(p_70645_1_); - public void func_146079_cb() - { - this.dataWatcher.updateObject(18, Byte.valueOf((byte)1)); - } - - public void setPowered(int power) { - this.dataWatcher.updateObject(17, power); - } + List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, this.boundingBox.expand(50, 50, 50)); + + for(EntityPlayer player : players) { + player.triggerAchievement(MainRegistry.bossCreeper); + } + + if(p_70645_1_.getEntity() instanceof EntitySkeleton || (p_70645_1_.isProjectile() && p_70645_1_.getEntity() instanceof EntityArrow && ((EntityArrow) (p_70645_1_.getEntity())).shootingEntity == null)) { + int i = rand.nextInt(11); + int j = rand.nextInt(3); + if(i == 0) + this.dropItem(ModItems.nugget_u235, j); + if(i == 1) + this.dropItem(ModItems.nugget_pu238, j); + if(i == 2) + this.dropItem(ModItems.nugget_pu239, j); + if(i == 3) + this.dropItem(ModItems.nugget_neptunium, j); + if(i == 4) + this.dropItem(ModItems.man_core, 1); + if(i == 5) { + this.dropItem(ModItems.sulfur, j * 2); + this.dropItem(ModItems.niter, j * 2); + } + if(i == 6) + this.dropItem(ModItems.syringe_awesome, 1); + if(i == 7) + this.dropItem(ModItems.fusion_core, 1); + if(i == 8) + this.dropItem(ModItems.syringe_metal_stimpak, 1); + if(i == 9) { + switch(rand.nextInt(4)) { + case 0: + this.dropItem(ModItems.t45_helmet, 1); + break; + case 1: + this.dropItem(ModItems.t45_plate, 1); + break; + case 2: + this.dropItem(ModItems.t45_legs, 1); + break; + case 3: + this.dropItem(ModItems.t45_boots, 1); + break; + } + this.dropItem(ModItems.fusion_core, 1); + } + if(i == 10) + this.dropItem(ModItems.ammo_nuke_high, 1); + } + } + + @Override + public boolean attackEntityAsMob(Entity p_70652_1_) { + return true; + } + + public boolean getPowered() { + return this.dataWatcher.getWatchableObjectByte(17) == 1; + } + + @SideOnly(Side.CLIENT) + public float getCreeperFlashIntensity(float p_70831_1_) { + return (this.lastActiveTime + (this.timeSinceIgnited - this.lastActiveTime) * p_70831_1_) / (this.fuseTime - 2); + } + + @Override + protected Item getDropItem() { + return Item.getItemFromBlock(Blocks.tnt); + } + + @Override + protected void dropFewItems(boolean p_70628_1_, int p_70628_2_) { + + super.dropFewItems(p_70628_1_, p_70628_2_); + + if(rand.nextInt(3) == 0) + this.dropItem(ModItems.coin_creeper, 1); + } + + public int getCreeperState() { + return this.dataWatcher.getWatchableObjectByte(16); + } + + public void setCreeperState(int p_70829_1_) { + this.dataWatcher.updateObject(16, Byte.valueOf((byte) p_70829_1_)); + } + + @Override + public void onStruckByLightning(EntityLightningBolt p_70077_1_) { + super.onStruckByLightning(p_70077_1_); + this.dataWatcher.updateObject(17, Byte.valueOf((byte) 1)); + } + + @Override + protected boolean interact(EntityPlayer p_70085_1_) { + ItemStack itemstack = p_70085_1_.inventory.getCurrentItem(); + + if(itemstack != null && itemstack.getItem() == Items.flint_and_steel) { + this.worldObj.playSoundEffect(this.posX + 0.5D, this.posY + 0.5D, this.posZ + 0.5D, "fire.ignite", 1.0F, this.rand.nextFloat() * 0.4F + 0.8F); + p_70085_1_.swingItem(); + + if(!this.worldObj.isRemote) { + this.func_146079_cb(); + itemstack.damageItem(1, p_70085_1_); + return true; + } + } + + return super.interact(p_70085_1_); + } + + private void func_146077_cc() { + if(!this.worldObj.isRemote) { + boolean flag = this.worldObj.getGameRules().getGameRuleBooleanValue("mobGriefing"); + + if(this.getPowered()) { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "muke"); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY + 0.5, posZ), new TargetPoint(dimension, posX, posY, posZ, 250)); + worldObj.playSoundEffect(posX, posY + 0.5, posZ, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); + + if(flag) { + worldObj.spawnEntityInWorld(EntityNukeExplosionMK4.statFac(worldObj, 50, posX, posY, posZ).mute()); + } else { + ExplosionNukeGeneric.dealDamage(worldObj, posX, posY + 0.5, posZ, 100); + } + } else { + + if(flag) { + ExplosionNukeSmall.explode(worldObj, posX, posY + 0.5, posZ, ExplosionNukeSmall.medium); + } else { + ExplosionNukeSmall.explode(worldObj, posX, posY + 0.5, posZ, ExplosionNukeSmall.safe); + } + } + + this.setDead(); + } + } + + public boolean func_146078_ca() { + return this.dataWatcher.getWatchableObjectByte(18) != 0; + } + + public void func_146079_cb() { + this.dataWatcher.updateObject(18, Byte.valueOf((byte) 1)); + } + + public void setPowered(int power) { + this.dataWatcher.updateObject(17, power); + } } diff --git a/src/main/java/com/hbm/handler/GUIHandler.java b/src/main/java/com/hbm/handler/GUIHandler.java index 144dcb6b6..c33bd2bbd 100644 --- a/src/main/java/com/hbm/handler/GUIHandler.java +++ b/src/main/java/com/hbm/handler/GUIHandler.java @@ -225,13 +225,6 @@ public class GUIHandler implements IGuiHandler { return null; } - case ModBlocks.guiID_fusion_multiblock: { - if(entity instanceof TileEntityFusionMultiblock) { - return new ContainerFusionMultiblock(player.inventory, (TileEntityFusionMultiblock) entity); - } - return null; - } - case ModBlocks.guiID_schrabidium_transmutator: { if(entity instanceof TileEntityMachineSchrabidiumTransmutator) { return new ContainerMachineSchrabidiumTransmutator(player.inventory, (TileEntityMachineSchrabidiumTransmutator) entity); @@ -1051,13 +1044,6 @@ public class GUIHandler implements IGuiHandler { return null; } - case ModBlocks.guiID_fusion_multiblock: { - if(entity instanceof TileEntityFusionMultiblock) { - return new GUIFusionMultiblock(player.inventory, (TileEntityFusionMultiblock) entity); - } - return null; - } - case ModBlocks.guiID_schrabidium_transmutator: { if(entity instanceof TileEntityMachineSchrabidiumTransmutator) { return new GUIMachineSchrabidiumTransmutator(player.inventory, (TileEntityMachineSchrabidiumTransmutator) entity); diff --git a/src/main/java/com/hbm/inventory/container/ContainerFusionMultiblock.java b/src/main/java/com/hbm/inventory/container/ContainerFusionMultiblock.java deleted file mode 100644 index 013a577bb..000000000 --- a/src/main/java/com/hbm/inventory/container/ContainerFusionMultiblock.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.hbm.inventory.container; - -import com.hbm.tileentity.machine.TileEntityFusionMultiblock; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.ICrafting; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; - -public class ContainerFusionMultiblock extends Container { - - private TileEntityFusionMultiblock diFurnace; - - private boolean isRunning; - - public ContainerFusionMultiblock(InventoryPlayer invPlayer, TileEntityFusionMultiblock tedf) { - - diFurnace = tedf; - - //Water Input - this.addSlotToContainer(new Slot(tedf, 0, 8, 108 - 18)); - //Battery - this.addSlotToContainer(new Slot(tedf, 1, 26, 108 - 18)); - //Deut Input - this.addSlotToContainer(new Slot(tedf, 2, 134, 108 - 18)); - //Trit Input - this.addSlotToContainer(new Slot(tedf, 3, 152, 108 - 18)); - //Startup - this.addSlotToContainer(new Slot(tedf, 4, 53, 45)); - this.addSlotToContainer(new Slot(tedf, 5, 107, 45)); - this.addSlotToContainer(new Slot(tedf, 6, 53, 81)); - this.addSlotToContainer(new Slot(tedf, 7, 107, 81)); - this.addSlotToContainer(new Slot(tedf, 8, 80, 63)); - //Water Output - this.addSlotToContainer(new Slot(tedf, 9, 8, 108)); - //Deut Output - this.addSlotToContainer(new Slot(tedf, 10, 134, 108)); - //Trit Output - this.addSlotToContainer(new Slot(tedf, 11, 152, 108)); - - for(int i = 0; i < 3; i++) - { - for(int j = 0; j < 9; j++) - { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 56)); - } - } - - for(int i = 0; i < 9; i++) - { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 56)); - } - } - - @Override - public void addCraftingToCrafters(ICrafting crafting) { - super.addCraftingToCrafters(crafting); - crafting.sendProgressBarUpdate(this, 1, isRunning ? 1 : 0); - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) - { - ItemStack var3 = null; - Slot var4 = (Slot) this.inventorySlots.get(par2); - - if (var4 != null && var4.getHasStack()) - { - ItemStack var5 = var4.getStack(); - var3 = var5.copy(); - - if (par2 <= 11) { - if (!this.mergeItemStack(var5, 12, this.inventorySlots.size(), true)) - { - return null; - } - } else { - return null; - } - - if (var5.stackSize == 0) - { - var4.putStack((ItemStack) null); - } - else - { - var4.onSlotChanged(); - } - } - - return var3; - } - - @Override - public boolean canInteractWith(EntityPlayer player) { - return diFurnace.isUseableByPlayer(player); - } - - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - - for(int i = 0; i < this.crafters.size(); i++) - { - ICrafting par1 = (ICrafting)this.crafters.get(i); - - if(this.isRunning != this.diFurnace.isRunning()) - { - par1.sendProgressBarUpdate(this, 1, this.diFurnace.isRunning() ? 1 : 0); - } - } - - this.isRunning = this.diFurnace.isRunning(); - } - - @Override - public void updateProgressBar(int i, int j) { - if(i == 1) - { - if(j == 0) - { - diFurnace.emptyPlasma(); - } else { - diFurnace.fillPlasma(); - } - } - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIFusionMultiblock.java b/src/main/java/com/hbm/inventory/gui/GUIFusionMultiblock.java deleted file mode 100644 index bf1982cfc..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUIFusionMultiblock.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.hbm.inventory.gui; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.FluidTank; -import com.hbm.inventory.container.ContainerFusionMultiblock; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.machine.TileEntityFusionMultiblock; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.ResourceLocation; - -public class GUIFusionMultiblock extends GuiInfoContainer { - - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_fusion_multiblock.png"); - private TileEntityFusionMultiblock diFurnace; - - public GUIFusionMultiblock(InventoryPlayer invPlayer, TileEntityFusionMultiblock tedf) { - super(new ContainerFusionMultiblock(invPlayer, tedf)); - diFurnace = tedf; - - this.xSize = 176; - this.ySize = 222; - } - - @Override - public void drawScreen(int mouseX, int mouseY, float f) { - super.drawScreen(mouseX, mouseY, f); - - diFurnace.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 88 - 70, 16, 70); - diFurnace.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 88 - 70, 16, 70); - diFurnace.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 88 - 70, 16, 70); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 26, guiTop + 88 - 70, 16, 70, diFurnace.power, diFurnace.maxPower); - } - - @Override - protected void drawGuiContainerForegroundLayer(int i, int j) { - String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); - - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - - int k = (int)diFurnace.getPowerScaled(70); - drawTexturedModalRect(guiLeft + 26, guiTop + 88 - k, 192, 88 - k, 16, k); - - if(diFurnace.isRunning()) - drawTexturedModalRect(guiLeft + 80, guiTop + 18, 240, 0, 16, 16); - - diFurnace.tanks[0].renderTank(guiLeft + 8, guiTop + 88, this.zLevel, 16, 70); - diFurnace.tanks[1].renderTank(guiLeft + 134, guiTop + 88, this.zLevel, 16, 70); - diFurnace.tanks[2].renderTank(guiLeft + 152, guiTop + 88, this.zLevel, 16, 70); - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineTurbofan.java b/src/main/java/com/hbm/inventory/gui/GUIMachineTurbofan.java index ce0d4b30a..27fbdedb4 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineTurbofan.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineTurbofan.java @@ -2,7 +2,6 @@ package com.hbm.inventory.gui; import org.lwjgl.opengl.GL11; -import com.hbm.inventory.FluidTank; import com.hbm.inventory.container.ContainerMachineTurbofan; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityMachineTurbofan; @@ -57,7 +56,7 @@ public class GUIMachineTurbofan extends GuiInfoContainer { } if(diFurnace.afterburner > 0) { - int i = diFurnace.afterburner; + int i = Math.min(diFurnace.afterburner, 6); drawTexturedModalRect(guiLeft + 107, guiTop + 53, 176, (i - 1) * 16, 16, 16); } diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 95b261194..a21a31700 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -638,6 +638,14 @@ public class AssemblerRecipes { new ComparableStack(ModItems.bolt_dura_steel, 3), new ComparableStack(ModItems.motor, 1), }, 300); + + makeRecipe(new ComparableStack(ModBlocks.fire_door, 1), new AStack[] { + new OreDictStack(STEEL.ingot(), 8), + new OreDictStack(STEEL.plate(), 8), + new OreDictStack(ALLOY.plate(), 4), + new ComparableStack(ModItems.bolt_tungsten, 4), + new ComparableStack(ModItems.motor, 2), + }, 200); makeRecipe(new ComparableStack(ModBlocks.turret_chekhov, 1), new AStack[] { new ComparableStack(ModBlocks.machine_battery, 1), diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index b6476112f..d793d99e6 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -170,6 +170,22 @@ public class AnvilRecipes { new ComparableStack(ModItems.circuit_aluminium, 1 * ukModifier) }, new AnvilOutput(new ItemStack(ModBlocks.machine_assembler))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new AStack[] { + new ComparableStack(Blocks.furnace), + new OreDictStack(STEEL.plate(), 8), + new OreDictStack(CU.ingot(), 8) + }, new AnvilOutput(new ItemStack(ModBlocks.heater_firebox))).setTier(2)); + + constructionRecipes.add(new AnvilConstructionRecipe( + new AStack[] { + new ComparableStack(Blocks.stonebrick, 16), + new OreDictStack(IRON.ingot(), 4), + new OreDictStack(STEEL.plate(), 16), + new OreDictStack(CU.ingot(), 8), + new ComparableStack(ModBlocks.steel_grate, 16) + }, new AnvilOutput(new ItemStack(ModBlocks.furnace_steel))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new OreDictStack(STEEL.ingot(), 6), diff --git a/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java b/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java index bfd315f46..1a04a4649 100644 --- a/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java +++ b/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java @@ -101,31 +101,13 @@ public class ItemMachineUpgrade extends Item { list.add("Fortune +3 / Delay +45"); } - if(this == ModItems.upgrade_afterburn_1) { + if(this.type == UpgradeType.AFTERBURN) { list.add(EnumChatFormatting.RED + "Turbofan:"); - list.add("Production x2 / Consumption x2.5"); + list.add("Production x" + (this.tier + 1) + " / Consumption x" + (this.tier + 2)); list.add(EnumChatFormatting.RED + "Maxwell:"); - list.add("Afterburn +3s"); + list.add("Afterburn +" + (this.tier * 3) + "s"); list.add(EnumChatFormatting.RED + "Oil Wells:"); - list.add("Burn 10mB of gas for 50HE/t"); - } - - if(this == ModItems.upgrade_afterburn_2) { - list.add(EnumChatFormatting.RED + "Turbofan:"); - list.add("Production x3 / Consumption x5"); - list.add(EnumChatFormatting.RED + "Maxwell:"); - list.add("Afterburn +6s"); - list.add(EnumChatFormatting.RED + "Oil Wells:"); - list.add("Burn 20mB of gas for 100HE/t"); - } - - if(this == ModItems.upgrade_afterburn_3) { - list.add(EnumChatFormatting.RED + "Turbofan:"); - list.add("Production x4 / Consumption x7.5"); - list.add(EnumChatFormatting.RED + "Maxwell:"); - list.add("Afterburn +9s"); - list.add(EnumChatFormatting.RED + "Oil Wells:"); - list.add("Burn 30mB of gas for 150HE/t"); + list.add("Burn " + (this.tier * 10) + "mB of gas for " + (this.tier * 50) + "HE/t"); } if(this == ModItems.upgrade_radius) { diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbility.java b/src/main/java/com/hbm/items/tool/ItemToolAbility.java index 24e8b3b64..c6b7e4276 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbility.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbility.java @@ -214,8 +214,6 @@ public class ItemToolAbility extends ItemTool implements IItemAbility, IDepthRoc public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - System.out.println("PRE " + world.isRemote + " " + stack.getItemDamage()); - if(world.isRemote || this.breakAbility.size() < 2 || !canOperate(stack)) return super.onItemRightClick(stack, world, player); @@ -245,8 +243,6 @@ public class ItemToolAbility extends ItemTool implements IItemAbility, IDepthRoc world.playSoundAtEntity(player, "random.orb", 0.25F, getCurrentAbility(stack) == null ? 0.75F : 1.25F); - System.out.println("POST " + world.isRemote + " " + stack.getItemDamage()); - return stack; } diff --git a/src/main/java/com/hbm/items/tool/ItemWandS.java b/src/main/java/com/hbm/items/tool/ItemWandS.java index 9db318929..ea7ba07fa 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandS.java +++ b/src/main/java/com/hbm/items/tool/ItemWandS.java @@ -4,9 +4,6 @@ import java.util.List; import java.util.Random; import com.hbm.world.machine.FWatz; -import com.hbm.world.machine.FactoryAdvanced; -import com.hbm.world.machine.FactoryTitanium; -import com.hbm.world.machine.FusionReactor; import com.hbm.world.machine.NuclearReactor; import com.hbm.world.machine.Watz; @@ -31,21 +28,12 @@ public class ItemWandS extends Item { switch(itemstack.stackTagCompound.getInteger("building")) { case 0: - list.add("Structure: Titanium Factory"); - break; - case 1: - list.add("Structure: Advanced Factory"); - break; - case 2: list.add("Structure: Nuclear Reactor"); break; - case 3: - list.add("Structure: Fusion Reactor"); - break; - case 4: + case 1: list.add("Structure: Watz Power Plant"); break; - case 5: + case 2: list.add("Structure: Fusionary Watz Plant"); break; } @@ -70,21 +58,12 @@ public class ItemWandS extends Item { switch(stack.stackTagCompound.getInteger("building")) { case 0: - new FactoryTitanium().generate(world, rand, x, up ? y : y - 2, z); - break; - case 1: - new FactoryAdvanced().generate(world, rand, x, up ? y : y - 2, z); - break; - case 2: new NuclearReactor().generate(world, rand, x, up ? y : y - 4, z); break; - case 3: - new FusionReactor().generate(world, rand, x, up ? y : y - 4, z); - break; - case 4: + case 1: new Watz().generate(world, rand, x, up ? y : y - 12, z); break; - case 5: + case 2: new FWatz().generateHull(world, rand, x, up ? y : y - 18, z); break; } @@ -103,12 +82,12 @@ public class ItemWandS extends Item { stack.stackTagCompound = new NBTTagCompound(); stack.stackTagCompound.setInteger("building", 0); if(world.isRemote) - player.addChatMessage(new ChatComponentText("Set Structure: Titanium Factory")); + player.addChatMessage(new ChatComponentText("Set Structure: Nuclear Reactor")); } else { int i = stack.stackTagCompound.getInteger("building"); i++; stack.stackTagCompound.setInteger("building", i); - if(i >= 6) { + if(i >= 3) { stack.stackTagCompound.setInteger("building", 0); } @@ -117,25 +96,16 @@ public class ItemWandS extends Item { switch(i) { case 0: - player.addChatMessage(new ChatComponentText("Set Structure: Titanium Factory")); - break; - case 1: - player.addChatMessage(new ChatComponentText("Set Structure: Advanced Factory")); - break; - case 2: player.addChatMessage(new ChatComponentText("Set Structure: Nuclear Reactor")); break; - case 3: - player.addChatMessage(new ChatComponentText("Set Structure: Fusion Reactor")); - break; - case 4: + case 1: player.addChatMessage(new ChatComponentText("Set Structure: Watz Power Plant")); break; - case 5: + case 2: player.addChatMessage(new ChatComponentText("Set Structure: Fusionary Watz Plant")); break; default: - player.addChatMessage(new ChatComponentText("Set Structure: Titanium Factory")); + player.addChatMessage(new ChatComponentText("Set Structure: Nuclear Reactor")); break; } } diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index 5ccdf03ab..6e13476dc 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -450,23 +450,6 @@ public class Library { { tileentity = worldObj.getTileEntity(x - 2, y, z); } - //Large Fusion Reactor - if(block == ModBlocks.fusion_hatch && worldObj.getBlock(x, y, z + 8) == ModBlocks.fusion_core) - { - tileentity = worldObj.getTileEntity(x, y, z + 8); - } - if(block == ModBlocks.fusion_hatch && worldObj.getBlock(x, y, z - 8) == ModBlocks.fusion_core) - { - tileentity = worldObj.getTileEntity(x, y, z - 8); - } - if(block == ModBlocks.fusion_hatch && worldObj.getBlock(x + 8, y, z) == ModBlocks.fusion_core) - { - tileentity = worldObj.getTileEntity(x + 8, y, z); - } - if(block == ModBlocks.fusion_hatch && worldObj.getBlock(x - 8, y, z) == ModBlocks.fusion_core) - { - tileentity = worldObj.getTileEntity(x - 8, y, z); - } //FWatz Reactor if(block == ModBlocks.fwatz_hatch && worldObj.getBlock(x, y + 11, z + 9) == ModBlocks.fwatz_core) { diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 77604dd08..c32206965 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -15,7 +15,6 @@ import net.minecraft.client.renderer.entity.RenderMinecart; import net.minecraft.client.renderer.entity.RenderSnowball; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -329,6 +328,7 @@ public class ClientProxy extends ServerProxy { for(Entry entry : ItemRenderLibrary.renderers.entrySet()) MinecraftForgeClient.registerItemRenderer(entry.getKey(), entry.getValue()); + //this bit registers an item renderer for every existing tile entity renderer that implements IItemRendererProvider Iterator iterator = TileEntityRendererDispatcher.instance.mapSpecialRenderers.values().iterator(); while(iterator.hasNext()) { Object renderer = iterator.next(); @@ -723,6 +723,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderBlockMultipass()); RenderingRegistry.registerBlockHandler(new RenderBlockSideRotation()); RenderingRegistry.registerBlockHandler(new RenderDiode()); + RenderingRegistry.registerBlockHandler(new RenderBoxDuct()); RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_dynamite.getRenderType(), ResourceManager.charge_dynamite)); RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_c4.getRenderType(), ResourceManager.charge_c4)); @@ -1701,7 +1702,8 @@ public class ClientProxy extends ServerProxy { double mX = data.getDouble("mX"); double mY = data.getDouble("mY"); double mZ = data.getDouble("mZ"); - ParticleGasFlame text = new ParticleGasFlame(world, x, y, z, mX, mY, mZ, 6.5F); + float scale = data.getFloat("scale"); + ParticleGasFlame text = new ParticleGasFlame(world, x, y, z, mX, mY, mZ, scale > 0 ? scale : 6.5F); Minecraft.getMinecraft().effectRenderer.addEffect(text); } } @@ -1734,7 +1736,7 @@ public class ClientProxy extends ServerProxy { @Override public AudioWrapper getLoopedSoundStartStop(World world, String sound, String start, String stop, float x, float y, float z, float volume, float pitch) { - AudioWrapperClientStartStop audio = new AudioWrapperClientStartStop(world, sound == null ? null : new ResourceLocation(sound), start, stop, volume); + AudioWrapperClientStartStop audio = new AudioWrapperClientStartStop(world, sound == null ? null : new ResourceLocation(sound), start, stop, volume * 5); audio.updatePosition(x, y, z); return audio; } diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 9dc0f8a44..86e93d5b6 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -759,7 +759,6 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.barrel_antimatter, 1), new Object[] { "IPI", "IBI", "IPI", 'I', BIGMT.plate(), 'P', ModItems.coil_advanced_torus, 'B', ModItems.battery_sc_technetium }); addRecipeAuto(new ItemStack(ModBlocks.tesla, 1), new Object[] { "CCC", "PIP", "WTW", 'C', ModItems.coil_copper, 'I', IRON.ingot(), 'P', ANY_PLASTIC.ingot(), 'T', ModBlocks.machine_transformer, 'W', KEY_PLANKS }); addRecipeAuto(new ItemStack(ModBlocks.struct_plasma_core, 1), new Object[] { "CBC", "BHB", "CBC", 'C', ModItems.circuit_gold, 'B', ModBlocks.machine_lithium_battery, 'H', ModBlocks.fusion_heater }); - addShapelessAuto(new ItemStack(ModItems.circuit_red_copper, 48), new Object[] { ModBlocks.fusion_core }); addShapelessAuto(new ItemStack(ModBlocks.fusion_heater), new Object[] { ModBlocks.fusion_hatch }); addShapelessAuto(new ItemStack(ModItems.energy_core), new Object[] { ModItems.fusion_core, ModItems.fuse }); @@ -771,7 +770,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.upgrade_screm, 1), new Object[] { "SUS", "SCS", "SUS", 'S', STEEL.plate(), 'U', ModItems.upgrade_template, 'C', ModItems.crystal_xen }); addRecipeAuto(new ItemStack(ModItems.upgrade_gc_speed, 1), new Object[] {"GNG", "RUR", "GMG", 'R', RUBBER.ingot(), 'M', ModItems.motor, 'G', ModItems.coil_gold, 'N', TCALLOY.ingot(), 'U', ModItems.upgrade_template}); //TODO: gate this behind the upwards gate of the oil chain when it exists - addRecipeAuto(new ItemStack(ModItems.upgrade_stack, 1, 0), new Object[] { " C ", "PUP", " C ", 'C', ModItems.circuit_aluminium, 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'U', ModItems.upgrade_template }); + addRecipeAuto(new ItemStack(ModItems.upgrade_stack, 1, 0), new Object[] { " C ", "PUP", " C ", 'C', ModItems.circuit_aluminium, 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'U', ModItems.upgrade_template }); addRecipeAuto(new ItemStack(ModItems.upgrade_stack, 1, 1), new Object[] { " C ", "PUP", " C ", 'C', ModItems.circuit_copper, 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_HYDRAULIC), 'U', new ItemStack(ModItems.upgrade_stack, 1, 0) }); addRecipeAuto(new ItemStack(ModItems.upgrade_stack, 1, 2), new Object[] { " C ", "PUP", " C ", 'C', ModItems.circuit_red_copper, 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_ELECTRIC), 'U', new ItemStack(ModItems.upgrade_stack, 1, 1) }); addRecipeAuto(new ItemStack(ModItems.upgrade_ejector, 1, 0), new Object[] { " C ", "PUP", " C ", 'C', ModItems.plate_copper, 'P', ModItems.motor, 'U', ModItems.upgrade_template }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 62d9834fd..08eb51a5d 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1,6 +1,5 @@ package com.hbm.main; -import net.minecraft.block.Block; import net.minecraft.block.BlockDispenser; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.dispenser.BehaviorProjectileDispense; @@ -45,17 +44,10 @@ import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockMotherOfAllOres; import com.hbm.config.*; import com.hbm.creativetabs.*; -import com.hbm.entity.cart.*; -import com.hbm.entity.effect.*; +import com.hbm.entity.EntityMappings; import com.hbm.entity.grenade.*; -import com.hbm.entity.item.*; import com.hbm.entity.logic.*; -import com.hbm.entity.missile.*; -import com.hbm.entity.mob.*; -import com.hbm.entity.mob.botprime.*; import com.hbm.entity.mob.siege.*; -import com.hbm.entity.particle.*; -import com.hbm.entity.projectile.*; import com.hbm.entity.qic.EntitySPV; import com.hbm.handler.*; import com.hbm.handler.imc.*; @@ -332,202 +324,8 @@ public class MainRegistry { ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.scrumpy), 1, 1, 1)); ChestGenHooks.addItem(ChestGenHooks.PYRAMID_DESERT_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.scrumpy), 1, 1, 1)); - EntityRegistry.registerModEntity(EntityRocket.class, "entity_rocket", 0, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityNukeExplosion.class, "entity_nuke_explosion", 1, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityNukeExplosionAdvanced.class, "entity_nuke_explosion_advanced", 2, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeGeneric.class, "entity_grenade_generic", 3, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeStrong.class, "entity_grenade_strong", 4, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeFrag.class, "entity_grenade_frag", 5, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeFire.class, "entity_grenade_fire", 6, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeCluster.class, "entity_grenade_cluster", 7, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityTestMissile.class, "entity_test_missile", 8, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityNukeCloudSmall.class, "entity_nuke_cloud_small", 9, this, 10000, 1, true); - EntityRegistry.registerModEntity(EntityBullet.class, "entity_bullet", 10, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeFlare.class, "entity_grenade_flare", 11, this, 500, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeElectric.class, "entity_grenade_electric", 12, this, 500, 1, true); - EntityRegistry.registerModEntity(EntityGrenadePoison.class, "entity_grenade_poison", 13, this, 500, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeGas.class, "entity_grenade_gas", 14, this, 500, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeSchrabidium.class, "entity_grenade_schrab", 15, this, 500, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeNuke.class, "entity_grenade_nuke", 16, this, 500, 1, true); - EntityRegistry.registerModEntity(EntitySchrab.class, "entity_schrabnel", 17, this, 500, 1, true); - EntityRegistry.registerModEntity(EntityMissileGeneric.class, "entity_missile_generic", 18, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileStrong.class, "entity_missile_strong", 19, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileNuclear.class, "entity_missile_nuclear", 20, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileCluster.class, "entity_missile_cluster", 21, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileIncendiary.class, "entity_missile_incendiary", 22, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileAntiBallistic.class, "entity_missile_anti", 23, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileBunkerBuster.class, "entity_missile_buster", 24, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileIncendiaryStrong.class, "entity_missile_incendiary_strong", 25, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileClusterStrong.class, "entity_missile_cluster_strong", 26, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileBusterStrong.class, "entity_missile_buster_strong", 27, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileBurst.class, "entity_missile_burst", 28, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileInferno.class, "entity_missile_inferno", 29, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileRain.class, "entity_missile_rain", 30, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileDrill.class, "entity_missile_drill", 31, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileEndo.class, "entity_missile_endo", 32, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileExo.class, "entity_missile_exo", 33, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileMirv.class, "entity_missile_mirv", 34, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMIRV.class, "entity_mirvlet", 35, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntitySmokeFX.class, "entity_smoke_fx", 37, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityNukeCloudBig.class, "entity_nuke_cloud_big", 38, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeNuclear.class, "entity_grenade_nuclear", 39, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityBSmokeFX.class, "entity_b_smoke_fx", 40, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityGrenadePlasma.class, "entity_grenade_plasma", 41, this, 500, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeTau.class, "entity_grenade_tau", 42, this, 500, 1, true); - EntityRegistry.registerModEntity(EntityChopperMine.class, "entity_chopper_mine", 43, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityCombineBall.class, "entity_combine_ball", 44, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityRainbow.class, "entity_rainbow", 45, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeLemon.class, "entity_grenade_lemon", 46, this, 500, 1, true); - EntityRegistry.registerModEntity(EntityCloudFleija.class, "entity_cloud_fleija", 47, this, 500, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeMk2.class, "entity_grenade_mk2", 48, this, 500, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeZOMG.class, "entity_grenade_zomg", 49, this, 500, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeASchrab.class, "entity_grenade_aschrab", 50, this, 500, 1, true); - EntityRegistry.registerModEntity(EntityNukeCloudNoShroom.class, "entity_nuke_cloud_no", 51, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityFalloutRain.class, "entity_fallout", 52, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityDischarge.class, "entity_emp_discharge", 53, this, 500, 1, true); - EntityRegistry.registerModEntity(EntityEMPBlast.class, "entity_emp_blast", 54, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityFire.class, "entity_fire", 57, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityPlasmaBeam.class, "entity_immolator_beam", 58, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityLN2.class, "entity_LN2", 59, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityNightmareBlast.class, "entity_ominous_bullet", 60, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityGrenadePulse.class, "entity_grenade_pulse", 61, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityNukeExplosionPlus.class, "entity_nuke_explosion_advanced", 62, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityLaserBeam.class, "entity_laser_beam", 63, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMinerBeam.class, "entity_miner_beam", 64, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityRubble.class, "entity_rubble", 65, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityDSmokeFX.class, "entity_d_smoke_fx", 66, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntitySSmokeFX.class, "entity_s_smoke_fx", 67, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityShrapnel.class, "entity_shrapnel", 68, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeShrapnel.class, "entity_grenade_shrapnel", 69, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityBlackHole.class, "entity_black_hole", 70, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeBlackHole.class, "entity_grenade_black_hole", 71, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityOilSpillFX.class, "entity_spill_fx", 72, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityOilSpill.class, "entity_oil_spill", 73, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityGasFX.class, "entity_spill_fx", 74, this, 1000, 1, true); - //EntityRegistry.registerModEntity(EntityGasFlameFX.class, "entity_gasflame_fx", 75, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMinecartTest.class, "entity_minecart_test", 76, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntitySparkBeam.class, "entity_spark_beam", 77, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileDoomsday.class, "entity_missile_doomsday", 78, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityBombletTheta.class, "entity_theta", 79, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityBombletSelena.class, "entity_selena", 80, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityTSmokeFX.class, "entity_t_smoke_fx", 81, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityNukeExplosionMK3.class, "entity_nuke_mk3", 82, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityVortex.class, "entity_vortex", 83, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityMeteor.class, "entity_meteor", 84, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityLaser.class, "entity_laser", 85, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityBoxcar.class, "entity_boxcar", 86, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileTaint.class, "entity_missile_taint", 87, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeGascan.class, "entity_grenade_gascan", 88, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityNukeExplosionMK4.class, "entity_nuke_mk4", 89, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityCloudFleijaRainbow.class, "entity_cloud_rainbow", 90, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityExplosiveBeam.class, "entity_beam_bomb", 91, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityAAShell.class, "entity_aa_shell", 92, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityRocketHoming.class, "entity_stinger", 93, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileMicro.class, "entity_missile_micronuclear", 94, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityCloudSolinium.class, "entity_cloud_rainbow", 95, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityRagingVortex.class, "entity_raging_vortex", 96, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityCarrier.class, "entity_missile_carrier", 97, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityBooster.class, "entity_missile_booster", 98, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityModBeam.class, "entity_beam_bang", 99, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileBHole.class, "entity_missile_blackhole", 100, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileSchrabidium.class, "entity_missile_schrabidium", 101, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileEMP.class, "entity_missile_emp", 102, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityChlorineFX.class, "entity_chlorine_fx", 103, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityPinkCloudFX.class, "entity_pink_cloud_fx", 104, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityCloudFX.class, "entity_cloud_fx", 105, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityGrenadePC.class, "entity_grenade_pink_cloud", 106, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeCloud.class, "entity_grenade_cloud", 107, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityBomber.class, "entity_bomber", 108, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityBombletZeta.class, "entity_zeta", 109, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityOrangeFX.class, "entity_agent_orange", 110, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityDeathBlast.class, "entity_laser_blast", 111, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeSmart.class, "entity_grenade_smart", 112, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeMIRV.class, "entity_grenade_mirv", 113, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeBreach.class, "entity_grenade_breach", 114, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeBurst.class, "entity_grenade_burst", 115, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityBurningFOEQ.class, "entity_burning_foeq", 116, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeIFGeneric.class, "entity_grenade_ironshod", 117, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeIFHE.class, "entity_grenade_ironshod_he", 118, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeIFBouncy.class, "entity_grenade_ironshod_bouncy", 119, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeIFSticky.class, "entity_grenade_ironshod_sticky", 120, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeIFImpact.class, "entity_grenade_ironshod_impact", 121, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeIFIncendiary.class, "entity_grenade_ironshod_fire", 122, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeIFToxic.class, "entity_grenade_ironshod_toxic", 123, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeIFConcussion.class, "entity_grenade_ironshod_con", 124, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeIFBrimstone.class, "entity_grenade_ironshod_brim", 125, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeIFMystery.class, "entity_grenade_ironshod_m", 126, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeIFSpark.class, "entity_grenade_ironshod_s", 127, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeIFHopwire.class, "entity_grenade_ironshod_hopwire", 128, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeIFNull.class, "entity_grenade_ironshod_null", 129, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityFallingNuke.class, "entity_falling_bomb", 130, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityBulletBase.class, "entity_bullet_mk2", 131, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityMinerRocket.class, "entity_miner_lander", 132, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityFogFX.class, "entity_nuclear_fog", 133, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityDuchessGambit.class, "entity_duchessgambit", 134, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileEMPStrong.class, "entity_missile_emp_strong", 135, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityEMP.class, "entity_emp_logic", 136, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityWaterSplash.class, "entity_water_splash", 137, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityBobmazon.class, "entity_bobmazon_delivery", 138, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileCustom.class, "entity_custom_missile", 139, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityBalefire.class, "entity_balefire", 140, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityTom.class, "entity_tom_the_moonstone", 141, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityTomBlast.class, "entity_tom_bust", 142, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityBuilding.class, "entity_falling_building", 143, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntitySoyuz.class, "entity_soyuz", 144, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntitySoyuzCapsule.class, "entity_soyuz_capsule", 145, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMovingItem.class, "entity_c_item", 146, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityCloudTom.class, "entity_moonstone_blast", 147, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityBeamVortex.class, "entity_vortex_beam", 148, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityFireworks.class, "entity_firework_ball", 149, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityWastePearl.class, "entity_waste_pearl", 150, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityBOTPrimeHead.class, "entity_balls_o_tron", 151, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityBOTPrimeBody.class, "entity_balls_o_tron_seg", 152, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityBlockSpider.class, "entity_taintcrawler", 153, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityRBMKDebris.class, "entity_rbmk_debris", 154, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityUFO.class, "entity_ntm_ufo", 155, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityNukeExplosionNT.class, "entity_ntm_explosion_nt", 156, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityQuasar.class, "entity_digamma_quasar", 157, this, 250, 1, true); - EntityRegistry.registerModEntity(EntitySpear.class, "entity_digamma_spear", 158, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileVolcano.class, "entity_missile_volcano", 159, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityMissileShuttle.class, "entity_missile_shuttle", 160, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityZirnoxDebris.class, "entity_zirnox_debris", 161, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityGhost.class, "entity_ntm_ghost", 162, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeDynamite.class, "entity_grenade_dynamite", 163, this, 250, 1, true); - EntityRegistry.registerModEntity(EntitySiegeLaser.class, "entity_ntm_siege_laser", 164, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntitySiegeDropship.class, "entity_ntm_siege_dropship", 165, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityTNTPrimedBase.class, "entity_ntm_tnt_primed", 166, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeBouncyGeneric.class, "entity_grenade_bouncy_generic", 168, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityGrenadeImpactGeneric.class, "entity_grenade_impact_generic", 169, this, 250, 1, true); - EntityRegistry.registerModEntity(EntityMinecartCrate.class, "entity_ntm_cart_crate", 170, this, 250, 1, false); - EntityRegistry.registerModEntity(EntityMinecartDestroyer.class, "entity_ntm_cart_crate", 171, this, 250, 1, false); - EntityRegistry.registerModEntity(EntityMinecartOre.class, "entity_ntm_cart_ore", 172, this, 250, 1, false); - EntityRegistry.registerModEntity(EntityMinecartBogie.class, "entity_ntm_cart_bogie", 173, this, 250, 1, false); - EntityRegistry.registerModEntity(EntityMagnusCartus.class, "entity_ntm_cart_chungoid", 174, this, 250, 1, false); - EntityRegistry.registerModEntity(EntityMinecartPowder.class, "entity_ntm_cart_powder", 175, this, 250, 1, false); - EntityRegistry.registerModEntity(EntityMinecartSemtex.class, "entity_ntm_cart_semtex", 176, this, 250, 1, false); - EntityRegistry.registerModEntity(EntityNukeTorex.class, "entity_effect_torex", 177, this, 250, 1, false); - EntityRegistry.registerModEntity(EntityArtilleryShell.class, "entity_artillery_shell", 178, this, 1000, 1, true); - - EntityRegistry.registerGlobalEntityID(EntityNuclearCreeper.class, "entity_mob_nuclear_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x204131, 0x75CE00); - EntityRegistry.registerGlobalEntityID(EntityTaintedCreeper.class, "entity_mob_tainted_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x813b9b, 0xd71fdd); - EntityRegistry.registerGlobalEntityID(EntityHunterChopper.class, "entity_mob_hunter_chopper", EntityRegistry.findGlobalUniqueEntityId(), 0x000020, 0x2D2D72); - EntityRegistry.registerGlobalEntityID(EntityCyberCrab.class, "entity_cyber_crab", EntityRegistry.findGlobalUniqueEntityId(), 0xAAAAAA, 0x444444); - EntityRegistry.registerGlobalEntityID(EntityTeslaCrab.class, "entity_tesla_crab", EntityRegistry.findGlobalUniqueEntityId(), 0xAAAAAA, 0x440000); - EntityRegistry.registerGlobalEntityID(EntityTaintCrab.class, "entity_taint_crab", EntityRegistry.findGlobalUniqueEntityId(), 0xAAAAAA, 0xFF00FF); - EntityRegistry.registerGlobalEntityID(EntityMaskMan.class, "entity_mob_mask_man", EntityRegistry.findGlobalUniqueEntityId(), 0x818572, 0xC7C1B7); - EntityRegistry.registerGlobalEntityID(EntityDuck.class, "entity_fucc_a_ducc", EntityRegistry.findGlobalUniqueEntityId(), 0xd0d0d0, 0xFFBF00); - EntityRegistry.registerGlobalEntityID(EntityQuackos.class, "entity_elder_one", EntityRegistry.findGlobalUniqueEntityId(), 0xd0d0d0, 0xFFBF00); - EntityRegistry.registerGlobalEntityID(EntityFBI.class, "entity_ntm_fbi", EntityRegistry.findGlobalUniqueEntityId(), 0x008000, 0x404040); - EntityRegistry.registerGlobalEntityID(EntityRADBeast.class, "entity_ntm_radiation_blaze", EntityRegistry.findGlobalUniqueEntityId(), 0x303030, 0x008000); - EntityRegistry.registerGlobalEntityID(EntitySiegeZombie.class, "entity_meme_zombie", EntityRegistry.findGlobalUniqueEntityId(), 0x303030, 0x008000); - EntityRegistry.registerGlobalEntityID(EntitySiegeSkeleton.class, "entity_meme_skeleton", EntityRegistry.findGlobalUniqueEntityId(), 0x303030, 0x000080); - EntityRegistry.registerGlobalEntityID(EntitySiegeUFO.class, "entity_meme_ufo", EntityRegistry.findGlobalUniqueEntityId(), 0x303030, 0x800000); - EntityRegistry.registerGlobalEntityID(EntitySiegeCraft.class, "entity_meme_craft", EntityRegistry.findGlobalUniqueEntityId(), 0x303030, 0x808000); - EntityRegistry.registerModEntity(EntitySiegeTunneler.class, "entity_meme_tunneler", 167, this, 1000, 1, true); //how about you have a taste of my fucking scrotum? - //EntityRegistry.registerGlobalEntityID(EntitySiegeTunneler.class, "entity_meme_tunneler", EntityRegistry.findGlobalUniqueEntityId(), 0x303030, 0x008080); - - EntityRegistry.registerModEntity(EntitySPV.class, "entity_self_propelled_vehicle_mark_1", 1600, this, 1000, 1, true); - + EntityMappings.writeMappings(); + ForgeChunkManager.setForcedChunkLoadingCallback(this, new LoadingCallback() { @Override @@ -1109,14 +907,17 @@ public class MainRegistry { ignoreMappings.add("hbm:item.crystal_energy"); ignoreMappings.add("hbm:item.pellet_coolant"); ignoreMappings.add("hbm:item.turret_control"); + ignoreMappings.add("hbm:tile.sellafield_0"); + ignoreMappings.add("hbm:tile.sellafield_1"); + ignoreMappings.add("hbm:tile.sellafield_2"); + ignoreMappings.add("hbm:tile.sellafield_3"); + ignoreMappings.add("hbm:tile.sellafield_4"); + ignoreMappings.add("hbm:tile.sellafield_core"); + ignoreMappings.add("hbm:tile.fusion_core"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); remapItems.put("hbm:item.man_explosive8", ModItems.explosive_lenses); - //forge shits the bed when you dare to remap several blocks into one, since noone would ever try to do that - /*remapBlocks.put("hbm:tile.sellafield_core", ModBlocks.sellafield); - for(byte i = 0; i < 5; i++) - remapBlocks.put("hbm:tile.sellafield_" + i, ModBlocks.sellafield);*/ for(MissingMapping mapping : event.get()) { diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 9d412ed51..ff0c945c1 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -76,6 +76,7 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.AbstractClientPlayer; +import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.multiplayer.WorldClient; import net.minecraft.client.renderer.OpenGlHelper; @@ -170,6 +171,18 @@ public class ModEventHandlerClient { if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK && world.getBlock(mop.blockX, mop.blockY, mop.blockZ) instanceof ILookOverlay) { ((ILookOverlay) world.getBlock(mop.blockX, mop.blockY, mop.blockZ)).printHook(event, world, mop.blockX, mop.blockY, mop.blockZ); } + + /*if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) { + ScaledResolution resolution = event.resolution; + GL11.glPushMatrix(); + int pX = resolution.getScaledWidth() / 2 + 8; + int pZ = resolution.getScaledHeight() / 2; + mc.fontRenderer.drawString("META: " + world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ), pX, pZ - 3, 0xffff00); + GL11.glDisable(GL11.GL_BLEND); + GL11.glColor3f(1F, 1F, 1F); + GL11.glPopMatrix(); + Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); + }*/ } /// HANLDE ANIMATION BUSES /// diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 89afd2837..5be068f0f 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -5,6 +5,7 @@ import com.hbm.animloader.Animation; import com.hbm.animloader.ColladaLoader; import com.hbm.lib.RefStrings; import com.hbm.render.loader.HFRWavefrontObject; +import com.hbm.render.loader.WavefrontObjDisplayList; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.AdvancedModelLoader; @@ -272,9 +273,10 @@ public class ResourceManager { public static final IModelCustom blast_door_slider = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blast_door_slider.obj")); public static final IModelCustom blast_door_block = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blast_door_block.obj")); - //Transission Seal + //Doors public static AnimatedModel transition_seal; public static Animation transition_seal_anim; + public static final WavefrontObjDisplayList fire_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/fire_door.obj")).asDisplayList(); //Tesla Coil public static final IModelCustom tesla = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/tesla.obj")); @@ -398,6 +400,7 @@ public class ResourceManager { //Turbofan public static final ResourceLocation turbofan_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/turbofan.png"); public static final ResourceLocation turbofan_back_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/turbofan_back.png"); + public static final ResourceLocation turbofan_afterburner_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/turbofan_afterburner.png"); //Large Turbine public static final ResourceLocation turbine_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/turbine.png"); @@ -601,6 +604,7 @@ public class ResourceManager { //Doors public static final ResourceLocation transition_seal_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/transition_seal.png"); + public static final ResourceLocation fire_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/fire_door.png"); //Tesla Coil public static final ResourceLocation tesla_tex = new ResourceLocation(RefStrings.MODID, "textures/models/tesla.png"); diff --git a/src/main/java/com/hbm/packet/LoopedSoundPacket.java b/src/main/java/com/hbm/packet/LoopedSoundPacket.java index 4def5fb03..44d9339bf 100644 --- a/src/main/java/com/hbm/packet/LoopedSoundPacket.java +++ b/src/main/java/com/hbm/packet/LoopedSoundPacket.java @@ -96,7 +96,7 @@ public class LoopedSoundPacket implements IMessage { flag = false; } - if(flag && te.getWorldObj().isRemote && ((TileEntityMachineTurbofan)te).isRunning) + if(flag && te.getWorldObj().isRemote && ((TileEntityMachineTurbofan)te).wasOn) Minecraft.getMinecraft().getSoundHandler().playSound(new SoundLoopTurbofan(new ResourceLocation("hbm:block.turbofanOperate"), te)); } diff --git a/src/main/java/com/hbm/packet/TETurbofanPacket.java b/src/main/java/com/hbm/packet/TETurbofanPacket.java index 6b7fd8f38..c40a1b0b7 100644 --- a/src/main/java/com/hbm/packet/TETurbofanPacket.java +++ b/src/main/java/com/hbm/packet/TETurbofanPacket.java @@ -59,7 +59,7 @@ public class TETurbofanPacket implements IMessage { TileEntityMachineTurbofan gen = (TileEntityMachineTurbofan) te; gen.spin = m.spin; - gen.isRunning = m.isRunning; + gen.wasOn = m.isRunning; } return null; } diff --git a/src/main/java/com/hbm/render/block/RenderBoxDuct.java b/src/main/java/com/hbm/render/block/RenderBoxDuct.java new file mode 100644 index 000000000..f7afa2ee2 --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderBoxDuct.java @@ -0,0 +1,160 @@ +package com.hbm.render.block; + +import com.hbm.blocks.network.FluidDuctBox; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.lib.Library; +import com.hbm.tileentity.network.TileEntityPipeBaseNT; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.IBlockAccess; + +public class RenderBoxDuct implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + FluidType type = Fluids.NONE; + + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityPipeBaseNT) { + TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te; + type = pipe.getType(); + } + + boolean pX = Library.canConnectFluid(world, x + 1, y, z, Library.NEG_X, type); + boolean nX = Library.canConnectFluid(world, x - 1, y, z, Library.POS_X, type); + boolean pY = Library.canConnectFluid(world, x, y + 1, z, Library.NEG_Y, type); + boolean nY = Library.canConnectFluid(world, x, y - 1, z, Library.POS_Y, type); + boolean pZ = Library.canConnectFluid(world, x, y, z + 1, Library.NEG_Z, type); + boolean nZ = Library.canConnectFluid(world, x, y, z - 1, Library.POS_Z, type); + + int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); + int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0); + + //Straight along X + if((mask & 0b001111) == 0 && mask > 0) { + renderer.uvRotateTop = 1; + renderer.uvRotateBottom = 1; + renderer.uvRotateEast = 2; + renderer.uvRotateWest = 1; + renderer.setRenderBounds(0.0D, 0.125D, 0.125D, 1.0D, 0.875D, 0.875D); + renderer.renderStandardBlock(block, x, y, z); + + //Straight along Z + } else if((mask & 0b111100) == 0 && mask > 0) { + renderer.uvRotateNorth = 1; + renderer.uvRotateSouth = 2; + renderer.setRenderBounds(0.125D, 0.125D, 0.0D, 0.875D, 0.875D, 1.0D); + renderer.renderStandardBlock(block, x, y, z); + + //Straight along Y + } else if((mask & 0b110011) == 0 && mask > 0) { + renderer.setRenderBounds(0.125D, 0.0D, 0.125D, 0.875D, 1.0D, 0.875D); + renderer.renderStandardBlock(block, x, y, z); + + //Curve + } else if(count == 2) { + + if(nY && (pX || nX)) { + renderer.uvRotateTop = 1; + renderer.uvRotateBottom = 1; + } + + if(pY && (pX || nX)) { + renderer.uvRotateTop = 1; + renderer.uvRotateBottom = 1; + } + + if(!nY && !pY) { + renderer.uvRotateNorth = 1; + renderer.uvRotateSouth = 2; + renderer.uvRotateEast = 2; + renderer.uvRotateWest = 1; + } + + renderer.setRenderBounds(0.125D, 0.125D, 0.125D, 0.875D, 0.875D, 0.875D); + renderer.renderStandardBlock(block, x, y, z); + + if(nY) { + renderer.setRenderBounds(0.125D, 0.0D, 0.125D, 0.875D, 0.125D, 0.875D); + renderer.renderStandardBlock(block, x, y, z); + } + if(pY) { + renderer.setRenderBounds(0.125D, 0.875D, 0.125D, 0.875D, 1.0D, 0.875D); + renderer.renderStandardBlock(block, x, y, z); + } + if(nX) { + renderer.setRenderBounds(0.0D, 0.125D, 0.125D, 0.125D, 0.875D, 0.875D); + renderer.renderStandardBlock(block, x, y, z); + } + if(pX) { + renderer.setRenderBounds(0.875D, 0.125D, 0.125D, 1.0D, 0.875D, 0.875D); + renderer.renderStandardBlock(block, x, y, z); + } + if(nZ) { + renderer.setRenderBounds(0.125D, 0.125D, 0.0D, 0.875D, 0.875D, 0.125D); + renderer.renderStandardBlock(block, x, y, z); + } + if(pZ) { + renderer.setRenderBounds(0.125D, 0.125D, 0.875D, 0.875D, 0.875D, 1.0D); + renderer.renderStandardBlock(block, x, y, z); + } + + //Junction + } else { + renderer.setRenderBounds(0.0625D, 0.0625D, 0.0625D, 0.9375D, 0.9375D, 0.9375D); + renderer.renderStandardBlock(block, x, y, z); + + if(nY) { + renderer.setRenderBounds(0.125D, 0.0D, 0.125D, 0.875D, 0.0625D, 0.875D); + renderer.renderStandardBlock(block, x, y, z); + } + if(pY) { + renderer.setRenderBounds(0.125D, 0.9375D, 0.125D, 0.875D, 1.0D, 0.875D); + renderer.renderStandardBlock(block, x, y, z); + } + if(nX) { + renderer.setRenderBounds(0.0D, 0.125D, 0.125D, 0.0625D, 0.875D, 0.875D); + renderer.renderStandardBlock(block, x, y, z); + } + if(pX) { + renderer.setRenderBounds(0.9375D, 0.125D, 0.125D, 1.0D, 0.875D, 0.875D); + renderer.renderStandardBlock(block, x, y, z); + } + if(nZ) { + renderer.setRenderBounds(0.125D, 0.125D, 0.0D, 0.875D, 0.875D, 0.0625D); + renderer.renderStandardBlock(block, x, y, z); + } + if(pZ) { + renderer.setRenderBounds(0.125D, 0.125D, 0.9375D, 0.875D, 0.875D, 1.0D); + renderer.renderStandardBlock(block, x, y, z); + } + } + + renderer.uvRotateTop = 0; + renderer.uvRotateBottom = 0; + renderer.uvRotateNorth = 0; + renderer.uvRotateSouth = 0; + renderer.uvRotateEast = 0; + renderer.uvRotateWest = 0; + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return false; + } + + @Override + public int getRenderId() { + return FluidDuctBox.renderID; + } +} diff --git a/src/main/java/com/hbm/render/block/RenderTestPipe.java b/src/main/java/com/hbm/render/block/RenderTestPipe.java index bdda2c57f..30958f977 100644 --- a/src/main/java/com/hbm/render/block/RenderTestPipe.java +++ b/src/main/java/com/hbm/render/block/RenderTestPipe.java @@ -10,7 +10,6 @@ import com.hbm.main.ResourceManager; import com.hbm.render.util.ObjUtil; import com.hbm.tileentity.network.TileEntityPipeBaseNT; -import api.hbm.fluid.IFluidConnector; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; diff --git a/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java b/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java index 4e2663806..239ef1ee9 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java +++ b/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java @@ -3,11 +3,15 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; import com.hbm.render.item.ItemRenderBase; +import com.hbm.render.util.DiamondPronter; import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank; +import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.item.Item; import net.minecraft.tileentity.TileEntity; @@ -42,8 +46,29 @@ public class RenderFluidTank extends TileEntitySpecialRenderer implements IItemR ResourceManager.fluidtank.renderPart("Tank"); GL11.glShadeModel(GL11.GL_FLAT); + + + FluidType type = ((TileEntityMachineFluidTank) tileEntity).tank.getTankType(); + + if(type != null && type != Fluids.NONE) { + + RenderHelper.disableStandardItemLighting(); + GL11.glPushMatrix(); + GL11.glTranslated(-0.25, 0.5, -1.501); + GL11.glRotated(90, 0, 1, 0); + GL11.glScalef(1.0F, 0.375F, 0.375F); + DiamondPronter.pront(type.poison, type.flammability, type.reactivity, type.symbol); + GL11.glPopMatrix(); + GL11.glPushMatrix(); + GL11.glTranslated(0.25, 0.5, 1.501); + GL11.glRotated(-90, 0, 1, 0); + GL11.glScalef(1.0F, 0.375F, 0.375F); + DiamondPronter.pront(type.poison, type.flammability, type.reactivity, type.symbol); + GL11.glPopMatrix(); + } GL11.glPopMatrix(); + RenderHelper.enableStandardItemLighting(); } @Override diff --git a/src/main/java/com/hbm/render/tileentity/RenderStructureMaker.java b/src/main/java/com/hbm/render/tileentity/RenderStructureMaker.java index edb145f2f..20d55b4d6 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderStructureMaker.java +++ b/src/main/java/com/hbm/render/tileentity/RenderStructureMaker.java @@ -7,8 +7,6 @@ import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityStructureMarker; import com.hbm.world.machine.FWatz; -import com.hbm.world.machine.FactoryTitanium; -import com.hbm.world.machine.FusionReactor; import com.hbm.world.machine.NuclearReactor; import com.hbm.world.machine.Watz; @@ -23,9 +21,6 @@ import net.minecraft.util.ResourceLocation; public class RenderStructureMaker extends TileEntitySpecialRenderer { float pixel = 1F/16F; - - public RenderStructureMaker() { - } @Override public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) { @@ -50,43 +45,6 @@ public class RenderStructureMaker extends TileEntitySpecialRenderer { int offsetZ = 0; if(type == 0) { - if(meta == 6) { - offsetZ = 2; - } - if(meta == 7) { - offsetX = 2; - } - if(meta == 8) { - offsetZ = -2; - } - if(meta == 9) { - offsetX = -2; - } - - GL11.glTranslatef(-1 + offsetX, -2, -1 + offsetZ); - for(int a = 0; a < 3; a++) { - for(int b = 0; b < 3; b++) { - for(int c = 0; c < 3; c++) { - - Block block = Blocks.air; - if(FactoryTitanium.array[b][a].substring(c, c + 1).equals("H")) - block = ModBlocks.factory_titanium_hull; - if(FactoryTitanium.array[b][a].substring(c, c + 1).equals("F")) - block = ModBlocks.factory_titanium_furnace; - if(FactoryTitanium.array[b][a].substring(c, c + 1).equals("C")) - block = ModBlocks.factory_titanium_core; - if(block != Blocks.air) { - RenderBlocks rb = RenderBlocks.getInstance(); - ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); - ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); - renderSmolBlockAt(loc1, loc2, a, b, c); - } - } - } - } - } - if(type == 1) { - if(meta == 6) { offsetZ = 3; } @@ -116,6 +74,8 @@ public class RenderStructureMaker extends TileEntitySpecialRenderer { block = ModBlocks.reactor_hatch; if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("I")) block = ModBlocks.reactor_conductor; + //if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("B")) + // block = ModBlocks.brick_concrete; if(block != Blocks.air) { RenderBlocks rb = RenderBlocks.getInstance(); ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); @@ -126,138 +86,7 @@ public class RenderStructureMaker extends TileEntitySpecialRenderer { } } } - if(type == 2) { - - if(meta == 6) { - offsetZ = 3; - } - if(meta == 7) { - offsetX = 3; - } - if(meta == 8) { - offsetZ = -3; - } - if(meta == 9) { - offsetX = -3; - } - - GL11.glTranslatef(-2 + offsetX, -4, -2 + offsetZ); - for(int a = 0; a < 5; a++) { - for(int b = 0; b < 5; b++) { - for(int c = 0; c < 5; c++) { - - Block block = Blocks.air; - if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("R")) - block = ModBlocks.reactor_element; - if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("#")) - block = ModBlocks.reactor_computer; - if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("C")) - block = ModBlocks.reactor_control; - if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("A")) - block = ModBlocks.reactor_hatch; - if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("I")) - block = ModBlocks.reactor_conductor; - if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("B")) - block = ModBlocks.brick_concrete; - if(block != Blocks.air) { - RenderBlocks rb = RenderBlocks.getInstance(); - ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); - ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); - renderSmolBlockAt(loc1, loc2, a, b, c); - } - } - } - } - } - if(type == 3) { - - if(meta == 6) { - offsetZ = 9; - } - if(meta == 7) { - offsetX = 9; - } - if(meta == 8) { - offsetZ = -9; - } - if(meta == 9) { - offsetX = -9; - } - - GL11.glTranslatef(-8 + offsetX, -4, -8 + offsetZ); - for(int a = 0; a < 17; a++) { - for(int b = 0; b < 5; b++) { - for(int c = 0; c < 17; c++) { - - Block block = Blocks.air; - if(FusionReactor.array[b][a].substring(c, c + 1).equals("M")) - block = ModBlocks.fusion_conductor; - if(FusionReactor.array[b][a].substring(c, c + 1).equals("H")) - block = ModBlocks.fusion_heater; - if(FusionReactor.array[b][a].substring(c, c + 1).equals("A")) - block = ModBlocks.fusion_hatch; - if(FusionReactor.array[b][a].substring(c, c + 1).equals("R")) - block = ModBlocks.fusion_motor; - if(FusionReactor.array[b][a].substring(c, c + 1).equals("C")) - block = ModBlocks.fusion_center; - if(FusionReactor.array[b][a].substring(c, c + 1).equals("#")) - block = ModBlocks.fusion_core; - if(block != Blocks.air) { - RenderBlocks rb = RenderBlocks.getInstance(); - ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); - ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); - renderSmolBlockAt(loc1, loc2, a, b, c); - } - } - } - } - } - if(type == 4) { - - if(meta == 6) { - offsetZ = 9; - } - if(meta == 7) { - offsetX = 9; - } - if(meta == 8) { - offsetZ = -9; - } - if(meta == 9) { - offsetX = -9; - } - - GL11.glTranslatef(-8 + offsetX, -4, -8 + offsetZ); - for(int a = 0; a < 17; a++) { - for(int b = 0; b < 5; b++) { - for(int c = 0; c < 17; c++) { - - Block block = Blocks.air; - if(FusionReactor.array[b][a].substring(c, c + 1).equals("M")) - block = ModBlocks.fusion_conductor; - if(FusionReactor.array[b][a].substring(c, c + 1).equals("H")) - block = ModBlocks.fusion_heater; - if(FusionReactor.array[b][a].substring(c, c + 1).equals("A")) - block = ModBlocks.fusion_hatch; - if(FusionReactor.array[b][a].substring(c, c + 1).equals("R")) - block = ModBlocks.fusion_motor; - if(FusionReactor.array[b][a].substring(c, c + 1).equals("C")) - block = ModBlocks.fusion_center; - if(FusionReactor.array[b][a].substring(c, c + 1).equals("#")) - block = ModBlocks.fusion_core; - if(FusionReactor.array[b][a].substring(c, c + 1).equals("T")) - block = ModBlocks.block_tungsten; - if(block != Blocks.air) { - RenderBlocks rb = RenderBlocks.getInstance(); - ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); - ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); - renderSmolBlockAt(loc1, loc2, a, b, c); - } - } - } - } - } - if(type == 5) { + if(type == 1) { if(meta == 6) { offsetZ = 4; @@ -304,7 +133,7 @@ public class RenderStructureMaker extends TileEntitySpecialRenderer { } } } - if(type == 6) { + if(type == 2) { if(meta == 6) { offsetZ = 10; diff --git a/src/main/java/com/hbm/render/tileentity/RenderTurbofan.java b/src/main/java/com/hbm/render/tileentity/RenderTurbofan.java index 1e7b35ed2..7f322a458 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderTurbofan.java +++ b/src/main/java/com/hbm/render/tileentity/RenderTurbofan.java @@ -14,7 +14,7 @@ public class RenderTurbofan extends TileEntitySpecialRenderer { } @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float interp) { GL11.glPushMatrix(); GL11.glTranslated(x + 0.5D, y, z + 0.5D); GL11.glEnable(GL11.GL_LIGHTING); @@ -29,17 +29,27 @@ public class RenderTurbofan extends TileEntitySpecialRenderer { case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; } + + TileEntityMachineTurbofan turbo = (TileEntityMachineTurbofan) tileEntity; + + float spin = turbo.lastSpin + (turbo.spin - turbo.lastSpin) * interp; GL11.glShadeModel(GL11.GL_SMOOTH); bindTexture(ResourceManager.turbofan_tex); ResourceManager.turbofan.renderPart("Body"); + GL11.glPushMatrix(); GL11.glTranslated(0, 1.5, 0); - GL11.glRotated(((TileEntityMachineTurbofan) tileEntity).spin, 0, 0, -1); + GL11.glRotated(spin, 0, 0, -1); GL11.glTranslated(0, -1.5, 0); ResourceManager.turbofan.renderPart("Blades"); GL11.glPopMatrix(); - bindTexture(ResourceManager.turbofan_back_tex); + + if(turbo.afterburner == 0) + bindTexture(ResourceManager.turbofan_back_tex); + else + bindTexture(ResourceManager.turbofan_afterburner_tex); + ResourceManager.turbofan.renderPart("Afterburner"); GL11.glShadeModel(GL11.GL_FLAT); diff --git a/src/main/java/com/hbm/sound/AudioWrapperClientStartStop.java b/src/main/java/com/hbm/sound/AudioWrapperClientStartStop.java index 1bd2fd3b3..663981b9e 100644 --- a/src/main/java/com/hbm/sound/AudioWrapperClientStartStop.java +++ b/src/main/java/com/hbm/sound/AudioWrapperClientStartStop.java @@ -33,7 +33,7 @@ public class AudioWrapperClientStartStop extends AudioWrapperClient { @Override public void startSound(){ if(start != null){ - world.playSound(x, y, z, start, ssVol, 1, false); + world.playSound(x, y, z, start, ssVol * 0.2F, 1, false); } super.startSound(); } @@ -41,7 +41,7 @@ public class AudioWrapperClientStartStop extends AudioWrapperClient { @Override public void stopSound(){ if(stop != null){ - world.playSound(x, y, z, stop, ssVol, 1, false); + world.playSound(x, y, z, stop, ssVol * 0.2F, 1, false); } super.stopSound(); } diff --git a/src/main/java/com/hbm/sound/SoundLoopTurbofan.java b/src/main/java/com/hbm/sound/SoundLoopTurbofan.java index 4d5b125f3..4b08d0471 100644 --- a/src/main/java/com/hbm/sound/SoundLoopTurbofan.java +++ b/src/main/java/com/hbm/sound/SoundLoopTurbofan.java @@ -27,7 +27,7 @@ public class SoundLoopTurbofan extends SoundLoopMachine { if(this.volume != 10) volume = 10; - if(!drill.isRunning) + if(!drill.wasOn) this.donePlaying = true; } } diff --git a/src/main/java/com/hbm/tileentity/DoorDecl.java b/src/main/java/com/hbm/tileentity/DoorDecl.java index 3a2c511e6..b770acb68 100644 --- a/src/main/java/com/hbm/tileentity/DoorDecl.java +++ b/src/main/java/com/hbm/tileentity/DoorDecl.java @@ -95,6 +95,93 @@ public static final DoorDecl TRANSITION_SEAL = new DoorDecl(){ return null; } }; + +public static final DoorDecl FIRE_DOOR = new DoorDecl(){ + + @Override + public String getOpenSoundEnd() { + return "hbm:door.wghStop"; + }; + @Override + public String getOpenSoundLoop() { + return "hbm:door.wghStart"; + }; + @Override + public String getSoundLoop2() { + return "hbm:door.alarm6"; + }; + + @Override + public float getSoundVolume(){ + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if(!partName.equals("frame")){ + set(trans, 0, 3*getNormTime(openTicks), 0); + } else { + super.getTranslation(partName, openTicks, child, trans); + } + }; + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glTranslated(0, 0, 0.5); + }; + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][]{{0, -1, 0, 3.0001}}; + }; + + @Override + public int timeToOpen() { + return 160; + }; + + @Override + public int[][] getDoorOpenRanges(){ + return new int[][]{{-1, 0, 0, 3, 4, 1}}; + } + + @Override + public int[] getDimensions(){ + return new int[]{2, 0, 0, 0, 2, 1}; + } + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(!open) + return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1); + if(z == 1){ + return AxisAlignedBB.getBoundingBox(0.5, 0, 0, 1, 1, 1); + } else if(z == -2){ + return AxisAlignedBB.getBoundingBox(0, 0, 0, 0.5, 1, 1); + } else if(y > 1){ + return AxisAlignedBB.getBoundingBox(0, 0.75, 0, 1, 1, 1); + } else if(y == 0) { + return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.1, 1); + } else { + return super.getBlockBound(x, y, z, open); + } + }; + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName){ + return ResourceManager.fire_door_tex; + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel(){ + return ResourceManager.fire_door; + } + }; //Format: x, y, z, tangent amount 1 (how long the door would be if it moved up), tangent amount 2 (door places blocks in this direction), axis (0-x, 1-y, 2-z) public abstract int[][] getDoorOpenRanges(); diff --git a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java index 5bfedc014..386737ab3 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java +++ b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java @@ -13,7 +13,6 @@ import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEDoorAnimationPacket; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.machine.TileEntityLockableBase; -import com.hbm.util.Tuple.Triplet; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.Rotation; @@ -176,23 +175,18 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn public boolean tryToggle(EntityPlayer player){ - System.out.println("start"); - if(state == 0 && redstonePower > 0){ - System.out.println("red power > 0"); //Redstone "power locks" doors, just like minecraft iron doors return false; } if(this.state == 0) { if(!worldObj.isRemote && canAccess(player)) { this.state = 3; - System.out.println("opening"); } return true; } else if(this.state == 1) { if(!worldObj.isRemote && canAccess(player)) { this.state = 2; - System.out.println("closing"); } return true; } @@ -242,7 +236,6 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn } } - //TODO: sound loops @Override @SideOnly(Side.CLIENT) public void handleNewState(byte state){ diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index e355594d8..e96ac2391 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -61,7 +61,6 @@ public class TileMappings { put(TileEntityDecoBlockAltF.class, "tileentity_deco_f"); put(TileEntityCoreTitanium.class, "tileentity_core_titanium"); put(TileEntityCoreAdvanced.class, "tileentity_core_advanced"); - put(TileEntityFusionMultiblock.class, "tileentity_fusion_multiblock"); put(TileEntityCrashedBomb.class, "tileentity_crashed_balefire"); put(TileEntityConverterHeRf.class, "tileentity_converter_herf"); put(TileEntityConverterRfHe.class, "tileentity_converter_rfhe"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFusionMultiblock.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFusionMultiblock.java deleted file mode 100644 index 3c112a62d..000000000 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFusionMultiblock.java +++ /dev/null @@ -1,1193 +0,0 @@ -package com.hbm.tileentity.machine; - -import com.hbm.blocks.ModBlocks; -import com.hbm.interfaces.IReactor; -import com.hbm.inventory.FluidTank; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.items.ModItems; -import com.hbm.lib.Library; -import com.hbm.packet.AuxElectricityPacket; -import com.hbm.packet.PacketDispatcher; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -@Deprecated //old multiblock fusion reactor -public class TileEntityFusionMultiblock extends TileEntity implements ISidedInventory, IReactor { - - public long power; - public final static long maxPower = 100000000; - private ItemStack slots[]; - public int age = 0; - public FluidTank tanks[]; - - private String customName; - - public TileEntityFusionMultiblock() { - slots = new ItemStack[12]; - tanks = new FluidTank[3]; - tanks[0] = new FluidTank(Fluids.WATER, 128000, 0); - tanks[1] = new FluidTank(Fluids.DEUTERIUM, 64000, 1); - tanks[2] = new FluidTank(Fluids.TRITIUM, 64000, 2); - } - @Override - public int getSizeInventory() { - return slots.length; - } - - @Override - public ItemStack getStackInSlot(int i) { - return slots[i]; - } - - @Override - public ItemStack getStackInSlotOnClosing(int i) { - if(slots[i] != null) - { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } else { - return null; - } - } - - @Override - public void setInventorySlotContents(int i, ItemStack itemStack) { - slots[i] = itemStack; - if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) - { - itemStack.stackSize = getInventoryStackLimit(); - } - } - - @Override - public String getInventoryName() { - return this.hasCustomInventoryName() ? this.customName : "container.fusionMultiblock"; - } - - @Override - public boolean hasCustomInventoryName() { - return this.customName != null && this.customName.length() > 0; - } - - public void setCustomName(String name) { - this.customName = name; - } - - @Override - public int getInventoryStackLimit() { - return 64; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) - { - return false; - }else{ - return true; - } - } - - @Override - public void openInventory() {} - - @Override - public void closeInventory() {} - - @Override - public boolean isItemValidForSlot(int i, ItemStack itemStack) { - return true; - } - - @Override - public ItemStack decrStackSize(int i, int j) { - if(slots[i] != null) - { - if(slots[i].stackSize <= j) - { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } - ItemStack itemStack1 = slots[i].splitStack(j); - if (slots[i].stackSize == 0) - { - slots[i] = null; - } - - return itemStack1; - } else { - return null; - } - } - - @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) { - return null; - } - - @Override - public boolean canInsertItem(int p_102007_1_, ItemStack p_102007_2_, int p_102007_3_) { - return false; - } - - @Override - public boolean canExtractItem(int p_102008_1_, ItemStack p_102008_2_, int p_102008_3_) { - return false; - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - NBTTagList list = nbt.getTagList("items", 10); - - power = nbt.getLong("power"); - tanks[0].readFromNBT(nbt, "water"); - tanks[1].readFromNBT(nbt, "deut"); - tanks[2].readFromNBT(nbt, "trit"); - - slots = new ItemStack[getSizeInventory()]; - - for(int i = 0; i < list.tagCount(); i++) - { - NBTTagCompound nbt1 = list.getCompoundTagAt(i); - byte b0 = nbt1.getByte("slot"); - if(b0 >= 0 && b0 < slots.length) - { - slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); - } - } - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - - nbt.setLong("power", power); - tanks[0].writeToNBT(nbt, "water"); - tanks[1].writeToNBT(nbt, "deut"); - tanks[2].writeToNBT(nbt, "trit"); - - NBTTagList list = new NBTTagList(); - - for(int i = 0; i < slots.length; i++) - { - if(slots[i] != null) - { - NBTTagCompound nbt1 = new NBTTagCompound(); - nbt1.setByte("slot", (byte)i); - slots[i].writeToNBT(nbt1); - list.appendTag(nbt1); - } - } - nbt.setTag("items", list); - } - - @Override - public boolean isStructureValid(World world) { - - //...and I wrote all of this by hand! Ha! - //update, about 5 years later: what the fuck was wrong with me - - if(world.getBlock(this.xCoord + 5, this.yCoord - 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord - 2, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord - 2, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord - 2, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord - 2, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord - 2, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord - 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord - 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord - 2, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord - 2, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord - 2, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord - 2, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord - 2, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord - 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord - 2, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord - 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord - 2, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord - 2, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord - 2, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord - 2, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord - 2, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord - 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord - 2, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord - 2, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord - 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord - 2, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord - 2, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord - 2, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord - 2, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord - 2, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord - 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord - 2, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord - 2, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord - 2, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord - 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord - 2, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord - 2, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord - 2, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord - 2, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord - 2, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord - 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord - 2, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord - 2, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord - 2, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord - 2, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord - 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord - 2, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord - 2, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord - 2, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord - 2, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord - 2, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord - 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord - 2, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord - 2, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord - 2, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord - 2, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord - 2, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord - 2, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord - 2, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord - 2, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord - 2, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord - 2, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord - 2, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord - 2, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord - 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord - 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord - 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord - 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord - 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord - 2, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord - 2, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord - 2, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord - 2, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord - 2, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord - 2, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord - 2, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord - 2, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord - 2, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord - 2, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord - 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord - 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord - 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord - 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord - 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 8, this.yCoord - 2, this.zCoord - 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 8, this.yCoord - 2, this.zCoord + 0) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 8, this.yCoord - 2, this.zCoord + 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 7, this.yCoord - 2, this.zCoord - 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 7, this.yCoord - 2, this.zCoord + 0) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 7, this.yCoord - 2, this.zCoord + 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 8, this.yCoord - 2, this.zCoord - 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 8, this.yCoord - 2, this.zCoord + 0) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 8, this.yCoord - 2, this.zCoord + 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 7, this.yCoord - 2, this.zCoord - 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 7, this.yCoord - 2, this.zCoord + 0) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 7, this.yCoord - 2, this.zCoord + 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 1, this.yCoord - 2, this.zCoord + 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 0, this.yCoord - 2, this.zCoord + 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 1, this.yCoord - 2, this.zCoord + 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 1, this.yCoord - 2, this.zCoord + 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 0, this.yCoord - 2, this.zCoord + 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 1, this.yCoord - 2, this.zCoord + 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 1, this.yCoord - 2, this.zCoord - 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 0, this.yCoord - 2, this.zCoord - 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 1, this.yCoord - 2, this.zCoord - 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 1, this.yCoord - 2, this.zCoord - 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 0, this.yCoord - 2, this.zCoord - 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 1, this.yCoord - 2, this.zCoord - 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 1, this.yCoord - 2, this.zCoord + 1) == ModBlocks.fusion_motor && - world.getBlock(this.xCoord + 1, this.yCoord - 2, this.zCoord + 0) == ModBlocks.fusion_motor && - world.getBlock(this.xCoord + 1, this.yCoord - 2, this.zCoord - 1) == ModBlocks.fusion_motor && - world.getBlock(this.xCoord + 0, this.yCoord - 2, this.zCoord + 1) == ModBlocks.fusion_motor && - world.getBlock(this.xCoord + 0, this.yCoord - 2, this.zCoord + 0) == ModBlocks.fusion_center && - world.getBlock(this.xCoord + 0, this.yCoord - 2, this.zCoord - 1) == ModBlocks.fusion_motor && - world.getBlock(this.xCoord - 1, this.yCoord - 2, this.zCoord + 1) == ModBlocks.fusion_motor && - world.getBlock(this.xCoord - 1, this.yCoord - 2, this.zCoord + 0) == ModBlocks.fusion_motor && - world.getBlock(this.xCoord - 1, this.yCoord - 2, this.zCoord - 1) == ModBlocks.fusion_motor && - - world.getBlock(this.xCoord + 5, this.yCoord + 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord + 2, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord + 2, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord + 2, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord + 2, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord + 2, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord + 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord + 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord + 2, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord + 2, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord + 2, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord + 2, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord + 2, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord + 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord + 2, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord + 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord + 2, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord + 2, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord + 2, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord + 2, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord + 2, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord + 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord + 2, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord + 2, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord + 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord + 2, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord + 2, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord + 2, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord + 2, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord + 2, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord + 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord + 2, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord + 2, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord + 2, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord + 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord + 2, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord + 2, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord + 2, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord + 2, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord + 2, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord + 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord + 2, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord + 2, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord + 2, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord + 2, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord + 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord + 2, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord + 2, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord + 2, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord + 2, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord + 2, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord + 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord + 2, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord + 2, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord + 2, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord + 2, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord + 2, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord + 2, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord + 2, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord + 2, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord + 2, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord + 2, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord + 2, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord + 2, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord + 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord + 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord + 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord + 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord + 2, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord + 2, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord + 2, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord + 2, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord + 2, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord + 2, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord + 2, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord + 2, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord + 2, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord + 2, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord + 2, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord + 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord + 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord + 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord + 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord + 2, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 8, this.yCoord + 2, this.zCoord - 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 8, this.yCoord + 2, this.zCoord + 0) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 8, this.yCoord + 2, this.zCoord + 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 7, this.yCoord + 2, this.zCoord - 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 7, this.yCoord + 2, this.zCoord + 0) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 7, this.yCoord + 2, this.zCoord + 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 8, this.yCoord + 2, this.zCoord - 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 8, this.yCoord + 2, this.zCoord + 0) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 8, this.yCoord + 2, this.zCoord + 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 7, this.yCoord + 2, this.zCoord - 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 7, this.yCoord + 2, this.zCoord + 0) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 7, this.yCoord + 2, this.zCoord + 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 1, this.yCoord + 2, this.zCoord + 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 0, this.yCoord + 2, this.zCoord + 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 1, this.yCoord + 2, this.zCoord + 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 1, this.yCoord + 2, this.zCoord + 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 0, this.yCoord + 2, this.zCoord + 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 1, this.yCoord + 2, this.zCoord + 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 1, this.yCoord + 2, this.zCoord - 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 0, this.yCoord + 2, this.zCoord - 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 1, this.yCoord + 2, this.zCoord - 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 1, this.yCoord + 2, this.zCoord - 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 0, this.yCoord + 2, this.zCoord - 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 1, this.yCoord + 2, this.zCoord - 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 1, this.yCoord + 2, this.zCoord + 1) == ModBlocks.fusion_motor && - world.getBlock(this.xCoord + 1, this.yCoord + 2, this.zCoord + 0) == ModBlocks.fusion_motor && - world.getBlock(this.xCoord + 1, this.yCoord + 2, this.zCoord - 1) == ModBlocks.fusion_motor && - world.getBlock(this.xCoord + 0, this.yCoord + 2, this.zCoord + 1) == ModBlocks.fusion_motor && - world.getBlock(this.xCoord + 0, this.yCoord + 2, this.zCoord + 0) == ModBlocks.fusion_center && - world.getBlock(this.xCoord + 0, this.yCoord + 2, this.zCoord - 1) == ModBlocks.fusion_motor && - world.getBlock(this.xCoord - 1, this.yCoord + 2, this.zCoord + 1) == ModBlocks.fusion_motor && - world.getBlock(this.xCoord - 1, this.yCoord + 2, this.zCoord + 0) == ModBlocks.fusion_motor && - world.getBlock(this.xCoord - 1, this.yCoord + 2, this.zCoord - 1) == ModBlocks.fusion_motor && - - world.getBlock(this.xCoord + 6, this.yCoord - 1, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 6, this.yCoord - 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 6, this.yCoord - 1, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 6, this.yCoord - 1, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 6, this.yCoord - 1, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 6, this.yCoord - 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 6, this.yCoord - 1, this.zCoord + 3) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 6, this.yCoord - 1, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 6, this.yCoord - 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 6, this.yCoord - 1, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 6, this.yCoord - 1, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 6, this.yCoord - 1, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 6, this.yCoord - 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 6, this.yCoord - 1, this.zCoord + 3) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 3, this.yCoord - 1, this.zCoord + 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord - 1, this.zCoord + 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord - 1, this.zCoord + 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord - 1, this.zCoord + 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord - 1, this.zCoord + 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord - 1, this.zCoord + 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord - 1, this.zCoord + 6) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 3, this.yCoord - 1, this.zCoord - 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord - 1, this.zCoord - 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord - 1, this.zCoord - 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord - 1, this.zCoord - 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord - 1, this.zCoord - 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord - 1, this.zCoord - 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord - 1, this.zCoord - 6) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord + 5, this.yCoord - 1, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord - 1, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord - 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord - 1, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord - 1, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord - 1, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord - 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord - 1, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord - 1, this.zCoord + 4) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 5, this.yCoord - 1, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord - 1, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord - 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord - 1, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord - 1, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord - 1, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord - 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord - 1, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord - 1, this.zCoord + 4) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 4, this.yCoord - 1, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord - 1, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord - 1, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord - 1, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord - 1, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord - 1, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord - 1, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord - 1, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord - 1, this.zCoord + 5) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 4, this.yCoord - 1, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord - 1, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord - 1, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord - 1, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord - 1, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord - 1, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord - 1, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord - 1, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord - 1, this.zCoord - 5) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord + 4, this.yCoord - 1, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord - 1, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord - 1, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord - 1, this.zCoord - 4) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord + 3, this.yCoord - 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord - 1, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord - 1, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord - 1, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord - 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 3, this.yCoord - 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord - 1, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord - 1, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord - 1, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord - 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 2, this.yCoord - 1, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord - 1, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord - 1, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord - 1, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord - 1, this.zCoord + 3) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 2, this.yCoord - 1, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord - 1, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord - 1, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord - 1, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord - 1, this.zCoord - 3) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord + 2, this.yCoord - 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord - 1, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord - 1, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord - 1, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord - 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord - 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord - 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord - 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord - 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord - 1, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord - 1, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord - 1, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord - 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord - 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord - 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord - 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord + 6, this.yCoord + 1, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 6, this.yCoord + 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 6, this.yCoord + 1, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 6, this.yCoord + 1, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 6, this.yCoord + 1, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 6, this.yCoord + 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 6, this.yCoord + 1, this.zCoord + 3) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 6, this.yCoord + 1, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 6, this.yCoord + 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 6, this.yCoord + 1, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 6, this.yCoord + 1, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 6, this.yCoord + 1, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 6, this.yCoord + 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 6, this.yCoord + 1, this.zCoord + 3) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 3, this.yCoord + 1, this.zCoord + 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord + 1, this.zCoord + 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord + 1, this.zCoord + 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord + 1, this.zCoord + 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord + 1, this.zCoord + 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord + 1, this.zCoord + 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord + 1, this.zCoord + 6) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 3, this.yCoord + 1, this.zCoord - 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord + 1, this.zCoord - 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord + 1, this.zCoord - 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord + 1, this.zCoord - 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord + 1, this.zCoord - 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord + 1, this.zCoord - 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord + 1, this.zCoord - 6) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord + 5, this.yCoord + 1, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord + 1, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord + 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord + 1, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord + 1, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord + 1, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord + 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord + 1, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord + 1, this.zCoord + 4) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 5, this.yCoord + 1, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord + 1, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord + 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord + 1, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord + 1, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord + 1, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord + 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord + 1, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord + 1, this.zCoord + 4) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 4, this.yCoord + 1, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord + 1, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord + 1, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord + 1, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord + 1, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord + 1, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord + 1, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord + 1, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord + 1, this.zCoord + 5) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 4, this.yCoord + 1, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord + 1, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord + 1, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord + 1, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord + 1, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord + 1, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord + 1, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord + 1, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord + 1, this.zCoord - 5) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord + 4, this.yCoord + 1, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord + 1, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord + 1, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord + 1, this.zCoord - 4) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord + 3, this.yCoord + 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord + 1, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord + 1, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord + 1, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord + 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 3, this.yCoord + 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord + 1, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord + 1, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord + 1, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 3, this.yCoord + 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 2, this.yCoord + 1, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord + 1, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord + 1, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord + 1, this.zCoord + 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord + 1, this.zCoord + 3) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 2, this.yCoord + 1, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord + 1, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord + 1, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord + 1, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord + 1, this.zCoord - 3) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord + 2, this.yCoord + 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord + 1, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord + 1, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord + 1, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord + 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord + 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord + 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord + 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord + 1, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord + 1, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord + 1, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord + 1, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord + 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord + 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord + 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord + 1, this.zCoord - 2) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord + 8, this.yCoord + 1, this.zCoord - 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 8, this.yCoord + 1, this.zCoord + 0) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 8, this.yCoord + 1, this.zCoord + 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 7, this.yCoord + 1, this.zCoord - 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 7, this.yCoord + 1, this.zCoord + 0) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 7, this.yCoord + 1, this.zCoord + 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 8, this.yCoord + 1, this.zCoord - 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 8, this.yCoord + 1, this.zCoord + 0) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 8, this.yCoord + 1, this.zCoord + 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 7, this.yCoord + 1, this.zCoord - 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 7, this.yCoord + 1, this.zCoord + 0) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 7, this.yCoord + 1, this.zCoord + 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 1, this.yCoord + 1, this.zCoord + 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 0, this.yCoord + 1, this.zCoord + 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 1, this.yCoord + 1, this.zCoord + 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 1, this.yCoord + 1, this.zCoord + 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 0, this.yCoord + 1, this.zCoord + 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 1, this.yCoord + 1, this.zCoord + 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 1, this.yCoord + 1, this.zCoord - 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 0, this.yCoord + 1, this.zCoord - 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 1, this.yCoord + 1, this.zCoord - 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 1, this.yCoord + 1, this.zCoord - 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 0, this.yCoord + 1, this.zCoord - 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 1, this.yCoord + 1, this.zCoord - 7) == ModBlocks.fusion_heater && - - world.getBlock(this.xCoord + 8, this.yCoord - 1, this.zCoord - 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 8, this.yCoord - 1, this.zCoord + 0) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 8, this.yCoord - 1, this.zCoord + 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 7, this.yCoord - 1, this.zCoord - 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 7, this.yCoord - 1, this.zCoord + 0) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 7, this.yCoord - 1, this.zCoord + 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 8, this.yCoord - 1, this.zCoord - 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 8, this.yCoord - 1, this.zCoord + 0) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 8, this.yCoord - 1, this.zCoord + 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 7, this.yCoord - 1, this.zCoord - 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 7, this.yCoord - 1, this.zCoord + 0) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 7, this.yCoord - 1, this.zCoord + 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 1, this.yCoord - 1, this.zCoord + 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 0, this.yCoord - 1, this.zCoord + 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 1, this.yCoord - 1, this.zCoord + 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 1, this.yCoord - 1, this.zCoord + 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 0, this.yCoord - 1, this.zCoord + 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 1, this.yCoord - 1, this.zCoord + 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 1, this.yCoord - 1, this.zCoord - 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 0, this.yCoord - 1, this.zCoord - 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 1, this.yCoord - 1, this.zCoord - 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 1, this.yCoord - 1, this.zCoord - 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 0, this.yCoord - 1, this.zCoord - 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 1, this.yCoord - 1, this.zCoord - 7) == ModBlocks.fusion_heater && - - world.getBlock(this.xCoord, this.yCoord + 1, this.zCoord) == ModBlocks.fusion_center && - world.getBlock(this.xCoord, this.yCoord - 1, this.zCoord) == ModBlocks.fusion_center && - world.getBlock(this.xCoord + 6, this.yCoord, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 6, this.yCoord, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 6, this.yCoord, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 6, this.yCoord, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 6, this.yCoord, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 6, this.yCoord, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 6, this.yCoord, this.zCoord + 3) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 6, this.yCoord, this.zCoord - 3) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 6, this.yCoord, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 6, this.yCoord, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 6, this.yCoord, this.zCoord + 0) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 6, this.yCoord, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 6, this.yCoord, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 6, this.yCoord, this.zCoord + 3) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 3, this.yCoord, this.zCoord + 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord, this.zCoord + 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord, this.zCoord + 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord, this.zCoord + 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord, this.zCoord + 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord, this.zCoord + 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord, this.zCoord + 6) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord - 3, this.yCoord, this.zCoord - 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord, this.zCoord - 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord, this.zCoord - 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 0, this.yCoord, this.zCoord - 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord, this.zCoord - 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord, this.zCoord - 6) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 3, this.yCoord, this.zCoord - 6) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord + 5, this.yCoord, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord, this.zCoord - 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord, this.zCoord - 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 5, this.yCoord, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 4, this.yCoord, this.zCoord + 5) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 5, this.yCoord, this.zCoord + 4) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 4, this.yCoord, this.zCoord + 5) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord + 2, this.yCoord, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord, this.zCoord) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 2, this.yCoord, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord, this.yCoord, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord, this.zCoord + 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord, this.zCoord + 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord, this.zCoord) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord, this.zCoord - 1) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 2, this.yCoord, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord - 1, this.yCoord, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord, this.yCoord, this.zCoord - 2) == ModBlocks.fusion_conductor && - world.getBlock(this.xCoord + 1, this.yCoord, this.zCoord - 2) == ModBlocks.fusion_conductor && - - world.getBlock(this.xCoord + 8, this.yCoord, this.zCoord - 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 8, this.yCoord, this.zCoord + 0) == ModBlocks.fusion_hatch && - world.getBlock(this.xCoord + 8, this.yCoord, this.zCoord + 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 7, this.yCoord, this.zCoord - 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 7, this.yCoord, this.zCoord + 0) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 7, this.yCoord, this.zCoord + 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 8, this.yCoord, this.zCoord - 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 8, this.yCoord, this.zCoord + 0) == ModBlocks.fusion_hatch && - world.getBlock(this.xCoord - 8, this.yCoord, this.zCoord + 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 7, this.yCoord, this.zCoord - 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 7, this.yCoord, this.zCoord + 0) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 7, this.yCoord, this.zCoord + 1) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 1, this.yCoord, this.zCoord + 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 0, this.yCoord, this.zCoord + 8) == ModBlocks.fusion_hatch && - world.getBlock(this.xCoord + 1, this.yCoord, this.zCoord + 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 1, this.yCoord, this.zCoord + 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 0, this.yCoord, this.zCoord + 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 1, this.yCoord, this.zCoord + 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 1, this.yCoord, this.zCoord - 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 0, this.yCoord, this.zCoord - 8) == ModBlocks.fusion_hatch && - world.getBlock(this.xCoord + 1, this.yCoord, this.zCoord - 8) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord - 1, this.yCoord, this.zCoord - 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 0, this.yCoord, this.zCoord - 7) == ModBlocks.fusion_heater && - world.getBlock(this.xCoord + 1, this.yCoord, this.zCoord - 7) == ModBlocks.fusion_heater && - - world.getBlock(this.xCoord, this.yCoord, this.zCoord) == ModBlocks.fusion_core) - { - return true; - } - - return false; - } - - @Override - public boolean isCoatingValid(World world) { - if(world.getBlock(this.xCoord + 4, this.yCoord - 1, this.zCoord - 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 4, this.yCoord - 1, this.zCoord - 2) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 4, this.yCoord - 1, this.zCoord - 1) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 4, this.yCoord - 1, this.zCoord) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 4, this.yCoord - 1, this.zCoord + 1) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 4, this.yCoord - 1, this.zCoord + 2) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 4, this.yCoord - 1, this.zCoord + 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 4, this.yCoord - 1, this.zCoord - 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 4, this.yCoord - 1, this.zCoord - 2) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 4, this.yCoord - 1, this.zCoord - 1) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 4, this.yCoord - 1, this.zCoord) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 4, this.yCoord - 1, this.zCoord + 1) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 4, this.yCoord - 1, this.zCoord + 2) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 4, this.yCoord - 1, this.zCoord + 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 3, this.yCoord - 1, this.zCoord + 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 2, this.yCoord - 1, this.zCoord + 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 1, this.yCoord - 1, this.zCoord + 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord, this.yCoord - 1, this.zCoord + 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 1, this.yCoord - 1, this.zCoord + 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 2, this.yCoord - 1, this.zCoord + 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 3, this.yCoord - 1, this.zCoord + 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 3, this.yCoord - 1, this.zCoord - 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 2, this.yCoord - 1, this.zCoord - 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 1, this.yCoord - 1, this.zCoord - 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord, this.yCoord - 1, this.zCoord - 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 1, this.yCoord - 1, this.zCoord - 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 2, this.yCoord - 1, this.zCoord - 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 3, this.yCoord - 1, this.zCoord - 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 3, this.yCoord - 1, this.zCoord + 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 3, this.yCoord - 1, this.zCoord - 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 3, this.yCoord - 1, this.zCoord + 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 3, this.yCoord - 1, this.zCoord - 3) == ModBlocks.block_tungsten && - - world.getBlock(this.xCoord + 4, this.yCoord + 1, this.zCoord - 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 4, this.yCoord + 1, this.zCoord - 2) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 4, this.yCoord + 1, this.zCoord - 1) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 4, this.yCoord + 1, this.zCoord) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 4, this.yCoord + 1, this.zCoord + 1) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 4, this.yCoord + 1, this.zCoord + 2) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 4, this.yCoord + 1, this.zCoord + 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 4, this.yCoord + 1, this.zCoord - 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 4, this.yCoord + 1, this.zCoord - 2) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 4, this.yCoord + 1, this.zCoord - 1) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 4, this.yCoord + 1, this.zCoord) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 4, this.yCoord + 1, this.zCoord + 1) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 4, this.yCoord + 1, this.zCoord + 2) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 4, this.yCoord + 1, this.zCoord + 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 3, this.yCoord + 1, this.zCoord + 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 2, this.yCoord + 1, this.zCoord + 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 1, this.yCoord + 1, this.zCoord + 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord, this.yCoord + 1, this.zCoord + 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 1, this.yCoord + 1, this.zCoord + 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 2, this.yCoord + 1, this.zCoord + 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 3, this.yCoord + 1, this.zCoord + 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 3, this.yCoord + 1, this.zCoord - 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 2, this.yCoord + 1, this.zCoord - 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 1, this.yCoord + 1, this.zCoord - 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord, this.yCoord + 1, this.zCoord - 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 1, this.yCoord + 1, this.zCoord - 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 2, this.yCoord + 1, this.zCoord - 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 3, this.yCoord + 1, this.zCoord - 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 3, this.yCoord + 1, this.zCoord + 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 3, this.yCoord + 1, this.zCoord - 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 3, this.yCoord + 1, this.zCoord + 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 3, this.yCoord + 1, this.zCoord - 3) == ModBlocks.block_tungsten && - - world.getBlock(this.xCoord + 3, this.yCoord, this.zCoord - 2) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 3, this.yCoord, this.zCoord - 1) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 3, this.yCoord, this.zCoord) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 3, this.yCoord, this.zCoord + 1) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 3, this.yCoord, this.zCoord + 2) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 3, this.yCoord, this.zCoord - 2) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 3, this.yCoord, this.zCoord - 1) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 3, this.yCoord, this.zCoord) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 3, this.yCoord, this.zCoord + 1) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 3, this.yCoord, this.zCoord + 2) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 2, this.yCoord, this.zCoord + 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 1, this.yCoord, this.zCoord + 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord, this.yCoord, this.zCoord + 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 1, this.yCoord, this.zCoord + 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 2, this.yCoord, this.zCoord + 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 2, this.yCoord, this.zCoord - 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 1, this.yCoord, this.zCoord - 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord, this.yCoord, this.zCoord - 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 1, this.yCoord, this.zCoord - 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 2, this.yCoord, this.zCoord - 3) == ModBlocks.block_tungsten && - - world.getBlock(this.xCoord + 5, this.yCoord, this.zCoord - 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 5, this.yCoord, this.zCoord - 2) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 5, this.yCoord, this.zCoord - 1) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 5, this.yCoord, this.zCoord + 0) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 5, this.yCoord, this.zCoord + 1) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 5, this.yCoord, this.zCoord + 2) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 5, this.yCoord, this.zCoord + 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 5, this.yCoord, this.zCoord - 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 5, this.yCoord, this.zCoord - 2) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 5, this.yCoord, this.zCoord - 1) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 5, this.yCoord, this.zCoord + 0) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 5, this.yCoord, this.zCoord + 1) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 5, this.yCoord, this.zCoord + 2) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 5, this.yCoord, this.zCoord + 3) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 3, this.yCoord, this.zCoord + 5) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 2, this.yCoord, this.zCoord + 5) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 1, this.yCoord, this.zCoord + 5) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 0, this.yCoord, this.zCoord + 5) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 1, this.yCoord, this.zCoord + 5) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 2, this.yCoord, this.zCoord + 5) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 3, this.yCoord, this.zCoord + 5) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 3, this.yCoord, this.zCoord - 5) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 2, this.yCoord, this.zCoord - 5) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 1, this.yCoord, this.zCoord - 5) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 0, this.yCoord, this.zCoord - 5) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 1, this.yCoord, this.zCoord - 5) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 2, this.yCoord, this.zCoord - 5) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 3, this.yCoord, this.zCoord - 5) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 4, this.yCoord, this.zCoord + 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord + 4, this.yCoord, this.zCoord - 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 4, this.yCoord, this.zCoord + 4) == ModBlocks.block_tungsten && - world.getBlock(this.xCoord - 4, this.yCoord, this.zCoord - 4) == ModBlocks.block_tungsten) - { - return true; - } - - return false; - } - - @Override - public boolean hasFuse() { - return slots[8] != null && (slots[8].getItem() == ModItems.fuse || slots[8].getItem() == ModItems.screwdriver); - } - - @Override - public int getWaterScaled(int i) { - return 0; - } - - @Override - public int getCoolantScaled(int i) { - return 0; - } - - @Override - public int getHeatScaled(int i) { - return 0; - } - - @Override - public long getPowerScaled(long i) { - return (power * i) / maxPower; - } - - @Override - public void updateEntity() { - - if(!worldObj.isRemote) - { - tanks[0].loadTank(0, 9, slots); - tanks[1].loadTank(2, 10, slots); - tanks[2].loadTank(3, 11, slots); - - for(int i = 0; i < 3; i++) - tanks[i].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); - - if(slots[2] != null && slots[2].getItem() == ModItems.tritium_deuterium_cake) - { - this.slots[2].stackSize--; - if(this.slots[2].stackSize == 0) - { - this.slots[2] = null; - } - - tanks[1].setFill(tanks[1].getFill() + 10000); - tanks[2].setFill(tanks[2].getFill() + 10000); - - if(tanks[1].getFill() > tanks[1].getMaxFill()) - tanks[1].setFill(tanks[1].getMaxFill()); - - if(tanks[2].getFill() > tanks[2].getMaxFill()) - tanks[2].setFill(tanks[2].getMaxFill()); - } - - if(slots[3] != null && slots[3].getItem() == ModItems.tritium_deuterium_cake) - { - this.slots[3].stackSize--; - if(this.slots[3].stackSize == 0) - { - this.slots[3] = null; - } - - tanks[1].setFill(tanks[1].getFill() + 10000); - tanks[2].setFill(tanks[2].getFill() + 10000); - - if(tanks[1].getFill() > tanks[1].getMaxFill()) - tanks[1].setFill(tanks[1].getMaxFill()); - - if(tanks[2].getFill() > tanks[2].getMaxFill()) - tanks[2].setFill(tanks[2].getMaxFill()); - } - - if(!isRunning() && - slots[4] != null && (slots[4].getItem() == ModItems.fusion_core || slots[4].getItem() == ModItems.energy_core) && slots[4].getItemDamage() == 0 && - slots[5] != null && (slots[5].getItem() == ModItems.fusion_core || slots[5].getItem() == ModItems.energy_core) && slots[5].getItemDamage() == 0 && - slots[6] != null && (slots[6].getItem() == ModItems.fusion_core || slots[6].getItem() == ModItems.energy_core) && slots[6].getItemDamage() == 0 && - slots[7] != null && (slots[7].getItem() == ModItems.fusion_core || slots[7].getItem() == ModItems.energy_core) && slots[7].getItemDamage() == 0 && - hasFuse() && - tanks[1].getFill() > 0 && tanks[2].getFill() > 0) - { - slots[4] = null; - slots[5] = null; - slots[6] = null; - slots[7] = null; - fillPlasma(); - } else { - if(isStructureValid(worldObj) && isRunning()) - { - tanks[1].setFill(tanks[1].getFill() - 1); - tanks[2].setFill(tanks[2].getFill() - 1); - - if(tanks[0].getFill() >= 20) - { - tanks[0].setFill(tanks[0].getFill() - 20); - power += 100000; - - if(isCoatingValid(worldObj)) - { - power += 100000; - } - - if(power > maxPower) - { - power = maxPower; - } - } - - fillPlasma(); - } else { - emptyPlasma(); - } - } - - if(!isRunning()) - { - emptyPlasma(); - } - - if(tanks[1].getFill() <= 0 || tanks[2].getFill() <= 0) - { - emptyPlasma(); - } - - power = Library.chargeItemsFromTE(slots, 1, power, maxPower); - - PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - } - } - - public boolean isRunning() { - if(hasFuse() && ( - worldObj.getBlock(xCoord + 4, yCoord, zCoord - 3) == ModBlocks.plasma || - worldObj.getBlock(xCoord + 4, yCoord, zCoord - 2) == ModBlocks.plasma || - worldObj.getBlock(xCoord + 4, yCoord, zCoord - 1) == ModBlocks.plasma || - worldObj.getBlock(xCoord + 4, yCoord, zCoord + 0) == ModBlocks.plasma || - worldObj.getBlock(xCoord + 4, yCoord, zCoord + 1) == ModBlocks.plasma || - worldObj.getBlock(xCoord + 4, yCoord, zCoord + 2) == ModBlocks.plasma || - worldObj.getBlock(xCoord + 4, yCoord, zCoord + 3) == ModBlocks.plasma || - worldObj.getBlock(xCoord - 4, yCoord, zCoord - 3) == ModBlocks.plasma || - worldObj.getBlock(xCoord - 4, yCoord, zCoord - 2) == ModBlocks.plasma || - worldObj.getBlock(xCoord - 4, yCoord, zCoord - 1) == ModBlocks.plasma || - worldObj.getBlock(xCoord - 4, yCoord, zCoord + 0) == ModBlocks.plasma || - worldObj.getBlock(xCoord - 4, yCoord, zCoord + 1) == ModBlocks.plasma || - worldObj.getBlock(xCoord - 4, yCoord, zCoord + 2) == ModBlocks.plasma || - worldObj.getBlock(xCoord - 4, yCoord, zCoord + 3) == ModBlocks.plasma || - worldObj.getBlock(xCoord - 3, yCoord, zCoord + 4) == ModBlocks.plasma || - worldObj.getBlock(xCoord - 2, yCoord, zCoord + 4) == ModBlocks.plasma || - worldObj.getBlock(xCoord - 1, yCoord, zCoord + 4) == ModBlocks.plasma || - worldObj.getBlock(xCoord + 0, yCoord, zCoord + 4) == ModBlocks.plasma || - worldObj.getBlock(xCoord + 1, yCoord, zCoord + 4) == ModBlocks.plasma || - worldObj.getBlock(xCoord + 2, yCoord, zCoord + 4) == ModBlocks.plasma || - worldObj.getBlock(xCoord + 3, yCoord, zCoord + 4) == ModBlocks.plasma || - worldObj.getBlock(xCoord - 3, yCoord, zCoord - 4) == ModBlocks.plasma || - worldObj.getBlock(xCoord - 2, yCoord, zCoord - 4) == ModBlocks.plasma || - worldObj.getBlock(xCoord - 1, yCoord, zCoord - 4) == ModBlocks.plasma || - worldObj.getBlock(xCoord + 0, yCoord, zCoord - 4) == ModBlocks.plasma || - worldObj.getBlock(xCoord + 1, yCoord, zCoord - 4) == ModBlocks.plasma || - worldObj.getBlock(xCoord + 2, yCoord, zCoord - 4) == ModBlocks.plasma || - worldObj.getBlock(xCoord + 3, yCoord, zCoord - 4) == ModBlocks.plasma || - worldObj.getBlock(xCoord + 3, yCoord, zCoord + 3) == ModBlocks.plasma || - worldObj.getBlock(xCoord + 3, yCoord, zCoord - 3) == ModBlocks.plasma || - worldObj.getBlock(xCoord - 3, yCoord, zCoord + 3) == ModBlocks.plasma || - worldObj.getBlock(xCoord - 3, yCoord, zCoord - 3) == ModBlocks.plasma)) - { - return true; - } - return false; - } - - public void fillPlasma() { - setPlasma(xCoord + 4, yCoord, zCoord - 3); - setPlasma(xCoord + 4, yCoord, zCoord - 2); - setPlasma(xCoord + 4, yCoord, zCoord - 1); - setPlasma(xCoord + 4, yCoord, zCoord + 0); - setPlasma(xCoord + 4, yCoord, zCoord + 1); - setPlasma(xCoord + 4, yCoord, zCoord + 2); - setPlasma(xCoord + 4, yCoord, zCoord + 3); - setPlasma(xCoord - 4, yCoord, zCoord - 3); - setPlasma(xCoord - 4, yCoord, zCoord - 2); - setPlasma(xCoord - 4, yCoord, zCoord - 1); - setPlasma(xCoord - 4, yCoord, zCoord + 0); - setPlasma(xCoord - 4, yCoord, zCoord + 1); - setPlasma(xCoord - 4, yCoord, zCoord + 2); - setPlasma(xCoord - 4, yCoord, zCoord + 3); - setPlasma(xCoord - 3, yCoord, zCoord + 4); - setPlasma(xCoord - 2, yCoord, zCoord + 4); - setPlasma(xCoord - 1, yCoord, zCoord + 4); - setPlasma(xCoord + 0, yCoord, zCoord + 4); - setPlasma(xCoord + 1, yCoord, zCoord + 4); - setPlasma(xCoord + 2, yCoord, zCoord + 4); - setPlasma(xCoord + 3, yCoord, zCoord + 4); - setPlasma(xCoord - 3, yCoord, zCoord - 4); - setPlasma(xCoord - 2, yCoord, zCoord - 4); - setPlasma(xCoord - 1, yCoord, zCoord - 4); - setPlasma(xCoord + 0, yCoord, zCoord - 4); - setPlasma(xCoord + 1, yCoord, zCoord - 4); - setPlasma(xCoord + 2, yCoord, zCoord - 4); - setPlasma(xCoord + 3, yCoord, zCoord - 4); - setPlasma(xCoord + 3, yCoord, zCoord + 3); - setPlasma(xCoord + 3, yCoord, zCoord - 3); - setPlasma(xCoord - 3, yCoord, zCoord + 3); - setPlasma(xCoord - 3, yCoord, zCoord - 3); - } - - public void emptyPlasma() { - removePlasma(xCoord + 4, yCoord, zCoord - 3); - removePlasma(xCoord + 4, yCoord, zCoord - 2); - removePlasma(xCoord + 4, yCoord, zCoord - 1); - removePlasma(xCoord + 4, yCoord, zCoord + 0); - removePlasma(xCoord + 4, yCoord, zCoord + 1); - removePlasma(xCoord + 4, yCoord, zCoord + 2); - removePlasma(xCoord + 4, yCoord, zCoord + 3); - removePlasma(xCoord - 4, yCoord, zCoord - 3); - removePlasma(xCoord - 4, yCoord, zCoord - 2); - removePlasma(xCoord - 4, yCoord, zCoord - 1); - removePlasma(xCoord - 4, yCoord, zCoord + 0); - removePlasma(xCoord - 4, yCoord, zCoord + 1); - removePlasma(xCoord - 4, yCoord, zCoord + 2); - removePlasma(xCoord - 4, yCoord, zCoord + 3); - removePlasma(xCoord - 3, yCoord, zCoord + 4); - removePlasma(xCoord - 2, yCoord, zCoord + 4); - removePlasma(xCoord - 1, yCoord, zCoord + 4); - removePlasma(xCoord + 0, yCoord, zCoord + 4); - removePlasma(xCoord + 1, yCoord, zCoord + 4); - removePlasma(xCoord + 2, yCoord, zCoord + 4); - removePlasma(xCoord + 3, yCoord, zCoord + 4); - removePlasma(xCoord - 3, yCoord, zCoord - 4); - removePlasma(xCoord - 2, yCoord, zCoord - 4); - removePlasma(xCoord - 1, yCoord, zCoord - 4); - removePlasma(xCoord + 0, yCoord, zCoord - 4); - removePlasma(xCoord + 1, yCoord, zCoord - 4); - removePlasma(xCoord + 2, yCoord, zCoord - 4); - removePlasma(xCoord + 3, yCoord, zCoord - 4); - removePlasma(xCoord + 3, yCoord, zCoord + 3); - removePlasma(xCoord + 3, yCoord, zCoord - 3); - removePlasma(xCoord - 3, yCoord, zCoord + 3); - removePlasma(xCoord - 3, yCoord, zCoord - 3); - } - - public void setPlasma(int x, int y, int z) { - if(worldObj.getBlock(x, y, z) != ModBlocks.plasma) - worldObj.setBlock(x, y, z, ModBlocks.plasma); - } - - public void removePlasma(int x, int y, int z) { - if(worldObj.getBlock(x, y, z) == ModBlocks.plasma) - worldObj.setBlock(x, y, z, Blocks.air); - } -} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java index d9118650f..e9da0a2ba 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java @@ -194,24 +194,24 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } - - public void onChunkUnload() { - - if(audio != null) { + + public void onChunkUnload() { + + if(audio != null) { audio.stopSound(); audio = null; - } - } - - public void invalidate() { - - super.invalidate(); - - if(audio != null) { + } + } + + public void invalidate() { + + super.invalidate(); + + if(audio != null) { audio.stopSound(); audio = null; - } - } + } + } @Override public void networkUnpack(NBTTagCompound data) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java index a7751b620..715762114 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java @@ -1,534 +1,332 @@ package com.hbm.tileentity.machine; import java.util.List; -import java.util.Random; -import com.hbm.entity.particle.EntitySSmokeFX; -import com.hbm.entity.particle.EntityTSmokeFX; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; -import com.hbm.interfaces.Spaghetti; import com.hbm.inventory.FluidTank; +import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.types.FluidTypeCombustible; +import com.hbm.inventory.fluid.types.FluidTypeCombustible.FuelGrade; import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxElectricityPacket; +import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.LoopedSoundPacket; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TETurbofanPacket; -import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyGenerator; +import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; import net.minecraftforge.common.util.ForgeDirection; -@Spaghetti("a") -public class TileEntityMachineTurbofan extends TileEntityLoadedBase implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor { - - private ItemStack slots[]; +public class TileEntityMachineTurbofan extends TileEntityMachineBase implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver { public long power; - public int soundCycle = 0; - public static final long maxPower = 150000; + public static final long maxPower = 500_000; public FluidTank tank; - Random rand = new Random(); + public int afterburner; - public boolean isRunning; - public int spin; + public boolean wasOn; - private static final int[] slots_top = new int[] { 0 }; - private static final int[] slots_bottom = new int[] { 0, 0 }; - private static final int[] slots_side = new int[] { 0 }; - - private String customName; + public float spin; + public float lastSpin; + public int momentum = 0; + + private AudioWrapper audio; public TileEntityMachineTurbofan() { - slots = new ItemStack[3]; - tank = new FluidTank(Fluids.KEROSENE, 64000, 0); + super(3); + tank = new FluidTank(Fluids.KEROSENE, 24000, 0); } @Override - public int getSizeInventory() { - return slots.length; - } - - @Override - public ItemStack getStackInSlot(int i) { - return slots[i]; - } - - @Override - public ItemStack getStackInSlotOnClosing(int i) { - if (slots[i] != null) { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } else { - return null; - } - } - - @Override - public void setInventorySlotContents(int i, ItemStack itemStack) { - slots[i] = itemStack; - if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { - itemStack.stackSize = getInventoryStackLimit(); - } - } - - @Override - public String getInventoryName() { - return this.hasCustomInventoryName() ? this.customName : "container.machineTurbofan"; - } - - @Override - public boolean hasCustomInventoryName() { - return this.customName != null && this.customName.length() > 0; - } - - public void setCustomName(String name) { - this.customName = name; - } - - @Override - public int getInventoryStackLimit() { - return 64; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) { - if (worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { - return false; - } else { - return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 64; - } - } - - // You scrubs aren't needed for anything (right now) - @Override - public void openInventory() { - } - - @Override - public void closeInventory() { - } - - @Override - public boolean isItemValidForSlot(int i, ItemStack stack) { - return false; - } - - @Override - public ItemStack decrStackSize(int i, int j) { - if (slots[i] != null) { - if (slots[i].stackSize <= j) { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } - ItemStack itemStack1 = slots[i].splitStack(j); - if (slots[i].stackSize == 0) { - slots[i] = null; - } - - return itemStack1; - } else { - return null; - } + public String getName() { + return "container.machineTurbofan"; } @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - NBTTagList list = nbt.getTagList("items", 10); this.power = nbt.getLong("powerTime"); tank.readFromNBT(nbt, "fuel"); - slots = new ItemStack[getSizeInventory()]; - - for (int i = 0; i < list.tagCount(); i++) { - NBTTagCompound nbt1 = list.getCompoundTagAt(i); - byte b0 = nbt1.getByte("slot"); - if (b0 >= 0 && b0 < slots.length) { - slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); - } - } } @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); + nbt.setLong("powerTime", power); tank.writeToNBT(nbt, "fuel"); - NBTTagList list = new NBTTagList(); - - for (int i = 0; i < slots.length; i++) { - if (slots[i] != null) { - NBTTagCompound nbt1 = new NBTTagCompound(); - nbt1.setByte("slot", (byte) i); - slots[i].writeToNBT(nbt1); - list.appendTag(nbt1); - } - } - nbt.setTag("items", list); - } - - @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) { - return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); - } - - @Override - public boolean canInsertItem(int i, ItemStack itemStack, int j) { - return this.isItemValidForSlot(i, itemStack); - } - - @Override - public boolean canExtractItem(int i, ItemStack itemStack, int j) { - return false; } public long getPowerScaled(long i) { return (power * i) / maxPower; } + + protected DirPos[] getConPos() { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); + + return new DirPos[] { + new DirPos(this.xCoord + rot.offsetX * 2, this.yCoord, this.zCoord + rot.offsetZ * 2, rot), + new DirPos(this.xCoord + rot.offsetX * 2 - dir.offsetX, this.yCoord, this.zCoord + rot.offsetZ * 2 - dir.offsetZ, rot), + new DirPos(this.xCoord - rot.offsetX * 2, this.yCoord, this.zCoord - rot.offsetZ * 2, rot.getOpposite()), + new DirPos(this.xCoord - rot.offsetX * 2 - dir.offsetX, this.yCoord, this.zCoord - rot.offsetZ * 2 - dir.offsetZ, rot.getOpposite()) + }; + } - @Spaghetti("HOOOOUUUGH") @Override public void updateEntity() { - int nrg = 1250; - int cnsp = 1; - - afterburner = 0; - if(slots[2] != null) { - if(slots[2].getItem() == ModItems.upgrade_afterburn_1) { - nrg *= 2; - cnsp *= 2.5; - afterburner = 1; - } - if(slots[2].getItem() == ModItems.upgrade_afterburn_2) { - nrg *= 3; - cnsp *= 5; - afterburner = 2; - } - if(slots[2].getItem() == ModItems.upgrade_afterburn_3) { - nrg *= 4; - cnsp *= 7.5; - afterburner = 3; - } - } - - if (!worldObj.isRemote) { - - /*this.sendPower(worldObj, this.xCoord + 2, this.yCoord + 1, this.zCoord - 1, Library.POS_X); - this.sendPower(worldObj, this.xCoord + 2, this.yCoord + 1, this.zCoord + 1, Library.POS_X); - this.sendPower(worldObj, this.xCoord + 1, this.yCoord + 1, this.zCoord + 2, Library.POS_Z); - this.sendPower(worldObj, this.xCoord - 1, this.yCoord + 1, this.zCoord + 2, Library.POS_Z); - this.sendPower(worldObj, this.xCoord - 2, this.yCoord + 1, this.zCoord + 1, Library.NEG_X); - this.sendPower(worldObj, this.xCoord - 2, this.yCoord + 1, this.zCoord - 1, Library.NEG_X); - this.sendPower(worldObj, this.xCoord - 1, this.yCoord + 1, this.zCoord - 2, Library.NEG_Z); - this.sendPower(worldObj, this.xCoord + 1, this.yCoord + 1, this.zCoord - 2, Library.NEG_Z);*/ - - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); - ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); - - this.sendPower(worldObj, this.xCoord + rot.offsetX * 2, this.yCoord, this.zCoord + rot.offsetZ * 2, rot); - this.sendPower(worldObj, this.xCoord + rot.offsetX * 2 - dir.offsetX, this.yCoord, this.zCoord + rot.offsetZ * 2 - dir.offsetZ, rot); - this.sendPower(worldObj, this.xCoord - rot.offsetX * 2, this.yCoord, this.zCoord - rot.offsetZ * 2, rot.getOpposite()); - this.sendPower(worldObj, this.xCoord - rot.offsetX * 2 - dir.offsetX, this.yCoord, this.zCoord - rot.offsetZ * 2 - dir.offsetZ, rot.getOpposite()); - - //Tank Management - tank.loadTank(0, 1, slots); - tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); - - isRunning = false; - - if(tank.getFill() >= cnsp) { - tank.setFill(tank.getFill() - cnsp); - power += nrg; - - isRunning = true; - - spin += 20; - spin = spin % 360; - - if(power > maxPower) - power = maxPower; - - int meta = worldObj.getBlockMetadata(xCoord, yCoord, zCoord); - - double posX = xCoord + 0.5; - double posY = yCoord; - double posZ = zCoord + 0.5; - - if(meta == 2) { - if(afterburner == 0 && rand.nextInt(3) == 0) { - EntityTSmokeFX smoke = new EntityTSmokeFX(worldObj); - smoke.posX = xCoord + 0.5 + (rand.nextGaussian() * 0.5); - smoke.posY = yCoord + 1.5 + (rand.nextGaussian() * 0.5); - smoke.posZ = zCoord + 3.25; - smoke.motionX = rand.nextGaussian() * 0.3; - smoke.motionY = rand.nextGaussian() * 0.3; - smoke.motionZ = 2.5 + (rand.nextFloat() * 3.5); - if(!worldObj.isRemote) - worldObj.spawnEntityInWorld(smoke); - } - - for(int i = 0; i < afterburner * 5; i++) - if(afterburner > 0 && rand.nextInt(2) == 0) { - EntitySSmokeFX smoke = new EntitySSmokeFX(worldObj); - smoke.posX = xCoord + 0.5 + (rand.nextGaussian() * 0.5); - smoke.posY = yCoord + 1.5 + (rand.nextGaussian() * 0.5); - smoke.posZ = zCoord + 3.25; - smoke.motionX = rand.nextGaussian() * 0.3; - smoke.motionY = rand.nextGaussian() * 0.3; - smoke.motionZ = 2.5 + (rand.nextFloat() * 3.5); - if(!worldObj.isRemote) - worldObj.spawnEntityInWorld(smoke); - } - - //Exhaust push - List list = (List)worldObj.getEntitiesWithinAABBExcludingEntity(null, - AxisAlignedBB.getBoundingBox(posX - 1.5, posY, posZ + 3.5, posX + 1.5, posY + 3, posZ + 12)); - - for(Entity e : list) { - e.motionZ += 0.5; - if(afterburner > 0) - e.setFire(3 * afterburner); - } - - //Intake pull - list = (List)worldObj.getEntitiesWithinAABBExcludingEntity(null, - AxisAlignedBB.getBoundingBox(posX - 1.5, posY, posZ - 12, posX + 1.5, posY + 3, posZ - 3.5)); - - for(Entity e : list) { - e.motionZ += 0.5; - } - - //Intake kill - list = (List)worldObj.getEntitiesWithinAABBExcludingEntity(null, - AxisAlignedBB.getBoundingBox(posX - 1.5, posY, posZ - 4.5, posX + 1.5, posY + 3, posZ - 3.5)); - - for(Entity e : list) { - e.attackEntityFrom(ModDamageSource.turbofan, 1000); - - if(!e.isEntityAlive() && e instanceof EntityLivingBase) { - NBTTagCompound vdat = new NBTTagCompound(); - vdat.setString("type", "giblets"); - vdat.setInteger("ent", e.getEntityId()); - vdat.setInteger("cDiv", 5); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(vdat, e.posX, e.posY + e.height * 0.5, e.posZ), new TargetPoint(e.dimension, e.posX, e.posY + e.height * 0.5, e.posZ, 150)); - - worldObj.playSoundEffect(e.posX, e.posY, e.posZ, "mob.zombie.woodbreak", 2.0F, 0.95F + worldObj.rand.nextFloat() * 0.2F); - } - } - } - if(meta == 3) { - if(afterburner == 0 && rand.nextInt(3) == 0) { - EntityTSmokeFX smoke = new EntityTSmokeFX(worldObj); - smoke.posX = xCoord + 0.5 + (rand.nextGaussian() * 0.5); - smoke.posY = yCoord + 1.5 + (rand.nextGaussian() * 0.5); - smoke.posZ = zCoord - 3.25; - smoke.motionX = rand.nextGaussian() * 0.3; - smoke.motionY = rand.nextGaussian() * 0.3; - smoke.motionZ = -2.5 - (rand.nextFloat() * 3.5); - if(!worldObj.isRemote) - worldObj.spawnEntityInWorld(smoke); - } - - for(int i = 0; i < afterburner * 5; i++) - if(afterburner > 0 && rand.nextInt(2) == 0) { - EntitySSmokeFX smoke = new EntitySSmokeFX(worldObj); - smoke.posX = xCoord + 0.5 + (rand.nextGaussian() * 0.5); - smoke.posY = yCoord + 1.5 + (rand.nextGaussian() * 0.5); - smoke.posZ = zCoord - 3.25; - smoke.motionX = rand.nextGaussian() * 0.3; - smoke.motionY = rand.nextGaussian() * 0.3; - smoke.motionZ = -2.5 - (rand.nextFloat() * 3.5); - if(!worldObj.isRemote) - worldObj.spawnEntityInWorld(smoke); - } - - //Exhaust push - List list = (List)worldObj.getEntitiesWithinAABBExcludingEntity(null, - AxisAlignedBB.getBoundingBox(posX - 1.5, posY, posZ - 12, posX + 1.5, posY + 3, posZ - 3.5)); - - for(Entity e : list) { - e.motionZ -= 0.5; - if(afterburner > 0) - e.setFire(3 * afterburner); - } - - //Intake pull - list = (List)worldObj.getEntitiesWithinAABBExcludingEntity(null, - AxisAlignedBB.getBoundingBox(posX - 1.5, posY, posZ + 3.5, posX + 1.5, posY + 3, posZ + 12)); - - for(Entity e : list) { - e.motionZ -= 0.5; - } - - //Intake kill - list = (List)worldObj.getEntitiesWithinAABBExcludingEntity(null, - AxisAlignedBB.getBoundingBox(posX - 1.5, posY, posZ + 3.5, posX + 1.5, posY + 3, posZ + 4.5)); - - for(Entity e : list) { - e.attackEntityFrom(ModDamageSource.turbofan, 1000); - - if(!e.isEntityAlive() && e instanceof EntityLivingBase) { - NBTTagCompound vdat = new NBTTagCompound(); - vdat.setString("type", "giblets"); - vdat.setInteger("ent", e.getEntityId()); - vdat.setInteger("cDiv", 5); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(vdat, e.posX, e.posY + e.height * 0.5, e.posZ), new TargetPoint(e.dimension, e.posX, e.posY + e.height * 0.5, e.posZ, 150)); - - worldObj.playSoundEffect(e.posX, e.posY, e.posZ, "mob.zombie.woodbreak", 2.0F, 0.95F + worldObj.rand.nextFloat() * 0.2F); - } - } - } - if(meta == 4) { - if(afterburner == 0 && rand.nextInt(3) == 0) { - EntityTSmokeFX smoke = new EntityTSmokeFX(worldObj); - smoke.posX = xCoord + 3.25; - smoke.posY = yCoord + 1.5 + (rand.nextGaussian() * 0.5); - smoke.posZ = zCoord + 0.5 + (rand.nextGaussian() * 0.5); - smoke.motionX = 2.5 + (rand.nextFloat() * 3.5); - smoke.motionY = rand.nextGaussian() * 0.3; - smoke.motionZ = rand.nextGaussian() * 0.3; - if(!worldObj.isRemote) - worldObj.spawnEntityInWorld(smoke); - } - - for(int i = 0; i < afterburner * 5; i++) - if(afterburner > 0 && rand.nextInt(2) == 0) { - EntitySSmokeFX smoke = new EntitySSmokeFX(worldObj); - smoke.posX = xCoord + 3.25; - smoke.posY = yCoord + 1.5 + (rand.nextGaussian() * 0.5); - smoke.posZ = zCoord + 0.5 + (rand.nextGaussian() * 0.5); - smoke.motionX = 2.5 + (rand.nextFloat() * 3.5); - smoke.motionY = rand.nextGaussian() * 0.3; - smoke.motionZ = rand.nextGaussian() * 0.3; - if(!worldObj.isRemote) - worldObj.spawnEntityInWorld(smoke); - } - - //Exhaust push - List list = (List)worldObj.getEntitiesWithinAABBExcludingEntity(null, - AxisAlignedBB.getBoundingBox(posX + 3.5, posY, posZ - 1.5, posX + 12, posY + 3, posZ + 1.5)); - - for(Entity e : list) { - e.motionX += 0.5; - if(afterburner > 0) - e.setFire(3 * afterburner); - } - - //Intake pull - list = (List)worldObj.getEntitiesWithinAABBExcludingEntity(null, - AxisAlignedBB.getBoundingBox(posX - 12, posY, posZ - 1.5, posX - 3.5, posY + 3, posZ + 1.5)); - - for(Entity e : list) { - e.motionX += 0.5; - } - - //Intake kill - list = (List)worldObj.getEntitiesWithinAABBExcludingEntity(null, - AxisAlignedBB.getBoundingBox(posX - 4.5, posY, posZ - 1.5, posX - 3.5, posY + 3, posZ + 1.5)); - - for(Entity e : list) { - e.attackEntityFrom(ModDamageSource.turbofan, 1000); - - if(!e.isEntityAlive() && e instanceof EntityLivingBase) { - NBTTagCompound vdat = new NBTTagCompound(); - vdat.setString("type", "giblets"); - vdat.setInteger("ent", e.getEntityId()); - vdat.setInteger("cDiv", 5); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(vdat, e.posX, e.posY + e.height * 0.5, e.posZ), new TargetPoint(e.dimension, e.posX, e.posY + e.height * 0.5, e.posZ, 150)); - - worldObj.playSoundEffect(e.posX, e.posY, e.posZ, "mob.zombie.woodbreak", 2.0F, 0.95F + worldObj.rand.nextFloat() * 0.2F); - } - } - } - if(meta == 5) { - if(afterburner == 0 && rand.nextInt(3) == 0) { - EntityTSmokeFX smoke = new EntityTSmokeFX(worldObj); - smoke.posX = xCoord - 3.25; - smoke.posY = yCoord + 1.5 + (rand.nextGaussian() * 0.5); - smoke.posZ = zCoord + 0.5 + (rand.nextGaussian() * 0.5); - smoke.motionX = -2.5 - (rand.nextFloat() * 3.5); - smoke.motionY = rand.nextGaussian() * 0.3; - smoke.motionZ = rand.nextGaussian() * 0.3; - if(!worldObj.isRemote) - worldObj.spawnEntityInWorld(smoke); - } - - for(int i = 0; i < afterburner * 5; i++) - if(afterburner > 0 && rand.nextInt(2) == 0) { - EntitySSmokeFX smoke = new EntitySSmokeFX(worldObj); - smoke.posX = xCoord - 3.25; - smoke.posY = yCoord + 1.5 + (rand.nextGaussian() * 0.5); - smoke.posZ = zCoord + 0.5 + (rand.nextGaussian() * 0.5); - smoke.motionX = -2.5 - (rand.nextFloat() * 3.5); - smoke.motionY = rand.nextGaussian() * 0.3; - smoke.motionZ = rand.nextGaussian() * 0.3; - if(!worldObj.isRemote) - worldObj.spawnEntityInWorld(smoke); - } - - //Exhaust push - List list = (List)worldObj.getEntitiesWithinAABBExcludingEntity(null, - AxisAlignedBB.getBoundingBox(posX - 12, posY, posZ - 1.5, posX - 3.5, posY + 3, posZ + 1.5)); - - for(Entity e : list) { - e.motionX -= 0.5; - if(afterburner > 0) - e.setFire(3 * afterburner); - } - - //Intake pull - list = (List)worldObj.getEntitiesWithinAABBExcludingEntity(null, - AxisAlignedBB.getBoundingBox(posX + 3.5, posY, posZ - 1.5, posX + 12, posY + 3, posZ + 1.5)); - - for(Entity e : list) { - e.motionX -= 0.5; - } - - //Intake kill - list = (List)worldObj.getEntitiesWithinAABBExcludingEntity(null, - AxisAlignedBB.getBoundingBox(posX + 3.5, posY, posZ - 1.5, posX + 4.5, posY + 3, posZ + 1.5)); - - for(Entity e : list) { - e.attackEntityFrom(ModDamageSource.turbofan, 1000); - - if(!e.isEntityAlive() && e instanceof EntityLivingBase) { - NBTTagCompound vdat = new NBTTagCompound(); - vdat.setString("type", "giblets"); - vdat.setInteger("ent", e.getEntityId()); - vdat.setInteger("cDiv", 5); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(vdat, e.posX, e.posY + e.height * 0.5, e.posZ), new TargetPoint(e.dimension, e.posX, e.posY + e.height * 0.5, e.posZ, 150)); - - worldObj.playSoundEffect(e.posX, e.posY, e.posZ, "mob.zombie.woodbreak", 2.0F, 0.95F + worldObj.rand.nextFloat() * 0.2F); - } - } - } - } - } - if(!worldObj.isRemote) { - PacketDispatcher.wrapper.sendToAllAround(new TETurbofanPacket(xCoord, yCoord, zCoord, spin, isRunning), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 150)); - PacketDispatcher.wrapper.sendToAllAround(new LoopedSoundPacket(xCoord, yCoord, zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); + + for(DirPos pos : getConPos()) { + this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + + tank.loadTank(0, 1, slots); + + this.wasOn = false; + + UpgradeManager.eval(slots, 2, 2); + this.afterburner = UpgradeManager.getLevel(UpgradeType.AFTERBURN); + + if(slots[2] != null && slots[2].getItem() == ModItems.flame_pony) + this.afterburner = 100; + + long burn = 0; + int amount = 1 + this.afterburner; + + if(tank.getTankType() instanceof FluidTypeCombustible && ((FluidTypeCombustible) tank.getTankType()).getGrade() == FuelGrade.AERO) { + burn = ((FluidTypeCombustible) tank.getTankType()).getCombustionEnergy() / 1_000; + } + + int toBurn = Math.min(amount, this.tank.getFill()); + + if(toBurn > 0) { + this.wasOn = true; + this.tank.setFill(this.tank.getFill() - toBurn); + this.power += burn * toBurn; + if(this.power > this.maxPower) { + this.power = this.maxPower; + } + } + + if(toBurn > 0) { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + if(this.afterburner > 0) { + + for(int i = 0; i < 2; i++) { + double speed = 2 + worldObj.rand.nextDouble() * 3; + double deviation = worldObj.rand.nextGaussian() * 0.2; + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "gasfire"); + data.setDouble("mX", -dir.offsetX * speed + deviation); + data.setDouble("mZ", -dir.offsetZ * speed + deviation); + data.setFloat("scale", 8F); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, this.xCoord + 0.5F - dir.offsetX * (3 - i), this.yCoord + 1.5F, this.zCoord + 0.5F - dir.offsetZ * (3 - i)), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 150)); + } + } + + double minX = this.xCoord + 0.5 - dir.offsetX * 3.5 - rot.offsetX * 1.5; + double maxX = this.xCoord + 0.5 - dir.offsetX * 19.5 + rot.offsetX * 1.5; + double minZ = this.zCoord + 0.5 - dir.offsetZ * 3.5 - rot.offsetZ * 1.5; + double maxZ = this.zCoord + 0.5 - dir.offsetZ * 19.5 + rot.offsetZ * 1.5; + + List list = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(Math.min(minX, maxX), yCoord, Math.min(minZ, maxZ), Math.max(minX, maxX), yCoord + 3, Math.max(minZ, maxZ))); + + for(Entity e : list) { + + if(this.afterburner > 0) { + e.setFire(5); + e.attackEntityFrom(DamageSource.onFire, 5F); + } + e.motionX -= dir.offsetX * 0.2; + e.motionZ -= dir.offsetZ * 0.2; + } + + minX = this.xCoord + 0.5 + dir.offsetX * 3.5 - rot.offsetX * 1.5; + maxX = this.xCoord + 0.5 + dir.offsetX * 8.5 + rot.offsetX * 1.5; + minZ = this.zCoord + 0.5 + dir.offsetZ * 3.5 - rot.offsetZ * 1.5; + maxZ = this.zCoord + 0.5 + dir.offsetZ * 8.5 + rot.offsetZ * 1.5; + + list = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(Math.min(minX, maxX), yCoord, Math.min(minZ, maxZ), Math.max(minX, maxX), yCoord + 3, Math.max(minZ, maxZ))); + + for(Entity e : list) { + e.motionX -= dir.offsetX * 0.2; + e.motionZ -= dir.offsetZ * 0.2; + } + + minX = this.xCoord + 0.5 + dir.offsetX * 3.5 - rot.offsetX * 1.5; + maxX = this.xCoord + 0.5 + dir.offsetX * 3.75 + rot.offsetX * 1.5; + minZ = this.zCoord + 0.5 + dir.offsetZ * 3.5 - rot.offsetZ * 1.5; + maxZ = this.zCoord + 0.5 + dir.offsetZ * 3.75 + rot.offsetZ * 1.5; + + list = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(Math.min(minX, maxX), yCoord, Math.min(minZ, maxZ), Math.max(minX, maxX), yCoord + 3, Math.max(minZ, maxZ))); + + for(Entity e : list) { + e.attackEntityFrom(ModDamageSource.turbofan, 1000); + e.setInWeb(); + + if(!e.isEntityAlive() && e instanceof EntityLivingBase) { + NBTTagCompound vdat = new NBTTagCompound(); + vdat.setString("type", "giblets"); + vdat.setInteger("ent", e.getEntityId()); + vdat.setInteger("cDiv", 5); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(vdat, e.posX, e.posY + e.height * 0.5, e.posZ), new TargetPoint(e.dimension, e.posX, e.posY + e.height * 0.5, e.posZ, 150)); + + worldObj.playSoundEffect(e.posX, e.posY, e.posZ, "mob.zombie.woodbreak", 2.0F, 0.95F + worldObj.rand.nextFloat() * 0.2F); + } + } + } + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", power); + data.setByte("after", (byte) afterburner); + data.setBoolean("wasOn", wasOn); + tank.writeToNBT(data, "tank"); + this.networkPack(data, 150); + + } else { + + this.lastSpin = this.spin; + + if(wasOn) { + if(this.momentum < 100F) + this.momentum++; + } else { + if(this.momentum > 0) + this.momentum--; + } + + this.spin += momentum / 2; + + if(this.spin >= 360) { + this.spin -= 360F; + this.lastSpin -= 360F; + } + + if(momentum > 0) { + + if(audio == null) { + audio = createAudioLoop(); + audio.startSound(); + } else if(!audio.isPlaying()) { + audio = rebootAudio(audio); + } + + audio.updateVolume(momentum); + audio.updatePitch(momentum / 200F + 0.5F + this.afterburner * 0.16F); + + } else { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + /* + * All movement related stuff has to be repeated on the client, but only for the client's player + * Otherwise this could lead to desync since the motion is never sent form the server + */ + if(!MainRegistry.proxy.me().capabilities.isCreativeMode) { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + double minX = this.xCoord + 0.5 - dir.offsetX * 3.5 - rot.offsetX * 1.5; + double maxX = this.xCoord + 0.5 - dir.offsetX * 19.5 + rot.offsetX * 1.5; + double minZ = this.zCoord + 0.5 - dir.offsetZ * 3.5 - rot.offsetZ * 1.5; + double maxZ = this.zCoord + 0.5 - dir.offsetZ * 19.5 + rot.offsetZ * 1.5; + + List list = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(Math.min(minX, maxX), yCoord, Math.min(minZ, maxZ), Math.max(minX, maxX), yCoord + 3, Math.max(minZ, maxZ))); + + for(Entity e : list) { + if(e == MainRegistry.proxy.me()) { + e.motionX -= dir.offsetX * 0.2; + e.motionZ -= dir.offsetZ * 0.2; + } + } + + minX = this.xCoord + 0.5 + dir.offsetX * 3.5 - rot.offsetX * 1.5; + maxX = this.xCoord + 0.5 + dir.offsetX * 8.5 + rot.offsetX * 1.5; + minZ = this.zCoord + 0.5 + dir.offsetZ * 3.5 - rot.offsetZ * 1.5; + maxZ = this.zCoord + 0.5 + dir.offsetZ * 8.5 + rot.offsetZ * 1.5; + + list = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(Math.min(minX, maxX), yCoord, Math.min(minZ, maxZ), Math.max(minX, maxX), yCoord + 3, Math.max(minZ, maxZ))); + + for(Entity e : list) { + if(e == MainRegistry.proxy.me()) { + e.motionX -= dir.offsetX * 0.2; + e.motionZ -= dir.offsetZ * 0.2; + } + } + + minX = this.xCoord + 0.5 + dir.offsetX * 3.5 - rot.offsetX * 1.5; + maxX = this.xCoord + 0.5 + dir.offsetX * 3.75 + rot.offsetX * 1.5; + minZ = this.zCoord + 0.5 + dir.offsetZ * 3.5 - rot.offsetZ * 1.5; + maxZ = this.zCoord + 0.5 + dir.offsetZ * 3.75 + rot.offsetZ * 1.5; + + list = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(Math.min(minX, maxX), yCoord, Math.min(minZ, maxZ), Math.max(minX, maxX), yCoord + 3, Math.max(minZ, maxZ))); + + for(Entity e : list) { + if(e == MainRegistry.proxy.me()) { + e.setInWeb(); + } + } + } + } + } + + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + this.afterburner = nbt.getByte("after"); + this.wasOn = nbt.getBoolean("wasOn"); + tank.readFromNBT(nbt, "tank"); + } + + public AudioWrapper createAudioLoop() { + return MainRegistry.proxy.getLoopedSound("hbm:block.turbofanOperate", xCoord, yCoord, zCoord, 5.0F, 1.0F); + } + + @Override + public void onChunkUnload() { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + @Override + public void invalidate() { + + super.invalidate(); + + if(audio != null) { + audio.stopSound(); + audio = null; } } @@ -584,4 +382,9 @@ public class TileEntityMachineTurbofan extends TileEntityLoadedBase implements I { return 65536.0D; } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] { tank }; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityStructureMarker.java b/src/main/java/com/hbm/tileentity/machine/TileEntityStructureMarker.java index 500964a15..e6551423b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityStructureMarker.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityStructureMarker.java @@ -9,20 +9,16 @@ import net.minecraft.tileentity.TileEntity; public class TileEntityStructureMarker extends TileEntity { - //0: Factory - //1: Nuclear Reactor - //2: Reactor with Coat - //3: Fusion Reactor - //4: Fusion Reactor with Coat - //5: Watz Power Plant - //6: Fusionary Watz Plant + //0: Nuclear Reactor + //1: Watz Power Plant + //2: Fusionary Watz Plant public int type = 0; @Override public void updateEntity() { - if(this.type > 6) - type -= 7; + if(this.type > 2) + type -= 3; if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new TEStructurePacket(xCoord, yCoord, zCoord, type), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 250)); diff --git a/src/main/java/com/hbm/world/dungeon/Spaceship2.java b/src/main/java/com/hbm/world/dungeon/Spaceship2.java index 6aa1c68e4..165fd93d8 100644 --- a/src/main/java/com/hbm/world/dungeon/Spaceship2.java +++ b/src/main/java/com/hbm/world/dungeon/Spaceship2.java @@ -6,7 +6,6 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; -import com.hbm.main.MainRegistry; import net.minecraft.block.Block; import net.minecraft.init.Blocks; @@ -20,7 +19,6 @@ public class Spaceship2 Block Block4 = ModBlocks.fusion_heater; Block Block5 = ModBlocks.block_meteor; Block Block6 = ModBlocks.reactor_element; - Block Block7 = ModBlocks.fusion_core; Block Block8 = ModBlocks.fusion_hatch; Block Block9 = ModBlocks.reinforced_light; Block Block10 = ModBlocks.reinforced_glass; diff --git a/src/main/java/com/hbm/world/machine/FactoryAdvanced.java b/src/main/java/com/hbm/world/machine/FactoryAdvanced.java deleted file mode 100644 index 2c09d06c9..000000000 --- a/src/main/java/com/hbm/world/machine/FactoryAdvanced.java +++ /dev/null @@ -1,70 +0,0 @@ -//Schematic to java Structure by jajo_11 | inspired by "MITHION'S .SCHEMATIC TO JAVA CONVERTINGTOOL" - -package com.hbm.world.machine; - -import java.util.Random; - -import com.hbm.blocks.ModBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class FactoryAdvanced extends WorldGenerator -{ - Block Block1 = ModBlocks.factory_advanced_hull; - Block Block2 = ModBlocks.factory_advanced_conductor; - Block Block3 = ModBlocks.factory_advanced_furnace; - Block Block4 = ModBlocks.factory_advanced_core; - - @Override - public boolean generate(World world, Random rand, int x, int y, int z) - { - int i = rand.nextInt(1); - - if(i == 0) - { - generate_r0(world, rand, x, y, z); - } - - return true; - - } - - public boolean generate_r0(World world, Random rand, int x, int y, int z) - { - x -= 1; - z -= 1; - - world.setBlock(x + 0, y + 0, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + 0, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + 0, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + 0, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + 0, z + 1, Block2, 0, 3); - world.setBlock(x + 2, y + 0, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + 0, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + 0, z + 2, Block1, 0, 3); - world.setBlock(x + 2, y + 0, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + 1, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + 1, z + 0, Block3, 2, 3); - world.setBlock(x + 2, y + 1, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + 1, z + 1, Block3, 4, 3); - world.setBlock(x + 1, y + 1, z + 1, Block4, 0, 3); - world.setBlock(x + 2, y + 1, z + 1, Block3, 5, 3); - world.setBlock(x + 0, y + 1, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + 1, z + 2, Block3, 3, 3); - world.setBlock(x + 2, y + 1, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + 2, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + 2, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + 2, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + 2, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + 2, z + 1, Block2, 0, 3); - world.setBlock(x + 2, y + 2, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + 2, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + 2, z + 2, Block1, 0, 3); - world.setBlock(x + 2, y + 2, z + 2, Block1, 0, 3); - return true; - - } - -} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/machine/FactoryTitanium.java b/src/main/java/com/hbm/world/machine/FactoryTitanium.java deleted file mode 100644 index 6d7eb00dd..000000000 --- a/src/main/java/com/hbm/world/machine/FactoryTitanium.java +++ /dev/null @@ -1,89 +0,0 @@ -//Schematic to java Structure by jajo_11 | inspired by "MITHION'S .SCHEMATIC TO JAVA CONVERTINGTOOL" - -package com.hbm.world.machine; - -import java.util.Random; - -import com.hbm.blocks.ModBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - - -public class FactoryTitanium extends WorldGenerator -{ - public static String[][] array = new String[][] { - { - "HHH", - "HHH", - "HHH" - }, - { - "HFH", - "FCF", - "HFH" - }, - { - "HHH", - "HHH", - "HHH" - } - }; - - Block Block1 = ModBlocks.factory_titanium_hull; - Block Block2 = ModBlocks.factory_titanium_conductor; - Block Block3 = ModBlocks.factory_titanium_furnace; - Block Block4 = ModBlocks.factory_titanium_core; - - @Override - public boolean generate(World world, Random rand, int x, int y, int z) - { - int i = rand.nextInt(1); - - if(i == 0) - { - generate_r0(world, rand, x, y, z); - } - - return true; - - } - - public boolean generate_r0(World world, Random rand, int x, int y, int z) - { - x -= 1; - z -= 1; - - world.setBlock(x + 0, y + 0, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + 0, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + 0, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + 0, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + 0, z + 1, Block2, 0, 3); - world.setBlock(x + 2, y + 0, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + 0, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + 0, z + 2, Block1, 0, 3); - world.setBlock(x + 2, y + 0, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + 1, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + 1, z + 0, Block3, 2, 3); - world.setBlock(x + 2, y + 1, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + 1, z + 1, Block3, 4, 3); - world.setBlock(x + 1, y + 1, z + 1, Block4, 0, 3); - world.setBlock(x + 2, y + 1, z + 1, Block3, 5, 3); - world.setBlock(x + 0, y + 1, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + 1, z + 2, Block3, 3, 3); - world.setBlock(x + 2, y + 1, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + 2, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + 2, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + 2, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + 2, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + 2, z + 1, Block2, 0, 3); - world.setBlock(x + 2, y + 2, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + 2, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + 2, z + 2, Block1, 0, 3); - world.setBlock(x + 2, y + 2, z + 2, Block1, 0, 3); - return true; - - } - -} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/machine/FusionReactor.java b/src/main/java/com/hbm/world/machine/FusionReactor.java deleted file mode 100644 index b293fe8cf..000000000 --- a/src/main/java/com/hbm/world/machine/FusionReactor.java +++ /dev/null @@ -1,1590 +0,0 @@ -//Schematic to java Structure by jajo_11 | inspired by "MITHION'S .SCHEMATIC TO JAVA CONVERTINGTOOL" - -package com.hbm.world.machine; - -import java.util.Random; - -import com.hbm.blocks.ModBlocks; - -import net.minecraft.block.Block; -import net.minecraft.init.Blocks; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class FusionReactor extends WorldGenerator -{ - public static String[][] array = new String[][] { - { - " HHH ", - " HHH ", - " ", - " MMMMMMM ", - " MMMMMMMMM ", - " MMMMMMMMMMM ", - " MMM MMM ", - "HH MMM RRR MMM HH", - "HH MMM RCR MMM HH", - "HH MMM RRR MMM HH", - " MMM MMM ", - " MMMMMMMMMMM ", - " MMMMMMMMM ", - " MMMMMMM ", - " ", - " HHH ", - " HHH " - }, - { - " HHH ", - " HHH ", - " MMMMMMM ", - " MMMMMMMMM ", - " MMTTTTTTTMM ", - " MMTTMMMMMTTMM ", - " MMTMMMMMMMTMM ", - "HHMMTMM MMTMMHH", - "HHMMTMM C MMTMMHH", - "HHMMTMM MMTMMHH", - " MMTMMMMMMMTMM ", - " MMTTMMMMMTTMM ", - " MMTTTTTTTMM ", - " MMMMMMMMM ", - " MMMMMMM ", - " HHH ", - " HHH " - }, - { - " HAH ", - " HHH ", - " MMMMMMM ", - " MTTTTTTTM ", - " MT TM ", - " MT TTTTT TM ", - " MT TMMMMMT TM ", - "HHMT TM MT TMHH", - "AHMT TM # MT TMHA", - "HHMT TM MT TMHH", - " MT TMMMMMT TM ", - " MT TTTTT TM ", - " MT TM ", - " MTTTTTTTM ", - " MMMMMMM ", - " HHH ", - " HAH " - }, - { - " HHH ", - " HHH ", - " MMMMMMM ", - " MMMMMMMMM ", - " MMTTTTTTTMM ", - " MMTTMMMMMTTMM ", - " MMTMMMMMMMTMM ", - "HHMMTMM MMTMMHH", - "HHMMTMM C MMTMMHH", - "HHMMTMM MMTMMHH", - " MMTMMMMMMMTMM ", - " MMTTMMMMMTTMM ", - " MMTTTTTTTMM ", - " MMMMMMMMM ", - " MMMMMMM ", - " HHH ", - " HHH " - }, - { - " HHH ", - " HHH ", - " ", - " MMMMMMM ", - " MMMMMMMMM ", - " MMMMMMMMMMM ", - " MMM MMM ", - "HH MMM RRR MMM HH", - "HH MMM RCR MMM HH", - "HH MMM RRR MMM HH", - " MMM MMM ", - " MMMMMMMMMMM ", - " MMMMMMMMM ", - " MMMMMMM ", - " ", - " HHH ", - " HHH " - } - }; - - Block Block1 = ModBlocks.fusion_heater; - Block Block2 = ModBlocks.fusion_conductor; - Block Block3 = ModBlocks.fusion_motor; - Block Block4 = ModBlocks.fusion_center; - Block Block5 = ModBlocks.block_tungsten; - Block Block6 = ModBlocks.fusion_hatch; - Block Block7 = ModBlocks.fusion_core; - - @Override - public boolean generate(World world, Random rand, int x, int y, int z) - { - int i = rand.nextInt(1); - - if(i == 0) - { - generate_r0(world, rand, x, y, z); - } - - return true; - - } - - public boolean generate_r0(World world, Random rand, int x, int y, int z) - { - x -= 8; - z -= 8; - - world.setBlock(x + 0, y + 0, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 0, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 0, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 0, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 0, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 0, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 0, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 0, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + 0, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + 0, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + 0, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 0, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 0, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 0, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 0, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 0, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 0, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 0, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 0, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 0, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 0, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 0, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 0, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 0, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 0, z + 1, Block1, 0, 3); - world.setBlock(x + 8, y + 0, z + 1, Block1, 0, 3); - world.setBlock(x + 9, y + 0, z + 1, Block1, 0, 3); - world.setBlock(x + 10, y + 0, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 0, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 0, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 0, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 0, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 0, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 0, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 0, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 0, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 0, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 0, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 0, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 0, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 0, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 0, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 8, y + 0, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 9, y + 0, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 10, y + 0, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 0, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 0, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 0, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 0, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 0, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 0, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 0, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 0, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 0, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 0, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 0, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 0, z + 3, Block2, 0, 3); - world.setBlock(x + 6, y + 0, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 0, z + 3, Block2, 0, 3); - world.setBlock(x + 8, y + 0, z + 3, Block2, 0, 3); - world.setBlock(x + 9, y + 0, z + 3, Block2, 0, 3); - world.setBlock(x + 10, y + 0, z + 3, Block2, 0, 3); - world.setBlock(x + 11, y + 0, z + 3, Block2, 0, 3); - world.setBlock(x + 12, y + 0, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 0, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 0, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 0, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 0, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 0, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 0, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 0, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 0, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 0, z + 4, Block2, 0, 3); - world.setBlock(x + 5, y + 0, z + 4, Block2, 0, 3); - world.setBlock(x + 6, y + 0, z + 4, Block2, 0, 3); - world.setBlock(x + 7, y + 0, z + 4, Block2, 0, 3); - world.setBlock(x + 8, y + 0, z + 4, Block2, 0, 3); - world.setBlock(x + 9, y + 0, z + 4, Block2, 0, 3); - world.setBlock(x + 10, y + 0, z + 4, Block2, 0, 3); - world.setBlock(x + 11, y + 0, z + 4, Block2, 0, 3); - world.setBlock(x + 12, y + 0, z + 4, Block2, 0, 3); - world.setBlock(x + 13, y + 0, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 0, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 0, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 0, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 0, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 0, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 0, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 0, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 0, z + 5, Block2, 0, 3); - world.setBlock(x + 5, y + 0, z + 5, Block2, 0, 3); - world.setBlock(x + 6, y + 0, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 0, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 0, z + 5, Block2, 0, 3); - world.setBlock(x + 9, y + 0, z + 5, Block2, 0, 3); - world.setBlock(x + 10, y + 0, z + 5, Block2, 0, 3); - world.setBlock(x + 11, y + 0, z + 5, Block2, 0, 3); - world.setBlock(x + 12, y + 0, z + 5, Block2, 0, 3); - world.setBlock(x + 13, y + 0, z + 5, Block2, 0, 3); - world.setBlock(x + 14, y + 0, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 0, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 0, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 0, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 0, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 0, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 0, z + 6, Block2, 0, 3); - world.setBlock(x + 4, y + 0, z + 6, Block2, 0, 3); - world.setBlock(x + 5, y + 0, z + 6, Block2, 0, 3); - world.setBlock(x + 6, y + 0, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 0, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 8, y + 0, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 9, y + 0, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 10, y + 0, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 0, z + 6, Block2, 0, 3); - world.setBlock(x + 12, y + 0, z + 6, Block2, 0, 3); - world.setBlock(x + 13, y + 0, z + 6, Block2, 0, 3); - world.setBlock(x + 14, y + 0, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 0, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 0, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 0, z + 7, Block1, 0, 3); - world.setBlock(x + 1, y + 0, z + 7, Block1, 0, 3); - world.setBlock(x + 2, y + 0, z + 7, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 0, z + 7, Block2, 0, 3); - world.setBlock(x + 4, y + 0, z + 7, Block2, 0, 3); - world.setBlock(x + 5, y + 0, z + 7, Block2, 0, 3); - world.setBlock(x + 6, y + 0, z + 7, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 0, z + 7, Block3, 0, 3); - world.setBlock(x + 8, y + 0, z + 7, Block3, 0, 3); - world.setBlock(x + 9, y + 0, z + 7, Block3, 0, 3); - world.setBlock(x + 10, y + 0, z + 7, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 0, z + 7, Block2, 0, 3); - world.setBlock(x + 12, y + 0, z + 7, Block2, 0, 3); - world.setBlock(x + 13, y + 0, z + 7, Block2, 0, 3); - world.setBlock(x + 14, y + 0, z + 7, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 0, z + 7, Block1, 0, 3); - world.setBlock(x + 16, y + 0, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + 0, z + 8, Block1, 0, 3); - world.setBlock(x + 1, y + 0, z + 8, Block1, 0, 3); - world.setBlock(x + 2, y + 0, z + 8, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 0, z + 8, Block2, 0, 3); - world.setBlock(x + 4, y + 0, z + 8, Block2, 0, 3); - world.setBlock(x + 5, y + 0, z + 8, Block2, 0, 3); - world.setBlock(x + 6, y + 0, z + 8, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 0, z + 8, Block3, 0, 3); - world.setBlock(x + 8, y + 0, z + 8, Block4, 0, 3); - world.setBlock(x + 9, y + 0, z + 8, Block3, 0, 3); - world.setBlock(x + 10, y + 0, z + 8, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 0, z + 8, Block2, 0, 3); - world.setBlock(x + 12, y + 0, z + 8, Block2, 0, 3); - world.setBlock(x + 13, y + 0, z + 8, Block2, 0, 3); - world.setBlock(x + 14, y + 0, z + 8, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 0, z + 8, Block1, 0, 3); - world.setBlock(x + 16, y + 0, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + 0, z + 9, Block1, 0, 3); - world.setBlock(x + 1, y + 0, z + 9, Block1, 0, 3); - world.setBlock(x + 2, y + 0, z + 9, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 0, z + 9, Block2, 0, 3); - world.setBlock(x + 4, y + 0, z + 9, Block2, 0, 3); - world.setBlock(x + 5, y + 0, z + 9, Block2, 0, 3); - world.setBlock(x + 6, y + 0, z + 9, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 0, z + 9, Block3, 0, 3); - world.setBlock(x + 8, y + 0, z + 9, Block3, 0, 3); - world.setBlock(x + 9, y + 0, z + 9, Block3, 0, 3); - world.setBlock(x + 10, y + 0, z + 9, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 0, z + 9, Block2, 0, 3); - world.setBlock(x + 12, y + 0, z + 9, Block2, 0, 3); - world.setBlock(x + 13, y + 0, z + 9, Block2, 0, 3); - world.setBlock(x + 14, y + 0, z + 9, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 0, z + 9, Block1, 0, 3); - world.setBlock(x + 16, y + 0, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + 0, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 0, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 0, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 0, z + 10, Block2, 0, 3); - world.setBlock(x + 4, y + 0, z + 10, Block2, 0, 3); - world.setBlock(x + 5, y + 0, z + 10, Block2, 0, 3); - world.setBlock(x + 6, y + 0, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 0, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 8, y + 0, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 9, y + 0, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 10, y + 0, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 0, z + 10, Block2, 0, 3); - world.setBlock(x + 12, y + 0, z + 10, Block2, 0, 3); - world.setBlock(x + 13, y + 0, z + 10, Block2, 0, 3); - world.setBlock(x + 14, y + 0, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 0, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 0, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 0, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 0, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 0, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 0, z + 11, Block2, 0, 3); - world.setBlock(x + 4, y + 0, z + 11, Block2, 0, 3); - world.setBlock(x + 5, y + 0, z + 11, Block2, 0, 3); - world.setBlock(x + 6, y + 0, z + 11, Block2, 0, 3); - world.setBlock(x + 7, y + 0, z + 11, Block2, 0, 3); - world.setBlock(x + 8, y + 0, z + 11, Block2, 0, 3); - world.setBlock(x + 9, y + 0, z + 11, Block2, 0, 3); - world.setBlock(x + 10, y + 0, z + 11, Block2, 0, 3); - world.setBlock(x + 11, y + 0, z + 11, Block2, 0, 3); - world.setBlock(x + 12, y + 0, z + 11, Block2, 0, 3); - world.setBlock(x + 13, y + 0, z + 11, Block2, 0, 3); - world.setBlock(x + 14, y + 0, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 0, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 0, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 0, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 0, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 0, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 0, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 0, z + 12, Block2, 0, 3); - world.setBlock(x + 5, y + 0, z + 12, Block2, 0, 3); - world.setBlock(x + 6, y + 0, z + 12, Block2, 0, 3); - world.setBlock(x + 7, y + 0, z + 12, Block2, 0, 3); - world.setBlock(x + 8, y + 0, z + 12, Block2, 0, 3); - world.setBlock(x + 9, y + 0, z + 12, Block2, 0, 3); - world.setBlock(x + 10, y + 0, z + 12, Block2, 0, 3); - world.setBlock(x + 11, y + 0, z + 12, Block2, 0, 3); - world.setBlock(x + 12, y + 0, z + 12, Block2, 0, 3); - world.setBlock(x + 13, y + 0, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 0, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 0, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 0, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 0, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 0, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 0, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 0, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 0, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 0, z + 13, Block2, 0, 3); - world.setBlock(x + 6, y + 0, z + 13, Block2, 0, 3); - world.setBlock(x + 7, y + 0, z + 13, Block2, 0, 3); - world.setBlock(x + 8, y + 0, z + 13, Block2, 0, 3); - world.setBlock(x + 9, y + 0, z + 13, Block2, 0, 3); - world.setBlock(x + 10, y + 0, z + 13, Block2, 0, 3); - world.setBlock(x + 11, y + 0, z + 13, Block2, 0, 3); - world.setBlock(x + 12, y + 0, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 0, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 0, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 0, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 0, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 0, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 0, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 0, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 0, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 0, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 0, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 0, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 0, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 8, y + 0, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 9, y + 0, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 10, y + 0, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 0, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 0, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 0, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 0, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 0, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 0, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 0, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 0, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 0, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 0, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 0, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 0, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 0, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 0, z + 15, Block1, 0, 3); - world.setBlock(x + 8, y + 0, z + 15, Block1, 0, 3); - world.setBlock(x + 9, y + 0, z + 15, Block1, 0, 3); - world.setBlock(x + 10, y + 0, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 0, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 0, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 0, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 0, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 0, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 0, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 0, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 0, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 0, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 0, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 0, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 0, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 0, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 0, z + 16, Block1, 0, 3); - world.setBlock(x + 8, y + 0, z + 16, Block1, 0, 3); - world.setBlock(x + 9, y + 0, z + 16, Block1, 0, 3); - world.setBlock(x + 10, y + 0, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 0, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 0, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 0, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 0, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 0, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 0, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 1, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 1, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 1, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 1, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 1, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 1, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 1, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 1, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + 1, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + 1, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + 1, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 1, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 1, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 1, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 1, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 1, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 1, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 1, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 1, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 1, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 1, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 1, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 1, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 1, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 1, z + 1, Block1, 0, 3); - world.setBlock(x + 8, y + 1, z + 1, Block1, 0, 3); - world.setBlock(x + 9, y + 1, z + 1, Block1, 0, 3); - world.setBlock(x + 10, y + 1, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 1, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 1, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 1, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 1, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 1, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 1, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 1, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 1, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 1, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 1, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 1, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 1, z + 2, Block2, 0, 3); - world.setBlock(x + 6, y + 1, z + 2, Block2, 0, 3); - world.setBlock(x + 7, y + 1, z + 2, Block2, 0, 3); - world.setBlock(x + 8, y + 1, z + 2, Block2, 0, 3); - world.setBlock(x + 9, y + 1, z + 2, Block2, 0, 3); - world.setBlock(x + 10, y + 1, z + 2, Block2, 0, 3); - world.setBlock(x + 11, y + 1, z + 2, Block2, 0, 3); - world.setBlock(x + 12, y + 1, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 1, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 1, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 1, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 1, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 1, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 1, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 1, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 1, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 1, z + 3, Block2, 0, 3); - world.setBlock(x + 5, y + 1, z + 3, Block2, 0, 3); - world.setBlock(x + 6, y + 1, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 1, z + 3, Block2, 0, 3); - world.setBlock(x + 8, y + 1, z + 3, Block2, 0, 3); - world.setBlock(x + 9, y + 1, z + 3, Block2, 0, 3); - world.setBlock(x + 10, y + 1, z + 3, Block2, 0, 3); - world.setBlock(x + 11, y + 1, z + 3, Block2, 0, 3); - world.setBlock(x + 12, y + 1, z + 3, Block2, 0, 3); - world.setBlock(x + 13, y + 1, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 1, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 1, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 1, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 1, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 1, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 1, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 1, z + 4, Block2, 0, 3); - world.setBlock(x + 4, y + 1, z + 4, Block2, 0, 3); - world.setBlock(x + 5, y + 1, z + 4, Block5, 0, 3); - world.setBlock(x + 6, y + 1, z + 4, Block5, 0, 3); - world.setBlock(x + 7, y + 1, z + 4, Block5, 0, 3); - world.setBlock(x + 8, y + 1, z + 4, Block5, 0, 3); - world.setBlock(x + 9, y + 1, z + 4, Block5, 0, 3); - world.setBlock(x + 10, y + 1, z + 4, Block5, 0, 3); - world.setBlock(x + 11, y + 1, z + 4, Block5, 0, 3); - world.setBlock(x + 12, y + 1, z + 4, Block2, 0, 3); - world.setBlock(x + 13, y + 1, z + 4, Block2, 0, 3); - world.setBlock(x + 14, y + 1, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 1, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 1, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 1, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 1, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 1, z + 5, Block2, 0, 3); - world.setBlock(x + 3, y + 1, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 1, z + 5, Block5, 0, 3); - world.setBlock(x + 5, y + 1, z + 5, Block5, 0, 3); - world.setBlock(x + 6, y + 1, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 1, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 1, z + 5, Block2, 0, 3); - world.setBlock(x + 9, y + 1, z + 5, Block2, 0, 3); - world.setBlock(x + 10, y + 1, z + 5, Block2, 0, 3); - world.setBlock(x + 11, y + 1, z + 5, Block5, 0, 3); - world.setBlock(x + 12, y + 1, z + 5, Block5, 0, 3); - world.setBlock(x + 13, y + 1, z + 5, Block2, 0, 3); - world.setBlock(x + 14, y + 1, z + 5, Block2, 0, 3); - world.setBlock(x + 15, y + 1, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 1, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 1, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 1, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 1, z + 6, Block2, 0, 3); - world.setBlock(x + 3, y + 1, z + 6, Block2, 0, 3); - world.setBlock(x + 4, y + 1, z + 6, Block5, 0, 3); - world.setBlock(x + 5, y + 1, z + 6, Block2, 0, 3); - world.setBlock(x + 6, y + 1, z + 6, Block2, 0, 3); - world.setBlock(x + 7, y + 1, z + 6, Block2, 0, 3); - world.setBlock(x + 8, y + 1, z + 6, Block2, 0, 3); - world.setBlock(x + 9, y + 1, z + 6, Block2, 0, 3); - world.setBlock(x + 10, y + 1, z + 6, Block2, 0, 3); - world.setBlock(x + 11, y + 1, z + 6, Block2, 0, 3); - world.setBlock(x + 12, y + 1, z + 6, Block5, 0, 3); - world.setBlock(x + 13, y + 1, z + 6, Block2, 0, 3); - world.setBlock(x + 14, y + 1, z + 6, Block2, 0, 3); - world.setBlock(x + 15, y + 1, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 1, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 1, z + 7, Block1, 0, 3); - world.setBlock(x + 1, y + 1, z + 7, Block1, 0, 3); - world.setBlock(x + 2, y + 1, z + 7, Block2, 0, 3); - world.setBlock(x + 3, y + 1, z + 7, Block2, 0, 3); - world.setBlock(x + 4, y + 1, z + 7, Block5, 0, 3); - world.setBlock(x + 5, y + 1, z + 7, Block2, 0, 3); - world.setBlock(x + 6, y + 1, z + 7, Block2, 0, 3); - world.setBlock(x + 7, y + 1, z + 7, Blocks.air, 0, 3); - world.setBlock(x + 8, y + 1, z + 7, Blocks.air, 0, 3); - world.setBlock(x + 9, y + 1, z + 7, Blocks.air, 0, 3); - world.setBlock(x + 10, y + 1, z + 7, Block2, 0, 3); - world.setBlock(x + 11, y + 1, z + 7, Block2, 0, 3); - world.setBlock(x + 12, y + 1, z + 7, Block5, 0, 3); - world.setBlock(x + 13, y + 1, z + 7, Block2, 0, 3); - world.setBlock(x + 14, y + 1, z + 7, Block2, 0, 3); - world.setBlock(x + 15, y + 1, z + 7, Block1, 0, 3); - world.setBlock(x + 16, y + 1, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + 1, z + 8, Block1, 0, 3); - world.setBlock(x + 1, y + 1, z + 8, Block1, 0, 3); - world.setBlock(x + 2, y + 1, z + 8, Block2, 0, 3); - world.setBlock(x + 3, y + 1, z + 8, Block2, 0, 3); - world.setBlock(x + 4, y + 1, z + 8, Block5, 0, 3); - world.setBlock(x + 5, y + 1, z + 8, Block2, 0, 3); - world.setBlock(x + 6, y + 1, z + 8, Block2, 0, 3); - world.setBlock(x + 7, y + 1, z + 8, Blocks.air, 0, 3); - world.setBlock(x + 8, y + 1, z + 8, Block4, 0, 3); - world.setBlock(x + 9, y + 1, z + 8, Blocks.air, 0, 3); - world.setBlock(x + 10, y + 1, z + 8, Block2, 0, 3); - world.setBlock(x + 11, y + 1, z + 8, Block2, 0, 3); - world.setBlock(x + 12, y + 1, z + 8, Block5, 0, 3); - world.setBlock(x + 13, y + 1, z + 8, Block2, 0, 3); - world.setBlock(x + 14, y + 1, z + 8, Block2, 0, 3); - world.setBlock(x + 15, y + 1, z + 8, Block1, 0, 3); - world.setBlock(x + 16, y + 1, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + 1, z + 9, Block1, 0, 3); - world.setBlock(x + 1, y + 1, z + 9, Block1, 0, 3); - world.setBlock(x + 2, y + 1, z + 9, Block2, 0, 3); - world.setBlock(x + 3, y + 1, z + 9, Block2, 0, 3); - world.setBlock(x + 4, y + 1, z + 9, Block5, 0, 3); - world.setBlock(x + 5, y + 1, z + 9, Block2, 0, 3); - world.setBlock(x + 6, y + 1, z + 9, Block2, 0, 3); - world.setBlock(x + 7, y + 1, z + 9, Blocks.air, 0, 3); - world.setBlock(x + 8, y + 1, z + 9, Blocks.air, 0, 3); - world.setBlock(x + 9, y + 1, z + 9, Blocks.air, 0, 3); - world.setBlock(x + 10, y + 1, z + 9, Block2, 0, 3); - world.setBlock(x + 11, y + 1, z + 9, Block2, 0, 3); - world.setBlock(x + 12, y + 1, z + 9, Block5, 0, 3); - world.setBlock(x + 13, y + 1, z + 9, Block2, 0, 3); - world.setBlock(x + 14, y + 1, z + 9, Block2, 0, 3); - world.setBlock(x + 15, y + 1, z + 9, Block1, 0, 3); - world.setBlock(x + 16, y + 1, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + 1, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 1, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 1, z + 10, Block2, 0, 3); - world.setBlock(x + 3, y + 1, z + 10, Block2, 0, 3); - world.setBlock(x + 4, y + 1, z + 10, Block5, 0, 3); - world.setBlock(x + 5, y + 1, z + 10, Block2, 0, 3); - world.setBlock(x + 6, y + 1, z + 10, Block2, 0, 3); - world.setBlock(x + 7, y + 1, z + 10, Block2, 0, 3); - world.setBlock(x + 8, y + 1, z + 10, Block2, 0, 3); - world.setBlock(x + 9, y + 1, z + 10, Block2, 0, 3); - world.setBlock(x + 10, y + 1, z + 10, Block2, 0, 3); - world.setBlock(x + 11, y + 1, z + 10, Block2, 0, 3); - world.setBlock(x + 12, y + 1, z + 10, Block5, 0, 3); - world.setBlock(x + 13, y + 1, z + 10, Block2, 0, 3); - world.setBlock(x + 14, y + 1, z + 10, Block2, 0, 3); - world.setBlock(x + 15, y + 1, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 1, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 1, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 1, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 1, z + 11, Block2, 0, 3); - world.setBlock(x + 3, y + 1, z + 11, Block2, 0, 3); - world.setBlock(x + 4, y + 1, z + 11, Block5, 0, 3); - world.setBlock(x + 5, y + 1, z + 11, Block5, 0, 3); - world.setBlock(x + 6, y + 1, z + 11, Block2, 0, 3); - world.setBlock(x + 7, y + 1, z + 11, Block2, 0, 3); - world.setBlock(x + 8, y + 1, z + 11, Block2, 0, 3); - world.setBlock(x + 9, y + 1, z + 11, Block2, 0, 3); - world.setBlock(x + 10, y + 1, z + 11, Block2, 0, 3); - world.setBlock(x + 11, y + 1, z + 11, Block5, 0, 3); - world.setBlock(x + 12, y + 1, z + 11, Block5, 0, 3); - world.setBlock(x + 13, y + 1, z + 11, Block2, 0, 3); - world.setBlock(x + 14, y + 1, z + 11, Block2, 0, 3); - world.setBlock(x + 15, y + 1, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 1, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 1, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 1, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 1, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 1, z + 12, Block2, 0, 3); - world.setBlock(x + 4, y + 1, z + 12, Block2, 0, 3); - world.setBlock(x + 5, y + 1, z + 12, Block5, 0, 3); - world.setBlock(x + 6, y + 1, z + 12, Block5, 0, 3); - world.setBlock(x + 7, y + 1, z + 12, Block5, 0, 3); - world.setBlock(x + 8, y + 1, z + 12, Block5, 0, 3); - world.setBlock(x + 9, y + 1, z + 12, Block5, 0, 3); - world.setBlock(x + 10, y + 1, z + 12, Block5, 0, 3); - world.setBlock(x + 11, y + 1, z + 12, Block5, 0, 3); - world.setBlock(x + 12, y + 1, z + 12, Block2, 0, 3); - world.setBlock(x + 13, y + 1, z + 12, Block2, 0, 3); - world.setBlock(x + 14, y + 1, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 1, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 1, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 1, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 1, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 1, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 1, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 1, z + 13, Block2, 0, 3); - world.setBlock(x + 5, y + 1, z + 13, Block2, 0, 3); - world.setBlock(x + 6, y + 1, z + 13, Block2, 0, 3); - world.setBlock(x + 7, y + 1, z + 13, Block2, 0, 3); - world.setBlock(x + 8, y + 1, z + 13, Block2, 0, 3); - world.setBlock(x + 9, y + 1, z + 13, Block2, 0, 3); - world.setBlock(x + 10, y + 1, z + 13, Block2, 0, 3); - world.setBlock(x + 11, y + 1, z + 13, Block2, 0, 3); - world.setBlock(x + 12, y + 1, z + 13, Block2, 0, 3); - world.setBlock(x + 13, y + 1, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 1, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 1, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 1, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 1, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 1, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 1, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 1, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 1, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 1, z + 14, Block2, 0, 3); - world.setBlock(x + 6, y + 1, z + 14, Block2, 0, 3); - world.setBlock(x + 7, y + 1, z + 14, Block2, 0, 3); - world.setBlock(x + 8, y + 1, z + 14, Block2, 0, 3); - world.setBlock(x + 9, y + 1, z + 14, Block2, 0, 3); - world.setBlock(x + 10, y + 1, z + 14, Block2, 0, 3); - world.setBlock(x + 11, y + 1, z + 14, Block2, 0, 3); - world.setBlock(x + 12, y + 1, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 1, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 1, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 1, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 1, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 1, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 1, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 1, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 1, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 1, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 1, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 1, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 1, z + 15, Block1, 0, 3); - world.setBlock(x + 8, y + 1, z + 15, Block1, 0, 3); - world.setBlock(x + 9, y + 1, z + 15, Block1, 0, 3); - world.setBlock(x + 10, y + 1, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 1, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 1, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 1, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 1, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 1, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 1, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 1, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 1, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 1, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 1, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 1, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 1, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 1, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 1, z + 16, Block1, 0, 3); - world.setBlock(x + 8, y + 1, z + 16, Block1, 0, 3); - world.setBlock(x + 9, y + 1, z + 16, Block1, 0, 3); - world.setBlock(x + 10, y + 1, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 1, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 1, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 1, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 1, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 1, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 1, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 2, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 2, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 2, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 2, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 2, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 2, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 2, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 2, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + 2, z + 0, Block6, 2, 3); - world.setBlock(x + 9, y + 2, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + 2, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 2, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 2, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 2, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 2, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 2, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 2, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 2, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 2, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 2, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 2, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 2, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 2, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 2, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 2, z + 1, Block1, 0, 3); - world.setBlock(x + 8, y + 2, z + 1, Block1, 0, 3); - world.setBlock(x + 9, y + 2, z + 1, Block1, 0, 3); - world.setBlock(x + 10, y + 2, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 2, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 2, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 2, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 2, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 2, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 2, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 2, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 2, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 2, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 2, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 2, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 2, z + 2, Block2, 0, 3); - world.setBlock(x + 6, y + 2, z + 2, Block2, 0, 3); - world.setBlock(x + 7, y + 2, z + 2, Block2, 0, 3); - world.setBlock(x + 8, y + 2, z + 2, Block2, 0, 3); - world.setBlock(x + 9, y + 2, z + 2, Block2, 0, 3); - world.setBlock(x + 10, y + 2, z + 2, Block2, 0, 3); - world.setBlock(x + 11, y + 2, z + 2, Block2, 0, 3); - world.setBlock(x + 12, y + 2, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 2, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 2, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 2, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 2, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 2, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 2, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 2, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 2, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 2, z + 3, Block2, 0, 3); - world.setBlock(x + 5, y + 2, z + 3, Block5, 0, 3); - world.setBlock(x + 6, y + 2, z + 3, Block5, 0, 3); - world.setBlock(x + 7, y + 2, z + 3, Block5, 0, 3); - world.setBlock(x + 8, y + 2, z + 3, Block5, 0, 3); - world.setBlock(x + 9, y + 2, z + 3, Block5, 0, 3); - world.setBlock(x + 10, y + 2, z + 3, Block5, 0, 3); - world.setBlock(x + 11, y + 2, z + 3, Block5, 0, 3); - world.setBlock(x + 12, y + 2, z + 3, Block2, 0, 3); - world.setBlock(x + 13, y + 2, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 2, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 2, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 2, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 2, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 2, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 2, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 2, z + 4, Block2, 0, 3); - world.setBlock(x + 4, y + 2, z + 4, Block5, 0, 3); - world.setBlock(x + 5, y + 2, z + 4, Block5, 0, 3); - world.setBlock(x + 6, y + 2, z + 4, Block5, 0, 3); - world.setBlock(x + 7, y + 2, z + 4, Block5, 0, 3); - world.setBlock(x + 8, y + 2, z + 4, Block5, 0, 3); - world.setBlock(x + 9, y + 2, z + 4, Block5, 0, 3); - world.setBlock(x + 10, y + 2, z + 4, Block5, 0, 3); - world.setBlock(x + 11, y + 2, z + 4, Block5, 0, 3); - world.setBlock(x + 12, y + 2, z + 4, Block5, 0, 3); - world.setBlock(x + 13, y + 2, z + 4, Block2, 0, 3); - world.setBlock(x + 14, y + 2, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 2, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 2, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 2, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 2, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 2, z + 5, Block2, 0, 3); - world.setBlock(x + 3, y + 2, z + 5, Block5, 0, 3); - world.setBlock(x + 4, y + 2, z + 5, Block5, 0, 3); - world.setBlock(x + 5, y + 2, z + 5, Block5, 0, 3); - world.setBlock(x + 6, y + 2, z + 5, Block5, 0, 3); - world.setBlock(x + 7, y + 2, z + 5, Block5, 0, 3); - world.setBlock(x + 8, y + 2, z + 5, Block5, 0, 3); - world.setBlock(x + 9, y + 2, z + 5, Block5, 0, 3); - world.setBlock(x + 10, y + 2, z + 5, Block5, 0, 3); - world.setBlock(x + 11, y + 2, z + 5, Block5, 0, 3); - world.setBlock(x + 12, y + 2, z + 5, Block5, 0, 3); - world.setBlock(x + 13, y + 2, z + 5, Block5, 0, 3); - world.setBlock(x + 14, y + 2, z + 5, Block2, 0, 3); - world.setBlock(x + 15, y + 2, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 2, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 2, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 2, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 2, z + 6, Block2, 0, 3); - world.setBlock(x + 3, y + 2, z + 6, Block5, 0, 3); - world.setBlock(x + 4, y + 2, z + 6, Block5, 0, 3); - world.setBlock(x + 5, y + 2, z + 6, Block5, 0, 3); - world.setBlock(x + 6, y + 2, z + 6, Block2, 0, 3); - world.setBlock(x + 7, y + 2, z + 6, Block2, 0, 3); - world.setBlock(x + 8, y + 2, z + 6, Block2, 0, 3); - world.setBlock(x + 9, y + 2, z + 6, Block2, 0, 3); - world.setBlock(x + 10, y + 2, z + 6, Block2, 0, 3); - world.setBlock(x + 11, y + 2, z + 6, Block5, 0, 3); - world.setBlock(x + 12, y + 2, z + 6, Block5, 0, 3); - world.setBlock(x + 13, y + 2, z + 6, Block5, 0, 3); - world.setBlock(x + 14, y + 2, z + 6, Block2, 0, 3); - world.setBlock(x + 15, y + 2, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 2, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 2, z + 7, Block1, 0, 3); - world.setBlock(x + 1, y + 2, z + 7, Block1, 0, 3); - world.setBlock(x + 2, y + 2, z + 7, Block2, 0, 3); - world.setBlock(x + 3, y + 2, z + 7, Block5, 0, 3); - world.setBlock(x + 4, y + 2, z + 7, Block5, 0, 3); - world.setBlock(x + 5, y + 2, z + 7, Block5, 0, 3); - world.setBlock(x + 6, y + 2, z + 7, Block2, 0, 3); - world.setBlock(x + 7, y + 2, z + 7, Blocks.air, 0, 3); - world.setBlock(x + 8, y + 2, z + 7, Blocks.air, 0, 3); - world.setBlock(x + 9, y + 2, z + 7, Blocks.air, 0, 3); - world.setBlock(x + 10, y + 2, z + 7, Block2, 0, 3); - world.setBlock(x + 11, y + 2, z + 7, Block5, 0, 3); - world.setBlock(x + 12, y + 2, z + 7, Block5, 0, 3); - world.setBlock(x + 13, y + 2, z + 7, Block5, 0, 3); - world.setBlock(x + 14, y + 2, z + 7, Block2, 0, 3); - world.setBlock(x + 15, y + 2, z + 7, Block1, 0, 3); - world.setBlock(x + 16, y + 2, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + 2, z + 8, Block6, 4, 3); - world.setBlock(x + 1, y + 2, z + 8, Block1, 0, 3); - world.setBlock(x + 2, y + 2, z + 8, Block2, 0, 3); - world.setBlock(x + 3, y + 2, z + 8, Block5, 0, 3); - world.setBlock(x + 4, y + 2, z + 8, Block5, 0, 3); - world.setBlock(x + 5, y + 2, z + 8, Block5, 0, 3); - world.setBlock(x + 6, y + 2, z + 8, Block2, 0, 3); - world.setBlock(x + 7, y + 2, z + 8, Blocks.air, 0, 3); - world.setBlock(x + 8, y + 2, z + 8, Block7, 0, 3); - world.setBlock(x + 9, y + 2, z + 8, Blocks.air, 0, 3); - world.setBlock(x + 10, y + 2, z + 8, Block2, 0, 3); - world.setBlock(x + 11, y + 2, z + 8, Block5, 0, 3); - world.setBlock(x + 12, y + 2, z + 8, Block5, 0, 3); - world.setBlock(x + 13, y + 2, z + 8, Block5, 0, 3); - world.setBlock(x + 14, y + 2, z + 8, Block2, 0, 3); - world.setBlock(x + 15, y + 2, z + 8, Block1, 0, 3); - world.setBlock(x + 16, y + 2, z + 8, Block6, 5, 3); - world.setBlock(x + 0, y + 2, z + 9, Block1, 0, 3); - world.setBlock(x + 1, y + 2, z + 9, Block1, 0, 3); - world.setBlock(x + 2, y + 2, z + 9, Block2, 0, 3); - world.setBlock(x + 3, y + 2, z + 9, Block5, 0, 3); - world.setBlock(x + 4, y + 2, z + 9, Block5, 0, 3); - world.setBlock(x + 5, y + 2, z + 9, Block5, 0, 3); - world.setBlock(x + 6, y + 2, z + 9, Block2, 0, 3); - world.setBlock(x + 7, y + 2, z + 9, Blocks.air, 0, 3); - world.setBlock(x + 8, y + 2, z + 9, Blocks.air, 0, 3); - world.setBlock(x + 9, y + 2, z + 9, Blocks.air, 0, 3); - world.setBlock(x + 10, y + 2, z + 9, Block2, 0, 3); - world.setBlock(x + 11, y + 2, z + 9, Block5, 0, 3); - world.setBlock(x + 12, y + 2, z + 9, Block5, 0, 3); - world.setBlock(x + 13, y + 2, z + 9, Block5, 0, 3); - world.setBlock(x + 14, y + 2, z + 9, Block2, 0, 3); - world.setBlock(x + 15, y + 2, z + 9, Block1, 0, 3); - world.setBlock(x + 16, y + 2, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + 2, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 2, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 2, z + 10, Block2, 0, 3); - world.setBlock(x + 3, y + 2, z + 10, Block5, 0, 3); - world.setBlock(x + 4, y + 2, z + 10, Block5, 0, 3); - world.setBlock(x + 5, y + 2, z + 10, Block5, 0, 3); - world.setBlock(x + 6, y + 2, z + 10, Block2, 0, 3); - world.setBlock(x + 7, y + 2, z + 10, Block2, 0, 3); - world.setBlock(x + 8, y + 2, z + 10, Block2, 0, 3); - world.setBlock(x + 9, y + 2, z + 10, Block2, 0, 3); - world.setBlock(x + 10, y + 2, z + 10, Block2, 0, 3); - world.setBlock(x + 11, y + 2, z + 10, Block5, 0, 3); - world.setBlock(x + 12, y + 2, z + 10, Block5, 0, 3); - world.setBlock(x + 13, y + 2, z + 10, Block5, 0, 3); - world.setBlock(x + 14, y + 2, z + 10, Block2, 0, 3); - world.setBlock(x + 15, y + 2, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 2, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 2, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 2, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 2, z + 11, Block2, 0, 3); - world.setBlock(x + 3, y + 2, z + 11, Block5, 0, 3); - world.setBlock(x + 4, y + 2, z + 11, Block5, 0, 3); - world.setBlock(x + 5, y + 2, z + 11, Block5, 0, 3); - world.setBlock(x + 6, y + 2, z + 11, Block5, 0, 3); - world.setBlock(x + 7, y + 2, z + 11, Block5, 0, 3); - world.setBlock(x + 8, y + 2, z + 11, Block5, 0, 3); - world.setBlock(x + 9, y + 2, z + 11, Block5, 0, 3); - world.setBlock(x + 10, y + 2, z + 11, Block5, 0, 3); - world.setBlock(x + 11, y + 2, z + 11, Block5, 0, 3); - world.setBlock(x + 12, y + 2, z + 11, Block5, 0, 3); - world.setBlock(x + 13, y + 2, z + 11, Block5, 0, 3); - world.setBlock(x + 14, y + 2, z + 11, Block2, 0, 3); - world.setBlock(x + 15, y + 2, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 2, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 2, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 2, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 2, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 2, z + 12, Block2, 0, 3); - world.setBlock(x + 4, y + 2, z + 12, Block5, 0, 3); - world.setBlock(x + 5, y + 2, z + 12, Block5, 0, 3); - world.setBlock(x + 6, y + 2, z + 12, Block5, 0, 3); - world.setBlock(x + 7, y + 2, z + 12, Block5, 0, 3); - world.setBlock(x + 8, y + 2, z + 12, Block5, 0, 3); - world.setBlock(x + 9, y + 2, z + 12, Block5, 0, 3); - world.setBlock(x + 10, y + 2, z + 12, Block5, 0, 3); - world.setBlock(x + 11, y + 2, z + 12, Block5, 0, 3); - world.setBlock(x + 12, y + 2, z + 12, Block5, 0, 3); - world.setBlock(x + 13, y + 2, z + 12, Block2, 0, 3); - world.setBlock(x + 14, y + 2, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 2, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 2, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 2, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 2, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 2, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 2, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 2, z + 13, Block2, 0, 3); - world.setBlock(x + 5, y + 2, z + 13, Block5, 0, 3); - world.setBlock(x + 6, y + 2, z + 13, Block5, 0, 3); - world.setBlock(x + 7, y + 2, z + 13, Block5, 0, 3); - world.setBlock(x + 8, y + 2, z + 13, Block5, 0, 3); - world.setBlock(x + 9, y + 2, z + 13, Block5, 0, 3); - world.setBlock(x + 10, y + 2, z + 13, Block5, 0, 3); - world.setBlock(x + 11, y + 2, z + 13, Block5, 0, 3); - world.setBlock(x + 12, y + 2, z + 13, Block2, 0, 3); - world.setBlock(x + 13, y + 2, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 2, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 2, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 2, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 2, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 2, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 2, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 2, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 2, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 2, z + 14, Block2, 0, 3); - world.setBlock(x + 6, y + 2, z + 14, Block2, 0, 3); - world.setBlock(x + 7, y + 2, z + 14, Block2, 0, 3); - world.setBlock(x + 8, y + 2, z + 14, Block2, 0, 3); - world.setBlock(x + 9, y + 2, z + 14, Block2, 0, 3); - world.setBlock(x + 10, y + 2, z + 14, Block2, 0, 3); - world.setBlock(x + 11, y + 2, z + 14, Block2, 0, 3); - world.setBlock(x + 12, y + 2, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 2, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 2, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 2, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 2, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 2, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 2, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 2, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 2, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 2, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 2, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 2, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 2, z + 15, Block1, 0, 3); - world.setBlock(x + 8, y + 2, z + 15, Block1, 0, 3); - world.setBlock(x + 9, y + 2, z + 15, Block1, 0, 3); - world.setBlock(x + 10, y + 2, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 2, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 2, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 2, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 2, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 2, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 2, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 2, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 2, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 2, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 2, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 2, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 2, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 2, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 2, z + 16, Block1, 0, 3); - world.setBlock(x + 8, y + 2, z + 16, Block6, 3, 3); - world.setBlock(x + 9, y + 2, z + 16, Block1, 0, 3); - world.setBlock(x + 10, y + 2, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 2, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 2, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 2, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 2, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 2, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 2, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 3, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 3, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 3, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 3, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 3, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 3, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 3, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 3, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + 3, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + 3, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + 3, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 3, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 3, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 3, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 3, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 3, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 3, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 3, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 3, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 3, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 3, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 3, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 3, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 3, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 3, z + 1, Block1, 0, 3); - world.setBlock(x + 8, y + 3, z + 1, Block1, 0, 3); - world.setBlock(x + 9, y + 3, z + 1, Block1, 0, 3); - world.setBlock(x + 10, y + 3, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 3, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 3, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 3, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 3, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 3, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 3, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 3, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 3, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 3, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 3, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 3, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 3, z + 2, Block2, 0, 3); - world.setBlock(x + 6, y + 3, z + 2, Block2, 0, 3); - world.setBlock(x + 7, y + 3, z + 2, Block2, 0, 3); - world.setBlock(x + 8, y + 3, z + 2, Block2, 0, 3); - world.setBlock(x + 9, y + 3, z + 2, Block2, 0, 3); - world.setBlock(x + 10, y + 3, z + 2, Block2, 0, 3); - world.setBlock(x + 11, y + 3, z + 2, Block2, 0, 3); - world.setBlock(x + 12, y + 3, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 3, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 3, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 3, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 3, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 3, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 3, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 3, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 3, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 3, z + 3, Block2, 0, 3); - world.setBlock(x + 5, y + 3, z + 3, Block2, 0, 3); - world.setBlock(x + 6, y + 3, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 3, z + 3, Block2, 0, 3); - world.setBlock(x + 8, y + 3, z + 3, Block2, 0, 3); - world.setBlock(x + 9, y + 3, z + 3, Block2, 0, 3); - world.setBlock(x + 10, y + 3, z + 3, Block2, 0, 3); - world.setBlock(x + 11, y + 3, z + 3, Block2, 0, 3); - world.setBlock(x + 12, y + 3, z + 3, Block2, 0, 3); - world.setBlock(x + 13, y + 3, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 3, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 3, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 3, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 3, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 3, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 3, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 3, z + 4, Block2, 0, 3); - world.setBlock(x + 4, y + 3, z + 4, Block2, 0, 3); - world.setBlock(x + 5, y + 3, z + 4, Block5, 0, 3); - world.setBlock(x + 6, y + 3, z + 4, Block5, 0, 3); - world.setBlock(x + 7, y + 3, z + 4, Block5, 0, 3); - world.setBlock(x + 8, y + 3, z + 4, Block5, 0, 3); - world.setBlock(x + 9, y + 3, z + 4, Block5, 0, 3); - world.setBlock(x + 10, y + 3, z + 4, Block5, 0, 3); - world.setBlock(x + 11, y + 3, z + 4, Block5, 0, 3); - world.setBlock(x + 12, y + 3, z + 4, Block2, 0, 3); - world.setBlock(x + 13, y + 3, z + 4, Block2, 0, 3); - world.setBlock(x + 14, y + 3, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 3, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 3, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 3, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 3, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 3, z + 5, Block2, 0, 3); - world.setBlock(x + 3, y + 3, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 3, z + 5, Block5, 0, 3); - world.setBlock(x + 5, y + 3, z + 5, Block5, 0, 3); - world.setBlock(x + 6, y + 3, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 3, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 3, z + 5, Block2, 0, 3); - world.setBlock(x + 9, y + 3, z + 5, Block2, 0, 3); - world.setBlock(x + 10, y + 3, z + 5, Block2, 0, 3); - world.setBlock(x + 11, y + 3, z + 5, Block5, 0, 3); - world.setBlock(x + 12, y + 3, z + 5, Block5, 0, 3); - world.setBlock(x + 13, y + 3, z + 5, Block2, 0, 3); - world.setBlock(x + 14, y + 3, z + 5, Block2, 0, 3); - world.setBlock(x + 15, y + 3, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 3, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 3, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 3, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 3, z + 6, Block2, 0, 3); - world.setBlock(x + 3, y + 3, z + 6, Block2, 0, 3); - world.setBlock(x + 4, y + 3, z + 6, Block5, 0, 3); - world.setBlock(x + 5, y + 3, z + 6, Block2, 0, 3); - world.setBlock(x + 6, y + 3, z + 6, Block2, 0, 3); - world.setBlock(x + 7, y + 3, z + 6, Block2, 0, 3); - world.setBlock(x + 8, y + 3, z + 6, Block2, 0, 3); - world.setBlock(x + 9, y + 3, z + 6, Block2, 0, 3); - world.setBlock(x + 10, y + 3, z + 6, Block2, 0, 3); - world.setBlock(x + 11, y + 3, z + 6, Block2, 0, 3); - world.setBlock(x + 12, y + 3, z + 6, Block5, 0, 3); - world.setBlock(x + 13, y + 3, z + 6, Block2, 0, 3); - world.setBlock(x + 14, y + 3, z + 6, Block2, 0, 3); - world.setBlock(x + 15, y + 3, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 3, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 3, z + 7, Block1, 0, 3); - world.setBlock(x + 1, y + 3, z + 7, Block1, 0, 3); - world.setBlock(x + 2, y + 3, z + 7, Block2, 0, 3); - world.setBlock(x + 3, y + 3, z + 7, Block2, 0, 3); - world.setBlock(x + 4, y + 3, z + 7, Block5, 0, 3); - world.setBlock(x + 5, y + 3, z + 7, Block2, 0, 3); - world.setBlock(x + 6, y + 3, z + 7, Block2, 0, 3); - world.setBlock(x + 7, y + 3, z + 7, Blocks.air, 0, 3); - world.setBlock(x + 8, y + 3, z + 7, Blocks.air, 0, 3); - world.setBlock(x + 9, y + 3, z + 7, Blocks.air, 0, 3); - world.setBlock(x + 10, y + 3, z + 7, Block2, 0, 3); - world.setBlock(x + 11, y + 3, z + 7, Block2, 0, 3); - world.setBlock(x + 12, y + 3, z + 7, Block5, 0, 3); - world.setBlock(x + 13, y + 3, z + 7, Block2, 0, 3); - world.setBlock(x + 14, y + 3, z + 7, Block2, 0, 3); - world.setBlock(x + 15, y + 3, z + 7, Block1, 0, 3); - world.setBlock(x + 16, y + 3, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + 3, z + 8, Block1, 0, 3); - world.setBlock(x + 1, y + 3, z + 8, Block1, 0, 3); - world.setBlock(x + 2, y + 3, z + 8, Block2, 0, 3); - world.setBlock(x + 3, y + 3, z + 8, Block2, 0, 3); - world.setBlock(x + 4, y + 3, z + 8, Block5, 0, 3); - world.setBlock(x + 5, y + 3, z + 8, Block2, 0, 3); - world.setBlock(x + 6, y + 3, z + 8, Block2, 0, 3); - world.setBlock(x + 7, y + 3, z + 8, Blocks.air, 0, 3); - world.setBlock(x + 8, y + 3, z + 8, Block4, 0, 3); - world.setBlock(x + 9, y + 3, z + 8, Blocks.air, 0, 3); - world.setBlock(x + 10, y + 3, z + 8, Block2, 0, 3); - world.setBlock(x + 11, y + 3, z + 8, Block2, 0, 3); - world.setBlock(x + 12, y + 3, z + 8, Block5, 0, 3); - world.setBlock(x + 13, y + 3, z + 8, Block2, 0, 3); - world.setBlock(x + 14, y + 3, z + 8, Block2, 0, 3); - world.setBlock(x + 15, y + 3, z + 8, Block1, 0, 3); - world.setBlock(x + 16, y + 3, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + 3, z + 9, Block1, 0, 3); - world.setBlock(x + 1, y + 3, z + 9, Block1, 0, 3); - world.setBlock(x + 2, y + 3, z + 9, Block2, 0, 3); - world.setBlock(x + 3, y + 3, z + 9, Block2, 0, 3); - world.setBlock(x + 4, y + 3, z + 9, Block5, 0, 3); - world.setBlock(x + 5, y + 3, z + 9, Block2, 0, 3); - world.setBlock(x + 6, y + 3, z + 9, Block2, 0, 3); - world.setBlock(x + 7, y + 3, z + 9, Blocks.air, 0, 3); - world.setBlock(x + 8, y + 3, z + 9, Blocks.air, 0, 3); - world.setBlock(x + 9, y + 3, z + 9, Blocks.air, 0, 3); - world.setBlock(x + 10, y + 3, z + 9, Block2, 0, 3); - world.setBlock(x + 11, y + 3, z + 9, Block2, 0, 3); - world.setBlock(x + 12, y + 3, z + 9, Block5, 0, 3); - world.setBlock(x + 13, y + 3, z + 9, Block2, 0, 3); - world.setBlock(x + 14, y + 3, z + 9, Block2, 0, 3); - world.setBlock(x + 15, y + 3, z + 9, Block1, 0, 3); - world.setBlock(x + 16, y + 3, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + 3, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 3, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 3, z + 10, Block2, 0, 3); - world.setBlock(x + 3, y + 3, z + 10, Block2, 0, 3); - world.setBlock(x + 4, y + 3, z + 10, Block5, 0, 3); - world.setBlock(x + 5, y + 3, z + 10, Block2, 0, 3); - world.setBlock(x + 6, y + 3, z + 10, Block2, 0, 3); - world.setBlock(x + 7, y + 3, z + 10, Block2, 0, 3); - world.setBlock(x + 8, y + 3, z + 10, Block2, 0, 3); - world.setBlock(x + 9, y + 3, z + 10, Block2, 0, 3); - world.setBlock(x + 10, y + 3, z + 10, Block2, 0, 3); - world.setBlock(x + 11, y + 3, z + 10, Block2, 0, 3); - world.setBlock(x + 12, y + 3, z + 10, Block5, 0, 3); - world.setBlock(x + 13, y + 3, z + 10, Block2, 0, 3); - world.setBlock(x + 14, y + 3, z + 10, Block2, 0, 3); - world.setBlock(x + 15, y + 3, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 3, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 3, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 3, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 3, z + 11, Block2, 0, 3); - world.setBlock(x + 3, y + 3, z + 11, Block2, 0, 3); - world.setBlock(x + 4, y + 3, z + 11, Block5, 0, 3); - world.setBlock(x + 5, y + 3, z + 11, Block5, 0, 3); - world.setBlock(x + 6, y + 3, z + 11, Block2, 0, 3); - world.setBlock(x + 7, y + 3, z + 11, Block2, 0, 3); - world.setBlock(x + 8, y + 3, z + 11, Block2, 0, 3); - world.setBlock(x + 9, y + 3, z + 11, Block2, 0, 3); - world.setBlock(x + 10, y + 3, z + 11, Block2, 0, 3); - world.setBlock(x + 11, y + 3, z + 11, Block5, 0, 3); - world.setBlock(x + 12, y + 3, z + 11, Block5, 0, 3); - world.setBlock(x + 13, y + 3, z + 11, Block2, 0, 3); - world.setBlock(x + 14, y + 3, z + 11, Block2, 0, 3); - world.setBlock(x + 15, y + 3, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 3, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 3, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 3, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 3, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 3, z + 12, Block2, 0, 3); - world.setBlock(x + 4, y + 3, z + 12, Block2, 0, 3); - world.setBlock(x + 5, y + 3, z + 12, Block5, 0, 3); - world.setBlock(x + 6, y + 3, z + 12, Block5, 0, 3); - world.setBlock(x + 7, y + 3, z + 12, Block5, 0, 3); - world.setBlock(x + 8, y + 3, z + 12, Block5, 0, 3); - world.setBlock(x + 9, y + 3, z + 12, Block5, 0, 3); - world.setBlock(x + 10, y + 3, z + 12, Block5, 0, 3); - world.setBlock(x + 11, y + 3, z + 12, Block5, 0, 3); - world.setBlock(x + 12, y + 3, z + 12, Block2, 0, 3); - world.setBlock(x + 13, y + 3, z + 12, Block2, 0, 3); - world.setBlock(x + 14, y + 3, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 3, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 3, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 3, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 3, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 3, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 3, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 3, z + 13, Block2, 0, 3); - world.setBlock(x + 5, y + 3, z + 13, Block2, 0, 3); - world.setBlock(x + 6, y + 3, z + 13, Block2, 0, 3); - world.setBlock(x + 7, y + 3, z + 13, Block2, 0, 3); - world.setBlock(x + 8, y + 3, z + 13, Block2, 0, 3); - world.setBlock(x + 9, y + 3, z + 13, Block2, 0, 3); - world.setBlock(x + 10, y + 3, z + 13, Block2, 0, 3); - world.setBlock(x + 11, y + 3, z + 13, Block2, 0, 3); - world.setBlock(x + 12, y + 3, z + 13, Block2, 0, 3); - world.setBlock(x + 13, y + 3, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 3, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 3, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 3, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 3, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 3, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 3, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 3, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 3, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 3, z + 14, Block2, 0, 3); - world.setBlock(x + 6, y + 3, z + 14, Block2, 0, 3); - world.setBlock(x + 7, y + 3, z + 14, Block2, 0, 3); - world.setBlock(x + 8, y + 3, z + 14, Block2, 0, 3); - world.setBlock(x + 9, y + 3, z + 14, Block2, 0, 3); - world.setBlock(x + 10, y + 3, z + 14, Block2, 0, 3); - world.setBlock(x + 11, y + 3, z + 14, Block2, 0, 3); - world.setBlock(x + 12, y + 3, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 3, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 3, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 3, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 3, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 3, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 3, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 3, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 3, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 3, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 3, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 3, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 3, z + 15, Block1, 0, 3); - world.setBlock(x + 8, y + 3, z + 15, Block1, 0, 3); - world.setBlock(x + 9, y + 3, z + 15, Block1, 0, 3); - world.setBlock(x + 10, y + 3, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 3, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 3, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 3, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 3, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 3, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 3, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 3, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 3, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 3, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 3, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 3, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 3, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 3, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 3, z + 16, Block1, 0, 3); - world.setBlock(x + 8, y + 3, z + 16, Block1, 0, 3); - world.setBlock(x + 9, y + 3, z + 16, Block1, 0, 3); - world.setBlock(x + 10, y + 3, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 3, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 3, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 3, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 3, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 3, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 3, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 4, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 4, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 4, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 4, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 4, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 4, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 4, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 4, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + 4, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + 4, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + 4, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 4, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 4, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 4, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 4, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 4, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 4, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 4, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 4, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 4, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 4, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 4, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 4, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 4, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 4, z + 1, Block1, 0, 3); - world.setBlock(x + 8, y + 4, z + 1, Block1, 0, 3); - world.setBlock(x + 9, y + 4, z + 1, Block1, 0, 3); - world.setBlock(x + 10, y + 4, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 4, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 4, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 4, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 4, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 4, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 4, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 4, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 4, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 4, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 4, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 4, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 4, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 4, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 4, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 8, y + 4, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 9, y + 4, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 10, y + 4, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 4, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 4, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 4, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 4, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 4, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 4, z + 2, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 4, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 4, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 4, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 4, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 4, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 4, z + 3, Block2, 0, 3); - world.setBlock(x + 6, y + 4, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 4, z + 3, Block2, 0, 3); - world.setBlock(x + 8, y + 4, z + 3, Block2, 0, 3); - world.setBlock(x + 9, y + 4, z + 3, Block2, 0, 3); - world.setBlock(x + 10, y + 4, z + 3, Block2, 0, 3); - world.setBlock(x + 11, y + 4, z + 3, Block2, 0, 3); - world.setBlock(x + 12, y + 4, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 4, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 4, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 4, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 4, z + 3, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 4, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 4, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 4, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 4, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 4, z + 4, Block2, 0, 3); - world.setBlock(x + 5, y + 4, z + 4, Block2, 0, 3); - world.setBlock(x + 6, y + 4, z + 4, Block2, 0, 3); - world.setBlock(x + 7, y + 4, z + 4, Block2, 0, 3); - world.setBlock(x + 8, y + 4, z + 4, Block2, 0, 3); - world.setBlock(x + 9, y + 4, z + 4, Block2, 0, 3); - world.setBlock(x + 10, y + 4, z + 4, Block2, 0, 3); - world.setBlock(x + 11, y + 4, z + 4, Block2, 0, 3); - world.setBlock(x + 12, y + 4, z + 4, Block2, 0, 3); - world.setBlock(x + 13, y + 4, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 4, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 4, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 4, z + 4, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 4, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 4, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 4, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 4, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 4, z + 5, Block2, 0, 3); - world.setBlock(x + 5, y + 4, z + 5, Block2, 0, 3); - world.setBlock(x + 6, y + 4, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 4, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 4, z + 5, Block2, 0, 3); - world.setBlock(x + 9, y + 4, z + 5, Block2, 0, 3); - world.setBlock(x + 10, y + 4, z + 5, Block2, 0, 3); - world.setBlock(x + 11, y + 4, z + 5, Block2, 0, 3); - world.setBlock(x + 12, y + 4, z + 5, Block2, 0, 3); - world.setBlock(x + 13, y + 4, z + 5, Block2, 0, 3); - world.setBlock(x + 14, y + 4, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 4, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 4, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 4, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 4, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 4, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 4, z + 6, Block2, 0, 3); - world.setBlock(x + 4, y + 4, z + 6, Block2, 0, 3); - world.setBlock(x + 5, y + 4, z + 6, Block2, 0, 3); - world.setBlock(x + 6, y + 4, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 4, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 8, y + 4, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 9, y + 4, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 10, y + 4, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 4, z + 6, Block2, 0, 3); - world.setBlock(x + 12, y + 4, z + 6, Block2, 0, 3); - world.setBlock(x + 13, y + 4, z + 6, Block2, 0, 3); - world.setBlock(x + 14, y + 4, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 4, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 4, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 4, z + 7, Block1, 0, 3); - world.setBlock(x + 1, y + 4, z + 7, Block1, 0, 3); - world.setBlock(x + 2, y + 4, z + 7, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 4, z + 7, Block2, 0, 3); - world.setBlock(x + 4, y + 4, z + 7, Block2, 0, 3); - world.setBlock(x + 5, y + 4, z + 7, Block2, 0, 3); - world.setBlock(x + 6, y + 4, z + 7, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 4, z + 7, Block3, 0, 3); - world.setBlock(x + 8, y + 4, z + 7, Block3, 0, 3); - world.setBlock(x + 9, y + 4, z + 7, Block3, 0, 3); - world.setBlock(x + 10, y + 4, z + 7, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 4, z + 7, Block2, 0, 3); - world.setBlock(x + 12, y + 4, z + 7, Block2, 0, 3); - world.setBlock(x + 13, y + 4, z + 7, Block2, 0, 3); - world.setBlock(x + 14, y + 4, z + 7, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 4, z + 7, Block1, 0, 3); - world.setBlock(x + 16, y + 4, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + 4, z + 8, Block1, 0, 3); - world.setBlock(x + 1, y + 4, z + 8, Block1, 0, 3); - world.setBlock(x + 2, y + 4, z + 8, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 4, z + 8, Block2, 0, 3); - world.setBlock(x + 4, y + 4, z + 8, Block2, 0, 3); - world.setBlock(x + 5, y + 4, z + 8, Block2, 0, 3); - world.setBlock(x + 6, y + 4, z + 8, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 4, z + 8, Block3, 0, 3); - world.setBlock(x + 8, y + 4, z + 8, Block4, 0, 3); - world.setBlock(x + 9, y + 4, z + 8, Block3, 0, 3); - world.setBlock(x + 10, y + 4, z + 8, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 4, z + 8, Block2, 0, 3); - world.setBlock(x + 12, y + 4, z + 8, Block2, 0, 3); - world.setBlock(x + 13, y + 4, z + 8, Block2, 0, 3); - world.setBlock(x + 14, y + 4, z + 8, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 4, z + 8, Block1, 0, 3); - world.setBlock(x + 16, y + 4, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + 4, z + 9, Block1, 0, 3); - world.setBlock(x + 1, y + 4, z + 9, Block1, 0, 3); - world.setBlock(x + 2, y + 4, z + 9, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 4, z + 9, Block2, 0, 3); - world.setBlock(x + 4, y + 4, z + 9, Block2, 0, 3); - world.setBlock(x + 5, y + 4, z + 9, Block2, 0, 3); - world.setBlock(x + 6, y + 4, z + 9, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 4, z + 9, Block3, 0, 3); - world.setBlock(x + 8, y + 4, z + 9, Block3, 0, 3); - world.setBlock(x + 9, y + 4, z + 9, Block3, 0, 3); - world.setBlock(x + 10, y + 4, z + 9, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 4, z + 9, Block2, 0, 3); - world.setBlock(x + 12, y + 4, z + 9, Block2, 0, 3); - world.setBlock(x + 13, y + 4, z + 9, Block2, 0, 3); - world.setBlock(x + 14, y + 4, z + 9, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 4, z + 9, Block1, 0, 3); - world.setBlock(x + 16, y + 4, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + 4, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 4, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 4, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 4, z + 10, Block2, 0, 3); - world.setBlock(x + 4, y + 4, z + 10, Block2, 0, 3); - world.setBlock(x + 5, y + 4, z + 10, Block2, 0, 3); - world.setBlock(x + 6, y + 4, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 4, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 8, y + 4, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 9, y + 4, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 10, y + 4, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 4, z + 10, Block2, 0, 3); - world.setBlock(x + 12, y + 4, z + 10, Block2, 0, 3); - world.setBlock(x + 13, y + 4, z + 10, Block2, 0, 3); - world.setBlock(x + 14, y + 4, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 4, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 4, z + 10, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 4, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 4, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 4, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 4, z + 11, Block2, 0, 3); - world.setBlock(x + 4, y + 4, z + 11, Block2, 0, 3); - world.setBlock(x + 5, y + 4, z + 11, Block2, 0, 3); - world.setBlock(x + 6, y + 4, z + 11, Block2, 0, 3); - world.setBlock(x + 7, y + 4, z + 11, Block2, 0, 3); - world.setBlock(x + 8, y + 4, z + 11, Block2, 0, 3); - world.setBlock(x + 9, y + 4, z + 11, Block2, 0, 3); - world.setBlock(x + 10, y + 4, z + 11, Block2, 0, 3); - world.setBlock(x + 11, y + 4, z + 11, Block2, 0, 3); - world.setBlock(x + 12, y + 4, z + 11, Block2, 0, 3); - world.setBlock(x + 13, y + 4, z + 11, Block2, 0, 3); - world.setBlock(x + 14, y + 4, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 4, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 4, z + 11, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 4, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 4, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 4, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 4, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 4, z + 12, Block2, 0, 3); - world.setBlock(x + 5, y + 4, z + 12, Block2, 0, 3); - world.setBlock(x + 6, y + 4, z + 12, Block2, 0, 3); - world.setBlock(x + 7, y + 4, z + 12, Block2, 0, 3); - world.setBlock(x + 8, y + 4, z + 12, Block2, 0, 3); - world.setBlock(x + 9, y + 4, z + 12, Block2, 0, 3); - world.setBlock(x + 10, y + 4, z + 12, Block2, 0, 3); - world.setBlock(x + 11, y + 4, z + 12, Block2, 0, 3); - world.setBlock(x + 12, y + 4, z + 12, Block2, 0, 3); - world.setBlock(x + 13, y + 4, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 4, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 4, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 4, z + 12, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 4, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 4, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 4, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 4, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 4, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 4, z + 13, Block2, 0, 3); - world.setBlock(x + 6, y + 4, z + 13, Block2, 0, 3); - world.setBlock(x + 7, y + 4, z + 13, Block2, 0, 3); - world.setBlock(x + 8, y + 4, z + 13, Block2, 0, 3); - world.setBlock(x + 9, y + 4, z + 13, Block2, 0, 3); - world.setBlock(x + 10, y + 4, z + 13, Block2, 0, 3); - world.setBlock(x + 11, y + 4, z + 13, Block2, 0, 3); - world.setBlock(x + 12, y + 4, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 4, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 4, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 4, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 4, z + 13, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 4, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 4, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 4, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 4, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 4, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 4, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 4, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 4, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 8, y + 4, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 9, y + 4, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 10, y + 4, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 4, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 4, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 4, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 4, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 4, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 4, z + 14, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 4, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 4, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 4, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 4, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 4, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 4, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 4, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 4, z + 15, Block1, 0, 3); - world.setBlock(x + 8, y + 4, z + 15, Block1, 0, 3); - world.setBlock(x + 9, y + 4, z + 15, Block1, 0, 3); - world.setBlock(x + 10, y + 4, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 4, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 4, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 4, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 4, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 4, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 4, z + 15, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 4, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 4, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 4, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 3, y + 4, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 4, y + 4, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 5, y + 4, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 4, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 7, y + 4, z + 16, Block1, 0, 3); - world.setBlock(x + 8, y + 4, z + 16, Block1, 0, 3); - world.setBlock(x + 9, y + 4, z + 16, Block1, 0, 3); - world.setBlock(x + 10, y + 4, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 11, y + 4, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 12, y + 4, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 13, y + 4, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 14, y + 4, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 15, y + 4, z + 16, Blocks.air, 0, 3); - world.setBlock(x + 16, y + 4, z + 16, Blocks.air, 0, 3); - return true; - - } - -} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index ea1dee654..86d84c60e 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -256,6 +256,7 @@ container.fluidtank=Tank container.forceField=Kraftfeldgenerator container.frackingTower=Hydraulischer Frackingturm container.furnaceIron=Eiserner Ofen +container.furnaceSteel=Stahlofen container.fusionMultiblock=Großer Fusionsreaktor container.fusionaryWatzPlant=Fusionares Watzwerk container.gasCentrifuge=Gaszentrifuge @@ -3249,6 +3250,7 @@ tile.factory_titanium_hull.name=Einfache Fabrikshülle tile.fallout.name=Fallout tile.fence_metal.name=Maschendrahtzaun tile.fire_digamma.name=Verweilendes Digamma +tile.fire_door.name=Brandschutztür tile.fireworks.name=Feuerwerksbatterie tile.fireworks.charges=Ladungen: %s tile.fireworks.message=Nachricht: %s @@ -3264,6 +3266,7 @@ tile.frozen_grass.name=Gefrorenes Gras tile.frozen_log.name=Gefrorener Baumstamm tile.frozen_planks.name=Gefrorene Holzbretter tile.furnace_iron.name=Eiserner Ofen +tile.furnace_steel.name=Stahlofen tile.fusion_center.name=Zentralmagnetstück tile.fusion_conductor.name=Supraleiter-Magnet tile.fusion_core.name=Fusionsreaktorsteuerung diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 51654a4ef..c2e822c66 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -446,6 +446,7 @@ container.fluidtank=Tank container.forceField=Forcefield Emitter container.frackingTower=Hydraulic Fracking Tower container.furnaceIron=Iron Furnace +container.furnaceSteel=Steel Furnace container.fusionMultiblock=Big Fusion Reactor container.fusionaryWatzPlant=Fusionary Watz Plant container.gasCentrifuge=Gas Centrifuge @@ -3676,6 +3677,7 @@ tile.factory_titanium_hull.name=Basic Factory Casing tile.fallout.name=Fallout tile.fence_metal.name=Chainlink Fence tile.fire_digamma.name=Lingering Digamma +tile.fire_door.name=Fire Door tile.fireworks.name=Firework Battery tile.fireworks.charges=Charges Loaded: %s tile.fireworks.message=Message: %s @@ -3691,10 +3693,13 @@ tile.frozen_grass.name=Frozen Grass tile.frozen_log.name=Frozen Log tile.frozen_planks.name=Frozen Planks tile.furnace_iron.name=Iron Furnace +tile.furnace_iron.desc=Larger and more efficient furnace,$does not waste fuel when idle. +tile.furnace_steel.name=Steel Furnace +tile.furnace_steel.desc=Very large furnace that can provide bonus items$when smelting ores. Requires external heat source. tile.fusion_center.name=Central Magnet Piece tile.fusion_conductor.name=Superconducting Magnet tile.fusion_core.name=Fusion Reactor Control -tile.fusion_hatch.name=Fusion Reactor Access Hatch +tile.fusion_hatch.name=Duct Deco Block tile.fusion_heater.name=Plasma Heater Component tile.fusion_motor.name=Magnet Motor Piece tile.fwatz_computer.name=Fusionary Watz Reactor Calculation Matrix @@ -3757,6 +3762,7 @@ tile.hadron_power_1g.name=Particle Accelerator Power Plug (1GHE) tile.hadron_power_10g.name=Particle Accelerator Power Plug (10GHE) tile.hazmat.name=Hazmat Cloth Block tile.heater_firebox.name=Firebox +tile.heater_firebox.desc=Burns solid fuel to produce heat. tile.hev_battery.name=Suit Battery tile.iter.name=Fusion Reactor tile.ladder_aluminium.name=Aluminium Ladder diff --git a/src/main/resources/assets/hbm/models/doors/fire_door.obj b/src/main/resources/assets/hbm/models/doors/fire_door.obj new file mode 100644 index 000000000..d837ad85b --- /dev/null +++ b/src/main/resources/assets/hbm/models/doors/fire_door.obj @@ -0,0 +1,464 @@ +# Blender v2.92.0 OBJ File: 'fire_door.blend' +# www.blender.org +o frame +v 0.500000 3.000000 -2.000000 +v 0.500000 0.000000 -2.000000 +v 0.500000 0.000000 2.000000 +v 0.500000 3.000000 2.000000 +v 0.250000 0.062500 1.375000 +v 0.250000 2.750000 1.375000 +v 0.250000 0.062500 -1.375000 +v 0.250000 2.750000 -1.375000 +v 0.353298 0.062500 1.375000 +v 0.500000 0.000000 1.521702 +v 0.500000 2.804434 1.521702 +v 0.353298 2.750000 1.375000 +v 0.353298 0.062500 -1.375000 +v 0.500000 0.000000 -1.521702 +v 0.500000 2.804434 -1.521702 +v 0.353298 2.750000 -1.375000 +v 0.250000 0.012500 1.500000 +v 0.250000 2.812500 1.500000 +v 0.250000 0.012500 -1.500000 +v 0.250000 2.812500 -1.500000 +v -0.500000 3.000000 -2.000000 +v -0.500000 0.000000 -2.000000 +v -0.500000 0.000000 2.000000 +v -0.500000 3.000000 2.000000 +v -0.250000 0.062500 1.375000 +v -0.250000 2.750000 1.375000 +v -0.250000 0.062500 -1.375000 +v -0.250000 2.750000 -1.375000 +v -0.353298 0.062500 1.375000 +v -0.500000 0.000000 1.521702 +v -0.500000 2.804434 1.521702 +v -0.353298 2.750000 1.375000 +v -0.353298 0.062500 -1.375000 +v -0.500000 0.000000 -1.521702 +v -0.500000 2.804434 -1.521702 +v -0.353298 2.750000 -1.375000 +v -0.250000 0.012500 1.500000 +v -0.250000 2.812500 1.500000 +v -0.250000 0.012500 -1.500000 +v -0.250000 2.812500 -1.500000 +vt 0.129307 0.159244 +vt 0.426242 0.108600 +vt 0.426242 0.159243 +vt 0.426242 0.481480 +vt 0.532123 0.159243 +vt 0.827926 0.884298 +vt 0.537562 0.895205 +vt 0.537562 0.884298 +vt 0.960877 0.286483 +vt 0.949970 0.002720 +vt 0.960877 0.002720 +vt 0.982663 0.002720 +vt 0.993570 0.286481 +vt 0.982663 0.286481 +vt 0.491082 0.933805 +vt 0.480175 0.643442 +vt 0.491082 0.643442 +vt 0.129307 0.481479 +vt 0.426242 0.532122 +vt 0.108601 0.532122 +vt 0.108600 0.108601 +vt 0.474735 0.932486 +vt 0.461537 0.643442 +vt 0.474735 0.648722 +vt 0.390106 0.650041 +vt 0.376907 0.939085 +vt 0.376907 0.643442 +vt 0.997280 0.739973 +vt 0.991983 0.436547 +vt 0.997280 0.449735 +vt 0.410591 0.457749 +vt 0.142598 0.458801 +vt 0.413384 0.180867 +vt 0.145950 0.183841 +vt 0.324114 0.939085 +vt 0.921869 0.436547 +vt 0.869076 0.753308 +vt 0.869076 0.436547 +vt 0.939205 0.753215 +vt 0.991983 0.753216 +vt 0.862476 0.449745 +vt 0.862476 0.740110 +vt 0.426242 0.638003 +vt 0.002720 0.532122 +vt 0.857037 0.862513 +vt 0.558388 0.811578 +vt 0.857037 0.811578 +vt 0.496521 0.933804 +vt 0.507428 0.643442 +vt 0.507428 0.933804 +vt 0.966317 0.286481 +vt 0.977224 0.002720 +vt 0.977224 0.286481 +vt 0.512868 0.927206 +vt 0.523775 0.643442 +vt 0.523775 0.927206 +vt 0.827926 0.878859 +vt 0.537562 0.867952 +vt 0.827926 0.867952 +vt 0.558389 0.487482 +vt 0.857037 0.436547 +vt 0.857037 0.487481 +vt 0.537562 0.862512 +vt 0.408744 0.643442 +vt 0.395545 0.932486 +vt 0.395545 0.648722 +vt 0.310915 0.650041 +vt 0.310915 0.933806 +vt 0.939206 0.436547 +vt 0.933908 0.740024 +vt 0.933908 0.449789 +vt 0.840939 0.511629 +vt 0.571917 0.510031 +vt 0.843798 0.789097 +vt 0.921869 0.753308 +vt 0.928468 0.449745 +vt 0.928468 0.740110 +vt 0.108600 0.002720 +vt 0.426242 0.002720 +vt 0.408744 0.939085 +vt 0.461537 0.939085 +vt 0.532123 0.108601 +vt 0.532123 0.481480 +vt 0.532123 0.532122 +vt 0.827926 0.895205 +vt 0.949970 0.286483 +vt 0.993570 0.002720 +vt 0.480175 0.933805 +vt 0.390106 0.933806 +vt 0.324114 0.643442 +vt 0.108601 0.638003 +vt 0.002720 0.108601 +vt 0.496521 0.643442 +vt 0.966316 0.002720 +vt 0.512867 0.643442 +vt 0.537562 0.878859 +vt 0.537562 0.436547 +vt 0.574725 0.786781 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.2381 0.9712 0.0000 +vn -0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.2108 -0.9775 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.7071 0.0000 0.7071 +vn 0.3919 0.9200 0.0000 +vn 0.3479 -0.9375 0.0000 +vn 0.7071 0.0000 -0.7071 +vn -0.2381 0.9712 0.0000 +vn -0.2108 -0.9775 0.0000 +vn -0.7071 0.0000 0.7071 +vn -0.3919 0.9200 0.0000 +vn -0.3479 -0.9375 0.0000 +vn -0.7071 0.0000 -0.7071 +s 1 +f 11/1/1 3/2/1 10/3/1 +f 14/4/2 10/3/2 30/5/2 +f 5/6/3 13/7/4 7/8/3 +f 6/9/5 9/10/5 5/11/5 +f 7/12/6 16/13/6 8/14/6 +f 8/15/2 12/16/7 6/17/2 +f 15/18/1 2/19/1 1/20/1 +f 15/18/1 4/21/1 11/1/1 +f 8/22/8 19/23/8 7/24/8 +f 6/25/8 17/26/8 18/27/8 +f 7/28/8 17/29/8 5/30/8 +f 13/31/9 15/18/9 16/32/9 +f 14/4/10 9/33/4 10/3/10 +f 11/1/11 16/32/7 15/18/11 +f 11/1/12 9/33/12 12/34/12 +f 37/35/5 18/27/5 17/26/5 +f 38/36/2 20/37/2 18/38/2 +f 39/39/3 17/29/3 19/40/3 +f 6/41/8 20/37/8 8/42/8 +f 22/43/5 1/20/5 2/19/5 +f 21/44/3 4/21/3 1/20/3 +f 23/45/8 31/46/8 30/47/8 +f 33/48/13 25/49/3 27/50/3 +f 29/51/5 26/52/5 25/53/5 +f 36/54/6 27/55/6 28/56/6 +f 32/57/14 28/58/2 26/59/2 +f 35/60/8 22/61/8 34/62/8 +f 24/63/8 35/60/8 31/46/8 +f 39/64/1 28/65/1 27/66/1 +f 26/67/1 37/35/1 25/68/1 +f 37/69/1 27/70/1 25/71/1 +f 35/60/15 33/72/15 36/73/15 +f 29/74/13 34/62/16 30/47/16 +f 36/73/14 31/46/17 35/60/17 +f 31/46/18 29/74/18 30/47/18 +f 40/75/1 26/76/1 28/77/1 +f 3/2/6 24/78/6 23/79/6 +f 40/80/6 19/23/6 20/81/6 +f 11/1/1 4/21/1 3/2/1 +f 10/3/2 3/2/2 23/82/2 +f 30/5/2 34/83/2 14/4/2 +f 34/83/2 22/84/2 14/4/2 +f 10/3/2 23/82/2 30/5/2 +f 22/84/2 2/19/2 14/4/2 +f 5/6/3 9/85/4 13/7/4 +f 6/9/5 12/86/5 9/10/5 +f 7/12/6 13/87/6 16/13/6 +f 8/15/2 16/88/7 12/16/7 +f 15/18/1 14/4/1 2/19/1 +f 15/18/1 1/20/1 4/21/1 +f 8/22/8 20/81/8 19/23/8 +f 6/25/8 5/89/8 17/26/8 +f 7/28/8 19/40/8 17/29/8 +f 13/31/9 14/4/9 15/18/9 +f 14/4/10 13/31/4 9/33/4 +f 11/1/11 12/34/7 16/32/7 +f 11/1/12 10/3/12 9/33/12 +f 37/35/5 38/90/5 18/27/5 +f 38/36/2 40/75/2 20/37/2 +f 39/39/3 37/69/3 17/29/3 +f 6/41/8 18/38/8 20/37/8 +f 22/43/5 21/91/5 1/20/5 +f 21/44/3 24/92/3 4/21/3 +f 23/45/8 24/63/8 31/46/8 +f 33/48/13 29/93/13 25/49/3 +f 29/51/5 32/94/5 26/52/5 +f 36/54/6 33/95/6 27/55/6 +f 32/57/14 36/96/14 28/58/2 +f 35/60/8 21/97/8 22/61/8 +f 24/63/8 21/97/8 35/60/8 +f 39/64/1 40/80/1 28/65/1 +f 26/67/1 38/90/1 37/35/1 +f 37/69/1 39/39/1 27/70/1 +f 35/60/15 34/62/15 33/72/15 +f 29/74/13 33/72/13 34/62/16 +f 36/73/14 32/98/14 31/46/17 +f 31/46/18 32/98/18 29/74/18 +f 40/75/1 38/36/1 26/76/1 +f 3/2/6 4/21/6 24/78/6 +f 40/80/6 39/64/6 19/23/6 +o door +v 0.250000 0.183959 -1.121300 +v 0.250000 2.621650 -1.138101 +v 0.250000 2.621650 -0.055236 +v 0.250000 0.183959 -0.072037 +v 0.250000 0.012500 -1.500000 +v 0.250000 2.812500 -1.500000 +v 0.187500 0.233959 -1.071471 +v 0.187500 2.571650 -1.087928 +v 0.187500 0.233959 -0.121866 +v 0.187500 2.571650 -0.105409 +v 0.250000 0.012500 -0.072037 +v 0.250000 2.812500 -0.055236 +v -0.250000 0.183959 -1.121300 +v -0.250000 2.621650 -1.138101 +v -0.250000 2.621650 -0.055236 +v -0.250000 0.183959 -0.072037 +v -0.250000 0.012500 -1.500000 +v -0.250000 2.812500 -1.500000 +v -0.187500 0.233959 -1.071471 +v -0.187500 2.571650 -1.087928 +v -0.187500 0.233959 -0.121866 +v -0.187500 2.571650 -0.105409 +v -0.250000 0.012500 -0.072037 +v -0.250000 2.812500 -0.055236 +v 0.250000 0.183959 1.121300 +v 0.250000 2.621650 1.138101 +v 0.250000 2.621650 0.055236 +v 0.250000 0.183959 0.072037 +v 0.250000 0.012500 1.500000 +v 0.250000 2.812500 1.500000 +v 0.187500 0.233959 1.071471 +v 0.187500 2.571650 1.087928 +v 0.187500 0.233959 0.121866 +v 0.187500 2.571650 0.105409 +v 0.250000 0.012500 0.072037 +v 0.250000 2.812500 0.055236 +v -0.250000 0.183959 1.121300 +v -0.250000 2.621650 1.138101 +v -0.250000 2.621650 0.055236 +v -0.250000 0.183959 0.072037 +v -0.250000 0.012500 1.500000 +v -0.250000 2.812500 1.500000 +v -0.187500 0.233959 1.071471 +v -0.187500 2.571650 1.087928 +v -0.187500 0.233959 0.121866 +v -0.187500 2.571650 0.105409 +v -0.250000 0.012500 0.072037 +v -0.250000 2.812500 0.055236 +vt 0.870543 0.095027 +vt 0.591111 0.056268 +vt 0.890982 0.056268 +vt 0.890982 0.002720 +vt 0.591111 0.002720 +vt 0.890982 0.210998 +vt 0.870543 0.210998 +vt 0.862101 0.203752 +vt 0.619145 0.104447 +vt 0.861533 0.102468 +vt 0.609474 0.096826 +vt 0.618040 0.201958 +vt 0.609473 0.209199 +vt 0.591111 0.209199 +vt 0.591111 0.377559 +vt 0.890982 0.431107 +vt 0.591111 0.431107 +vt 0.944530 0.210998 +vt 0.944530 0.222829 +vt 0.890982 0.222829 +vt 0.284839 0.928692 +vt 0.002720 0.967823 +vt 0.021259 0.926875 +vt 0.870543 0.222829 +vt 0.305475 0.811605 +vt 0.284840 0.811605 +vt 0.030947 0.919265 +vt 0.276182 0.818924 +vt 0.275848 0.921133 +vt 0.030066 0.820598 +vt 0.021259 0.813422 +vt 0.002720 0.813422 +vt 0.284840 0.799660 +vt 0.870543 0.338800 +vt 0.609473 0.337001 +vt 0.619105 0.329409 +vt 0.862137 0.230055 +vt 0.861490 0.331345 +vt 0.618095 0.231869 +vt 0.609473 0.224628 +vt 0.591111 0.224628 +vt 0.284840 0.682573 +vt 0.002720 0.643442 +vt 0.305476 0.643442 +vt 0.305475 0.799660 +vt 0.276134 0.792335 +vt 0.030993 0.692044 +vt 0.275893 0.690099 +vt 0.021259 0.684390 +vt 0.030002 0.790657 +vt 0.021259 0.797844 +vt 0.002720 0.797843 +vt 0.537562 0.224628 +vt 0.890982 0.377559 +vt 0.944530 0.377559 +vt 0.944530 0.056268 +vt 0.305476 0.967823 +vt 0.537562 0.377559 +vt 0.537562 0.209198 +vt 0.537562 0.056268 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.6260 0.0055 0.7798 +vn 0.6234 0.0054 0.7819 +vn 0.6261 0.0055 0.7798 +vn 0.6247 -0.7809 0.0000 +vn 0.6247 0.7809 0.0000 +vn 0.6260 0.0055 -0.7798 +vn 0.6234 0.0054 -0.7819 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 -0.0000 0.0000 +vn -0.6260 0.0055 0.7798 +vn -0.6234 0.0054 0.7819 +vn -0.6247 -0.7809 0.0000 +vn -0.6247 0.7809 0.0000 +vn -0.6234 0.0054 -0.7819 +vn -0.6260 0.0055 -0.7798 +vn -0.6261 0.0055 -0.7798 +vn 0.0000 -1.0000 0.0000 +vn 0.6261 0.0055 -0.7798 +vn -0.6261 0.0055 0.7798 +s 1 +f 42/99/19 45/100/19 46/101/19 +f 58/102/20 45/100/20 57/103/20 +f 42/99/19 52/104/19 43/105/19 +f 50/106/19 47/107/19 48/108/19 +f 41/109/21 48/108/22 47/107/23 +f 50/106/24 42/99/24 43/105/24 +f 41/109/25 49/110/25 44/111/25 +f 44/111/26 50/106/27 43/105/27 +f 41/109/19 51/112/19 45/100/19 +f 69/113/28 82/114/28 81/115/28 +f 64/116/29 88/117/29 76/118/29 +f 54/119/30 57/120/30 53/121/30 +f 44/111/19 43/105/19 67/122/19 +f 64/123/30 54/119/30 55/124/30 +f 59/125/30 62/126/30 60/127/30 +f 53/121/31 60/127/32 54/119/32 +f 54/119/33 62/126/33 55/124/33 +f 61/128/34 53/121/34 56/129/34 +f 62/126/35 56/129/36 55/124/35 +f 53/121/30 63/130/30 56/129/30 +f 79/131/30 64/123/30 55/124/30 +f 66/132/19 69/113/19 65/133/19 +f 76/118/19 66/132/19 67/122/19 +f 71/134/19 74/135/19 72/136/19 +f 65/133/26 72/136/27 66/132/27 +f 66/132/24 74/135/24 67/122/24 +f 73/137/25 65/133/25 68/138/25 +f 74/135/22 68/138/21 67/122/22 +f 65/133/19 75/139/19 68/138/19 +f 78/140/30 81/141/30 82/142/30 +f 78/140/30 88/143/30 79/131/30 +f 86/144/30 83/145/30 84/146/30 +f 77/147/36 84/146/35 83/145/37 +f 86/144/33 78/140/33 79/131/33 +f 77/147/34 85/148/34 80/149/34 +f 80/149/31 86/144/32 79/131/32 +f 77/147/30 87/150/30 81/141/30 +f 51/112/38 75/139/38 87/151/38 +f 42/99/19 41/109/19 45/100/19 +f 58/102/20 46/101/20 45/100/20 +f 42/99/19 46/101/19 52/104/19 +f 50/106/19 49/110/19 47/107/19 +f 41/109/21 42/99/22 48/108/22 +f 50/106/24 48/108/24 42/99/24 +f 41/109/25 47/107/25 49/110/25 +f 44/111/26 49/110/39 50/106/27 +f 41/109/19 44/111/19 51/112/19 +f 69/113/28 70/152/28 82/114/28 +f 88/117/29 82/153/29 70/152/29 +f 76/118/29 52/104/29 64/116/29 +f 52/104/29 46/101/29 64/116/29 +f 88/117/29 70/152/29 76/118/29 +f 46/101/29 58/154/29 64/116/29 +f 54/119/30 58/155/30 57/120/30 +f 43/105/19 52/104/19 76/118/19 +f 67/122/19 68/138/19 44/111/19 +f 68/138/19 75/139/19 51/112/19 +f 43/105/19 76/118/19 67/122/19 +f 51/112/19 44/111/19 68/138/19 +f 64/123/30 58/155/30 54/119/30 +f 59/125/30 61/128/30 62/126/30 +f 53/121/31 59/125/40 60/127/32 +f 54/119/33 60/127/33 62/126/33 +f 61/128/34 59/125/34 53/121/34 +f 62/126/35 61/128/37 56/129/36 +f 53/121/30 57/120/30 63/130/30 +f 56/129/30 63/130/30 87/150/30 +f 87/150/30 80/149/30 56/129/30 +f 80/149/30 79/131/30 55/124/30 +f 79/131/30 88/143/30 64/123/30 +f 55/124/30 56/129/30 80/149/30 +f 66/132/19 70/152/19 69/113/19 +f 76/118/19 70/152/19 66/132/19 +f 71/134/19 73/137/19 74/135/19 +f 65/133/26 71/134/39 72/136/27 +f 66/132/24 72/136/24 74/135/24 +f 73/137/25 71/134/25 65/133/25 +f 74/135/22 73/137/23 68/138/21 +f 65/133/19 69/113/19 75/139/19 +f 78/140/30 77/147/30 81/141/30 +f 78/140/30 82/142/30 88/143/30 +f 86/144/30 85/148/30 83/145/30 +f 77/147/36 78/140/35 84/146/35 +f 86/144/33 84/146/33 78/140/33 +f 77/147/34 83/145/34 85/148/34 +f 80/149/31 85/148/40 86/144/32 +f 77/147/30 80/149/30 87/150/30 +f 75/139/38 69/113/38 81/156/38 +f 87/151/38 63/157/38 51/112/38 +f 63/157/38 57/158/38 51/112/38 +f 75/139/38 81/156/38 87/151/38 +f 57/158/38 45/100/38 51/112/38 diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index cb6d4f4b3..7a6d5f244 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -46,6 +46,9 @@ "block.closeC": {"category": "block", "sounds": ["block/closeC1", "block/closeC2", "block/closeC3"]}, "door.TransitionSealOpen": {"category": "block", "sounds": [{"name": "block/door/transition_seal_open", "stream": true}]}, + "door.wghStart": {"category": "block", "sounds": [{"name": "block/door/wgh_start", "stream": true}]}, + "door.wghStop": {"category": "block", "sounds": [{"name": "block/door/wgh_stop", "stream": true}]}, + "door.alarm6": {"category": "block", "sounds": [{"name": "block/door/alarm6", "stream": true}]}, "item.techBleep": {"category": "player", "sounds": [{"name": "tool/techBleep", "stream": false}]}, "item.techBoop": {"category": "player", "sounds": [{"name": "tool/techBoop", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/sounds/block/door/alarm6.ogg b/src/main/resources/assets/hbm/sounds/block/door/alarm6.ogg new file mode 100644 index 0000000000000000000000000000000000000000..7985e49d90d456bccbf2164b027c021aec03f932 GIT binary patch literal 23197 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

7zi76wu(`GCm=6dajQK3|Ygy~xBPU>nM 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/block/door/wgh_stop.ogg b/src/main/resources/assets/hbm/sounds/block/door/wgh_stop.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d3dc57207b30c98bc22932d081c008a181719600 GIT binary patch literal 29927 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 DNQ75T literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_bl.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_bl.png new file mode 100644 index 0000000000000000000000000000000000000000..364922eadfd1f83ae3351fa6043318c236619231 GIT binary patch literal 465 zcmV;?0WSWDP)8800000NkvXX Hu0mjf0D#j- literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_br.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_br.png new file mode 100644 index 0000000000000000000000000000000000000000..d9aa43f6d2657aeb1dfb09c203fa5ca52c817519 GIT binary patch literal 440 zcmV;p0Z0CcP)fD{QFY>1r?$IK;KcPw16hfI0)TQd zF?#yNG3{0pS&0$-WE$xe^wozTstz}K>h%bmka2==1z7b-6pctCvp&KVh$yKtV-48v zqVkX=QTFyqA~%|zE13O3m}xceK5)WY!?PPO{*(B-N#MlWrdg;A^&tO}ByeN3l~w$R z1fepc$c$ocZHK^#>yrjPwJ=%!l}WDE#~%39A|CEL@4G$4($*g4?v~EYI|P|ltT00e&Z__J^0+TcxP$=0000mgu?QV} z8G;}}ad2^~P=$k12L&gkIM`miKP`3WrGudKCV!A6@OeVQ6Nh42hdWbQ)kvk0S|gNZ zRk;k33FE|&8$+HL@~_!Cx_WQ`gbfG-#lguL@k_-0?F~}fH zs-By3pmfOSGBT|8K= zRDgA2Rk>9B052#PV4WBw6J$Ih_1sbc)`?k3TrzK|RDg9NH-=0)WU`dUI*})4-mqT# zV)1~&iTumVd*G(&;sJ$on)_SR(Dzsiyi!+)-aZL^565o&+i&~^Wlq7jTl8vp00000 LNkvXXu0mjf)^)Q^ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_tr.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_tr.png new file mode 100644 index 0000000000000000000000000000000000000000..62520968b6247147cfbba1fa809c4154eca54339 GIT binary patch literal 483 zcmV<90UZ8`P)@2ji6t1+f z6Kq7V@NY;f1T92t>>?Krf{^O)5G1A$c4l^G=Qd~Itp?)e?EK)t@R;BGJ{~gx=X!Bx za3(tn87ZVvh)B_kS}cl+)57Ad#TOQz|Eh!0rvO0I1NuqCt;f$X$5TGOe~VNxVVoe1 z#@iO94A_741amy)^~+~9Mlig8<7}=A_I56D_1bl2lQI3vyM%E{J4tamqcj<%&gk!6 zVKy1la*lbHGuH)M`}ZCoI|_i4=@H%THcdL29?_8@gM+8koH!f}k&yzbMzB^pP63#I zc*SfoMn(#;jJJ_KgJrf64wLlv`Nv{G%?YVuL{Wil9uUUqT2HzqqNosIoY1odY(wm1 z9R>(pMb8>UX*7$XV&^ZHoNi84bHZE0X|Zl!n$0_@IZ+yow-%xmc!Tq50&gu_gPXVU zD+!#*F08$~52-nEI2z(}3*GiVIm4fK;B$-k_T?)+ca%n4OrGoWyElB-4xc-My7}LJ Z<4@mf1G7bGcC`Qi002ovPDHLkV1j5q(>MSC literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_end.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_end.png new file mode 100644 index 0000000000000000000000000000000000000000..95f1df83fc410f0a3ab2bcceaf85557f44fe786b GIT binary patch literal 619 zcmV-x0+juUP)1+x>}L z(8xq1wMHbGP7-sT2YhaD#^7>;yQuc#H=h~+Vw#}aO4!o|P*%-J|6k_(#t zU_c}lD@)f{Z7;IAbe&%N2EFA))|T7!mX}!Tc38jJW__hgaF(r|7sv&Tkcnn=G^}54 z(rYgwRFhaKV$~#;^{Es>HTm}AC&78LlVfC}iKNz)X}h{8g5Vsbx3x|hArg($ z>Fn=wVQUG_QhJZnDIyOvHv#7L1Cy5c~c|d04TJ8C8aF*Z- zO6RfJnDaa!sv(K1R!KP@wgtgDg10!6;d6s<#$aXRiU$9OFEy~)7-tNT%MG_TH|img zb75}_g0D0fJbH@D4Z>X*Mn^;9q(eOGb9Jc_tS;Nx8ZIb(H3#m((Ad3yXVOiZB)9I? zB6&(*m02b6gnwi2DV?R=j5*5+8dFoedU$Wr9}E~B4Jp(1%uLl^Gi)~I_T~noqamkX zzw_YrhpTQp8|UmF99DLAe-L?~W3nrD-ak03?Oe><_!oHqaw%Ee1g`)9002ovPDHLk FV1kUu79jut literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction.png new file mode 100644 index 0000000000000000000000000000000000000000..c4b7ac1e69053af524016fa203c116348e36fc70 GIT binary patch literal 352 zcmV-m0iXVfP)}uhpEHx?rqeM9@}f*cww` zkb6gPj^G_3D{JrOF#$*bw%6BYMCk1HDM@;*=IrG?r87Jyos2o{p3F71`$N*nn8TxE zR+pF1rY=Cr+uaq<5BIEyo(rhv08Cxb#tHy~i_tI+ovT{Ix~4i#KHAUKB#f7l>+hYDEeB z_YkZUq`0^#Xd#PJp<5lB+$Q(7)uC-{(0~unAI@_A|9sQ=3oLbWa_}X}65&dOlvu9B zmJ+QL(^z4Y!o&(QS=W@35I0ZnWC$AD?D+X%|N0N&4$^uZBqG*vSkXg%}l~qmcU2{|u8q w0AWn0+gsGxjIrVwc0A40xzp_}>-+=w28}s)7*CPh=>Px#07*qoM6N<$g734PEC2ui literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver.png new file mode 100644 index 0000000000000000000000000000000000000000..63002d4480a3fdb8f983faf5adcccb25e33921f9 GIT binary patch literal 1394 zcmV-&1&#WNP)}7=9|DX>+W#6>2J4aS#Woe}aNT9lLdN7QqgJi-Y3k zBsw_PL05;n6a-hnDbQJmT2UGlYa7xZQRp4K@A=Z0q_OdG`M&QyaA?}*Ip=+!oO9kM zCxBnr+1cqXE-pe*6v(m+#uy@z2sBNDuItb=4RdpIP!t8#Y88ivhXI%{C|{rsYPA|J zFE1fU5}ux(pzAts&1Mt2uH*9Zl7F{iP<~)%XQx}M)i5(N^QlueyuQAoR;vL3VzC%T zM@Kz#HBH0w^D|rheSO`R+h{ZZ0E{u@ z^LYrxViA%g@f#wMNZ(FMr4kfH;XL|2Jw5Hp(=?4=OOk|AsRTimWjsAS_1xG`iMO{m zn0b$nk4UG}t{lpoz!<~h<0Ayd7<64ntJUhcp`Q{ov8Xe*`^}jXBuN5e3_>Ilu?+xl zSHc`XBocAF*P1zjf);3D&}Gf&gBo_XXY0ooe`T9<)9!0~1~3C-)7Iy1xTBjgGU z4-dN%tV);_2!%orMUnsKWjX7*j!-Csp{1oI+nvo0nx;Y1G%PPKgLutm6S-Ut^Yinz zN;!deLa|tModZ@h8V$bgiAUe#@wn%HbX`ZORKifTTIC94vsui~&pVQ`*(@@d46d%O zK)hzNiDIz`K@dFi0dO9ldH>sLIMnZ1{cdmtVzC&nYKo$Kk}wnsVSRlas;Z(;D17Q@ zP=1deSXfwqq9{nG(|mhvG#bz}4UI+vV`F1b6a|7H*!lsl{8p>Q{lHKzmjh!A08lQM zT}x`YTt++|$Li`Th(~ojlgW7E3&Mx!j()%mw7m}M2h4Ew19mWPuY>pjEBg8YGwce> zSNwn-Joy2@xv+Tk15WVd2b{bB;LQ)Xp|2n4SK0dcfqroH18$j{19b8OUf}2lsOGyh zH$ULktP1q_f%o@!PniR7^aHfXcvYZODj~4Bx!JAP>qw@C6|Ib&$zY5UB!NEcIEA@PDZ!bWZ z$6_%&JUjpZL{UUA82r@eclx}&y+y57>$PNGspka77#0^70RV|a0*OQdn4Fx%)YKGGsT5MF6b!>aKA-<6MvkL-gd|B&6a}IvLKHEOU9SgPU8s-A1R=fngYYp7;)cX1iSg;c%E|-)^^g>vTGN zrTBgXG~2BKm}PIb+i0~~JOINmKt9B`0#u640aypOW^Whm?cx$jee&IUwLoP+-VU7XJ+ezH&}%g&!^t!0So59sF>40Dl#rERK$ju(r0=m$19Li|y@g z0N zDtTU6##61pU`y7==LhiLanVWN_rKpX#uyPoz|Ui{uIr-auIsRE8^&>b1^_@+RUZM% zvS6NP7-QZ6B__vlz*-CM{W+k-L`1;Me*-?56afHW-}loz5tRXS^J_3OM5GLGW}*hy zQh+uQ5!$vz(=^{1Jeue~c)J7rVe7h{Hfw#FCZv>}4PuO$Y^{ZeKt%Fci73}oN*IRW u0^kk^A;38YV+_3aVCFpZ&7E_3t#Jd)6{9`nr7}MN0000 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_bl.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_bl.png new file mode 100644 index 0000000000000000000000000000000000000000..cbfc0f89779f381ef29dd409f6b202002c9f0ab4 GIT binary patch literal 380 zcmV-?0fYXDP)JdDHx9O?}a24n! ziejN)NVd+xNhvdvjkOl%9M)Pkn+?Vo zE|&|Z(X_~TFESM^5EnU}1O!l7oUzNGXRKpOQQ# zP)a=swARe$^GV5L0*QQrRfuT1k44ge}wPaHwTB`g4BtDQA?Hlq5T3RaJuoB7>Xh0MT zv78hsa>bpIq9ft1x{+M0?HP@1ufjK+bB`>`;JrtZB#5F2)>;q|m>EQb!{Gq$J^H@K z>2y*6phX~rfTn3+jKMgLVCE&R*DIJAP17uIfpX40LI_CH6o0`qO$Z@CozLe-S(b?7 z82kPHSLEaIh+!B|mL+su*D%H`MQiP*K-;$P-oqFJog@jyaeQjna&o`lAv_&L5ttdb z+wG}o%ZUtDTWePZwwx>ivgcR0TrR75;c3~cQtG7$5&g&sZ*j2O?OqD3IT7ARp65@O z^$tV?B0^CV5T35<`t1zXoX8z8Gj!kgivzi^uIpCGQm?8C^E`jePKy8b8$SUqkq0La S-fT$#00001pw7)GB#U?U+bA_vF`oI_&y&Y-5v_IB0O6FBBgU9DKsY5ODa$h3psK3fKpHlVW0pbNw!4A! zKuYqi!8A=2m&@hpoWnVnb%opQhI5WWHva85z5tuC!oMG83_Ab-002ovPDHLkV1g=y BmP-Ht literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_tr.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_tr.png new file mode 100644 index 0000000000000000000000000000000000000000..2db7357582442b8c68ebf2766d0fac8e38fe0fa3 GIT binary patch literal 395 zcmV;60d)R}P)YjWY_V%L%YV0@WQ}F}&5UNo5kFckmlvfJQc9ZEIfwWD&ZcP^0f^wB)9J8U zttg5DV+=|uwAR#hjdPB6yUk*;pePE`Gz}QhdcD4sWyx?jWIP^YjA1kyp|vJS60Eh< zb&a)_UayBS1|bAhRZ*5Dt=VjbQVM`P&lwB`JX4p pf7!-cZ8jSYhr@U6!r{OD#xIdn46_xTi9i4V002ovPDHLkV1nSXsYU<* literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_end.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_end.png new file mode 100644 index 0000000000000000000000000000000000000000..b0cb42c950711a9aeb4a8766504a75223f1c8424 GIT binary patch literal 495 zcmVJSwFyj^jscn#KbF-wGs2g1W9D zrGyXyj4{MX0rk399foOyWL{9+hM=oBhPc>c@AR?>beGF3_hh4LI@B-KnOvW zWeCIY4N(-i=j-(ftu>^Spp^crfOGE3TaxFPrU_bW7-L+YR<_&U1fnQ%*{5l8&{{jE zeB14%z`X2fn(%x+oq#b0aU4S_g_TkY!!W!FEXm94#u#Vs$__^m1YhsG%x(qjK>2n^ zmf63N|E!=W3TNZ|&P(!K;BYwnRv?7Hdc6iA#Q8iYe1nt{N-6l`IHK!1aL#eN-C&Gy zKN({_ptS}7G);qX9O2oeIGs+fvMeEl0O$N;nTBCNQ4|nDpzAuE&*%4T?E4;V+k#Sx l$KwH|l!JAuZCm$l&kvk~cgHIeRT}^R002ovPDHLkV1iD|*_r?V literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction.png new file mode 100644 index 0000000000000000000000000000000000000000..2ce589063c2ea0a9f230271fccf6192732858ee5 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfIhXMEf8ImO#M64pK~Jth%&HNJS38gl}}tYte-Uf7m<%;NdG&o+_MS_POMTkJEf ze9x(Pp;WdsHn@v};dtSO_tv4IdwD&|8I+td*Rm$ed)}YcP#U{)9XCU^uB+0Ci5&qd zO)|CZ3dd&13M4NHxcY`6^shh5z3N-r{$@zEHST*~&vD9Sg48sxPt)UOuUHjdv24qe aeV>`dV|v1$Uv38Zox#)9&t;ucLK6T_V{fJa literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_straight.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_straight.png new file mode 100644 index 0000000000000000000000000000000000000000..d8a5699bffe768d019e13de63bf108aff606fcc3 GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfd2hQ(=db}! z!8u3G(w@DnsgX(Z(j}5Fl*+aUocJu$V<;ea$)xw|B8^24`uNvu&6vd&9+5p!kq~k2zh8;-1atg^Aw@l`}I#B#pT@=E8n{=yG202spGhd%f@~0e@AXur@iG` pLQi6(SjGFt*5@L!W&gALN4>9Jd-%|#-9Udbc)I$ztaD0e0svN{b?pEE literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/fire_door.png b/src/main/resources/assets/hbm/textures/blocks/fire_door.png new file mode 100644 index 0000000000000000000000000000000000000000..2db79c30832601e2ed582b88a7dc57d71cf445b7 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfF@koW4fvqVfx#LtS@ge~d( zUAZr6n%ER>X8_q@c5%$-cJ46P^XO611j{lWZF$)Q6%|QI$vNj*86!;OED9PXE_ig1 apTRxaYWlng4^yC989ZJ6T-G@yGywphD^ec- literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/fluid_duct_box.png b/src/main/resources/assets/hbm/textures/blocks/fluid_duct_box.png new file mode 100644 index 0000000000000000000000000000000000000000..20195b7c9889babfed726b48ce9b157670fdc76a GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfKUb*-5l4lWE0Qzl727m7#?ZC$1G+$OZL>ev(^Ck}>&*SnUTJn(_t@K{<d{_qd6t$n|UFN@$PTBO;M|>*$*sfovZvy`rf&Fk(;>E*4hAl!QkoY=d#Wz Gp$PyFmuO4? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/doors/fire_door.png b/src/main/resources/assets/hbm/textures/models/doors/fire_door.png new file mode 100644 index 0000000000000000000000000000000000000000..b753e0a04704c31615723ca8bcbd86e7d68a45cf GIT binary patch literal 72927 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 BF<<}y literal 0 HcmV?d00001