diff --git a/changelog b/changelog index 76672bd58..6fb4ecbcd 100644 --- a/changelog +++ b/changelog @@ -1,36 +1,22 @@ -## Added -* Satellite radar relay - * Can be linked to a death ray - * Allows the death ray to be used with the radar's targeting system -* Combinator funnel - * Has 9 input and 9 output slots - * Will automatically do single ingredient 2x2 or 3x3 recipes like compressing ingots into blocks at up to 9 operations per tick - * Input is strictly on the top and output on the bottom - * The side acts as an output for the ingredients as a way to de-clog the funnel from leftover materials - ## Changed -* Updated russian localization -* Nerfed scrap and dust even further -* Tiny dusts now shred into the generic tiny dust instead of scrap -* Tiny dust now shreds into more tiny dust, just like dust shreds into dust -* Updated the strange stone's texture to be more blatant about what it is -* Added more OC compat for the RBMK console -* Inverted large door's redstone behavior to be in line with vanilla iron doors -* The FEL now has a humming sound when it is active -* Updated the gadget's model - * The wires will not render on the fast graphic setting for performance reasons -* Remade Lil'Pipsqueak - * Now features proper animations for drawing the weapon, firing and reloading, as well as new sounds - * Comes with a new and improved 3D model as well as a cylinder gap flash when firing - * Is now part of the red room loot pool -* Powder box recipes now produce 8 boxes from the same amount of ingredients, making cyclotron recipes more affordable -* Buffed the radiation-powered engine, all valid fuels now produce 10x more energy per tick -* Removed tungsten and HSS bolts as dedicated items, they are now a single bolt item that uses the autogen system - * Regular steel is now also a valid bolt material which will replace tungsten in many recipes where tungsten just doesn't make sense - * Bolts Are now 1/8 of an ingot instead of 1/2 which makes some recipes marginally cheaper, as well as making them equal to GregTech bolts - * Bolts are oredicted and interchangeable, as well as recycleable in the crucible +* Nuclear craters have been reworked + * The fallout effect no longer creates dead grass, instead it converts the area into three new biomes, the outer crater, crater and inner crater + * The entire crater is now slaked sellafite which now has texture variance to look more like debris, as well as getting darker towards the center + * The biomes being overridden means that nukes are now a solution to thaumcraft taint. Yay! + * There are now new ore variants for the block conversions which match the surrounding sellafite + * Berylliumm ore now has a 100% chance of being converted into emerald +* The watz now cools up to 20% of its current heat level instead of 10%, making reactors a lot cooler and therefore react faster, which means more energy and faster depletion rates + * Mud production rates have been halved, to prevent currently working setups from exploding instantly + * This is your reminder that you can achieve more power, mud and depletion by building larger watz powerplants, i.e. stacking more watz segments on top of each other. Your tiny poo reactors make me sick. +* Watz pellets now have a 50% smaller yield, halving the expected time until depletion +* Adjusted the nuclear flash's intensity, the flash will now deal less and less radiation the longer it goes on +* The nuclear flash now bypasses radiation resistance, being only affected by blocks and distance +* Mushroom clouds' initial scale is now based on the total scale instead of all spawning roughly at the same size, causing fireballs to be comically small for huge bombs +* Removed the old mining drill, combustion generator, old watz core, structure marker, all old large reactor parts and CMB furnace for good ## Fixed -* Fixed afterburn upgrades not being craftable with bakelite -* Fixed bismuth block not being properly oredicted -* Powder detectors that are used in the same network as diodes should now be somewhat less wrong \ No newline at end of file +* Fixed a rare crash caused by radars force-loading chunks conflicting with certain mods' chunk loading changes +* Fixed PWR fuel rods not having any radiation value assigned to them +* Fixed trenchmaster helmet not having gas mask protection +* Fixed large thermobaric artillery rocket still using the wrong slag block +* Fixed some of the assembly templates having broken names due to using the wrong way of translating the output diff --git a/gradle.properties b/gradle.properties index 5c90623a5..e134592d6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4824 +mod_build_number=4837 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/com/hbm/blocks/IBlockMultiPass.java b/src/main/java/com/hbm/blocks/IBlockMultiPass.java index da8739558..c5140f394 100644 --- a/src/main/java/com/hbm/blocks/IBlockMultiPass.java +++ b/src/main/java/com/hbm/blocks/IBlockMultiPass.java @@ -11,4 +11,7 @@ public interface IBlockMultiPass { return renderID; } + public default boolean shouldRenderItemMulti() { + return false; + } } diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index f67d7a6f0..c7ecebe51 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -534,12 +534,10 @@ public class ModBlocks { public static Block sellafield_slaked; public static Block sellafield; - /*public static Block sellafield_0; - public static Block sellafield_1; - public static Block sellafield_2; - public static Block sellafield_3; - public static Block sellafield_4; - public static Block sellafield_core;*/ + public static Block ore_sellafield_diamond; + public static Block ore_sellafield_emerald; + public static Block ore_sellafield_uranium_scorched; + public static Block ore_sellafield_schrabidium; public static Block geysir_water; public static Block geysir_chlorine; @@ -631,8 +629,6 @@ public class ModBlocks { public static Block tesla; - public static Block marker_structure; - public static Block muffler; public static Block sat_mapper; @@ -664,7 +660,6 @@ public class ModBlocks { public static Block nuke_custom; public static Block nuke_solinium; public static Block nuke_n2; - public static Block nuke_n45; public static Block nuke_fstbmb; public static Block bomb_multi; @@ -784,8 +779,6 @@ public class ModBlocks { public static Block capacitor_tantalium; public static Block capacitor_schrabidate; - @Deprecated public static Block machine_coal_off; - @Deprecated public static Block machine_coal_on; public static Block machine_wood_burner; public static Block red_wire_coated; @@ -909,14 +902,6 @@ public class ModBlocks { public static Block pwr_port; public static Block pwr_controller; public static Block pwr_block; - - @Deprecated public static Block reactor_element; - @Deprecated public static Block reactor_control; - @Deprecated public static Block reactor_hatch; - @Deprecated public static Block reactor_ejector; - @Deprecated public static Block reactor_inserter; - @Deprecated public static Block reactor_conductor; - @Deprecated public static Block reactor_computer; public static Block fusion_conductor; public static Block fusion_center; @@ -936,9 +921,7 @@ public class ModBlocks { public static Block watz_control; public static Block watz_cooler; public static Block watz_end; - public static Block watz_hatch; public static Block watz_conductor; - public static Block watz_core; public static Block fwatz_conductor; public static Block fwatz_cooler; @@ -977,8 +960,6 @@ public class ModBlocks { public static Block machine_shredder_large; public static final int guiID_machine_shredder_large = 76; - public static Block machine_combine_factory; - public static Block machine_teleporter; public static Block teleanchor; public static Block field_disturber; @@ -1036,10 +1017,7 @@ public class ModBlocks { public static Block machine_deaerator; public static final int guiID_machine_deaerator = 74; - public static Block machine_drill; - public static Block drill_pipe; public static Block machine_excavator; - public static Block machine_autosaw; public static Block machine_mining_laser; @@ -1174,7 +1152,8 @@ public class ModBlocks { public static Block rail_large_straight; public static Block rail_large_straight_short; public static Block rail_large_curve; - public static Block rail_large_curve_wide; + public static Block rail_large_curve_7; + public static Block rail_large_curve_9; public static Block rail_large_ramp; public static Block rail_large_buffer; public static Block rail_large_switch; @@ -1260,8 +1239,6 @@ public class ModBlocks { public static Block volcano_core; - public static Block dummy_block_drill; - public static Block dummy_port_drill; public static Block dummy_block_ams_limiter; public static Block dummy_port_ams_limiter; public static Block dummy_block_ams_emitter; @@ -1286,8 +1263,6 @@ public class ModBlocks { public static Block pink_double_slab; public static Block pink_stairs; - public static Block ff; - public static Material materialGas = new MaterialGas(); private static void initializeBlock() { @@ -1776,14 +1751,12 @@ public class ModBlocks { sand_dirty_red = new BlockFalling(Material.sand).setBlockName("sand_dirty_red").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_dirty_red"); stone_cracked = new BlockFalling(Material.rock).setBlockName("stone_cracked").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":stone_cracked"); - sellafield_slaked = new BlockGeneric(Material.rock).setBlockName("sellafield_slaked").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_slaked"); + sellafield_slaked = new BlockSellafieldSlaked(Material.rock).setBlockName("sellafield_slaked").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_slaked"); sellafield = new BlockSellafield(Material.rock).setBlockName("sellafield").setStepSound(Block.soundTypeStone).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_0"); - /*sellafield_0 = new BlockHazard(Material.rock).setBlockName("sellafield_0").setStepSound(Block.soundTypeStone).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_0"); - sellafield_1 = new BlockHazard(Material.rock).setBlockName("sellafield_1").setStepSound(Block.soundTypeStone).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_1"); - sellafield_2 = new BlockHazard(Material.rock).setBlockName("sellafield_2").setStepSound(Block.soundTypeStone).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_2"); - sellafield_3 = new BlockHazard(Material.rock).setBlockName("sellafield_3").setStepSound(Block.soundTypeStone).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_3"); - sellafield_4 = new BlockHazard(Material.rock).setBlockName("sellafield_4").setStepSound(Block.soundTypeStone).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_4"); - sellafield_core = new BlockHazard(Material.rock).setBlockName("sellafield_core").setStepSound(Block.soundTypeStone).setHardness(10.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_core");*/ + ore_sellafield_diamond = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_diamond").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_diamond"); + ore_sellafield_emerald = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_emerald").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_emerald"); + ore_sellafield_uranium_scorched = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_uranium_scorched").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_uranium_scorched"); + ore_sellafield_schrabidium = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_schrabidium").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_schrabidium"); geysir_water = new BlockGeysir(Material.rock).setBlockName("geysir_water").setStepSound(Block.soundTypeStone).setHardness(5.0F); geysir_chlorine = new BlockGeysir(Material.rock).setBlockName("geysir_chlorine").setStepSound(Block.soundTypeStone).setHardness(5.0F); @@ -1803,7 +1776,6 @@ public class ModBlocks { nuke_custom = new NukeCustom(Material.iron).setBlockName("nuke_custom").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":custom"); nuke_solinium = new NukeSolinium(Material.iron).setBlockName("nuke_solinium").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":nuke_solinium"); nuke_n2 = new NukeN2(Material.iron).setBlockName("nuke_n2").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":nuke_n2"); - nuke_n45 = new NukeN45(Material.iron).setBlockName("nuke_n45").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":code"); nuke_fstbmb = new NukeBalefire(Material.iron).setBlockName("nuke_fstbmb").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":nuke_fstbmb"); bomb_multi = new BombMulti(Material.iron).setBlockName("bomb_multi").setCreativeTab(MainRegistry.nukeTab).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":bomb_multi1"); @@ -1905,7 +1877,7 @@ public class ModBlocks { hadron_plating_yellow = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_yellow").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_yellow"); hadron_plating_striped = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_striped").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_striped"); hadron_plating_voltz = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_voltz").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_voltz"); - hadron_plating_glass = new BlockNTMGlass(0, RefStrings.MODID + ":hadron_plating_glass", Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_glass").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_glass"); + hadron_plating_glass = new BlockNTMGlass(0, RefStrings.MODID + ":hadron_plating_glass", Material.iron, true).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_glass").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_glass"); hadron_coil_alloy = new BlockHadronCoil(Material.iron, 10).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_alloy").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_alloy"); hadron_coil_gold = new BlockHadronCoil(Material.iron, 25).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_gold").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_gold"); hadron_coil_neodymium = new BlockHadronCoil(Material.iron, 50).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_neodymium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_neodymium"); @@ -1922,7 +1894,7 @@ public class ModBlocks { hadron_power_10g = new BlockHadronPower(Material.iron, 10000000000L).setStepSound(Block.soundTypeMetal).setBlockName("hadron_power_10g").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_power"); hadron_diode = new BlockHadronDiode(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_diode").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); hadron_analysis = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_analysis").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_analysis"); - hadron_analysis_glass = new BlockNTMGlass(0, RefStrings.MODID + ":hadron_analysis_glass", Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_analysis_glass").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_analysis_glass"); + hadron_analysis_glass = new BlockNTMGlass(0, RefStrings.MODID + ":hadron_analysis_glass", Material.iron, true).setStepSound(Block.soundTypeMetal).setBlockName("hadron_analysis_glass").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_analysis_glass"); hadron_access = new BlockHadronAccess(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_access").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_access"); hadron_core = new BlockHadronCore(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_core"); hadron_cooler = new BlockHadronCooler(Material.iron).setBlockName("hadron_cooler").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); @@ -1949,18 +1921,13 @@ public class ModBlocks { capacitor_tantalium = new MachineCapacitor(Material.iron, 150_000_000L, "tantalium").setBlockName("capacitor_tantalium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_tantalium"); capacitor_schrabidate = new MachineCapacitor(Material.iron, 50_000_000_000L, "schrabidate").setBlockName("capacitor_schrabidate").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_schrabidate"); - machine_coal_off = new MachineCoal(false).setBlockName("machine_coal_off").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_copper"); - machine_coal_on = new MachineCoal(true).setBlockName("machine_coal_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_copper"); machine_wood_burner = new MachineWoodBurner(Material.iron).setBlockName("machine_wood_burner").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_diesel = new MachineDiesel().setBlockName("machine_diesel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_combustion_engine = new MachineCombustionEngine().setBlockName("machine_combustion_engine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_shredder = new MachineShredder(Material.iron).setBlockName("machine_shredder").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_shredder_large = new MachineShredderLarge(Material.iron).setBlockName("machine_shredder_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":code"); - machine_combine_factory = new MachineCMBFactory(Material.iron).setBlockName("machine_combine_factory").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null); - machine_teleporter = new MachineTeleporter(Material.iron).setBlockName("machine_teleporter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); teleanchor = new MachineTeleanchor().setBlockName("teleanchor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); field_disturber = new MachineFieldDisturber().setBlockName("field_disturber").setHardness(5.0F).setResistance(200.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":field_disturber"); @@ -2091,14 +2058,6 @@ public class ModBlocks { pwr_port = new BlockGenericPWR(Material.iron).setBlockName("pwr_port").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_port"); pwr_controller = new MachinePWRController(Material.iron).setBlockName("pwr_controller").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_casing_blank"); pwr_block = new BlockPWR(Material.iron).setBlockName("pwr_block").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pwr_block"); - - reactor_element = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_element_top", RefStrings.MODID + ":reactor_element_base").setBlockName("reactor_element").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":reactor_element_side"); - reactor_control = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_control_top").setBlockName("reactor_control").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":reactor_control_side"); - reactor_hatch = new ReactorHatch(Material.iron).setBlockName("reactor_hatch").setHardness(5.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); - reactor_ejector = new BlockRotatable(Material.iron).setBlockName("reactor_ejector").setHardness(5.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); - reactor_inserter = new BlockRotatable(Material.iron).setBlockName("reactor_inserter").setHardness(5.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); - reactor_conductor = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_conductor_top").setBlockName("reactor_conductor").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":reactor_conductor_side"); - reactor_computer = new ReactorCore(Material.iron).setBlockName("reactor_computer").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":reactor_computer"); fusion_conductor = new BlockToolConversionPillar(Material.iron).addVariant("_welded").setBlockName("fusion_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_conductor"); fusion_center = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_center_top_alt").setBlockName("fusion_center").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_center_side_alt"); @@ -2113,9 +2072,7 @@ public class ModBlocks { watz_control = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_control_top").setBlockName("watz_control").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_control_side"); watz_cooler = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_cooler_top").setBlockName("watz_cooler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_cooler_side"); watz_end = new BlockToolConversion(Material.iron).addVariant("_bolted").setBlockName("watz_end").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_casing"); - watz_hatch = new WatzHatch(Material.iron).setBlockName("watz_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":watz_hatch"); watz_conductor = new BlockCableConnect(Material.iron).setBlockName("watz_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":watz_conductor_top"); - watz_core = new WatzCore(Material.iron).setBlockName("watz_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":watz_computer"); watz = new Watz().setBlockName("watz").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); watz_pump = new WatzPump().setBlockName("watz_pump").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -2180,8 +2137,6 @@ public class ModBlocks { tesla = new MachineTesla(Material.iron).setBlockName("tesla").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":tesla"); - marker_structure = new BlockMarker(Material.iron).setBlockName("marker_structure").setHardness(0.1F).setResistance(0.1F).setLightLevel(1.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":marker_structure"); - muffler = new BlockGeneric(Material.cloth).setBlockName("muffler").setHardness(0.8F).setStepSound(Block.soundTypeCloth).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":muffler"); launch_pad = new LaunchPad(Material.iron).setBlockName("launch_pad").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":launch_pad"); @@ -2252,14 +2207,15 @@ public class ModBlocks { rail_booster = new RailBooster().setBlockName("rail_booster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_booster"); rail_narrow_straight = new RailNarrowStraight().setBlockName("rail_narrow_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo"); rail_narrow_curve = new RailNarrowCurve().setBlockName("rail_narrow_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo"); - rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - rail_large_straight_short = new RailStandardStraightShort().setBlockName("rail_large_straight_short").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - rail_large_curve = new RailStandardCurve().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - rail_large_curve_wide = new RailStandardCurveWide().setBlockName("rail_large_curve_wide").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - rail_large_ramp = new RailStandardRamp().setBlockName("rail_large_ramp").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - rail_large_buffer = new RailStandardBuffer().setBlockName("rail_large_buffer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_buffer"); - rail_large_switch = new RailStandardSwitch().setBlockName("rail_large_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - rail_large_switch_flipped = new RailStandardSwitchFlipped().setBlockName("rail_large_switch_flipped").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_straight_short = new RailStandardStraightShort().setBlockName("rail_large_straight_short").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_curve = new RailStandardCurveBase().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_curve_7 = new RailStandardCurveWide7().setBlockName("rail_large_curve_7").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_curve_9 = new RailStandardCurveWide9().setBlockName("rail_large_curve_9").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_ramp = new RailStandardRamp().setBlockName("rail_large_ramp").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_buffer = new RailStandardBuffer().setBlockName("rail_large_buffer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_buffer"); + rail_large_switch = new RailStandardSwitch().setBlockName("rail_large_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_switch_flipped = new RailStandardSwitchFlipped().setBlockName("rail_large_switch_flipped").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); crate = new BlockCrate(Material.wood).setBlockName("crate").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate"); crate_weapon = new BlockCrate(Material.wood).setBlockName("crate_weapon").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_weapon"); @@ -2295,9 +2251,7 @@ public class ModBlocks { machine_catalytic_reformer = new MachineCatalyticReformer(Material.iron).setBlockName("machine_catalytic_reformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_coker = new MachineCoker(Material.iron).setBlockName("machine_coker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_autosaw = new MachineAutosaw().setBlockName("machine_autosaw").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_drill = new MachineMiningDrill(Material.iron).setBlockName("machine_drill").setHardness(5.0F).setResistance(100.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":machine_drill"); machine_excavator = new MachineExcavator().setBlockName("machine_excavator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - drill_pipe = new BlockNoDrop(Material.iron).setBlockName("drill_pipe").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":drill_pipe"); machine_mining_laser = new MachineMiningLaser(Material.iron).setBlockName("machine_mining_laser").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_mining_laser"); barricade = new BlockNoDrop(Material.sand).setBlockName("barricade").setHardness(1.0F).setResistance(2.5F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":barricade"); machine_assembler = new MachineAssembler(Material.iron).setBlockName("machine_assembler").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_assembler"); @@ -2446,8 +2400,6 @@ public class ModBlocks { Fluid liquidConcrete = new GenericFluid("concrete_liquid").setViscosity(2000); concrete_liquid = new GenericFiniteFluid(liquidConcrete, Material.rock, "concrete_liquid", "concrete_liquid_flowing").setQuantaPerBlock(4).setBlockName("concrete_liquid").setResistance(500F); - dummy_block_drill = new DummyBlockDrill(Material.iron, false).setBlockName("dummy_block_drill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_lead"); - dummy_port_drill = new DummyBlockDrill(Material.iron, true).setBlockName("dummy_port_drill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_lead"); dummy_block_ams_limiter = new DummyBlockAMSLimiter(Material.iron).setBlockName("dummy_block_ams_limiter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_copper"); dummy_port_ams_limiter = new DummyBlockAMSLimiter(Material.iron).setBlockName("dummy_port_ams_limiter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_copper"); dummy_block_ams_emitter = new DummyBlockAMSEmitter(Material.iron).setBlockName("dummy_block_ams_emitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_copper"); @@ -2471,8 +2423,6 @@ public class ModBlocks { pink_slab = new BlockPinkSlab(false, Material.wood).setBlockName("pink_slab").setStepSound(Block.soundTypeWood).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pink_planks"); pink_double_slab = new BlockPinkSlab(true, Material.wood).setBlockName("pink_double_slab").setStepSound(Block.soundTypeWood).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pink_planks"); pink_stairs = new BlockGenericStairs(pink_planks, 0).setBlockName("pink_stairs").setStepSound(Block.soundTypeWood).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pink_planks"); - - ff = new BlockFF(Material.iron).setBlockName("ff").setHardness(0.5F).setStepSound(Block.soundTypeGravel).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":code"); } private static void registerBlock() { @@ -2975,7 +2925,11 @@ public class ModBlocks { GameRegistry.registerBlock(impact_dirt, impact_dirt.getUnlocalizedName()); //RAD - GameRegistry.registerBlock(sellafield_slaked, sellafield_slaked.getUnlocalizedName()); + register(sellafield_slaked); + register(ore_sellafield_diamond); + register(ore_sellafield_emerald); + register(ore_sellafield_uranium_scorched); + register(ore_sellafield_schrabidium); GameRegistry.registerBlock(sellafield, ItemBlockNamedMeta.class, sellafield.getUnlocalizedName()); //Geysirs @@ -2994,7 +2948,6 @@ public class ModBlocks { GameRegistry.registerBlock(nuke_fleija, nuke_fleija.getUnlocalizedName()); GameRegistry.registerBlock(nuke_solinium, nuke_solinium.getUnlocalizedName()); GameRegistry.registerBlock(nuke_n2, nuke_n2.getUnlocalizedName()); - GameRegistry.registerBlock(nuke_n45, nuke_n45.getUnlocalizedName()); GameRegistry.registerBlock(nuke_fstbmb, nuke_fstbmb.getUnlocalizedName()); GameRegistry.registerBlock(nuke_custom, nuke_custom.getUnlocalizedName()); @@ -3185,8 +3138,6 @@ public class ModBlocks { GameRegistry.registerBlock(machine_nuke_furnace_on, machine_nuke_furnace_on.getUnlocalizedName()); GameRegistry.registerBlock(machine_rtg_furnace_off, machine_rtg_furnace_off.getUnlocalizedName()); GameRegistry.registerBlock(machine_rtg_furnace_on, machine_rtg_furnace_on.getUnlocalizedName()); - GameRegistry.registerBlock(machine_coal_off, machine_coal_off.getUnlocalizedName()); - GameRegistry.registerBlock(machine_coal_on, machine_coal_on.getUnlocalizedName()); register(machine_wood_burner); register(machine_diesel); register(machine_selenium); @@ -3400,7 +3351,6 @@ public class ModBlocks { register(machine_catalytic_cracker); register(machine_catalytic_reformer); register(machine_coker); - register(machine_drill); register(machine_autosaw); register(machine_excavator); register(machine_mining_laser); @@ -3408,7 +3358,6 @@ public class ModBlocks { register(machine_turbofan); register(machine_turbinegas); GameRegistry.registerBlock(machine_schrabidium_transmutator, machine_schrabidium_transmutator.getUnlocalizedName()); - GameRegistry.registerBlock(machine_combine_factory, machine_combine_factory.getUnlocalizedName()); GameRegistry.registerBlock(machine_teleporter, machine_teleporter.getUnlocalizedName()); GameRegistry.registerBlock(teleanchor, teleanchor.getUnlocalizedName()); GameRegistry.registerBlock(field_disturber, field_disturber.getUnlocalizedName()); @@ -3419,9 +3368,6 @@ public class ModBlocks { GameRegistry.registerBlock(radiorec, radiorec.getUnlocalizedName()); GameRegistry.registerBlock(radiobox, radiobox.getUnlocalizedName()); - //Multiblock Helpers - GameRegistry.registerBlock(marker_structure, marker_structure.getUnlocalizedName()); - //The muffler GameRegistry.registerBlock(muffler, muffler.getUnlocalizedName()); @@ -3474,20 +3420,11 @@ public class ModBlocks { register(pwr_block); //Multiblock Generators - GameRegistry.registerBlock(reactor_element, reactor_element.getUnlocalizedName()); - GameRegistry.registerBlock(reactor_control, reactor_control.getUnlocalizedName()); - GameRegistry.registerBlock(reactor_hatch, reactor_hatch.getUnlocalizedName()); - GameRegistry.registerBlock(reactor_ejector, reactor_ejector.getUnlocalizedName()); - GameRegistry.registerBlock(reactor_inserter, reactor_inserter.getUnlocalizedName()); - GameRegistry.registerBlock(reactor_conductor, reactor_conductor.getUnlocalizedName()); - GameRegistry.registerBlock(reactor_computer, reactor_computer.getUnlocalizedName()); - register(fusion_conductor); GameRegistry.registerBlock(fusion_center, fusion_center.getUnlocalizedName()); 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(plasma, ItemBlockLore.class, plasma.getUnlocalizedName()); GameRegistry.registerBlock(iter, iter.getUnlocalizedName()); GameRegistry.registerBlock(plasma_heater, plasma_heater.getUnlocalizedName()); @@ -3496,9 +3433,7 @@ public class ModBlocks { GameRegistry.registerBlock(watz_control, watz_control.getUnlocalizedName()); GameRegistry.registerBlock(watz_cooler, watz_cooler.getUnlocalizedName()); register(watz_end); - GameRegistry.registerBlock(watz_hatch, watz_hatch.getUnlocalizedName()); GameRegistry.registerBlock(watz_conductor, watz_conductor.getUnlocalizedName()); - GameRegistry.registerBlock(watz_core, watz_core.getUnlocalizedName()); GameRegistry.registerBlock(watz, watz.getUnlocalizedName()); GameRegistry.registerBlock(watz_pump, watz_pump.getUnlocalizedName()); @@ -3561,7 +3496,8 @@ public class ModBlocks { register(rail_large_straight); register(rail_large_straight_short); register(rail_large_curve); - register(rail_large_curve_wide); + register(rail_large_curve_7); + register(rail_large_curve_9); register(rail_large_ramp); register(rail_large_buffer); register(rail_large_switch); @@ -3594,8 +3530,6 @@ public class ModBlocks { //GameRegistry.registerBlock(concrete_liquid, concrete_liquid.getUnlocalizedName()); //Multiblock Dummy Blocks - GameRegistry.registerBlock(dummy_block_drill, dummy_block_drill.getUnlocalizedName()); - GameRegistry.registerBlock(dummy_port_drill, dummy_port_drill.getUnlocalizedName()); GameRegistry.registerBlock(dummy_block_ams_limiter, dummy_block_ams_limiter.getUnlocalizedName()); GameRegistry.registerBlock(dummy_port_ams_limiter, dummy_port_ams_limiter.getUnlocalizedName()); GameRegistry.registerBlock(dummy_block_ams_emitter, dummy_block_ams_emitter.getUnlocalizedName()); @@ -3614,7 +3548,6 @@ public class ModBlocks { //Other Technical Blocks GameRegistry.registerBlock(oil_pipe, oil_pipe.getUnlocalizedName()); - GameRegistry.registerBlock(drill_pipe, drill_pipe.getUnlocalizedName()); GameRegistry.registerBlock(vent_chlorine, vent_chlorine.getUnlocalizedName()); GameRegistry.registerBlock(vent_cloud, vent_cloud.getUnlocalizedName()); GameRegistry.registerBlock(vent_pink_cloud, vent_pink_cloud.getUnlocalizedName()); @@ -3645,7 +3578,6 @@ public class ModBlocks { GameRegistry.registerBlock(pink_slab, pink_slab.getUnlocalizedName()); GameRegistry.registerBlock(pink_double_slab, pink_double_slab.getUnlocalizedName()); GameRegistry.registerBlock(pink_stairs, pink_stairs.getUnlocalizedName()); - GameRegistry.registerBlock(ff, ff.getUnlocalizedName()); } private static void register(Block b) { diff --git a/src/main/java/com/hbm/blocks/bomb/NukeN45.java b/src/main/java/com/hbm/blocks/bomb/NukeN45.java deleted file mode 100644 index df47fae70..000000000 --- a/src/main/java/com/hbm/blocks/bomb/NukeN45.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.hbm.blocks.bomb; - -import java.util.Random; - -import com.hbm.blocks.ModBlocks; -import com.hbm.interfaces.IBomb; -import com.hbm.main.MainRegistry; -import com.hbm.tileentity.bomb.TileEntityNukeN45; - -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -public class NukeN45 extends BlockContainer implements IBomb { - - private final Random field_149933_a = new Random(); - private static boolean keepInventory = false; - - public NukeN45(Material p_i45386_1_) { - super(p_i45386_1_); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityNukeN45(); - } - - @Override - public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) { - if(!keepInventory) { - ISidedInventory tileentityfurnace = (ISidedInventory) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); - - if(tileentityfurnace != null) { - for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) { - ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); - - if(itemstack != null) { - float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - - while(itemstack.stackSize > 0) { - int j1 = this.field_149933_a.nextInt(21) + 10; - - if(j1 > itemstack.stackSize) { - j1 = itemstack.stackSize; - } - - itemstack.stackSize -= j1; - EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); - - if(itemstack.hasTagCompound()) { - entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); - } - - float f3 = 0.05F; - entityitem.motionX = (float) this.field_149933_a.nextGaussian() * f3; - entityitem.motionY = (float) this.field_149933_a.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float) this.field_149933_a.nextGaussian() * f3; - p_149749_1_.spawnEntityInWorld(entityitem); - } - } - } - - p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); - } - } - - super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); - } - - @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()) { - TileEntityNukeN45 entity = (TileEntityNukeN45) world.getTileEntity(x, y, z); - if(entity != null) { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); - } - return true; - } else { - return false; - } - } - - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { - return Item.getItemFromBlock(ModBlocks.nuke_n45); - } - - @Override - public int getRenderType() { - return -1; - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - public boolean renderAsNormalBlock() { - return false; - } - - @Override - public BombReturnCode explode(World world, int x, int y, int z) { - - if(!world.isRemote) { - TileEntityNukeN45 entity = (TileEntityNukeN45) world.getTileEntity(x, y, z); - - if(entity.getType() == 100) { - entity.primed = true; - return BombReturnCode.TRIGGERED; - } else if(!entity.primed && entity.getType() > 0) { - int t = entity.getType(); - entity.clearSlots(); - entity.explode(world, x, y, z, t); - return BombReturnCode.DETONATED; - } - - return BombReturnCode.ERROR_MISSING_COMPONENT; - } - - return BombReturnCode.UNDEFINED; - } -} diff --git a/src/main/java/com/hbm/blocks/generic/BlockAmmoCrate.java b/src/main/java/com/hbm/blocks/generic/BlockAmmoCrate.java index f7612ee69..a2925f119 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockAmmoCrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockAmmoCrate.java @@ -12,6 +12,7 @@ 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.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.World; @@ -38,11 +39,31 @@ public class BlockAmmoCrate extends Block { public IIcon getIcon(int side, int metadata) { return side == 0 ? this.iconBottom : (side == 1 ? this.iconTop : this.blockIcon); } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) { + if(player.getHeldItem() != null && player.getHeldItem().getItem().equals(ModItems.crowbar)) { + if(!world.isRemote) { + dropContents(world, x, y, z); + world.setBlockToAir(x, y, z); + world.playSoundEffect(x, y, z, "hbm:block.crateBreak", 0.5F, 1.0F); + } + return true; + } + return false; + } Random rand = new Random(); - @Override - public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { + public void dropContents(World world, int x, int y, int z) { + ArrayList items = getContents(world, x, y, z); + + for(ItemStack item : items) { + this.dropBlockAsItem(world, x, y, z, item); + } + } + + public ArrayList getContents(World world, int x, int y, int z) { ArrayList ret = new ArrayList(); diff --git a/src/main/java/com/hbm/blocks/generic/BlockCanCrate.java b/src/main/java/com/hbm/blocks/generic/BlockCanCrate.java index f9b27c5a8..67e8c5e9b 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockCanCrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockCanCrate.java @@ -11,9 +11,7 @@ import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; public class BlockCanCrate extends Block { @@ -21,79 +19,77 @@ public class BlockCanCrate extends Block { public BlockCanCrate(Material p_i45394_1_) { super(p_i45394_1_); } - - public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + @Override - public int getRenderType(){ + public int getRenderType() { return renderID; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - @Override + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) { - - if(world.isRemote) - { - player.addChatMessage(new ChatComponentText("The one crate you are allowed to smash!")); + if(player.getHeldItem() != null && player.getHeldItem().getItem().equals(ModItems.crowbar)) { + if(!world.isRemote) { + dropContents(world, x, y, z); + world.setBlockToAir(x, y, z); + world.playSoundEffect(x, y, z, "hbm:block.crateBreak", 0.5F, 1.0F); + } + return true; } - - return true; - } - - public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { - ArrayList ret = new ArrayList(); - - int count = quantityDropped(metadata, fortune, world.rand); - for(int i = 0; i < count; i++) { - Item item = getItemDropped(metadata, world.rand, fortune); - if(item != null) - ret.add(new ItemStack(item, 1, damageDropped(metadata, world.rand, item))); - } - - return ret; - } - - //pain - public int damageDropped(int meta, Random rand, Item item) { - if(item != ModItems.canned_conserve) - return damageDropped(meta); - else - return Math.abs(rand.nextInt() % EnumFoodType.values().length); - } - - @Override - public Item getItemDropped(int i, Random rand, int j) { - - List items = new ArrayList(); - for(int a = 0; a < EnumFoodType.values().length; a++) - items.add(ModItems.canned_conserve); - items.add(ModItems.can_smart); - items.add(ModItems.can_creature); - items.add(ModItems.can_redbomb); - items.add(ModItems.can_mrsugar); - items.add(ModItems.can_overcharge); - items.add(ModItems.can_luna); - items.add(ModItems.can_breen); - items.add(ModItems.can_bepis); - items.add(ModItems.pudding); - - return items.get(rand.nextInt(items.size())); - } - - @Override - public int quantityDropped(Random rand) { - - return 5 + rand.nextInt(4); - } + return false; + } + Random rand = new Random(); + + public void dropContents(World world, int x, int y, int z) { + ArrayList items = getContents(world, x, y, z); + + for(ItemStack item : items) { + this.dropBlockAsItem(world, x, y, z, item); + } + } + + public ArrayList getContents(World world, int x, int y, int z) { + ArrayList ret = new ArrayList(); + + int count = getContentAmount(world.rand); + for(int i = 0; i < count; i++) { + ret.add(getRandomItem(world.rand)); + } + + return ret; + } + + public ItemStack getRandomItem(Random rand) { + + List items = new ArrayList(); + for(int a = 0; a < EnumFoodType.values().length; a++) + items.add(new ItemStack(ModItems.canned_conserve, 1, a)); + items.add(new ItemStack(ModItems.can_smart)); + items.add(new ItemStack(ModItems.can_creature)); + items.add(new ItemStack(ModItems.can_redbomb)); + items.add(new ItemStack(ModItems.can_mrsugar)); + items.add(new ItemStack(ModItems.can_overcharge)); + items.add(new ItemStack(ModItems.can_luna)); + items.add(new ItemStack(ModItems.can_breen)); + items.add(new ItemStack(ModItems.can_bepis)); + items.add(new ItemStack(ModItems.pudding)); + + return items.get(rand.nextInt(items.size())); + } + + public int getContentAmount(Random rand) { + return 5 + rand.nextInt(4); + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockCrate.java b/src/main/java/com/hbm/blocks/generic/BlockCrate.java index 7921a0e71..219d3d70a 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockCrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockCrate.java @@ -14,7 +14,6 @@ import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; public class BlockCrate extends BlockFalling { @@ -29,25 +28,17 @@ public class BlockCrate extends BlockFalling { super(p_i45394_1_); } - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { - return null; - } - @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) { if(player.getHeldItem() != null && player.getHeldItem().getItem().equals(ModItems.crowbar)) { - dropItems(world, x, y, z); - world.setBlockToAir(x, y, z); - world.playSoundEffect(x, y, z, "hbm:block.crateBreak", 0.5F, 1.0F); - return true; - } else { - if(world.isRemote) { - player.addChatMessage(new ChatComponentText("I'll need a crate opening device to get the loot, smashing the whole thing won't work...")); + if(!world.isRemote) { + dropItems(world, x, y, z); + world.setBlockToAir(x, y, z); + world.playSoundEffect(x, y, z, "hbm:block.crateBreak", 0.5F, 1.0F); } + return true; } - - return true; + return false; } public void setDrops() { @@ -133,7 +124,7 @@ public class BlockCrate extends BlockFalling { BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_difurnace_off), 9); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_reactor_breeding), 6); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_nuke_furnace_off), 7); - BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_coal_off), 10); + BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_wood_burner), 10); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_diesel), 8); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_selenium), 7); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_rtg_grey), 4); @@ -143,7 +134,6 @@ public class BlockCrate extends BlockFalling { BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_electric_furnace_off), 8); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_assembler), 10); BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_fluidtank), 7); - BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_drill), 4); BlockCrate.addToListWithWeight(metalList, ModItems.centrifuge_element, 6); BlockCrate.addToListWithWeight(metalList, ModItems.motor, 8); BlockCrate.addToListWithWeight(metalList, ModItems.coil_tungsten, 7); diff --git a/src/main/java/com/hbm/blocks/generic/BlockDecoContainer.java b/src/main/java/com/hbm/blocks/generic/BlockDecoContainer.java index d98221129..ac7a1cdb5 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDecoContainer.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDecoContainer.java @@ -58,9 +58,9 @@ public class BlockDecoContainer extends BlockDecoModel implements ITileEntityPro } else { TileEntity entity = world.getTileEntity(x, y, z); if(entity instanceof TileEntityLockableBase) { //annoying accommodations for the filing cabinet, but whatever, could potentially be useful - if(player.getHeldItem() != null && (player.getHeldItem().getItem() instanceof ItemLock || player.getHeldItem().getItem() == ModItems.key_kit)) + if(player.getHeldItem() != null && (player.getHeldItem().getItem() instanceof ItemLock || player.getHeldItem().getItem() == ModItems.key_kit)) { return false; - else if(!player.isSneaking() && ((TileEntityLockableBase) entity).canAccess(player)) { + } else if(!player.isSneaking() && ((TileEntityLockableBase) entity).canAccess(player)) { FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); return true; } @@ -99,13 +99,13 @@ public class BlockDecoContainer extends BlockDecoModel implements ITileEntityPro if(itemstack.hasTagCompound()) { entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); - - float f3 = 0.05F; - entityitem.motionX = (float) rand.nextGaussian() * f3; - entityitem.motionY = (float) rand.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float) rand.nextGaussian() * f3; - world.spawnEntityInWorld(entityitem); } + + float f3 = 0.05F; + entityitem.motionX = (float) rand.nextGaussian() * f3; + entityitem.motionY = (float) rand.nextGaussian() * f3 + 0.2F; + entityitem.motionZ = (float) rand.nextGaussian() * f3; + world.spawnEntityInWorld(entityitem); } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockMarker.java b/src/main/java/com/hbm/blocks/generic/BlockMarker.java deleted file mode 100644 index 25e70dd8c..000000000 --- a/src/main/java/com/hbm/blocks/generic/BlockMarker.java +++ /dev/null @@ -1,159 +0,0 @@ -package com.hbm.blocks.generic; - -import java.util.Random; - -import com.hbm.tileentity.machine.TileEntityStructureMarker; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class BlockMarker extends BlockContainer { - - public BlockMarker(Material p_i45386_1_) { - super(p_i45386_1_); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityStructureMarker(); - } - - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) { - return null; - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - public boolean renderAsNormalBlock() { - return false; - } - - @Override - public int getRenderType() { - return 2; - } - - private boolean func_150107_m(World p_150107_1_, int p_150107_2_, int p_150107_3_, int p_150107_4_) { - if(World.doesBlockHaveSolidTopSurface(p_150107_1_, p_150107_2_, p_150107_3_, p_150107_4_)) { - return true; - } else { - Block block = p_150107_1_.getBlock(p_150107_2_, p_150107_3_, p_150107_4_); - return block.canPlaceTorchOnTop(p_150107_1_, p_150107_2_, p_150107_3_, p_150107_4_); - } - } - - @Override - public boolean canPlaceBlockAt(World p_149742_1_, int p_149742_2_, int p_149742_3_, int p_149742_4_) { - return func_150107_m(p_149742_1_, p_149742_2_, p_149742_3_ - 1, p_149742_4_); - } - - @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; - - if(i == 0) { - world.setBlockMetadataWithNotify(x, y, z, 6, 2); - } - if(i == 1) { - world.setBlockMetadataWithNotify(x, y, z, 7, 2); - } - if(i == 2) { - world.setBlockMetadataWithNotify(x, y, z, 8, 2); - } - if(i == 3) { - world.setBlockMetadataWithNotify(x, y, z, 9, 2); - } - } - - @Override - public void updateTick(World p_149674_1_, int p_149674_2_, int p_149674_3_, int p_149674_4_, Random p_149674_5_) { - super.updateTick(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_, p_149674_5_); - - if(p_149674_1_.getBlockMetadata(p_149674_2_, p_149674_3_, p_149674_4_) == 0) { - this.onBlockAdded(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_); - } - } - - @Override - public void onNeighborBlockChange(World p_149695_1_, int p_149695_2_, int p_149695_3_, int p_149695_4_, Block p_149695_5_) { - this.func_150108_b(p_149695_1_, p_149695_2_, p_149695_3_, p_149695_4_, p_149695_5_); - } - - protected boolean func_150108_b(World p_150108_1_, int p_150108_2_, int p_150108_3_, int p_150108_4_, Block p_150108_5_) { - if(this.func_150109_e(p_150108_1_, p_150108_2_, p_150108_3_, p_150108_4_)) { - boolean flag = false; - - if(!this.func_150107_m(p_150108_1_, p_150108_2_, p_150108_3_ - 1, p_150108_4_)) { - flag = true; - } - - if(flag) { - this.dropBlockAsItem(p_150108_1_, p_150108_2_, p_150108_3_, p_150108_4_, p_150108_1_.getBlockMetadata(p_150108_2_, p_150108_3_, p_150108_4_), 0); - p_150108_1_.setBlockToAir(p_150108_2_, p_150108_3_, p_150108_4_); - return true; - } else { - return false; - } - } else { - return true; - } - } - - protected boolean func_150109_e(World p_150109_1_, int p_150109_2_, int p_150109_3_, int p_150109_4_) { - if(!this.canPlaceBlockAt(p_150109_1_, p_150109_2_, p_150109_3_, p_150109_4_)) { - if(p_150109_1_.getBlock(p_150109_2_, p_150109_3_, p_150109_4_) == this) { - this.dropBlockAsItem(p_150109_1_, p_150109_2_, p_150109_3_, p_150109_4_, p_150109_1_.getBlockMetadata(p_150109_2_, p_150109_3_, p_150109_4_), 0); - p_150109_1_.setBlockToAir(p_150109_2_, p_150109_3_, p_150109_4_); - } - - return false; - } else { - return true; - } - } - - @Override - public MovingObjectPosition collisionRayTrace(World p_149731_1_, int p_149731_2_, int p_149731_3_, int p_149731_4_, Vec3 p_149731_5_, Vec3 p_149731_6_) { - float f = 0.15F; - f = 0.1F; - this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.6F, 0.5F + f); - - return super.collisionRayTrace(p_149731_1_, p_149731_2_, p_149731_3_, p_149731_4_, p_149731_5_, p_149731_6_); - } - - @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) { - int i = ((TileEntityStructureMarker) world.getTileEntity(x, y, z)).type + 1; - 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()) { - if(world.getTileEntity(x, y, z) != null && world.getTileEntity(x, y, z) instanceof TileEntityStructureMarker) { - ((TileEntityStructureMarker) world.getTileEntity(x, y, z)).type++; - } - return true; - } else { - return false; - } - } - -} diff --git a/src/main/java/com/hbm/blocks/generic/BlockOre.java b/src/main/java/com/hbm/blocks/generic/BlockOre.java index d862c4ea5..97aae0c8c 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOre.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOre.java @@ -127,7 +127,7 @@ public class BlockOre extends Block { case 23: return Item.getItemFromBlock(ModBlocks.fusion_conductor); case 24: - return Item.getItemFromBlock(ModBlocks.reactor_computer); + return Item.getItemFromBlock(ModBlocks.pwr_fuel); case 25: return Item.getItemFromBlock(ModBlocks.machine_diesel); case 26: diff --git a/src/main/java/com/hbm/blocks/generic/BlockPedestal.java b/src/main/java/com/hbm/blocks/generic/BlockPedestal.java index 2930323f7..9f4ace30b 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockPedestal.java +++ b/src/main/java/com/hbm/blocks/generic/BlockPedestal.java @@ -18,6 +18,7 @@ import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class BlockPedestal extends BlockContainer { @@ -62,6 +63,12 @@ public class BlockPedestal extends BlockContainer { public boolean renderAsNormalBlock() { return false; } + + @Override + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) { + return true; + } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { diff --git a/src/main/java/com/hbm/blocks/generic/BlockSellafield.java b/src/main/java/com/hbm/blocks/generic/BlockSellafield.java index 03c53b9f4..aea70d140 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockSellafield.java +++ b/src/main/java/com/hbm/blocks/generic/BlockSellafield.java @@ -8,11 +8,14 @@ import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.potion.HbmPotion; +import com.hbm.render.icon.RGBMutatorInterpolatedComponentRemap; +import com.hbm.render.icon.TextureAtlasSpriteMutatable; 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.client.renderer.texture.TextureMap; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -20,12 +23,17 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.potion.PotionEffect; import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class BlockSellafield extends BlockHazard { - //Sellafite blocks should probably be entirely metadata, but removing them now might mess with shit - //...Ah, fuck it! Noone cares anyway. + @SideOnly(Side.CLIENT) + protected IIcon[][] icons; + + public static final int SELLAFITE_LEVELS = 6; + public static final int TEXTURE_VARIANTS = 4; + public BlockSellafield(Material mat) { super(mat); this.setCreativeTab(MainRegistry.blockTab); @@ -56,10 +64,6 @@ public class BlockSellafield extends BlockHazard { } @Override public void onBlockAdded(World world, int x, int y, int z) { } - - - @SideOnly(Side.CLIENT) - protected IIcon[] icons; @Override public int damageDropped(int meta) { @@ -69,24 +73,62 @@ public class BlockSellafield extends BlockHazard { @Override @SideOnly(Side.CLIENT) public void getSubBlocks(Item item, CreativeTabs tabs, List list) { - for(byte i = 0; i < 6; i++) { + for(byte i = 0; i < SELLAFITE_LEVELS; i++) { list.add(new ItemStack(item, 1, i)); } } @Override @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - super.registerBlockIcons(iconRegister); - icons = new IIcon[6]; + public void registerBlockIcons(IIconRegister reg) { + super.registerBlockIcons(reg); + icons = new IIcon[SELLAFITE_LEVELS][TEXTURE_VARIANTS]; + String[] names = new String[] { + RefStrings.MODID + ":sellafield_slaked", + RefStrings.MODID + ":sellafield_slaked_1", + RefStrings.MODID + ":sellafield_slaked_2", + RefStrings.MODID + ":sellafield_slaked_3" + }; - for(byte i = 0; i < 6; i++) - icons[i] = iconRegister.registerIcon(RefStrings.MODID + ":sellafield_" + i); + if(reg instanceof TextureMap) { + TextureMap map = (TextureMap) reg; + + int[][] colors = new int[][] { + {0x4C7939, 0x41463F}, + {0x418223, 0x3E443B}, + {0x338C0E, 0x3B5431}, + {0x1C9E00, 0x394733}, + {0x02B200, 0x37492F}, + {0x00D300, 0x324C26} + }; + + for(int level = 0; level < SELLAFITE_LEVELS; level++) { + int[] tint = colors[level]; + + for(int subtype = 0; subtype < TEXTURE_VARIANTS; subtype++) { + String texName = names[subtype]; + String placeholderName = texName + "-" + level + "-" + subtype; + TextureAtlasSpriteMutatable mutableIcon = new TextureAtlasSpriteMutatable(placeholderName, new RGBMutatorInterpolatedComponentRemap(0x858384, 0x434343, tint[0], tint[1])).setBlockAtlas(); + map.setTextureEntry(placeholderName, mutableIcon); + icons[level][subtype] = mutableIcon; + } + } + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + long l = (long) (x * 3129871) ^ (long)y * 116129781L ^ (long)z; + l = l * l * 42317861L + l * 11L; + int i = (int)(l >> 16 & 3L); + int meta = world.getBlockMetadata(x, y, z); + return icons[(int)(Math.abs(meta) % SELLAFITE_LEVELS)][(int)(Math.abs(i) % TEXTURE_VARIANTS)]; } @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { - return this.icons[meta % this.icons.length]; + return this.icons[(int) Math.abs(meta) % this.icons.length][0]; } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockSellafieldOre.java b/src/main/java/com/hbm/blocks/generic/BlockSellafieldOre.java new file mode 100644 index 000000000..a923c5343 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockSellafieldOre.java @@ -0,0 +1,105 @@ +package com.hbm.blocks.generic; + +import java.util.Random; + +import com.hbm.blocks.IBlockMultiPass; +import com.hbm.blocks.ModBlocks; +import com.hbm.render.block.RenderBlockMultipass; + +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.init.Items; +import net.minecraft.item.Item; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.IBlockAccess; + +public class BlockSellafieldOre extends BlockSellafieldSlaked implements IBlockMultiPass { + + public BlockSellafieldOre(Material mat) { + super(mat); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + this.blockIcon = reg.registerIcon(this.getTextureName()); + super.registerBlockIcons(reg); + } + + @Override + public int getRenderType() { + return IBlockMultiPass.getRenderType(); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + if(RenderBlockMultipass.currentPass == 1) return this.blockIcon; + return super.getIcon(world, x, y, z, side); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + if(RenderBlockMultipass.currentPass == 1) return this.blockIcon; + return icons[0]; + } + + @Override + @SideOnly(Side.CLIENT) + public int colorMultiplier(IBlockAccess world, int x, int y, int z) { + if(RenderBlockMultipass.currentPass == 1) return 0xffffff; + return super.colorMultiplier(world, x, y, z); + } + + @Override + public int getPasses() { + return 2; + } + + @Override + public boolean shouldRenderItemMulti() { + return true; + } + + @Override + public Item getItemDropped(int meta, Random rand, int fortune) { + if(this == ModBlocks.ore_sellafield_diamond) return Items.diamond; + if(this == ModBlocks.ore_sellafield_emerald) return Items.emerald; + return Item.getItemFromBlock(this); + } + + @Override + public int quantityDropped(Random rand) { + return 1; + } + + @Override + public int quantityDroppedWithBonus(int fortune, Random rand) { + if(fortune > 0 && Item.getItemFromBlock(this) != this.getItemDropped(0, rand, fortune)) { + int j = rand.nextInt(fortune + 2) - 1; + if(j < 0) j = 0; + return this.quantityDropped(rand) * (j + 1); + } else { + return this.quantityDropped(rand); + } + } + + private Random rand = new Random(); + + @Override + public int getExpDrop(IBlockAccess world, int meta, int fortune) { + if(this.getItemDropped(meta, rand, fortune) != Item.getItemFromBlock(this)) { + int j1 = 0; + + if(this == ModBlocks.ore_sellafield_diamond) j1 = MathHelper.getRandomIntegerInRange(rand, 3, 7); + if(this == ModBlocks.ore_sellafield_emerald) j1 = MathHelper.getRandomIntegerInRange(rand, 3, 7); + + return j1; + } + return 0; + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockSellafieldSlaked.java b/src/main/java/com/hbm/blocks/generic/BlockSellafieldSlaked.java new file mode 100644 index 000000000..6812249a4 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockSellafieldSlaked.java @@ -0,0 +1,53 @@ +package com.hbm.blocks.generic; + +import java.awt.Color; + +import com.hbm.lib.RefStrings; + +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.util.IIcon; +import net.minecraft.world.IBlockAccess; + +public class BlockSellafieldSlaked extends Block { + + public IIcon[] icons; + + public BlockSellafieldSlaked(Material mat) { + super(mat); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + long l = (long) (x * 3129871) ^ (long)y * 116129781L ^ (long)z; + l = l * l * 42317861L + l * 11L; + int i = (int)(l >> 16 & 3L); + return icons[(int)(Math.abs(i) % icons.length)]; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return icons[0]; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + icons = new IIcon[4]; + icons[0] = reg.registerIcon(RefStrings.MODID + ":sellafield_slaked"); + icons[1] = reg.registerIcon(RefStrings.MODID + ":sellafield_slaked_1"); + icons[2] = reg.registerIcon(RefStrings.MODID + ":sellafield_slaked_2"); + icons[3] = reg.registerIcon(RefStrings.MODID + ":sellafield_slaked_3"); + } + + @SideOnly(Side.CLIENT) + public int colorMultiplier(IBlockAccess world, int x, int y, int z) { + int meta = world.getBlockMetadata(x, y, z); + return Color.HSBtoRGB(0F, 0F, 1F - meta / 15F); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/BlockPillar.java b/src/main/java/com/hbm/blocks/machine/BlockPillar.java index a030210b0..8158e9416 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockPillar.java +++ b/src/main/java/com/hbm/blocks/machine/BlockPillar.java @@ -1,23 +1,15 @@ package com.hbm.blocks.machine; -import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; -import api.hbm.fluid.IFluidConnectorBlock; 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.player.EntityPlayer; import net.minecraft.util.IIcon; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -public class BlockPillar extends Block implements IFluidConnectorBlock { +public class BlockPillar extends Block { @SideOnly(Side.CLIENT) private IIcon iconTop; @@ -37,18 +29,13 @@ public class BlockPillar extends Block implements IFluidConnectorBlock { textureAlt = bottom; } - public Block setBlockTextureName(String name) { - - if(textureTop.isEmpty()) - textureTop = name; - - if(textureAlt.isEmpty()) - textureAlt = name; - - this.textureName = name; - - return this; - } + public Block setBlockTextureName(String name) { + + if(textureTop.isEmpty()) textureTop = name; + if(textureAlt.isEmpty()) textureAlt = name; + this.textureName = name; + return this; + } @Override @SideOnly(Side.CLIENT) @@ -62,37 +49,6 @@ public class BlockPillar extends Block implements IFluidConnectorBlock { @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { - - if(this == ModBlocks.reactor_element && metadata == 1) - return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.iconAlt); - return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.blockIcon); } - - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - - if(this != ModBlocks.reactor_element) - return super.onBlockActivated(world, x, y, z, player, side, hitX, hitY, hitZ); - - if(player.isSneaking()) - { - if(world.getBlockMetadata(x, y, z) == 0) { - world.setBlockMetadataWithNotify(x, y, z, 1, 3); - } else { - world.setBlockMetadataWithNotify(x, y, z, 0, 3); - } - - return true; - } - - return false; - } - - @Override - public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir) { - if(this != ModBlocks.reactor_conductor) return false; - return type == Fluids.WATER || type == Fluids.COOLANT || type == Fluids.STEAM || type == Fluids.HOTSTEAM || type == Fluids.SUPERHOTSTEAM || type == Fluids.ULTRAHOTSTEAM; - } } diff --git a/src/main/java/com/hbm/blocks/machine/BlockRotatable.java b/src/main/java/com/hbm/blocks/machine/BlockRotatable.java deleted file mode 100644 index d3e7d538e..000000000 --- a/src/main/java/com/hbm/blocks/machine/BlockRotatable.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.hbm.blocks.machine; - -import com.hbm.blocks.ModBlocks; -import com.hbm.lib.RefStrings; - -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.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; - -public class BlockRotatable extends Block { - - @SideOnly(Side.CLIENT) - private IIcon iconFront; - - public BlockRotatable(Material p_i45394_1_) { - super(p_i45394_1_); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - - if(this == ModBlocks.reactor_ejector) { - this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":reactor_ejector"); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":brick_concrete"); - } - if(this == ModBlocks.reactor_inserter) { - this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":reactor_inserter"); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":brick_concrete"); - } - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon); - } - - @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; - - if(i == 0) { - world.setBlockMetadataWithNotify(x, y, z, 2, 2); - } - if(i == 1) { - world.setBlockMetadataWithNotify(x, y, z, 5, 2); - } - if(i == 2) { - world.setBlockMetadataWithNotify(x, y, z, 3, 2); - } - if(i == 3) { - world.setBlockMetadataWithNotify(x, y, z, 4, 2); - } - } -} diff --git a/src/main/java/com/hbm/blocks/machine/DummyBlockDrill.java b/src/main/java/com/hbm/blocks/machine/DummyBlockDrill.java deleted file mode 100644 index 752120244..000000000 --- a/src/main/java/com/hbm/blocks/machine/DummyBlockDrill.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.hbm.blocks.machine; - - -import com.hbm.blocks.ModBlocks; -import com.hbm.main.MainRegistry; -import com.hbm.tileentity.machine.TileEntityDummy; -import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; - -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.material.Material; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -public class DummyBlockDrill extends DummyOldBase { - - public DummyBlockDrill(Material p_i45386_1_, boolean port) { - super(p_i45386_1_, port); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityDummy(); - } - - @Override - @SideOnly(Side.CLIENT) - public Item getItem(World world, int x, int y, int z) - { - return Item.getItemFromBlock(ModBlocks.machine_drill); - } - - @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()) - { - TileEntity te = world.getTileEntity(x, y, z); - if(te != null && te instanceof TileEntityDummy) { - int a = ((TileEntityDummy)te).targetX; - int b = ((TileEntityDummy)te).targetY; - int c = ((TileEntityDummy)te).targetZ; - - TileEntityMachineMiningDrill entity = (TileEntityMachineMiningDrill) world.getTileEntity(a, b, c); - if(entity != null) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, a, b, c); - } - } - return true; - } else { - return false; - } - } - -} diff --git a/src/main/java/com/hbm/blocks/machine/MachineCMBFactory.java b/src/main/java/com/hbm/blocks/machine/MachineCMBFactory.java deleted file mode 100644 index 92210dd35..000000000 --- a/src/main/java/com/hbm/blocks/machine/MachineCMBFactory.java +++ /dev/null @@ -1,131 +0,0 @@ -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.TileEntityMachineCMBFactory; - -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.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; - -public class MachineCMBFactory extends BlockContainer { - - private final Random field_149933_a = new Random(); - private static boolean keepInventory; - - @SideOnly(Side.CLIENT) - private IIcon iconTop; - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":machine_cmb_top"); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":machine_cmb_side"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.blockIcon); - } - - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) - { - return Item.getItemFromBlock(ModBlocks.machine_combine_factory); - } - - public MachineCMBFactory(Material p_i45386_1_) { - super(p_i45386_1_); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityMachineCMBFactory(); - } - - @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()) - { - TileEntityMachineCMBFactory entity = (TileEntityMachineCMBFactory) world.getTileEntity(x, y, z); - if(entity != null) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); - } - return true; - } else { - return false; - } - } - - @Override - public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) - { - if (!keepInventory) - { - TileEntityMachineCMBFactory tileentityfurnace = (TileEntityMachineCMBFactory)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); - - if (tileentityfurnace != null) - { - for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) - { - ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); - - if (itemstack != null) - { - float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - - while (itemstack.stackSize > 0) - { - int j1 = this.field_149933_a.nextInt(21) + 10; - - if (j1 > itemstack.stackSize) - { - j1 = itemstack.stackSize; - } - - itemstack.stackSize -= j1; - EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); - - if (itemstack.hasTagCompound()) - { - entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); - } - - float f3 = 0.05F; - entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3; - entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3; - p_149749_1_.spawnEntityInWorld(entityitem); - } - } - } - - p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); - } - } - - super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); - } -} diff --git a/src/main/java/com/hbm/blocks/machine/MachineCoal.java b/src/main/java/com/hbm/blocks/machine/MachineCoal.java deleted file mode 100644 index 4b28a5e94..000000000 --- a/src/main/java/com/hbm/blocks/machine/MachineCoal.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.hbm.blocks.machine; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -import com.hbm.tileentity.machine.TileEntityMachineCoal; - -@Deprecated -public class MachineCoal extends BlockContainer { - - public MachineCoal(boolean blockState) { - super(Material.iron); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityMachineCoal(); - } -} diff --git a/src/main/java/com/hbm/blocks/machine/MachineMiningDrill.java b/src/main/java/com/hbm/blocks/machine/MachineMiningDrill.java deleted file mode 100644 index c4aa5e156..000000000 --- a/src/main/java/com/hbm/blocks/machine/MachineMiningDrill.java +++ /dev/null @@ -1,232 +0,0 @@ -package com.hbm.blocks.machine; - -import java.util.Random; - -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.MultiblockHandler; -import com.hbm.interfaces.IMultiblock; -import com.hbm.tileentity.machine.TileEntityDummy; -import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; - -public class MachineMiningDrill extends BlockContainer implements IMultiblock { - - public MachineMiningDrill(Material p_i45386_1_) { - super(p_i45386_1_); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityMachineMiningDrill(); - - } - - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { - return Item.getItemFromBlock(ModBlocks.machine_drill); - } - - @Override - public int getRenderType() { - return -1; - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - public boolean renderAsNormalBlock() { - return false; - } - - @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; - - if (i == 0) { - world.setBlockMetadataWithNotify(x, y, z, 5, 2); - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.drillDimension)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.drillDimension, ModBlocks.dummy_block_drill); - - // - DummyBlockDrill.safeBreak = true; - world.setBlock(x + 1, y, z, ModBlocks.dummy_port_drill); - TileEntity te = world.getTileEntity(x + 1, y, z); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x - 1, y, z, ModBlocks.dummy_port_drill); - TileEntity te2 = world.getTileEntity(x - 1, y, z); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te2; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - DummyBlockDrill.safeBreak = false; - // - - } else - world.func_147480_a(x, y, z, true); - } - if (i == 1) { - world.setBlockMetadataWithNotify(x, y, z, 3, 2); - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.drillDimension)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.drillDimension, ModBlocks.dummy_block_drill); - - // - DummyBlockDrill.safeBreak = true; - world.setBlock(x, y, z + 1, ModBlocks.dummy_port_drill); - TileEntity te = world.getTileEntity(x, y, z + 1); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x, y, z - 1, ModBlocks.dummy_port_drill); - TileEntity te2 = world.getTileEntity(x, y, z - 1); - if(te2 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te2; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - DummyBlockDrill.safeBreak = false; - // - - } else - world.func_147480_a(x, y, z, true); - } - if (i == 2) { - world.setBlockMetadataWithNotify(x, y, z, 4, 2); - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.drillDimension)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.drillDimension, ModBlocks.dummy_block_drill); - - // - DummyBlockDrill.safeBreak = true; - world.setBlock(x + 1, y, z, ModBlocks.dummy_port_drill); - TileEntity te = world.getTileEntity(x + 1, y, z); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x - 1, y, z, ModBlocks.dummy_port_drill); - TileEntity te2 = world.getTileEntity(x - 1, y, z); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te2; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - DummyBlockDrill.safeBreak = false; - // - - } else - world.func_147480_a(x, y, z, true); - } - if (i == 3) { - world.setBlockMetadataWithNotify(x, y, z, 2, 2); - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.drillDimension)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.drillDimension, ModBlocks.dummy_block_drill); - - // - DummyBlockDrill.safeBreak = true; - world.setBlock(x, y, z + 1, ModBlocks.dummy_port_drill); - TileEntity te = world.getTileEntity(x, y, z + 1); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x, y, z - 1, ModBlocks.dummy_port_drill); - TileEntity te2 = world.getTileEntity(x, y, z - 1); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te2; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - DummyBlockDrill.safeBreak = false; - // - - } else - world.func_147480_a(x, y, z, true); - } - } - - private final Random field_149933_a = new Random(); - private static boolean keepInventory; - - @Override - public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) - { - if (!keepInventory) - { - ISidedInventory tileentityfurnace = (ISidedInventory)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); - - if (tileentityfurnace != null) - { - for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) - { - ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); - - if (itemstack != null) - { - float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - - while (itemstack.stackSize > 0) - { - int j1 = this.field_149933_a.nextInt(21) + 10; - - if (j1 > itemstack.stackSize) - { - j1 = itemstack.stackSize; - } - - itemstack.stackSize -= j1; - EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); - - if (itemstack.hasTagCompound()) - { - entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); - } - - float f3 = 0.05F; - entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3; - entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3; - p_149749_1_.spawnEntityInWorld(entityitem); - } - } - } - - p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); - } - } - - super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); - } -} diff --git a/src/main/java/com/hbm/blocks/machine/ReactorCore.java b/src/main/java/com/hbm/blocks/machine/ReactorCore.java deleted file mode 100644 index 847ece06f..000000000 --- a/src/main/java/com/hbm/blocks/machine/ReactorCore.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.hbm.blocks.machine; - -import java.util.Random; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -public class ReactorCore extends BlockContainer { - - public boolean keepInventory = false; - public Random field_149933_a = new Random(); - - public ReactorCore(Material p_i45386_1_) { - super(p_i45386_1_); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return null; - } -} diff --git a/src/main/java/com/hbm/blocks/machine/ReactorHatch.java b/src/main/java/com/hbm/blocks/machine/ReactorHatch.java deleted file mode 100644 index b83e57aa1..000000000 --- a/src/main/java/com/hbm/blocks/machine/ReactorHatch.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.hbm.blocks.machine; - -import java.util.Random; - -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; -import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; - -import api.hbm.fluid.IFluidConnectorBlock; -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.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public class ReactorHatch extends Block implements IFluidConnectorBlock { - - @SideOnly(Side.CLIENT) - private IIcon iconFront; - - public ReactorHatch(Material p_i45394_1_) { - super(p_i45394_1_); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":reactor_hatch"); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":brick_concrete"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - return 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); - } - - @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; - - if(i == 0) - { - world.setBlockMetadataWithNotify(x, y, z, 2, 2); - } - if(i == 1) - { - world.setBlockMetadataWithNotify(x, y, z, 5, 2); - } - if(i == 2) - { - world.setBlockMetadataWithNotify(x, y, z, 3, 2); - } - if(i == 3) - { - 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 + 2) instanceof TileEntityMachineReactorLarge) - { - if(((TileEntityMachineReactorLarge)world.getTileEntity(x, y, z + 2)).checkBody()) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z + 2); - } else { - player.addChatMessage(new ChatComponentText("[Nuclear Reactor] Error: Reactor Structure not valid!")); - } - } else { - player.addChatMessage(new ChatComponentText("[Nuclear Reactor Error: Reactor Core not found!")); - } - } - if(world.getBlockMetadata(x, y, z) == 3) - { - if(world.getTileEntity(x, y, z - 2) instanceof TileEntityMachineReactorLarge) - { - if(((TileEntityMachineReactorLarge)world.getTileEntity(x, y, z - 2)).checkBody()) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z - 2); - } else { - player.addChatMessage(new ChatComponentText("[Nuclear Reactor] Error: Reactor Structure not valid!")); - } - } else { - player.addChatMessage(new ChatComponentText("[Nuclear Reactor Error: Reactor Core not found!")); - } - } - if(world.getBlockMetadata(x, y, z) == 4) - { - if(world.getTileEntity(x + 2, y, z) instanceof TileEntityMachineReactorLarge) - { - if(((TileEntityMachineReactorLarge)world.getTileEntity(x + 2, y, z)).checkBody()) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x + 2, y, z); - } else { - player.addChatMessage(new ChatComponentText("[Nuclear Reactor] Error: Reactor Structure not valid!")); - } - } else { - player.addChatMessage(new ChatComponentText("[Nuclear Reactor Error: Reactor Core not found!")); - } - } - if(world.getBlockMetadata(x, y, z) == 5) - { - if(world.getTileEntity(x - 2, y, z) instanceof TileEntityMachineReactorLarge) - { - if(((TileEntityMachineReactorLarge)world.getTileEntity(x - 2, y, z)).checkBody()) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x - 2, y, z); - } else { - player.addChatMessage(new ChatComponentText("[Nuclear Reactor] Error: Reactor Structure not valid!")); - } - } else { - player.addChatMessage(new ChatComponentText("[Nuclear Reactor Error: Reactor Core not found!")); - } - } - return true; - } else { - return false; - } - } - - @Override - public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir) { - return type == Fluids.WATER || type == Fluids.COOLANT || type == Fluids.STEAM || type == Fluids.HOTSTEAM || type == Fluids.SUPERHOTSTEAM || type == Fluids.ULTRAHOTSTEAM; - } -} diff --git a/src/main/java/com/hbm/blocks/machine/WatzCore.java b/src/main/java/com/hbm/blocks/machine/WatzCore.java deleted file mode 100644 index 0289ece20..000000000 --- a/src/main/java/com/hbm/blocks/machine/WatzCore.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.hbm.blocks.machine; - -import com.hbm.tileentity.machine.TileEntityWatzCore; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -public class WatzCore extends BlockContainer { - - public WatzCore(Material p_i45386_1_) { - super(p_i45386_1_); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityWatzCore(); - } -} diff --git a/src/main/java/com/hbm/blocks/machine/WatzHatch.java b/src/main/java/com/hbm/blocks/machine/WatzHatch.java deleted file mode 100644 index 157a02036..000000000 --- a/src/main/java/com/hbm/blocks/machine/WatzHatch.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.hbm.blocks.machine; - -import java.util.Random; - -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; -import com.hbm.tileentity.machine.TileEntityWatzCore; - -import api.hbm.fluid.IFluidConnectorBlock; -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.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public class WatzHatch extends Block implements IFluidConnectorBlock { - - @SideOnly(Side.CLIENT) - private IIcon iconFront; - - public WatzHatch(Material p_i45394_1_) { - super(p_i45394_1_); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":watz_hatch"); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":reinforced_brick"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - return 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); - } - - @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; - - if(i == 0) - { - world.setBlockMetadataWithNotify(x, y, z, 2, 2); - } - if(i == 1) - { - world.setBlockMetadataWithNotify(x, y, z, 5, 2); - } - if(i == 2) - { - world.setBlockMetadataWithNotify(x, y, z, 3, 2); - } - if(i == 3) - { - 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 + 3) instanceof TileEntityWatzCore) - { - if(((TileEntityWatzCore)world.getTileEntity(x, y, z + 3)).isStructureValid(world)) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z + 3); - } else { - player.addChatMessage(new ChatComponentText("[Watz Power Plant] Error: Reactor Structure not valid!")); - } - } else { - player.addChatMessage(new ChatComponentText("[Watz Power Plant] Error: Reactor Core not found!")); - } - } - if(world.getBlockMetadata(x, y, z) == 3) - { - if(world.getTileEntity(x, y, z - 3) instanceof TileEntityWatzCore) - { - if(((TileEntityWatzCore)world.getTileEntity(x, y, z - 3)).isStructureValid(world)) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z - 3); - } else { - player.addChatMessage(new ChatComponentText("[Watz Power Plant] Error: Reactor Structure not valid!")); - } - } else { - player.addChatMessage(new ChatComponentText("[Watz Power Plant] Error: Reactor Core not found!")); - } - } - if(world.getBlockMetadata(x, y, z) == 4) - { - if(world.getTileEntity(x + 3, y, z) instanceof TileEntityWatzCore) - { - if(((TileEntityWatzCore)world.getTileEntity(x + 3, y, z)).isStructureValid(world)) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x + 3, y, z); - } else { - player.addChatMessage(new ChatComponentText("[Watz Power Plant] Error: Reactor Structure not valid!")); - } - } else { - player.addChatMessage(new ChatComponentText("[Watz Power Plant] Error: Reactor Core not found!")); - } - } - if(world.getBlockMetadata(x, y, z) == 5) - { - if(world.getTileEntity(x - 3, y, z) instanceof TileEntityWatzCore) - { - if(((TileEntityWatzCore)world.getTileEntity(x - 3, y, z)).isStructureValid(world)) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x - 3, y, z); - } else { - player.addChatMessage(new ChatComponentText("[Watz Power Plant] Error: Reactor Structure not valid!")); - } - } else { - player.addChatMessage(new ChatComponentText("[Watz Power Plant] Error: Reactor Core not found!")); - } - } - return true; - } else { - return false; - } - } - - @Override - public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir) { - return type == Fluids.WATZ; - } -} diff --git a/src/main/java/com/hbm/blocks/rail/BlockRailWaypointSystem.java b/src/main/java/com/hbm/blocks/rail/BlockRailWaypointSystem.java index 7ef5f4fb0..9cf026cd1 100644 --- a/src/main/java/com/hbm/blocks/rail/BlockRailWaypointSystem.java +++ b/src/main/java/com/hbm/blocks/rail/BlockRailWaypointSystem.java @@ -158,8 +158,6 @@ public abstract class BlockRailWaypointSystem extends BlockDummyable implements currentPos = nextNode; } - if(!world.isRemote) PacketDispatcher.wrapper.sendToAllAround(new PlayerInformPacket(ChatBuilder.start("" + distRemaining).color(EnumChatFormatting.RED).flush(), 1), new TargetPoint(world.provider.dimensionId, x, y, z, 50)); - info.overshoot = distRemaining; info.pos = new BlockPos(currentPos.xCoord, currentPos.yCoord, currentPos.zCoord); diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurveBase.java similarity index 94% rename from src/main/java/com/hbm/blocks/rail/RailStandardCurve.java rename to src/main/java/com/hbm/blocks/rail/RailStandardCurveBase.java index e4e394469..101c7801f 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardCurveBase.java @@ -22,9 +22,11 @@ import net.minecraft.world.World; import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; -public class RailStandardCurve extends BlockDummyable implements IRailNTM, IRenderBlock { +public class RailStandardCurveBase extends BlockDummyable implements IRailNTM, IRenderBlock { + + protected int width = 4; - public RailStandardCurve() { + public RailStandardCurveBase() { super(Material.iron); } @@ -59,8 +61,8 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM, IRend ForgeDirection dir = ForgeDirection.getOrientation(meta); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - double turnRadius = 4D; - double axisDist = 4.5D; + double turnRadius = width; + double axisDist = width + 0.5D; Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); double axisX = cX + 0.5 + dir.offsetX * 0.5 + rot.offsetX * axisDist; @@ -105,7 +107,7 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM, IRend double angleOvershoot = effAngle - 90D; moveAngle -= angleOvershoot; double lengthOvershoot = angleOvershoot * length90Deg / 90D; - info.dist(lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX - dir.offsetX * 4 + rot.offsetX * 5, y, cZ - dir.offsetZ * 4 + rot.offsetZ * 5)).yaw((float) moveAngle); + info.dist(lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX - dir.offsetX * width + rot.offsetX * (width + 1), y, cZ - dir.offsetZ * width + rot.offsetZ * (width + 1))).yaw((float) moveAngle); return Vec3.createVectorHelper(axisX - dir.offsetX * turnRadius, y + 0.1875, axisZ - dir.offsetZ * turnRadius); } @@ -130,7 +132,7 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM, IRend @Override public int[] getDimensions() { - return new int[] {0, 0, 4, 0, 4, 0}; + return new int[] {0, 0, width, 0, width, 0}; } @Override @@ -208,9 +210,10 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM, IRend @Override @SideOnly(Side.CLIENT) public void renderInventory(Tessellator tessellator, Block block, int metadata) { - GL11.glScaled(0.2, 0.2, 0.2); - GL11.glTranslated(2.5, -0.0625, -1.5); - GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(0.3, 0.3, 0.3); + GL11.glRotated(45, 0, 1, 0); + GL11.glRotated(60, 1, 0, 0); + GL11.glTranslated(2, 0, 2); tessellator.startDrawingQuads(); ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve, block.getIcon(1, 0), tessellator, 0, false); tessellator.draw(); diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide.java deleted file mode 100644 index 221832df8..000000000 --- a/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide.java +++ /dev/null @@ -1,239 +0,0 @@ -package com.hbm.blocks.rail; - -import org.lwjgl.opengl.GL11; - -import com.hbm.blocks.BlockDummyable; -import com.hbm.lib.Library; -import com.hbm.main.ResourceManager; -import com.hbm.render.util.ObjUtil; -import com.hbm.util.fauxpointtwelve.BlockPos; - -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.Tessellator; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.MathHelper; -import net.minecraft.util.Vec3; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.client.model.obj.WavefrontObject; -import net.minecraftforge.common.util.ForgeDirection; - -public class RailStandardCurveWide extends BlockDummyable implements IRailNTM, IRenderBlock { - - public RailStandardCurveWide() { - super(Material.iron); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return null; - } - - @Override - public int getRenderType() { - return renderID; - } - - @Override - public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { - return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext()); - } - - @Override - public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { - return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); - } - - /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ - public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { - int[] pos = this.findCore(world, x, y, z); - if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); - int cX = pos[0]; - int cY = pos[1]; - int cZ = pos[2]; - int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset; - ForgeDirection dir = ForgeDirection.getOrientation(meta); - ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - - double turnRadius = 6D; - double axisDist = 6.5D; - - Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); - double axisX = cX + 0.5 + dir.offsetX * 0.5 + rot.offsetX * axisDist; - double axisZ = cZ + 0.5 + dir.offsetZ * 0.5 + rot.offsetZ * axisDist; - - Vec3 dist = Vec3.createVectorHelper(vec.xCoord - axisX, 0, vec.zCoord - axisZ); - dist = dist.normalize(); - dist.xCoord *= turnRadius; - dist.zCoord *= turnRadius; - - double moveAngle = Math.atan2(motionX, motionZ) * 180D / Math.PI + 90; - - if(speed == 0) { - info.dist(0).pos(new BlockPos(x, y, z)).yaw((float) moveAngle); - return Vec3.createVectorHelper(axisX + dist.xCoord, y, axisZ + dist.zCoord); - } - - double angleDeg = Math.atan2(dist.xCoord, dist.zCoord) * 180D / Math.PI + 90; - if(dir == Library.NEG_X) angleDeg -= 90; - if(dir == Library.POS_X) angleDeg += 90; - if(dir == Library.POS_Z) angleDeg += 180; - angleDeg = MathHelper.wrapAngleTo180_double(angleDeg); - double length90Deg = turnRadius * Math.PI / 2D; - double angularChange = speed / length90Deg * 90D; - - ForgeDirection moveDir = ForgeDirection.UNKNOWN; - - if(Math.abs(motionX) > Math.abs(motionZ)) { - moveDir = motionX > 0 ? Library.POS_X : Library.NEG_X; - } else { - moveDir = motionZ > 0 ? Library.POS_Z : Library.NEG_Z; - } - - if(moveDir == dir || moveDir == rot.getOpposite()) { - angularChange *= -1; - } - - double effAngle = angleDeg + angularChange; - moveAngle += angularChange; - - if(effAngle > 90) { - double angleOvershoot = effAngle - 90D; - moveAngle -= angleOvershoot; - double lengthOvershoot = angleOvershoot * length90Deg / 90D; - info.dist(lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX - dir.offsetX * 6 + rot.offsetX * 7, y, cZ - dir.offsetZ * 6 + rot.offsetZ * 7)).yaw((float) moveAngle); - return Vec3.createVectorHelper(axisX - dir.offsetX * turnRadius, y + 0.1875, axisZ - dir.offsetZ * turnRadius); - } - - if(effAngle < 0) { - double angleOvershoot = -effAngle; - moveAngle -= angleOvershoot; - double lengthOvershoot = angleOvershoot * length90Deg / 90D; - info.dist(-lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX + dir.offsetX , y, cZ + dir.offsetZ)).yaw((float) moveAngle); - return Vec3.createVectorHelper(axisX - rot.offsetX * turnRadius, y + 0.1875, axisZ -rot.offsetZ * turnRadius); - } - - double radianChange = angularChange * Math.PI / 180D; - dist.rotateAroundY((float) radianChange); - - return Vec3.createVectorHelper(axisX + dist.xCoord, y + 0.1875, axisZ + dist.zCoord); - } - - @Override - public TrackGauge getGauge(World world, int x, int y, int z) { - return TrackGauge.STANDARD; - } - - @Override - public int[] getDimensions() { - return new int[] {0, 0, 6, 0, 6, 0}; - } - - @Override - public int getOffset() { - return 0; - } - - @Override - public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { - this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); - } - - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { - this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); - return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); - } - - @Override - protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { - - ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - dir = dir.getOpposite(); - - int dX = dir.offsetX; - int dZ = dir.offsetZ; - int rX = rot.offsetX; - int rZ = rot.offsetZ; - - return world.getBlock(x + dX, y, z + dZ).isReplaceable(world, x + dX, y, z + dZ) && - world.getBlock(x + rX, y, z + rZ).isReplaceable(world, x + rX, y, z + rZ) && - world.getBlock(x + dX + rX, y, z + dZ + rZ).isReplaceable(world, x + dX + rX, y, z + dZ + rZ) && - world.getBlock(x + dX + rX * 2, y, z + dZ + rZ * 2).isReplaceable(world, x + dX + rX * 2, y, z + dZ + rZ * 2) && - world.getBlock(x + dX * 2 + rX, y, z + dZ * 2 + rZ).isReplaceable(world, x + dX * 2 + rX, y, z + dZ * 2 + rZ) && - world.getBlock(x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2).isReplaceable(world, x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2) && - world.getBlock(x + dX * 3 + rX, y, z + dZ * 3 + rZ).isReplaceable(world, x + dX * 3 + rX, y, z + dZ * 3 + rZ) && - world.getBlock(x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2).isReplaceable(world, x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2) && - world.getBlock(x + dX * 2 + rX * 3, y, z + dZ * 2 + rZ * 3).isReplaceable(world, x + dX * 2 + rX * 3, y, z + dZ * 2 + rZ * 3) && - world.getBlock(x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3).isReplaceable(world, x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3) && - world.getBlock(x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3).isReplaceable(world, x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3) && - world.getBlock(x + dX * 3 + rX * 4, y, z + dZ * 3 + rZ * 4).isReplaceable(world, x + dX * 3 + rX * 4, y, z + dZ * 3 + rZ * 4) && - world.getBlock(x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4).isReplaceable(world, x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4); - } - - @Override - protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { - - BlockDummyable.safeRem = true; - - ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - dir = dir.getOpposite(); - - int dX = dir.offsetX; - int dZ = dir.offsetZ; - int rX = rot.offsetX; - int rZ = rot.offsetZ; - - world.setBlock(x + dX, y, z + dZ, this, dir.ordinal(), 3); - world.setBlock(x + dX * 2, y, z + dZ * 2, this, dir.ordinal(), 3); - world.setBlock(x + rX, y, z + rZ, this, rot.ordinal(), 3); - world.setBlock(x + dX + rX, y, z + dZ + rZ, this, rot.ordinal(), 3); - world.setBlock(x + dX * 2 + rX, y, z + dZ * 2 + rZ, this, rot.ordinal(), 3); - world.setBlock(x + dX * 3 + rX, y, z + dZ * 3 + rZ, this, dir.ordinal(), 3); - world.setBlock(x + dX * 4 + rX, y, z + dZ * 4 + rZ, this, dir.ordinal(), 3); - world.setBlock(x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2, this, rot.ordinal(), 3); - world.setBlock(x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2, this, dir.ordinal(), 3); - world.setBlock(x + dX * 4 + rX * 2, y, z + dZ * 4 + rZ * 2, this, dir.ordinal(), 3); - world.setBlock(x + dX * 5 + rX * 2, y, z + dZ * 5 + rZ * 2, this, dir.ordinal(), 3); - world.setBlock(x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3, this, rot.ordinal(), 3); - world.setBlock(x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3, this, dir.ordinal(), 3); - world.setBlock(x + dX * 5 + rX * 3, y, z + dZ * 5 + rZ * 3, this, dir.ordinal(), 3); - world.setBlock(x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4, this, rot.ordinal(), 3); - world.setBlock(x + dX * 5 + rX * 4, y, z + dZ * 5 + rZ * 4, this, dir.ordinal(), 3); - world.setBlock(x + dX * 6 + rX * 4, y, z + dZ * 6 + rZ * 4, this, dir.ordinal(), 3); - world.setBlock(x + dX * 5 + rX * 5, y, z + dZ * 5 + rZ * 5, this, rot.ordinal(), 3); - world.setBlock(x + dX * 5 + rX * 6, y, z + dZ * 5 + rZ * 6, this, rot.ordinal(), 3); - world.setBlock(x + dX * 6 + rX * 5, y, z + dZ * 6 + rZ * 5, this, rot.ordinal(), 3); - world.setBlock(x + dX * 6 + rX * 6, y, z + dZ * 6 + rZ * 6, this, rot.ordinal(), 3); - - BlockDummyable.safeRem = false; - } - - @Override - @SideOnly(Side.CLIENT) - public void renderInventory(Tessellator tessellator, Block block, int metadata) { - GL11.glScaled(0.12, 0.12, 0.12); - GL11.glTranslated(2.5, -0.0625, -3); - GL11.glRotated(90, 0, 1, 0); - tessellator.startDrawingQuads(); - ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve_wide, block.getIcon(1, 0), tessellator, 0, false); - tessellator.draw(); - } - - @Override - @SideOnly(Side.CLIENT) - public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z) { - if(meta < 12) return; - float rotation = 0; - if(meta == 15) rotation = 90F / 180F * (float) Math.PI; - if(meta == 12) rotation = 180F / 180F * (float) Math.PI; - if(meta == 14) rotation = 270F / 180F * (float) Math.PI; - tessellator.addTranslation(x + 0.5F, y, z + 0.5F); - ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve_wide, block.getIcon(1, 0), tessellator, rotation, true); - tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); - } -} diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide7.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide7.java new file mode 100644 index 000000000..99c370760 --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide7.java @@ -0,0 +1,113 @@ +package com.hbm.blocks.rail; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.client.model.obj.WavefrontObject; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailStandardCurveWide7 extends RailStandardCurveBase { + + public RailStandardCurveWide7() { + super(); + this.width = 6; + } + + @Override + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + dir = dir.getOpposite(); + + int dX = dir.offsetX; + int dZ = dir.offsetZ; + int rX = rot.offsetX; + int rZ = rot.offsetZ; + + return world.getBlock(x + dX, y, z + dZ).isReplaceable(world, x + dX, y, z + dZ) && + world.getBlock(x + rX, y, z + rZ).isReplaceable(world, x + rX, y, z + rZ) && + world.getBlock(x + dX + rX, y, z + dZ + rZ).isReplaceable(world, x + dX + rX, y, z + dZ + rZ) && + world.getBlock(x + dX + rX * 2, y, z + dZ + rZ * 2).isReplaceable(world, x + dX + rX * 2, y, z + dZ + rZ * 2) && + world.getBlock(x + dX * 2 + rX, y, z + dZ * 2 + rZ).isReplaceable(world, x + dX * 2 + rX, y, z + dZ * 2 + rZ) && + world.getBlock(x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2).isReplaceable(world, x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2) && + world.getBlock(x + dX * 3 + rX, y, z + dZ * 3 + rZ).isReplaceable(world, x + dX * 3 + rX, y, z + dZ * 3 + rZ) && + world.getBlock(x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2).isReplaceable(world, x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2) && + world.getBlock(x + dX * 2 + rX * 3, y, z + dZ * 2 + rZ * 3).isReplaceable(world, x + dX * 2 + rX * 3, y, z + dZ * 2 + rZ * 3) && + world.getBlock(x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3).isReplaceable(world, x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3) && + world.getBlock(x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3).isReplaceable(world, x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3) && + world.getBlock(x + dX * 3 + rX * 4, y, z + dZ * 3 + rZ * 4).isReplaceable(world, x + dX * 3 + rX * 4, y, z + dZ * 3 + rZ * 4) && + world.getBlock(x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4).isReplaceable(world, x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4); + } + + @Override + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + + BlockDummyable.safeRem = true; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + dir = dir.getOpposite(); + + int dX = dir.offsetX; + int dZ = dir.offsetZ; + int rX = rot.offsetX; + int rZ = rot.offsetZ; + + world.setBlock(x + dX, y, z + dZ, this, dir.ordinal(), 3); + world.setBlock(x + dX * 2, y, z + dZ * 2, this, dir.ordinal(), 3); + world.setBlock(x + rX, y, z + rZ, this, rot.ordinal(), 3); + world.setBlock(x + dX + rX, y, z + dZ + rZ, this, rot.ordinal(), 3); + world.setBlock(x + dX * 2 + rX, y, z + dZ * 2 + rZ, this, rot.ordinal(), 3); + world.setBlock(x + dX * 3 + rX, y, z + dZ * 3 + rZ, this, dir.ordinal(), 3); + world.setBlock(x + dX * 4 + rX, y, z + dZ * 4 + rZ, this, dir.ordinal(), 3); + world.setBlock(x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2, this, rot.ordinal(), 3); + world.setBlock(x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2, this, dir.ordinal(), 3); + world.setBlock(x + dX * 4 + rX * 2, y, z + dZ * 4 + rZ * 2, this, dir.ordinal(), 3); + world.setBlock(x + dX * 5 + rX * 2, y, z + dZ * 5 + rZ * 2, this, dir.ordinal(), 3); + world.setBlock(x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3, this, rot.ordinal(), 3); + world.setBlock(x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3, this, dir.ordinal(), 3); + world.setBlock(x + dX * 5 + rX * 3, y, z + dZ * 5 + rZ * 3, this, dir.ordinal(), 3); + world.setBlock(x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4, this, rot.ordinal(), 3); + world.setBlock(x + dX * 5 + rX * 4, y, z + dZ * 5 + rZ * 4, this, dir.ordinal(), 3); + world.setBlock(x + dX * 6 + rX * 4, y, z + dZ * 6 + rZ * 4, this, dir.ordinal(), 3); + world.setBlock(x + dX * 5 + rX * 5, y, z + dZ * 5 + rZ * 5, this, rot.ordinal(), 3); + world.setBlock(x + dX * 5 + rX * 6, y, z + dZ * 5 + rZ * 6, this, rot.ordinal(), 3); + world.setBlock(x + dX * 6 + rX * 5, y, z + dZ * 6 + rZ * 5, this, rot.ordinal(), 3); + world.setBlock(x + dX * 6 + rX * 6, y, z + dZ * 6 + rZ * 6, this, rot.ordinal(), 3); + + BlockDummyable.safeRem = false; + } + + @Override + @SideOnly(Side.CLIENT) + public void renderInventory(Tessellator tessellator, Block block, int metadata) { + GL11.glScaled(0.225, 0.225, 0.225); + GL11.glRotated(45, 0, 1, 0); + GL11.glRotated(60, 1, 0, 0); + GL11.glTranslated(3, 0, 3); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve_wide7, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + } + + @Override + @SideOnly(Side.CLIENT) + public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z) { + if(meta < 12) return; + float rotation = 0; + if(meta == 15) rotation = 90F / 180F * (float) Math.PI; + if(meta == 12) rotation = 180F / 180F * (float) Math.PI; + if(meta == 14) rotation = 270F / 180F * (float) Math.PI; + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve_wide7, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + } +} diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide9.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide9.java new file mode 100644 index 000000000..bb48b111b --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide9.java @@ -0,0 +1,148 @@ +package com.hbm.blocks.rail; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.client.model.obj.WavefrontObject; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailStandardCurveWide9 extends RailStandardCurveBase { + + public RailStandardCurveWide9() { + super(); + this.width = 8; + } + + @Override + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + dir = dir.getOpposite(); + + int dX = dir.offsetX; + int dZ = dir.offsetZ; + int rX = rot.offsetX; + int rZ = rot.offsetZ; + + int[][] dim = new int[][] { + {1, 0}, + {2, 0}, + {0, 1}, + {1, 1}, + {2, 1}, + {3, 1}, + {4, 1}, + {2, 2}, + {3, 2}, + {4, 2}, + {5, 2}, + {4, 3}, + {5, 3}, + {5, 4}, + {6, 3}, + {6, 4}, + {7, 4}, + {6, 5}, + {7, 5}, + {6, 6}, + {7, 6}, + {7, 7}, + {7, 8}, + {8, 6}, + {8, 7}, + {8, 8}, + }; + + for(int[] array : dim) { + if(!world.getBlock(x + dX * array[0] + rX * array[1], y, z + dZ * array[0] + rZ * array[1]).isReplaceable(world, x + dX * array[0] + rX * array[1], y, z + dZ * array[0] + rZ * array[1])) return false; + } + + return true; + } + + @Override + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + + BlockDummyable.safeRem = true; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + dir = dir.getOpposite(); + + int dX = dir.offsetX; + int dZ = dir.offsetZ; + int rX = rot.offsetX; + int rZ = rot.offsetZ; + + int d = dir.ordinal(); + int r = rot.ordinal(); + + int[][] dim = new int[][] { + {1, 0, d}, + {2, 0, d}, + {0, 1, r}, + {1, 1, d}, + {2, 1, d}, + {3, 1, d}, + {4, 1, d}, + {2, 2, r}, + {3, 2, r}, + {4, 2, r}, + {5, 2, d}, + {4, 3, r}, + {5, 3, r}, + {5, 4, r}, + {6, 3, d}, + {6, 4, d}, + {7, 4, d}, + {6, 5, r}, + {7, 5, r}, + {6, 6, r}, + {7, 6, r}, + {7, 7, r}, + {7, 8, r}, + {8, 6, d}, + {8, 7, d}, + {8, 8, d}, + }; + + for(int[] array : dim) { + world.setBlock(x + dX * array[0] + rX * array[1], y, z + dZ * array[0] + rZ * array[1], this, array[2], 3); + } + + BlockDummyable.safeRem = false; + } + + @Override + @SideOnly(Side.CLIENT) + public void renderInventory(Tessellator tessellator, Block block, int metadata) { + GL11.glScaled(0.175, 0.175, 0.175); + GL11.glRotated(45, 0, 1, 0); + GL11.glRotated(60, 1, 0, 0); + GL11.glTranslated(4, 0, 4); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve_wide9, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + } + + @Override + @SideOnly(Side.CLIENT) + public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z) { + if(meta < 12) return; + float rotation = 0; + if(meta == 15) rotation = 90F / 180F * (float) Math.PI; + if(meta == 12) rotation = 180F / 180F * (float) Math.PI; + if(meta == 14) rotation = 270F / 180F * (float) Math.PI; + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve_wide9, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + } +} diff --git a/src/main/java/com/hbm/config/CommonConfig.java b/src/main/java/com/hbm/config/CommonConfig.java index 578f98bef..8d809ccf4 100644 --- a/src/main/java/com/hbm/config/CommonConfig.java +++ b/src/main/java/com/hbm/config/CommonConfig.java @@ -25,6 +25,7 @@ public class CommonConfig { public static final String CATEGORY_HAZARD = "14_hazard"; public static final String CATEGORY_STRUCTURES = "15_structures"; public static final String CATEGORY_POLLUTION = "16_pollution"; + public static final String CATEGORY_BIOMES = "17_biomes"; public static final String CATEGORY_528 = "528"; public static final String CATEGORY_LBSM = "LESS BULLSHIT MODE"; diff --git a/src/main/java/com/hbm/config/FalloutConfigJSON.java b/src/main/java/com/hbm/config/FalloutConfigJSON.java index eba732a84..645a12413 100644 --- a/src/main/java/com/hbm/config/FalloutConfigJSON.java +++ b/src/main/java/com/hbm/config/FalloutConfigJSON.java @@ -55,13 +55,8 @@ public class FalloutConfigJSON { private static void initDefault() { double woodEffectRange = 65D; - /* destroy all leaves within the radios, kill all leaves outside of it */ - entries.add(new FalloutEntry() .mB(Blocks.leaves) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); - entries.add(new FalloutEntry() .mB(Blocks.leaves2) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); - entries.add(new FalloutEntry() .mB(ModBlocks.waste_leaves) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); - entries.add(new FalloutEntry() .mB(Blocks.leaves) .prim(new Triplet(ModBlocks.waste_leaves, 0, 1)) .min(woodEffectRange)); - entries.add(new FalloutEntry() .mB(Blocks.leaves2) .prim(new Triplet(ModBlocks.waste_leaves, 0, 1)) .min(woodEffectRange)); + /* petrify all wooden things possible */ entries.add(new FalloutEntry() .mB(Blocks.log) .prim(new Triplet(ModBlocks.waste_log, 0, 1)) .max(woodEffectRange)); entries.add(new FalloutEntry() .mB(Blocks.log2) .prim(new Triplet(ModBlocks.waste_log, 0, 1)) .max(woodEffectRange)); entries.add(new FalloutEntry() .mB(Blocks.red_mushroom_block).mM(10) .prim(new Triplet(ModBlocks.waste_log, 0, 1)) .max(woodEffectRange)); @@ -69,24 +64,38 @@ public class FalloutConfigJSON { entries.add(new FalloutEntry() .mB(Blocks.red_mushroom_block) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); entries.add(new FalloutEntry() .mB(Blocks.brown_mushroom_block) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); entries.add(new FalloutEntry() .mB(Blocks.planks) .prim(new Triplet(ModBlocks.waste_planks, 0, 1)) .max(woodEffectRange)); + /* if it can't be petrified, destroy it */ + entries.add(new FalloutEntry() .mMa(Material.wood) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); + /* destroy all leaves within the radios, kill all leaves outside of it */ + entries.add(new FalloutEntry() .mMa(Material.leaves) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); + entries.add(new FalloutEntry() .mMa(Material.plants) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); + entries.add(new FalloutEntry() .mMa(Material.vine) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); + entries.add(new FalloutEntry() .mB(ModBlocks.waste_leaves) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); + entries.add(new FalloutEntry() .mB(Blocks.leaves) .prim(new Triplet(ModBlocks.waste_leaves, 0, 1)) .min(woodEffectRange)); + entries.add(new FalloutEntry() .mB(Blocks.leaves2) .prim(new Triplet(ModBlocks.waste_leaves, 0, 1)) .min(woodEffectRange)); - FalloutEntry stoneCore = new FalloutEntry().prim(new Triplet(ModBlocks.sellafield, 1, 1)).max(5).sol(true); - FalloutEntry stoneInner = new FalloutEntry().prim(new Triplet(ModBlocks.sellafield, 0, 1)).min(5).max(15).sol(true); - FalloutEntry stoneOuter = new FalloutEntry().prim(new Triplet(ModBlocks.sellafield_slaked, 0, 1)).min(15).max(50).sol(true); + entries.add(new FalloutEntry().mB(Blocks.mossy_cobblestone).prim(new Triplet(Blocks.coal_ore, 0, 1))); + entries.add(new FalloutEntry().mB(ModBlocks.ore_nether_uranium).prim(new Triplet(ModBlocks.ore_nether_schrabidium, 0, 1), new Triplet(ModBlocks.ore_nether_uranium_scorched, 0, 99))); - entries.add(stoneCore.clone().mB(Blocks.stone)); - entries.add(stoneInner.clone().mB(Blocks.stone)); - entries.add(stoneOuter.clone().mB(Blocks.stone)); - entries.add(stoneCore.clone().mB(Blocks.gravel)); - entries.add(stoneInner.clone().mB(Blocks.gravel)); - entries.add(stoneOuter.clone().mB(Blocks.gravel)); - /* recontaminate slaked sellafield */ - entries.add(stoneCore.clone().mB(ModBlocks.sellafield_slaked)); - entries.add(stoneInner.clone().mB(ModBlocks.sellafield_slaked)); + Block deepslate = Compat.tryLoadBlock(Compat.MOD_EF, "deepslate"); + Block stone = Compat.tryLoadBlock(Compat.MOD_EF, "stone"); - entries.add(new FalloutEntry() - .mB(Blocks.grass) - .prim(new Triplet(ModBlocks.waste_earth, 0, 1))); + for(int i = 1; i <= 10; i++) { + int m = 10 - i; + entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_diamond, m, 3), new Triplet(ModBlocks.ore_sellafield_emerald, m, 2)) .c(0.5) .max(i * 5).sol(true).mB(Blocks.coal_ore)); + entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_diamond, m, 1)) .c(0.2) .max(i * 5).sol(true).mB(ModBlocks.ore_lignite)); + entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_emerald, m, 1)) .max(i * 5).sol(true).mB(ModBlocks.ore_beryllium)); + entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_schrabidium, m, 1), new Triplet(ModBlocks.ore_sellafield_uranium_scorched, m, 99)) .max(i * 5).sol(true).mB(ModBlocks.ore_uranium)); + entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_schrabidium, m, 1), new Triplet(ModBlocks.ore_sellafield_uranium_scorched, m, 99)) .max(i * 5).sol(true).mB(ModBlocks.ore_gneiss_uranium)); + entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, m, 1)).max(i * 5).sol(true).mMa(Material.rock)); + entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, m, 1)).max(i * 5).sol(true).mMa(Material.sand)); + entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, m, 1)).max(i * 5).sol(true).mMa(Material.ground)); + if(i <= 9) entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, m, 1)).max(i * 5).sol(true).mMa(Material.grass)); + if(deepslate != null) entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, m, 1)).max(i * 5).sol(true).mB(deepslate)); + if(stone != null) entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, m, 1)).max(i * 5).sol(true).mB(stone)); + } + + //entries.add(new FalloutEntry().mB(Blocks.grass).prim(new Triplet(ModBlocks.waste_earth, 0, 1))); entries.add(new FalloutEntry() .mB(Blocks.mycelium) .prim(new Triplet(ModBlocks.waste_mycelium, 0, 1))); @@ -101,40 +110,6 @@ public class FalloutConfigJSON { entries.add(new FalloutEntry() .mB(Blocks.clay) .prim(new Triplet(Blocks.hardened_clay, 0, 1))); - entries.add(new FalloutEntry() - .mB(Blocks.mossy_cobblestone) - .prim(new Triplet(Blocks.coal_ore, 0, 1))); - entries.add(new FalloutEntry() - .mB(Blocks.coal_ore) - .prim(new Triplet(Blocks.diamond_ore, 0, 3), new Triplet(Blocks.emerald_ore, 0, 2)) - .c(0.5)); - entries.add(new FalloutEntry() - .mB(ModBlocks.ore_lignite) - .prim(new Triplet(Blocks.diamond_ore, 0, 1)) - .c(0.2)); - entries.add(new FalloutEntry() - .mB(ModBlocks.ore_uranium) - .prim(new Triplet(ModBlocks.ore_schrabidium, 0, 1), new Triplet(ModBlocks.ore_uranium_scorched, 0, 99))); - entries.add(new FalloutEntry() - .mB(ModBlocks.ore_nether_uranium) - .prim(new Triplet(ModBlocks.ore_nether_schrabidium, 0, 1), new Triplet(ModBlocks.ore_nether_uranium_scorched, 0, 99))); - entries.add(new FalloutEntry() - .mB(ModBlocks.ore_gneiss_uranium) - .prim(new Triplet(ModBlocks.ore_gneiss_schrabidium, 0, 1), new Triplet(ModBlocks.ore_gneiss_uranium_scorched, 0, 99))); - - /// COMPAT /// - Block deepslate = Compat.tryLoadBlock(Compat.MOD_EF, "deepslate"); - if(deepslate != null) { //identical to stone - entries.add(stoneCore.clone().mB(deepslate)); - entries.add(stoneInner.clone().mB(deepslate)); - entries.add(stoneOuter.clone().mB(deepslate)); - } - Block stone = Compat.tryLoadBlock(Compat.MOD_EF, "stone"); - if(stone != null) { //identical to stone - entries.add(stoneCore.clone().mB(stone)); - entries.add(stoneInner.clone().mB(stone)); - entries.add(stoneOuter.clone().mB(stone)); - } } private static void writeDefault(File file) { @@ -191,6 +166,7 @@ public class FalloutConfigJSON { private double minDist = 0.0D; private double maxDist = 100.0D; + /** Whether the depth value should be decremented when this block is converted */ private boolean isSolid = false; public FalloutEntry clone() { diff --git a/src/main/java/com/hbm/config/MobConfig.java b/src/main/java/com/hbm/config/MobConfig.java index 7f9d45c9d..1d57e39c8 100644 --- a/src/main/java/com/hbm/config/MobConfig.java +++ b/src/main/java/com/hbm/config/MobConfig.java @@ -59,7 +59,7 @@ public class MobConfig { public static boolean rampantMode = false; public static boolean rampantNaturalScoutSpawn = false; public static double rampantScoutSpawnThresh = 20; - public static int rampantScoutSpawnChance = 1000; + public static int rampantScoutSpawnChance = 600; public static boolean scoutInitialSpawn = false; public static boolean rampantExtendedTargetting = false; public static boolean rampantDig = false; @@ -154,8 +154,8 @@ public class MobConfig { config.addCustomCategoryComment(CATEGORY, "The individual features of rampant can be used regardless of whether the main rampant toggle is enabled or not"); rampantNaturalScoutSpawn = CommonConfig.createConfigBool(config, CATEGORY,"12.R02_rampantScoutSpawn", "Whether scouts should spawn natually in highly polluted chunks", false); - rampantScoutSpawnChance = CommonConfig.createConfigInt(config, CATEGORY, "12.R02.1_rampantScoutSpawnChance", "How much soot is needed for scouts to naturally spawn", 20); - rampantScoutSpawnThresh = CommonConfig.createConfigDouble(config, CATEGORY, "12.R02.2_rampantScoutSpawnThresh", "How often scouts naturally spawn per mob population, 1/x format, the bigger the number, the more uncommon the scouts", 600); + rampantScoutSpawnThresh = CommonConfig.createConfigDouble(config, CATEGORY, "12.R02.1_rampantScoutSpawnThresh", "How much soot is needed for scouts to naturally spawn", 20); + rampantScoutSpawnChance = CommonConfig.createConfigInt(config, CATEGORY, "12.R02.2_rampantScoutSpawnChance", "How often scouts naturally spawn per mob population, 1/x format, the bigger the number, the more uncommon the scouts", 600); rampantExtendedTargetting = CommonConfig.createConfigBool(config, CATEGORY,"12.R03_rampantExtendedTargeting", "Whether Glyphids should have the extended targetting always enabled", false); rampantDig = CommonConfig.createConfigBool(config, CATEGORY,"12.R04_rampantDig", "Whether Glyphids should be able to dig to waypoints", false); rampantGlyphidGuidance = CommonConfig.createConfigBool(config, CATEGORY,"12.R05_rampantGlyphidGuidance", "Whether Glyphids should always expand toward a player's spawnpoint", false); diff --git a/src/main/java/com/hbm/config/WorldConfig.java b/src/main/java/com/hbm/config/WorldConfig.java index 46add586c..801563946 100644 --- a/src/main/java/com/hbm/config/WorldConfig.java +++ b/src/main/java/com/hbm/config/WorldConfig.java @@ -107,6 +107,14 @@ public class WorldConfig { public static int meteorStrikeChance = 20 * 60 * 180; public static int meteorShowerChance = 20 * 60 * 5; public static int meteorShowerDuration = 6000; + + public static int craterBiomeId = 80; + public static int craterBiomeInnerId = 81; + public static int craterBiomeOuterId = 82; + public static float craterBiomeRad = 5F; + public static float craterBiomeInnerRad = 25F; + public static float craterBiomeOuterRad = 0.5F; + public static float craterBiomeWaterMult = 5F; public static void loadFromConfig(Configuration config) { @@ -218,6 +226,15 @@ public class WorldConfig { meteorShowerChance = CommonConfig.createConfigInt(config, CATEGORY_METEOR, "5.04_meteorShowerChance", "The probability of a meteor spawning during meteor shower (an average of once every nTH ticks)", 20 * 60 * 15); meteorShowerDuration = CommonConfig.createConfigInt(config, CATEGORY_METEOR, "5.05_meteorShowerDuration", "Max duration of meteor shower in ticks", 20 * 60 * 30); + final String CATEGORY_BIOMES = CommonConfig.CATEGORY_BIOMES; + craterBiomeId = CommonConfig.createConfigInt(config, CATEGORY_BIOMES, "17.B00_craterBiomeId", "The numeric ID for the crater biome", 80); + craterBiomeInnerId = CommonConfig.createConfigInt(config, CATEGORY_BIOMES, "17.B01_craterBiomeInnerId", "The numeric ID for the inner crater biome", 81); + craterBiomeOuterId = CommonConfig.createConfigInt(config, CATEGORY_BIOMES, "17.B02_craterBiomeOuterId", "The numeric ID for the outer crater biome", 82); + craterBiomeRad = (float) CommonConfig.createConfigDouble(config, CATEGORY_BIOMES, "17.R00_craterBiomeRad", "RAD/s for the crater biome", 5D); + craterBiomeInnerRad = (float) CommonConfig.createConfigDouble(config, CATEGORY_BIOMES, "17.R01_craterBiomeInnerRad", "RAD/s for the inner crater biome", 25D); + craterBiomeOuterRad = (float) CommonConfig.createConfigDouble(config, CATEGORY_BIOMES, "17.R02_craterBiomeOuterRad", "RAD/s for the outer crater biome", 0.5D); + craterBiomeWaterMult = (float) CommonConfig.createConfigDouble(config, CATEGORY_BIOMES, "17.R03_craterBiomeWaterMult", "Multiplier for RAD/s in crater biomes when in water", 5D); + radioStructure = CommonConfig.setDefZero(radioStructure, 1000); antennaStructure = CommonConfig.setDefZero(antennaStructure, 1000); atomStructure = CommonConfig.setDefZero(atomStructure, 1000); diff --git a/src/main/java/com/hbm/crafting/ConsumableRecipes.java b/src/main/java/com/hbm/crafting/ConsumableRecipes.java index e7be64e7e..3ebdae6c8 100644 --- a/src/main/java/com/hbm/crafting/ConsumableRecipes.java +++ b/src/main/java/com/hbm/crafting/ConsumableRecipes.java @@ -164,8 +164,8 @@ public class ConsumableRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_polonium, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.ducttape, 'P', IRON.plate(), 'S', PO210.block() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_era, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.ducttape, 'P', IRON.plate(), 'S', ModItems.ingot_semtex }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_kevlar, 1), new Object[] { "KIK", "IDI", "KIK", 'K', ModItems.plate_kevlar, 'I', ANY_RUBBER.ingot(), 'D', ModItems.ducttape }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_sapi, 1), new Object[] { "PKP", "DPD", "PKP", 'P', POLYMER.ingot(), 'K', ModItems.insert_kevlar, 'D', ModItems.ducttape }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_esapi, 1), new Object[] { "PKP", "DSD", "PKP", 'P', POLYMER.ingot(), 'K', ModItems.insert_sapi, 'D', ModItems.ducttape, 'S', BIGMT.plate() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_sapi, 1), new Object[] { "PKP", "DPD", "PKP", 'P', ANY_PLASTIC.ingot(), 'K', ModItems.insert_kevlar, 'D', ModItems.ducttape }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_esapi, 1), new Object[] { "PKP", "DSD", "PKP", 'P', ANY_PLASTIC.ingot(), 'K', ModItems.insert_sapi, 'D', ModItems.ducttape, 'S', BIGMT.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_xsapi, 1), new Object[] { "PKP", "DSD", "PKP", 'P', ASBESTOS.ingot(), 'K', ModItems.insert_esapi, 'D', ModItems.ducttape, 'S', ModItems.ingot_meteorite_forged }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_yharonite, 1), new Object[] { "YIY", "IYI", "YIY", 'Y', ModItems.billet_yharonite, 'I', ModItems.insert_du }); diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index e671dc1ca..d820dd9dc 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -160,7 +160,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spas12, 1), new Object[] { "TPS", "HHR", " L", 'T', STEEL.bolt(), 'P', STEEL.plate(), 'S', STEEL.ingot(), 'H', ModItems.hull_small_steel, 'R', ModItems.mechanism_rifle_1, 'L', ANY_PLASTIC.ingot()}); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_glass_cannon, 1), new Object[] { "GGC", "GTM", 'G', Item.getItemFromBlock(ModBlocks.glass_quartz), 'C', ModItems.battery_lithium_cell, 'T', ModItems.crt_display, 'M', ModItems.mechanism_special }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_remington, 1), new Object[] { "PPM", "S L", 'P', STEEL.plate(), 'M', ModItems.mechanism_rifle_1, 'S', KEY_SLAB, 'L', KEY_LOG }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_benelli), new Object[] { "HHP", "SSM", "AAP", 'H', ModItems.ingot_dura_steel, 'S', ModItems.hull_small_steel, 'A', ModItems.hull_small_aluminium, 'P', ModItems.ingot_polymer, 'M', ModItems.mechanism_rifle_2 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_benelli), new Object[] { "HHP", "SSM", "AAP", 'H', ModItems.ingot_dura_steel, 'S', ModItems.hull_small_steel, 'A', ModItems.hull_small_aluminium, 'P', ANY_PLASTIC.ingot(), 'M', ModItems.mechanism_rifle_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lunatic_marksman), new Object[] { " GN", "SSM", " A", 'G', KEY_ANYPANE, 'N', ModItems.powder_nitan_mix, 'S', BIGMT.plate(), 'M', ModItems.mechanism_special, 'A', ANY_RESISTANTALLOY.plateCast() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_coilgun), new Object[] { "CCC", "SSM", " P", 'C', ModBlocks.capacitor_copper, 'S', BIGMT.plate(), 'M', ModItems.mechanism_special, 'P', ANY_PLASTIC.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_coilgun, 16, 0), new Object[] { " T ", "TST", " T ", 'T', W.ingot(), 'S', BIGMT.ingot() }); diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 904f4920c..36892a6b0 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -223,6 +223,7 @@ public class EntityMappings { addEntity(EntityAcidBomb.class, "entity_acid_bomb", 1000); addEntity(EntityFallingBlockNT.class, "entity_falling_block_nt", 1000); addEntity(EntityBoatRubber.class, "entity_rubber_boat", 250, false); + addEntity(EntityMissileStealth.class, "entity_missile_stealth", 1000); addEntity(EntityItemWaste.class, "entity_item_waste", 100); addEntity(EntityItemBuoyant.class, "entity_item_buoyant", 100); diff --git a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java index 4eae334d6..bcc6cd6b3 100644 --- a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java +++ b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java @@ -6,6 +6,8 @@ import com.hbm.config.FalloutConfigJSON; import com.hbm.config.FalloutConfigJSON.FalloutEntry; import com.hbm.entity.item.EntityFallingBlockNT; import com.hbm.saveddata.AuxSavedData; +import com.hbm.world.WorldUtil; +import com.hbm.world.biome.BiomeGenCraterBase; import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -15,6 +17,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.storage.WorldInfo; import net.minecraftforge.common.util.ForgeDirection; @@ -55,24 +58,40 @@ public class EntityFalloutRain extends Entity { long chunkPos = chunksToProcess.remove(chunksToProcess.size() - 1); // Just so it doesn't shift the whole list every time int chunkPosX = (int) (chunkPos & Integer.MAX_VALUE); int chunkPosZ = (int) (chunkPos >> 32 & Integer.MAX_VALUE); + boolean biomeModified = false; for(int x = chunkPosX << 4; x <= (chunkPosX << 4) + 16; x++) { for(int z = chunkPosZ << 4; z <= (chunkPosZ << 4) + 16; z++) { - stomp(x, z, Math.hypot(x - posX, z - posZ) * 100 / getScale()); + double percent = Math.hypot(x - posX, z - posZ) * 100 / getScale(); + stomp(x, z, percent); + BiomeGenBase biome = getBiomeChange(percent, getScale()); + if(biome != null) { + WorldUtil.setBiome(worldObj, x, z, biome); + biomeModified = true; + } } } + if(biomeModified) WorldUtil.syncBiomeChange(worldObj, chunkPosX << 4, chunkPosZ << 4); } else if (!outerChunksToProcess.isEmpty()) { long chunkPos = outerChunksToProcess.remove(outerChunksToProcess.size() - 1); int chunkPosX = (int) (chunkPos & Integer.MAX_VALUE); int chunkPosZ = (int) (chunkPos >> 32 & Integer.MAX_VALUE); + boolean biomeModified = false; for(int x = chunkPosX << 4; x <= (chunkPosX << 4) + 16; x++) { for(int z = chunkPosZ << 4; z <= (chunkPosZ << 4) + 16; z++) { double distance = Math.hypot(x - posX, z - posZ); if(distance <= getScale()) { - stomp(x, z, distance * 100 / getScale()); + double percent = distance * 100 / getScale(); + stomp(x, z, percent); + BiomeGenBase biome = getBiomeChange(percent, getScale()); + if(biome != null) { + WorldUtil.setBiome(worldObj, x, z, biome); + biomeModified = true; + } } } } + if(biomeModified) WorldUtil.syncBiomeChange(worldObj, chunkPosX << 4, chunkPosZ << 4); } else { setDead(); @@ -93,6 +112,13 @@ public class EntityFalloutRain extends Entity { } } } + + public static BiomeGenBase getBiomeChange(double dist, int scale) { + if(scale >= 150 && dist < 15) return BiomeGenCraterBase.craterInnerBiome; + if(scale >= 100 && dist < 55) return BiomeGenCraterBase.craterBiome; + if(scale >= 25) return BiomeGenCraterBase.craterOuterBiome; + return null; + } private final List chunksToProcess = new ArrayList<>(); private final List outerChunksToProcess = new ArrayList<>(); @@ -123,25 +149,21 @@ public class EntityFalloutRain extends Entity { Collections.reverse(outerChunksToProcess); } - //private List changedPositions = new ArrayList(); - - // TODO cache chunks? private void stomp(int x, int z, double dist) { int depth = 0; for(int y = 255; y >= 0; y--) { - if(depth >= 3) - return; + if(depth >= 3) return; Block b = worldObj.getBlock(x, y, z); + + if(b.getMaterial() == Material.air) continue; + Block ab = worldObj.getBlock(x, y + 1, z); int meta = worldObj.getBlockMetadata(x, y, z); - if(b.getMaterial() == Material.air) - continue; - if(b != ModBlocks.fallout && (ab == Blocks.air || (ab.isReplaceable(worldObj, x, y + 1, z) && !ab.getMaterial().isLiquid()))) { double d = dist / 100; diff --git a/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java b/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java index 56f2a9f67..8959e0685 100644 --- a/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java +++ b/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java @@ -59,6 +59,8 @@ public class EntityNukeTorex extends Entity { if(worldObj.isRemote) { + if(ticksExisted == 1) this.setScale((float) s); + if(lastSpawnY == -1) { lastSpawnY = posY - 3; } @@ -82,7 +84,7 @@ public class EntityNukeTorex extends Entity { double x = posX + rand.nextGaussian() * range; double z = posZ + rand.nextGaussian() * range; Cloudlet cloud = new Cloudlet(x, lastSpawnY, z, (float)(rand.nextDouble() * 2D * Math.PI), 0, lifetime); - cloud.setScale(1F + this.ticksExisted * 0.005F * (float) cs, 5F * (float) cs); + cloud.setScale(1F + this.ticksExisted * 0.005F * (float) s, 5F * (float) cs); cloudlets.add(cloud); } @@ -104,13 +106,44 @@ public class EntityNukeTorex extends Entity { // spawn ring clouds if(ticksExisted < 200) { + lifetime *= s; for(int i = 0; i < 2; i++) { Cloudlet cloud = new Cloudlet(posX, posY + coreHeight, posZ, (float)(rand.nextDouble() * 2D * Math.PI), 0, lifetime, TorexType.RING); - cloud.setScale(1F + this.ticksExisted * 0.005F * (float) cs * 0.5F, 3F * (float) (cs * s)); + cloud.setScale(1F + this.ticksExisted * 0.0025F * (float) (cs * s), 3F * (float) (cs * s)); cloudlets.add(cloud); } } + // spawn condensation clouds + if(ticksExisted > 200 && ticksExisted < 600) { + + for(int i = 0; i < 20; i++) { + for(int j = 0; j < 4; j++) { + float angle = (float) (Math.PI * 2 * rand.nextDouble()); + Vec3 vec = Vec3.createVectorHelper(torusWidth + rollerSize * 3, 0, 0); + vec.rotateAroundZ((float) (Math.PI / 45 * j)); + vec.rotateAroundY(angle); + Cloudlet cloud = new Cloudlet(posX + vec.xCoord, posY + coreHeight - 5 + j * s, posZ + vec.zCoord, angle, 0, (int) ((20 + ticksExisted / 10) * (1 + rand.nextDouble() * 0.1)), TorexType.CONDENSATION); + cloud.setScale(0.125F * (float) (cs * s), 3F * (float) (cs * s)); + cloudlets.add(cloud); + } + } + } + if(ticksExisted > 300 && ticksExisted < 600) { + + for(int i = 0; i < 20; i++) { + for(int j = 0; j < 4; j++) { + float angle = (float) (Math.PI * 2 * rand.nextDouble()); + Vec3 vec = Vec3.createVectorHelper(torusWidth + rollerSize * 2, 0, 0); + vec.rotateAroundZ((float) (Math.PI / 45 * j)); + vec.rotateAroundY(angle); + Cloudlet cloud = new Cloudlet(posX + vec.xCoord, posY + coreHeight + 25 + j * s, posZ + vec.zCoord, angle, 0, (int) ((20 + ticksExisted / 10) * (1 + rand.nextDouble() * 0.1)), TorexType.CONDENSATION); + cloud.setScale(0.125F * (float) (cs * s), 3F * (float) (cs * s)); + cloudlets.add(cloud); + } + } + } + for(Cloudlet cloud : cloudlets) { cloud.update(); } @@ -131,7 +164,7 @@ public class EntityNukeTorex extends Entity { } public EntityNukeTorex setScale(float scale) { - getDataWatcher().updateObject(10, scale); + if(!worldObj.isRemote) getDataWatcher().updateObject(10, scale); this.coreHeight = this.coreHeight / 1.5D * scale; this.convectionHeight = this.convectionHeight / 1.5D * scale; this.torusWidth = this.torusWidth / 1.5D * scale; @@ -270,6 +303,11 @@ public class EntityNukeTorex extends Entity { this.motionX = motion.xCoord; this.motionY = motion.yCoord; this.motionZ = motion.zCoord; + } else if(this.type == TorexType.CONDENSATION) { + Vec3 motion = getCondensationMotion(); + this.motionX = motion.xCoord; + this.motionY = motion.yCoord; + this.motionZ = motion.zCoord; } double mult = this.motionMult * getSimulationSpeed(); @@ -281,6 +319,15 @@ public class EntityNukeTorex extends Entity { this.updateColor(); } + private Vec3 getCondensationMotion() { + Vec3 delta = Vec3.createVectorHelper(posX - EntityNukeTorex.this.posX, 0, posZ - EntityNukeTorex.this.posZ); + double speed = 0.00002 * EntityNukeTorex.this.getScale() * EntityNukeTorex.this.ticksExisted; + delta.xCoord *= speed; + //delta.yCoord *= speed * 0.75 * EntityNukeTorex.this.getScale(); + delta.zCoord *= speed; + return delta; + } + private Vec3 getRingMotion(double simPosX, double simPosZ) { /*Vec3 targetPos = Vec3.createVectorHelper( @@ -440,6 +487,11 @@ public class EntityNukeTorex extends Entity { } public Vec3 getInterpColor(float interp) { + + if(this.type == TorexType.CONDENSATION) { + return Vec3.createVectorHelper(1F, 1F, 1F); + } + double greying = EntityNukeTorex.this.getGreying(); if(this.type == TorexType.RING) { @@ -453,7 +505,9 @@ public class EntityNukeTorex extends Entity { } public float getAlpha() { - return (1F - ((float)age / (float)cloudletLife)) * EntityNukeTorex.this.getAlpha(); + float alpha = (1F - ((float)age / (float)cloudletLife)) * EntityNukeTorex.this.getAlpha(); + if(this.type == TorexType.CONDENSATION) alpha *= 0.25; + return alpha; } private float startingScale = 1; @@ -479,7 +533,8 @@ public class EntityNukeTorex extends Entity { public static enum TorexType { STANDARD, - RING + RING, + CONDENSATION } @Override protected void writeEntityToNBT(NBTTagCompound nbt) { } diff --git a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK5.java b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK5.java index 15cb2679b..90596a9af 100644 --- a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK5.java +++ b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK5.java @@ -63,7 +63,7 @@ public class EntityNukeExplosionMK5 extends EntityExplosionChunkloading { } if(!worldObj.isRemote && fallout && explosion != null && this.ticksExisted < 10) { - radiate(500_000, this.length * 2); + radiate(2_500_000F / (this.ticksExisted * 5 + 1), this.length * 2); } if(!mute) { @@ -131,7 +131,7 @@ public class EntityNukeExplosionMK5 extends EntityExplosionChunkloading { eRads /= (float)res; eRads /= (float)(len * len); - ContaminationUtil.contaminate(e, HazardType.RADIATION, ContaminationType.CREATIVE, eRads); + ContaminationUtil.contaminate(e, HazardType.RADIATION, ContaminationType.RAD_BYPASS, eRads); } } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java index b0f2ef6be..3dbb048d8 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java @@ -108,7 +108,8 @@ public class EntityMissileAntiBallistic extends EntityThrowableInterp implements for(Entity e : TileEntityMachineRadarNT.matchingEntities) { if(e.dimension != this.dimension) continue; - if(!(e instanceof EntityMissileBaseNT)) continue; + if(!(e instanceof EntityMissileBaseNT)) continue; //can only lock onto missiles + if(e instanceof EntityMissileStealth) continue; //cannot lack onto missiles with stealth coating Vec3 vec = Vec3.createVectorHelper(e.posX - posX, e.posY - posY, e.posZ - posZ); diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java index 631f75cb0..70ac4e39c 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java @@ -15,7 +15,6 @@ import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.main.MainRegistry; -import api.hbm.entity.IRadarDetectable; import api.hbm.entity.IRadarDetectableNT; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -31,7 +30,7 @@ import net.minecraftforge.common.ForgeChunkManager; import net.minecraftforge.common.ForgeChunkManager.Ticket; import net.minecraftforge.common.ForgeChunkManager.Type; -public abstract class EntityMissileBaseNT extends EntityThrowableInterp implements IChunkLoader, IRadarDetectable, IRadarDetectableNT { +public abstract class EntityMissileBaseNT extends EntityThrowableInterp implements IChunkLoader, IRadarDetectableNT { public int startX; public int startZ; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java b/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java index 63e14e7f3..552f88379 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java @@ -105,11 +105,6 @@ public class EntityMissileDoomsday extends EntityMissileBaseNT { return null; } - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER4; - } - @Override public String getUnlocalizedName() { return "radar.target.doomsday"; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java b/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java index 356588f64..7a0b89ef8 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java @@ -61,11 +61,6 @@ public class EntityMissileShuttle extends EntityMissileBaseNT { return new ItemStack(ModItems.missile_generic); } - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER3; - } - @Override public String getUnlocalizedName() { return "radar.target.shuttle"; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileStealth.java b/src/main/java/com/hbm/entity/missile/EntityMissileStealth.java new file mode 100644 index 000000000..a04805c51 --- /dev/null +++ b/src/main/java/com/hbm/entity/missile/EntityMissileStealth.java @@ -0,0 +1,33 @@ +package com.hbm.entity.missile; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.inventory.material.Mats; +import com.hbm.items.ItemEnums.EnumAshType; +import com.hbm.items.ModItems; + +import api.hbm.entity.IRadarDetectableNT; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class EntityMissileStealth extends EntityMissileBaseNT { + + public EntityMissileStealth(World world) { super(world); } + public EntityMissileStealth(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + + @Override + public List getDebris() { + List list = new ArrayList(); + list.add(new ItemStack(ModItems.bolt, 4, Mats.MAT_STEEL.id)); + return list; + } + + @Override public String getUnlocalizedName() { return "radar.target.tier1"; } + @Override public int getBlipLevel() { return IRadarDetectableNT.TIER1; } + @Override public boolean canBeSeenBy(Object radar) { return false; } + + @Override public void onImpact() { this.explodeStandard(20F, 24, false, true); } + @Override public ItemStack getDebrisRareDrop() { return DictFrame.fromOne(ModItems.powder_ash, EnumAshType.MISC); } +} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java index d1d6ecba9..f0239aa53 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java @@ -37,11 +37,6 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT { return list; } - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER0; - } - @Override public String getUnlocalizedName() { return "radar.target.tier0"; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java index 6fb39039e..99de6e68e 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java @@ -25,11 +25,6 @@ public abstract class EntityMissileTier1 extends EntityMissileBaseNT { return list; } - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER1; - } - @Override public String getUnlocalizedName() { return "radar.target.tier1"; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java index a0b71922f..421e5ba35 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java @@ -29,11 +29,6 @@ public abstract class EntityMissileTier2 extends EntityMissileBaseNT { return list; } - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER2; - } - @Override public String getUnlocalizedName() { return "radar.target.tier2"; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java index e046a2f6c..0c7342cc2 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java @@ -31,11 +31,6 @@ public abstract class EntityMissileTier3 extends EntityMissileBaseNT { return list; } - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER3; - } - @Override public String getUnlocalizedName() { return "radar.target.tier3"; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier4.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier4.java index 826f4143f..fb56144ad 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier4.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier4.java @@ -30,11 +30,6 @@ public abstract class EntityMissileTier4 extends EntityMissileBaseNT { return list; } - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER4; - } - @Override public String getUnlocalizedName() { return "radar.target.tier4"; diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java index ba5d41f5e..dfe3c6376 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java @@ -107,9 +107,9 @@ public class EntityGlyphid extends EntityMob { @Override protected void entityInit() { super.entityInit(); - this.dataWatcher.addObject(DW_WALL, new Byte((byte) 0)); //wall climbing + this.dataWatcher.addObject(DW_WALL, new Byte((byte) 0)); //wall climbing this.dataWatcher.addObject(DW_ARMOR, new Byte((byte) 0b11111)); //armor - this.dataWatcher.addObject(DW_SUBTYPE, new Byte((byte) 0)); //subtype (i.e. normal, infected, etc) + this.dataWatcher.addObject(DW_SUBTYPE, new Byte((byte) 0)); //subtype (i.e. normal, infected, etc) } @Override diff --git a/src/main/java/com/hbm/entity/projectile/EntityBoxcar.java b/src/main/java/com/hbm/entity/projectile/EntityBoxcar.java index 74a4f9a47..8871bd430 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBoxcar.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBoxcar.java @@ -32,49 +32,36 @@ public class EntityBoxcar extends EntityThrowable { this.lastTickPosZ = this.prevPosZ = posZ; this.setPosition(posX + this.motionX, posY + this.motionY, posZ + this.motionZ); - /*this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - - this.posX += this.motionX; - this.posY += this.motionY; - this.posZ += this.motionZ;*/ - this.motionY -= 0.03; if(motionY < -1.5) motionY = -1.5; - - if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air) - { - this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "hbm:entity.oldExplosion", 10000.0F, 0.5F + this.rand.nextFloat() * 0.1F); - this.setDead(); - ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 3); - ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 2.5); - ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 2); - ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 1.5); - ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 1); - - List list = (List)worldObj.getEntitiesWithinAABBExcludingEntity(null, - AxisAlignedBB.getBoundingBox(posX - 2, posY - 2, posZ - 2, posX + 2, posY + 2, posZ + 2)); - - for(Entity e : list) { - e.attackEntityFrom(ModDamageSource.boxcar, 1000); - } - - if(!worldObj.isRemote) - worldObj.setBlock((int)(this.posX - 0.5), (int)(this.posY + 0.5), (int)(this.posZ - 0.5), ModBlocks.boxcar); - } - } + + if(this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.air) { + this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "hbm:weapon.trainImpact", 100.0F, 1.0F); + this.setDead(); + ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 3); + ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 2.5); + ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 2); + //ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 1.5); + //ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 1); + + List list = (List) worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(posX - 2, posY - 2, posZ - 2, posX + 2, posY + 2, posZ + 2)); + + for(Entity e : list) { + e.attackEntityFrom(ModDamageSource.boxcar, 1000); + } + + if(!worldObj.isRemote) + worldObj.setBlock((int) (this.posX - 0.5), (int) (this.posY + 0.5), (int) (this.posZ - 0.5), ModBlocks.boxcar); + } + } @Override - protected void onImpact(MovingObjectPosition p_70184_1_) { - - } + protected void onImpact(MovingObjectPosition p_70184_1_) { } - @Override + @Override @SideOnly(Side.CLIENT) - public boolean isInRangeToRenderDist(double distance) - { - return distance < 25000; - } + public boolean isInRangeToRenderDist(double distance) { + return distance < 25000; + } } diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java index a913f1c64..ef6b7f526 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java @@ -131,7 +131,7 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { data.setInteger("color", 0x0000ff); data.setFloat("scale", 1.5F); data.setString("text", id + " (#" + train.ltuIndex + ")"); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, train.posX, train.posY + 1, train.posZ), new TargetPoint(this.dimension, train.posX, train.posY + 1, train.posZ, 50)); + //PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, train.posX, train.posY + 1, train.posZ), new TargetPoint(this.dimension, train.posX, train.posY + 1, train.posZ, 50)); } } @@ -891,6 +891,6 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { @SideOnly(Side.CLIENT) public void printHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) { List text = new ArrayList(); - ILookOverlay.printGeneric(event, this.getClass().getSimpleName() + " " + this.hashCode(), 0xffff00, 0x404000, text); //none of this shit is going to work anyway + //ILookOverlay.printGeneric(event, this.getClass().getSimpleName() + " " + this.hashCode(), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarCargo.java b/src/main/java/com/hbm/entity/train/EntityRailCarCargo.java index 4bf5f2ee2..65deb95b5 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarCargo.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarCargo.java @@ -22,7 +22,7 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II this.dataWatcher.addObject(10, new Integer(0)); } - public int countVacantSlots() { + public int countOccupiedSlots() { int slots = 0; for(int i = 0; i < this.getSizeInventory(); i++) { @@ -53,11 +53,9 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II this.slots[slot] = null; } - if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots()); return itemstack; } } else { - if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots()); return null; } } @@ -67,10 +65,8 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II if(this.slots[slot] != null) { ItemStack itemstack = this.slots[slot]; this.slots[slot] = null; - if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots()); return itemstack; } else { - if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots()); return null; } } @@ -82,8 +78,12 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II if(stack != null && stack.stackSize > this.getInventoryStackLimit()) { stack.stackSize = this.getInventoryStackLimit(); } - - if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots()); + } + + @Override + public void onUpdate() { + super.onUpdate(); + if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countOccupiedSlots()); } @Override @@ -142,7 +142,7 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II } } - this.dataWatcher.updateObject(10, this.countVacantSlots()); + this.dataWatcher.updateObject(10, this.countOccupiedSlots()); } @Override diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java index da9a66f4e..8ac621cf2 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java @@ -291,6 +291,6 @@ public abstract class EntityRailCarRidable extends EntityRailCarCargo { text.add("Front: " + this.coupledFront); text.add("Back: " + this.coupledBack);*/ text.add("Nearest seat: " + this.getNearestSeat(MainRegistry.proxy.me())); - ILookOverlay.printGeneric(event, this.getClass().getSimpleName() + " " + this.hashCode(), 0xffff00, 0x404000, text); + //ILookOverlay.printGeneric(event, this.getClass().getSimpleName() + " " + this.hashCode(), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/handler/EntityEffectHandler.java b/src/main/java/com/hbm/handler/EntityEffectHandler.java index 296724e2d..b9ec033e7 100644 --- a/src/main/java/com/hbm/handler/EntityEffectHandler.java +++ b/src/main/java/com/hbm/handler/EntityEffectHandler.java @@ -7,6 +7,7 @@ import java.util.Random; import com.hbm.config.BombConfig; import com.hbm.config.GeneralConfig; import com.hbm.config.RadiationConfig; +import com.hbm.config.WorldConfig; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.extprop.HbmLivingProps; import com.hbm.extprop.HbmPlayerProps; @@ -30,6 +31,7 @@ import com.hbm.util.ContaminationUtil; import com.hbm.util.ArmorRegistry.HazardClass; import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; +import com.hbm.world.biome.BiomeGenCraterBase; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; @@ -48,6 +50,7 @@ import net.minecraft.potion.PotionEffect; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; public class EntityEffectHandler { @@ -57,6 +60,17 @@ public class EntityEffectHandler { HbmLivingProps.setRadBuf(entity, HbmLivingProps.getRadEnv(entity)); HbmLivingProps.setRadEnv(entity, 0); } + + if(entity instanceof EntityPlayer && entity == MainRegistry.proxy.me()) { + EntityPlayer player = MainRegistry.proxy.me(); + if(player != null) { + BiomeGenBase biome = player.worldObj.getBiomeGenForCoords((int) Math.floor(player.posX), (int) Math.floor(player.posZ)); + if(biome == BiomeGenCraterBase.craterBiome || biome == BiomeGenCraterBase.craterInnerBiome) { + Random rand = player.getRNG(); + for(int i = 0; i < 3; i++) player.worldObj.spawnParticle("townaura", player.posX + rand.nextGaussian() * 3, player.posY + rand.nextGaussian() * 2, player.posZ + rand.nextGaussian() * 3, 0, 0, 0); + } + } + } if(entity instanceof EntityPlayerMP) { HbmLivingProps props = HbmLivingProps.getData(entity); @@ -89,6 +103,18 @@ public class EntityEffectHandler { if(GeneralConfig.enable528 && entity instanceof EntityLivingBase && !entity.isImmuneToFire() && entity.worldObj.provider.isHellWorld) { entity.setFire(5); } + + BiomeGenBase biome = entity.worldObj.getBiomeGenForCoords((int) Math.floor(entity.posX), (int) Math.floor(entity.posZ)); + float radiation = 0; + if(biome == BiomeGenCraterBase.craterOuterBiome) radiation = WorldConfig.craterBiomeOuterRad; + if(biome == BiomeGenCraterBase.craterBiome) radiation = WorldConfig.craterBiomeRad; + if(biome == BiomeGenCraterBase.craterInnerBiome) radiation = WorldConfig.craterBiomeInnerRad; + + if(entity.isWet()) radiation *= WorldConfig.craterBiomeWaterMult; + + if(radiation > 0) { + ContaminationUtil.contaminate(entity, HazardType.RADIATION, ContaminationType.CREATIVE, radiation / 20F); + } } handleContamination(entity); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java index d6baf146d..5beeccad4 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java @@ -83,7 +83,7 @@ public class Gun44MagnumFactory { GunConfiguration config = getBaseConfig(); - config.durability = 4000; + config.durability = 31_000; config.name = "ifScope"; config.manufacturer = EnumGunManufacturer.IF; diff --git a/src/main/java/com/hbm/hazard/HazardRegistry.java b/src/main/java/com/hbm/hazard/HazardRegistry.java index b670bfde7..4b0476d24 100644 --- a/src/main/java/com/hbm/hazard/HazardRegistry.java +++ b/src/main/java/com/hbm/hazard/HazardRegistry.java @@ -13,6 +13,7 @@ import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.material.MaterialShapes; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBreedingRod.BreedingRodType; +import com.hbm.items.machine.ItemPWRFuel.EnumPWRFuel; import com.hbm.items.machine.ItemRTGPelletDepleted.DepletedRTGMaterial; import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType; @@ -442,6 +443,22 @@ public class HazardRegistry { HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.DU), makeData(RADIATION, u238 * ingot * 4)); HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.NQD), makeData(RADIATION, u235 * ingot * 4)); HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.NQR), makeData(RADIATION, pu239 * ingot * 4)); + + registerPWRFuel(EnumPWRFuel.MEU, uf * billet * 2); + registerPWRFuel(EnumPWRFuel.HEU233, u233 * billet * 2); + registerPWRFuel(EnumPWRFuel.HEU235, u235 * billet * 2); + registerPWRFuel(EnumPWRFuel.MEN, npf * billet * 2); + registerPWRFuel(EnumPWRFuel.HEN237, np237 * billet * 2); + registerPWRFuel(EnumPWRFuel.MOX, mox * billet * 2); + registerPWRFuel(EnumPWRFuel.MEP, purg * billet * 2); + registerPWRFuel(EnumPWRFuel.HEP239, pu239 * billet * 2); + registerPWRFuel(EnumPWRFuel.HEP241, pu241 * billet * 2); + registerPWRFuel(EnumPWRFuel.MEA, amrg * billet * 2); + registerPWRFuel(EnumPWRFuel.HEA242, am242 * billet * 2); + registerPWRFuel(EnumPWRFuel.HES326, sa326 * billet * 2); + registerPWRFuel(EnumPWRFuel.HES327, sa327 * billet * 2); + registerPWRFuel(EnumPWRFuel.BFB_AM_MIX, amrg * billet); + registerPWRFuel(EnumPWRFuel.BFB_PU241, pu241 * billet); HazardSystem.register(powder_yellowcake, makeData(RADIATION, yc * powder)); HazardSystem.register(block_yellowcake, makeData(RADIATION, yc * block * powder_mult)); @@ -535,6 +552,12 @@ public class HazardRegistry { private static HazardData makeData(HazardTypeBase hazard, float level) { return new HazardData().addEntry(hazard, level); } private static HazardData makeData(HazardTypeBase hazard, float level, boolean override) { return new HazardData().addEntry(hazard, level, override); } + private static void registerPWRFuel(EnumPWRFuel fuel, float baseRad) { + HazardSystem.register(DictFrame.fromOne(ModItems.pwr_fuel, fuel), makeData(RADIATION, baseRad)); + HazardSystem.register(DictFrame.fromOne(ModItems.pwr_fuel_hot, fuel), makeData(RADIATION, baseRad * 10).addEntry(HOT, 5)); + HazardSystem.register(DictFrame.fromOne(ModItems.pwr_fuel_depleted, fuel), makeData(RADIATION, baseRad * 10)); + } + private static void registerRBMKPellet(Item pellet, float base, float dep) { registerRBMKPellet(pellet, base, dep, false, 0F, 0F); } private static void registerRBMKPellet(Item pellet, float base, float dep, boolean linear) { registerRBMKPellet(pellet, base, dep, linear, 0F, 0F); } private static void registerRBMKPellet(Item pellet, float base, float dep, boolean linear, float blinding, float digamma) { diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index e6ca773e5..ee56d55cb 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -320,7 +320,7 @@ public class OreDictManager { /* * RADIOACTIVE */ - U .rad(HazardRegistry.u) .nugget(nugget_uranium) .billet(billet_uranium) .ingot(ingot_uranium) .dust(powder_uranium) .block(block_uranium) .ore(ore_uranium, ore_uranium_scorched, ore_gneiss_uranium, ore_gneiss_uranium_scorched, ore_nether_uranium, ore_nether_uranium_scorched, ore_meteor_uranium) .oreNether(ore_nether_uranium, ore_nether_uranium_scorched); + U .rad(HazardRegistry.u) .nugget(nugget_uranium) .billet(billet_uranium) .ingot(ingot_uranium) .dust(powder_uranium) .block(block_uranium) .ore(ore_uranium, ore_uranium_scorched, ore_gneiss_uranium, ore_gneiss_uranium_scorched, ore_nether_uranium, ore_nether_uranium_scorched, ore_meteor_uranium, ore_sellafield_uranium_scorched) .oreNether(ore_nether_uranium, ore_nether_uranium_scorched); U233 .rad(HazardRegistry.u233) .nugget(nugget_u233) .billet(billet_u233) .ingot(ingot_u233) .block(block_u233); U235 .rad(HazardRegistry.u235) .nugget(nugget_u235) .billet(billet_u235) .ingot(ingot_u235) .block(block_u235); U238 .rad(HazardRegistry.u238) .nugget(nugget_u238) .billet(billet_u238) .ingot(ingot_u238) .block(block_u238); @@ -342,7 +342,7 @@ public class OreDictManager { CO60 .rad(HazardRegistry.co60) .hot(1) .nugget(nugget_co60) .billet(billet_co60) .ingot(ingot_co60) .dust(powder_co60); AU198 .rad(HazardRegistry.au198) .hot(5) .nugget(nugget_au198) .billet(billet_au198) .ingot(ingot_au198) .dust(powder_au198); PB209 .rad(HazardRegistry.pb209) .blinding(50F) .hot(7) .nugget(nugget_pb209) .billet(billet_pb209) .ingot(ingot_pb209); - SA326 .rad(HazardRegistry.sa326) .blinding(50F) .nugget(nugget_schrabidium) .billet(billet_schrabidium) .ingot(ingot_schrabidium) .dust(powder_schrabidium).plate(plate_schrabidium).plateCast(Mats.MAT_SCHRABIDIUM.make(plate_cast)).block(block_schrabidium).ore(ore_schrabidium, ore_gneiss_schrabidium, ore_nether_schrabidium) .oreNether(ore_nether_schrabidium); + SA326 .rad(HazardRegistry.sa326) .blinding(50F) .nugget(nugget_schrabidium) .billet(billet_schrabidium) .ingot(ingot_schrabidium) .dust(powder_schrabidium).plate(plate_schrabidium).plateCast(Mats.MAT_SCHRABIDIUM.make(plate_cast)).block(block_schrabidium).ore(ore_schrabidium, ore_gneiss_schrabidium, ore_nether_schrabidium, ore_sellafield_schrabidium) .oreNether(ore_nether_schrabidium); SA327 .rad(HazardRegistry.sa327) .blinding(50F) .nugget(nugget_solinium) .billet(billet_solinium) .ingot(ingot_solinium) .block(block_solinium); SBD .rad(HazardRegistry.sb) .blinding(50F) .ingot(ingot_schrabidate) .dust(powder_schrabidate) .block(block_schrabidate); SRN .rad(HazardRegistry.sr) .blinding(50F) .ingot(ingot_schraranium) .block(block_schraranium); diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineCMBFactory.java b/src/main/java/com/hbm/inventory/container/ContainerMachineCMBFactory.java deleted file mode 100644 index bedd1b951..000000000 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineCMBFactory.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.hbm.inventory.container; - -import com.hbm.inventory.SlotCraftingOutput; -import com.hbm.inventory.SlotTakeOnly; -import com.hbm.tileentity.machine.TileEntityMachineCMBFactory; - -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 ContainerMachineCMBFactory extends Container { - - private TileEntityMachineCMBFactory diFurnace; - private int progress; - - public ContainerMachineCMBFactory(InventoryPlayer invPlayer, TileEntityMachineCMBFactory tedf) { - - diFurnace = tedf; - - this.addSlotToContainer(new Slot(tedf, 0, 62 + 9, 17)); - this.addSlotToContainer(new Slot(tedf, 1, 80 + 9, 17)); - this.addSlotToContainer(new Slot(tedf, 2, 62 + 9, 53)); - this.addSlotToContainer(new Slot(tedf, 3, 80 + 9, 53)); - this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 4, 134 + 9, 35)); - this.addSlotToContainer(new SlotTakeOnly(tedf, 5, 62 - 9, 53)); - - 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)); - } - } - - for(int i = 0; i < 9; i++) - { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); - } - } - - @Override - public void addCraftingToCrafters(ICrafting crafting) { - super.addCraftingToCrafters(crafting); - crafting.sendProgressBarUpdate(this, 1, this.diFurnace.process); - } - - @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 <= 5) { - if (!this.mergeItemStack(var5, 6, this.inventorySlots.size(), true)) - { - return null; - } - } - else - { - if (!this.mergeItemStack(var5, 0, 4, false)) - 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.progress != this.diFurnace.process) - { - par1.sendProgressBarUpdate(this, 1, this.diFurnace.process); - } - } - - this.progress = this.diFurnace.process; - } - - @Override - public void updateProgressBar(int i, int j) { - if(i == 1) - { - diFurnace.process = j; - } - } -} diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineMiningDrill.java b/src/main/java/com/hbm/inventory/container/ContainerMachineMiningDrill.java deleted file mode 100644 index 4bc3aa5c0..000000000 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineMiningDrill.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.hbm.inventory.container; - -import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; - -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 ContainerMachineMiningDrill extends Container { - -private TileEntityMachineMiningDrill nukeBoy; - - private int warning; - - public ContainerMachineMiningDrill(InventoryPlayer invPlayer, TileEntityMachineMiningDrill tedf) { - - nukeBoy = tedf; - - //Battery - this.addSlotToContainer(new Slot(tedf, 0, 44, 53)); - //Outputs - this.addSlotToContainer(new Slot(tedf, 1, 80, 17)); - this.addSlotToContainer(new Slot(tedf, 2, 98, 17)); - this.addSlotToContainer(new Slot(tedf, 3, 116, 17)); - this.addSlotToContainer(new Slot(tedf, 4, 80, 35)); - this.addSlotToContainer(new Slot(tedf, 5, 98, 35)); - this.addSlotToContainer(new Slot(tedf, 6, 116, 35)); - this.addSlotToContainer(new Slot(tedf, 7, 80, 53)); - this.addSlotToContainer(new Slot(tedf, 8, 98, 53)); - this.addSlotToContainer(new Slot(tedf, 9, 116, 53)); - //Upgrades - this.addSlotToContainer(new Slot(tedf, 10, 152, 17)); - this.addSlotToContainer(new Slot(tedf, 11, 152, 35)); - this.addSlotToContainer(new Slot(tedf, 12, 152, 53)); - - 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)); - } - } - - for(int i = 0; i < 9; i++) - { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); - } - - this.detectAndSendChanges(); - } - - @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 <= 12) { - if (!this.mergeItemStack(var5, 13, this.inventorySlots.size(), true)) - { - return null; - } - } - else if (!this.mergeItemStack(var5, 0, 13, false)) - { - return null; - } - - if (var5.stackSize == 0) - { - var4.putStack((ItemStack) null); - } - else - { - var4.onSlotChanged(); - } - } - - return var3; - } - - @Override - public boolean canInteractWith(EntityPlayer player) { - return nukeBoy.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.warning != this.nukeBoy.warning) { - par1.sendProgressBarUpdate(this, 1, this.nukeBoy.warning); - } - } - - this.warning = this.nukeBoy.warning; - } - - @Override - public void updateProgressBar(int i, int j) { - if(i == 1) { - nukeBoy.warning = j; - } - } -} diff --git a/src/main/java/com/hbm/inventory/container/ContainerNukeN45.java b/src/main/java/com/hbm/inventory/container/ContainerNukeN45.java deleted file mode 100644 index 9829f3210..000000000 --- a/src/main/java/com/hbm/inventory/container/ContainerNukeN45.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.hbm.inventory.container; - -import com.hbm.tileentity.bomb.TileEntityNukeN45; -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 ContainerNukeN45 extends Container { - - private TileEntityNukeN45 diFurnace; - - public ContainerNukeN45(InventoryPlayer invPlayer, TileEntityNukeN45 tedf) { - - diFurnace = tedf; - - //Payload - this.addSlotToContainer(new Slot(tedf, 0, 44, 35)); - //Range up - this.addSlotToContainer(new Slot(tedf, 1, 116, 35)); - - 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)); - } - } - - for(int i = 0; i < 9; i++) - { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); - } - } - - @Override - public void addCraftingToCrafters(ICrafting crafting) { - super.addCraftingToCrafters(crafting); - } - - @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 <= 1) { - if (!this.mergeItemStack(var5, 2, this.inventorySlots.size(), true)) - { - return null; - } - } - else if (!this.mergeItemStack(var5, 0, 2, false)) - { - 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); - } -} diff --git a/src/main/java/com/hbm/inventory/container/ContainerReactorMultiblock.java b/src/main/java/com/hbm/inventory/container/ContainerReactorMultiblock.java deleted file mode 100644 index e84e79fd9..000000000 --- a/src/main/java/com/hbm/inventory/container/ContainerReactorMultiblock.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.hbm.inventory.container; - -import com.hbm.inventory.SlotTakeOnly; -import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; - -public class ContainerReactorMultiblock extends Container { - - private TileEntityMachineReactorLarge diFurnace; - - public ContainerReactorMultiblock(InventoryPlayer invPlayer, TileEntityMachineReactorLarge tedf) { - - diFurnace = tedf; - - //Water in - this.addSlotToContainer(new Slot(tedf, 0, 8, 90)); - //Water out - this.addSlotToContainer(new SlotTakeOnly(tedf, 1, 8, 108)); - //Coolant in - this.addSlotToContainer(new Slot(tedf, 2, 26, 90)); - //Coolant out - this.addSlotToContainer(new SlotTakeOnly(tedf, 3, 26, 108)); - - //Fuel in - this.addSlotToContainer(new Slot(tedf, 4, 80, 36)); - //Fuel out - this.addSlotToContainer(new SlotTakeOnly(tedf, 5, 80, 72)); - //Waste in - this.addSlotToContainer(new Slot(tedf, 6, 152, 36)); - //Waste out - this.addSlotToContainer(new SlotTakeOnly(tedf, 7, 152, 72)); - - 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 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 <= 7) { - if (!this.mergeItemStack(var5, 8, 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); - } -} diff --git a/src/main/java/com/hbm/inventory/container/ContainerWatzCore.java b/src/main/java/com/hbm/inventory/container/ContainerWatzCore.java deleted file mode 100644 index a3760e10c..000000000 --- a/src/main/java/com/hbm/inventory/container/ContainerWatzCore.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.hbm.inventory.container; - -import com.hbm.items.ModItems; -import com.hbm.items.special.WatzFuel; -import com.hbm.tileentity.machine.TileEntityWatzCore; - -import api.hbm.energy.IBatteryItem; -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 ContainerWatzCore extends Container { - - private TileEntityWatzCore diFurnace; - - public ContainerWatzCore(InventoryPlayer invPlayer, TileEntityWatzCore tedf) { - - diFurnace = tedf; - - this.addSlotToContainer(new Slot(tedf, 0, 8, 18)); - this.addSlotToContainer(new Slot(tedf, 1, 26, 18)); - this.addSlotToContainer(new Slot(tedf, 2, 44, 18)); - this.addSlotToContainer(new Slot(tedf, 3, 62, 18)); - this.addSlotToContainer(new Slot(tedf, 4, 80, 18)); - this.addSlotToContainer(new Slot(tedf, 5, 98, 18)); - this.addSlotToContainer(new Slot(tedf, 6, 8, 36)); - this.addSlotToContainer(new Slot(tedf, 7, 26, 36)); - this.addSlotToContainer(new Slot(tedf, 8, 44, 36)); - this.addSlotToContainer(new Slot(tedf, 9, 62, 36)); - this.addSlotToContainer(new Slot(tedf, 10, 80, 36)); - this.addSlotToContainer(new Slot(tedf, 11, 98, 36)); - this.addSlotToContainer(new Slot(tedf, 12, 8, 54)); - this.addSlotToContainer(new Slot(tedf, 13, 26, 54)); - this.addSlotToContainer(new Slot(tedf, 14, 44, 54)); - this.addSlotToContainer(new Slot(tedf, 15, 62, 54)); - this.addSlotToContainer(new Slot(tedf, 16, 80, 54)); - this.addSlotToContainer(new Slot(tedf, 17, 98, 54)); - this.addSlotToContainer(new Slot(tedf, 18, 8, 72)); - this.addSlotToContainer(new Slot(tedf, 19, 26, 72)); - this.addSlotToContainer(new Slot(tedf, 20, 44, 72)); - this.addSlotToContainer(new Slot(tedf, 21, 62, 72)); - this.addSlotToContainer(new Slot(tedf, 22, 80, 72)); - this.addSlotToContainer(new Slot(tedf, 23, 98, 72)); - this.addSlotToContainer(new Slot(tedf, 24, 8, 90)); - this.addSlotToContainer(new Slot(tedf, 25, 26, 90)); - this.addSlotToContainer(new Slot(tedf, 26, 44, 90)); - this.addSlotToContainer(new Slot(tedf, 27, 62, 90)); - this.addSlotToContainer(new Slot(tedf, 28, 80, 90)); - this.addSlotToContainer(new Slot(tedf, 29, 98, 90)); - this.addSlotToContainer(new Slot(tedf, 30, 8, 108)); - this.addSlotToContainer(new Slot(tedf, 31, 26, 108)); - this.addSlotToContainer(new Slot(tedf, 32, 44, 108)); - this.addSlotToContainer(new Slot(tedf, 33, 62, 108)); - this.addSlotToContainer(new Slot(tedf, 34, 80, 108)); - this.addSlotToContainer(new Slot(tedf, 35, 98, 108)); - //Mud Input - this.addSlotToContainer(new Slot(tedf, 36, 134, 108 - 18)); - //Battery - this.addSlotToContainer(new Slot(tedf, 37, 152, 108 - 18)); - //Filter - this.addSlotToContainer(new Slot(tedf, 38, 116, 63)); - //Mud Output - this.addSlotToContainer(new Slot(tedf, 39, 134, 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); - } - - @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 <= 39) { - if(!this.mergeItemStack(var5, 40, this.inventorySlots.size(), true)) { - return null; - } - - } else { - - if(var5.getItem() == ModItems.titanium_filter) { - if(!this.mergeItemStack(var5, 38, 39, false)) { - return null; - } - } else if(var5.getItem() instanceof WatzFuel) { - if(!this.mergeItemStack(var5, 0, 36, false)) { - return null; - } - } else if(var5.getItem() instanceof IBatteryItem) { - if(!this.mergeItemStack(var5, 37, 38, false)) { - return null; - } - } else { - if(!this.mergeItemStack(var5, 36, 37, false)) { - return null; - } - } - } - - if(var5.stackSize == 0) { - var4.putStack((ItemStack) null); - } else { - var4.onSlotChanged(); - } - - var4.onPickupFromSlot(p_82846_1_, var5); - } - - return var3; - } - - @Override - public boolean canInteractWith(EntityPlayer player) { - return diFurnace.isUseableByPlayer(player); - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineCMBFactory.java b/src/main/java/com/hbm/inventory/gui/GUIMachineCMBFactory.java deleted file mode 100644 index 1391cf2c4..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineCMBFactory.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.hbm.inventory.gui; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.container.ContainerMachineCMBFactory; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.machine.TileEntityMachineCMBFactory; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.ResourceLocation; - -public class GUIMachineCMBFactory extends GuiInfoContainer { - - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_cmb_manufactory.png"); - private TileEntityMachineCMBFactory diFurnace; - - public GUIMachineCMBFactory(InventoryPlayer invPlayer, TileEntityMachineCMBFactory tedf) { - super(new ContainerMachineCMBFactory(invPlayer, tedf)); - diFurnace = tedf; - - this.xSize = 176; - this.ySize = 166; - } - - @Override - public void drawScreen(int mouseX, int mouseY, float f) { - super.drawScreen(mouseX, mouseY, f); - - diFurnace.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 26, guiTop + 69 - 52, 16, 52); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 106 - 88, 16, 88, 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); - - if(diFurnace.power > 0) { - int i = (int)diFurnace.getPowerScaled(52); - drawTexturedModalRect(guiLeft + 8, guiTop + 69 - i, 176, 52 - i, 16, i); - } - - int j1 = diFurnace.getProgressScaled(24); - drawTexturedModalRect(guiLeft + 101 + 9, guiTop + 34, 208, 0, j1 + 1, 16); - - diFurnace.tank.renderTank(guiLeft + 26, guiTop + 69, this.zLevel, 16, 52); - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineMiningDrill.java b/src/main/java/com/hbm/inventory/gui/GUIMachineMiningDrill.java deleted file mode 100644 index c027203dc..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineMiningDrill.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.hbm.inventory.gui; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.container.ContainerMachineMiningDrill; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; -import com.hbm.util.I18nUtil; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.ResourceLocation; - -public class GUIMachineMiningDrill extends GuiInfoContainer { - - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_drill.png"); - private TileEntityMachineMiningDrill diFurnace; - - public GUIMachineMiningDrill(InventoryPlayer invPlayer, TileEntityMachineMiningDrill tedf) { - super(new ContainerMachineMiningDrill(invPlayer, tedf)); - diFurnace = tedf; - - this.xSize = 176; - this.ySize = 166; - } - - @Override - public void drawScreen(int mouseX, int mouseY, float f) { - super.drawScreen(mouseX, mouseY, f); - - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 69 - 52, 16, 52, diFurnace.power, diFurnace.maxPower); - - String[] upgradeText = new String[4]; - upgradeText[0] = I18nUtil.resolveKey("desc.gui.upgrade"); - upgradeText[1] = I18nUtil.resolveKey("desc.gui.upgrade.speed"); - upgradeText[2] = I18nUtil.resolveKey("desc.gui.upgrade.effectiveness"); - upgradeText[3] = I18nUtil.resolveKey("desc.gui.upgrade.power"); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 141, guiTop + 39, 8, 8, guiLeft + 100, guiTop + 39 + 16 + 8, upgradeText); - } - - @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); - - if(diFurnace.power > 0) { - int i = (int)diFurnace.getPowerScaled(52); - drawTexturedModalRect(guiLeft + 8, guiTop + 69 - i, 176, 52 - i, 16, i); - } - - int k = diFurnace.warning; - if(k == 2) - drawTexturedModalRect(guiLeft + 44, guiTop + 17, 192, 0, 16, 16); - if(k == 1) - drawTexturedModalRect(guiLeft + 44, guiTop + 17, 208, 0, 16, 16); - - this.drawInfoPanel(guiLeft + 141, guiTop + 39, 8, 8, 8); - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNTSlots.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNTSlots.java index 77f1f3a60..2c9338326 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNTSlots.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNTSlots.java @@ -52,6 +52,7 @@ public class GUIMachineRadarNTSlots extends GuiInfoContainer { @Override protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.radar.hasCustomInventoryName() ? this.radar.getInventoryName() : I18n.format(this.radar.getInventoryName()); + if(MainRegistry.polaroidID == 11) name = "Reda"; 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); } diff --git a/src/main/java/com/hbm/inventory/gui/GUINukeN45.java b/src/main/java/com/hbm/inventory/gui/GUINukeN45.java deleted file mode 100644 index 055cc2a30..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUINukeN45.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.hbm.inventory.gui; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.container.ContainerNukeN45; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.bomb.TileEntityNukeN45; -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.ResourceLocation; - -public class GUINukeN45 extends GuiInfoContainer { - - public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/weapon/gui_n45.png"); - private TileEntityNukeN45 diFurnace; - - public GUINukeN45(InventoryPlayer invPlayer, TileEntityNukeN45 tedf) { - super(new ContainerNukeN45(invPlayer, tedf)); - diFurnace = tedf; - - this.xSize = 176; - this.ySize = 168; - } - - @Override - public void drawScreen(int mouseX, int mouseY, float f) { - super.drawScreen(mouseX, mouseY, f); - - String[] text = new String[] { "The first slot holds the payload.", - "Acceptable payloads:", - " -Det Cord", - " -TNT", - " -Explosive Charge", - " -Nuclear Charge", - "Using detonator while in mine mode will", - "arm the mine, set to explode when", - "it detects a large entity nearby."}; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, text); - - String[] text1 = new String[] { "The second slot is for green machine", - "upgrades. Entity detection range increases", - "by 5 blocks for every level.", - "When left empty, the mine can not be armed", - "an will behave like a regular bomb." }; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 16, 16, 16, guiLeft - 8, guiTop + 36 + 16, text1); - - if(diFurnace.primed) - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 121, guiTop + 22, 6, 8, mouseX, mouseY, new String[]{ "Mine armed!" } ); - } - - @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); - - if(diFurnace.primed) { - drawTexturedModalRect(guiLeft + 121, guiTop + 22, 176, 0, 6, 8); - } - - this.drawInfoPanel(guiLeft - 16, guiTop + 36, 16, 16, 2); - this.drawInfoPanel(guiLeft - 16, guiTop + 36 + 16, 16, 16, 3); - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIReactorMultiblock.java b/src/main/java/com/hbm/inventory/gui/GUIReactorMultiblock.java deleted file mode 100644 index 7cf44051e..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUIReactorMultiblock.java +++ /dev/null @@ -1,189 +0,0 @@ -package com.hbm.inventory.gui; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.container.ContainerReactorMultiblock; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; -import net.minecraft.client.Minecraft; -import net.minecraft.client.audio.PositionedSoundRecord; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.ResourceLocation; - -public class GUIReactorMultiblock extends GuiInfoContainer { - - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_reactor_large_experimental.png"); - private TileEntityMachineReactorLarge diFurnace; - - public GUIReactorMultiblock(InventoryPlayer invPlayer, TileEntityMachineReactorLarge tedf) { - super(new ContainerReactorMultiblock(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 - 52, 16, 52); - diFurnace.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 26, guiTop + 88 - 52, 16, 52); - diFurnace.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 80, guiTop + 108, 88, 4); - this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 80, guiTop + 114, 88, 4, new String[] { "Hull Temperature:", " " + Math.round((diFurnace.hullHeat) * 0.00001 * 980 + 20) + "°C" }); - this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 80, guiTop + 120, 88, 4, new String[] { "Core Temperature:", " " + Math.round((diFurnace.coreHeat) * 0.00002 * 980 + 20) + "°C" }); - - this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 115, guiTop + 17, 18, 90, new String[] { "Operating Level: " + diFurnace.rods + "%" }); - - String fuel = ""; - - switch(diFurnace.type) { - case URANIUM: - fuel = "Uranium"; - break; - case MOX: - fuel = "MOX"; - break; - case PLUTONIUM: - fuel = "Plutonium"; - break; - case SCHRABIDIUM: - fuel = "Schrabidium"; - break; - case THORIUM: - fuel = "Thorium"; - break; - default: - fuel = "ERROR"; - break; - } - - this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 98, guiTop + 18, 16, 88, new String[] { fuel + ": " + (diFurnace.fuel / diFurnace.fuelMult) + "/" + (diFurnace.maxFuel / diFurnace.fuelMult) + "ng" }); - this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 18, 16, 88, new String[] { "Depleted " + fuel + ": " + (diFurnace.waste / diFurnace.fuelMult) + "/" + (diFurnace.maxWaste / diFurnace.fuelMult) + "ng" }); - - String[] text0 = new String[] { diFurnace.rods > 0 ? "Reactor is ON" : "Reactor is OFF"}; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 52, guiTop + 53, 18, 18, mouseX, mouseY, text0); - - String s = "0"; - - FluidType type = diFurnace.tanks[2].getTankType(); - if(type == Fluids.STEAM) s = "1x"; - if(type == Fluids.HOTSTEAM) s = "10x"; - if(type == Fluids.SUPERHOTSTEAM) s = "100x"; - - String[] text4 = new String[] { "Steam compression switch", - "Current compression level: " + s}; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 63, guiTop + 107, 14, 18, mouseX, mouseY, text4); - } - - protected void mouseClicked(int x, int y, int i) { - super.mouseClicked(x, y, i); - - if(guiLeft + 115 <= x && guiLeft + 115 + 18 > x && guiTop + 17 < y && guiTop + 17 + 90 >= y) { - - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - - int rods = (y - (guiTop + 24)) * 100 / 76; - - if(rods < 0) - rods = 0; - - if(rods > 100) - rods = 100; - - rods = 100 - rods; - - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord, rods, 0)); - } - - if(guiLeft + 63 <= x && guiLeft + 63 + 14 > x && guiTop + 107 < y && guiTop + 107 + 18 >= y) { - - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - int c = 0; - - FluidType type = diFurnace.tanks[2].getTankType(); - if(type == Fluids.STEAM) c = 0; - if(type == Fluids.HOTSTEAM) c = 1; - if(type == Fluids.SUPERHOTSTEAM) c = 2; - - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord, c, 1)); - } - } - - @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 = diFurnace.rods; - drawTexturedModalRect(guiLeft + 115, guiTop + 107 - 14 - (k * 76 / 100), 208, 36, 18, 14); - - if(diFurnace.rods > 0) - drawTexturedModalRect(guiLeft + 52, guiTop + 53, 212, 0, 18, 18); - - int q = diFurnace.getFuelScaled(88); - drawTexturedModalRect(guiLeft + 98, guiTop + 106 - q, 176, 124 - q, 16, q); - - int j = diFurnace.getWasteScaled(88); - drawTexturedModalRect(guiLeft + 134, guiTop + 106 - j, 192, 124 - j, 16, j); - - int s = diFurnace.size; - - if(s < 8) - drawTexturedModalRect(guiLeft + 50, guiTop + 17, 208, 50 + s * 18, 22, 18); - else - drawTexturedModalRect(guiLeft + 50, guiTop + 17, 230, 50 + (s - 8) * 18, 22, 18); - - - FluidType type = diFurnace.tanks[2].getTankType(); - if(type == Fluids.STEAM) drawTexturedModalRect(guiLeft + 63, guiTop + 107, 176, 18, 14, 18); - if(type == Fluids.HOTSTEAM) drawTexturedModalRect(guiLeft + 63, guiTop + 107, 190, 18, 14, 18); - if(type == Fluids.SUPERHOTSTEAM) drawTexturedModalRect(guiLeft + 63, guiTop + 107, 204, 18, 14, 18); - - if(diFurnace.hasHullHeat()) { - int i = diFurnace.getHullHeatScaled(88); - - i = (int) Math.min(i, 160); - - drawTexturedModalRect(guiLeft + 80, guiTop + 114, 0, 226, i, 4); - } - - if(diFurnace.hasCoreHeat()) { - int i = diFurnace.getCoreHeatScaled(88); - - i = (int) Math.min(i, 160); - - drawTexturedModalRect(guiLeft + 80, guiTop + 120, 0, 230, i, 4); - } - - if(diFurnace.tanks[2].getFill() > 0) { - int i = diFurnace.getSteamScaled(88); - - //i = (int) Math.min(i, 160); - - int offset = 234; - - if(type == Fluids.HOTSTEAM) offset += 4; - if(type == Fluids.SUPERHOTSTEAM) offset += 8; - - drawTexturedModalRect(guiLeft + 80, guiTop + 108, 0, offset, i, 4); - } - - diFurnace.tanks[0].renderTank(guiLeft + 8, guiTop + 88, this.zLevel, 16, 52); - diFurnace.tanks[1].renderTank(guiLeft + 26, guiTop + 88, this.zLevel, 16, 52); - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIWatzCore.java b/src/main/java/com/hbm/inventory/gui/GUIWatzCore.java deleted file mode 100644 index 68aa1a7c5..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUIWatzCore.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.hbm.inventory.gui; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.container.ContainerWatzCore; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.machine.TileEntityWatzCore; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.ResourceLocation; - -public class GUIWatzCore extends GuiInfoContainer { - - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_watz_multiblock.png"); - private TileEntityWatzCore diFurnace; - - public GUIWatzCore(InventoryPlayer invPlayer, TileEntityWatzCore tedf) { - super(new ContainerWatzCore(invPlayer, tedf)); - diFurnace = tedf; - - this.xSize = 176; - //this.ySize = 222; - this.ySize = 256; - } - - @Override - public void drawScreen(int mouseX, int mouseY, float f) { - super.drawScreen(mouseX, mouseY, f); - - diFurnace.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 106 - 18 - 70, 16, 70); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 106 - 70, 16, 70 - 18, 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")/* + String.valueOf(diFurnace.powerList)*/, 8, this.ySize - 96 + 2 - 34, 4210752); - this.fontRendererObj.drawString(String.valueOf(diFurnace.powerList + " HE/tick"), 8, this.ySize - 50 + 2 + 13, 4210752); - this.fontRendererObj.drawString(String.valueOf(diFurnace.heatList + " heat"), 8, this.ySize - 50 + 2 + 22, 4210752); - this.fontRendererObj.drawString(String.valueOf((diFurnace.decayMultiplier * diFurnace.heat)/100 /100 + " waste/tick"), 8, this.ySize - 50 + 2 + 31, 4210752); - this.fontRendererObj.drawString(String.valueOf(diFurnace.powerMultiplier + "% power"), 100, this.ySize - 50 + 2 + 13, 4210752); - this.fontRendererObj.drawString(String.valueOf(diFurnace.heatMultiplier + "% heat"), 100, this.ySize - 50 + 2 + 22, 4210752); - this.fontRendererObj.drawString(String.valueOf(diFurnace.decayMultiplier + "% decay"), 100, this.ySize - 50 + 2 + 31, 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 l = (int)diFurnace.getPowerScaled(70); - drawTexturedModalRect(guiLeft + 152, guiTop + 106 - 18 - l, 192, 70 - l, 16, l); - - diFurnace.tank.renderTank(guiLeft + 134, guiTop + 106 - 18, this.zLevel, 16, 70); - } -} diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index cc918d0cc..416e8332e 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -197,6 +197,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.warhead_volcano, 1), new AStack[] {new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 16), new ComparableStack(ModBlocks.det_nuke, 3), new OreDictStack(U238.block(), 24), new ComparableStack(ModItems.circuit_tantalium, 5) }, 600); makeRecipe(new ComparableStack(ModItems.warhead_thermo_endo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_endo, 2), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1) },300); makeRecipe(new ComparableStack(ModItems.warhead_thermo_exo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_exo, 2), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1) },300); + makeRecipe(new ComparableStack(ModItems.missile_stealth, 1), new AStack[] { new OreDictStack(TI.plate(), 20), new OreDictStack(AL.plate(), 20), new OreDictStack(CU.plate(), 10), new OreDictStack(KEY_BLACK, 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), new ComparableStack(ModItems.circuit_gold), new OreDictStack(STEEL.bolt(), 32) },1200); makeRecipe(new ComparableStack(ModItems.thruster_nuclear, 1), new AStack[] {new OreDictStack(DURA.ingot(), 32), new OreDictStack(B.ingot(), 8), new OreDictStack(PB.plate(), 16), new ComparableStack(ModItems.pipes_steel), new ComparableStack(ModItems.circuit_gold, 1) },600); makeRecipe(new ComparableStack(ModItems.sat_base, 1), new AStack[] {new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.photo_panel, 24), new ComparableStack(ModItems.board_copper, 12), new ComparableStack(ModItems.circuit_gold, 6), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },500); makeRecipe(new ComparableStack(ModItems.sat_head_mapper, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.hull_small_steel, 3), new ComparableStack(ModItems.plate_desh, 2), new ComparableStack(ModItems.circuit_gold, 2), new OreDictStack(RUBBER.ingot(), 12), new OreDictStack(REDSTONE.dust(), 6), new ComparableStack(Items.diamond, 1), new ComparableStack(Blocks.glass_pane, 6), },400); diff --git a/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java b/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java index 21e8ca942..1cee88f3f 100644 --- a/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java @@ -95,7 +95,7 @@ public class MagicRecipes { recipes.add(new MagicRecipe(new ItemStack(ModItems.gun_darter), new OreDictStack(STEEL.plate()), new OreDictStack(STEEL.plate()), - new ComparableStack(ModItems.ingot_polymer), + new OreDictStack(ANY_PLASTIC.ingot()), new OreDictStack(GOLD.plate()))); recipes.add(new MagicRecipe(new ItemStack(ModItems.ammo_dart, 4, ItemAmmoEnums.AmmoDart.NUCLEAR.ordinal()), diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 5cdad83bf..2729bf223 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1324,6 +1324,7 @@ public class ModItems { public static Item missile_schrabidium; public static Item missile_emp; public static Item missile_shuttle; + public static Item missile_stealth; public static Item mp_thruster_10_kerosene; public static Item mp_thruster_10_kerosene_tec; @@ -3943,6 +3944,7 @@ public class ModItems { missile_schrabidium = new Item().setUnlocalizedName("missile_schrabidium").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_schrabidium"); missile_emp = new Item().setUnlocalizedName("missile_emp").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_emp"); missile_shuttle = new ItemMissileShuttle().setUnlocalizedName("missile_shuttle").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_shuttle"); + missile_stealth = new Item().setUnlocalizedName("missile_stealth").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_stealth"); missile_carrier = new Item().setUnlocalizedName("missile_carrier").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_carrier"); missile_soyuz = new ItemSoyuz().setUnlocalizedName("missile_soyuz").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":soyuz"); missile_soyuz_lander = new ItemCustomLore().setUnlocalizedName("missile_soyuz_lander").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":soyuz_lander"); @@ -6873,6 +6875,7 @@ public class ModItems { GameRegistry.registerItem(missile_schrabidium, missile_schrabidium.getUnlocalizedName()); GameRegistry.registerItem(missile_emp, missile_emp.getUnlocalizedName()); GameRegistry.registerItem(missile_shuttle, missile_shuttle.getUnlocalizedName()); + GameRegistry.registerItem(missile_stealth, missile_stealth.getUnlocalizedName()); GameRegistry.registerItem(missile_carrier, missile_carrier.getUnlocalizedName()); GameRegistry.registerItem(missile_soyuz, missile_soyuz.getUnlocalizedName()); GameRegistry.registerItem(missile_soyuz_lander, missile_soyuz_lander.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java b/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java index 6c338eec9..a25a54983 100644 --- a/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java +++ b/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java @@ -106,7 +106,7 @@ public class ItemAssemblyTemplate extends Item { return EnumChatFormatting.RED + "Broken Template" + EnumChatFormatting.RESET; } - String s1 = ("" + StatCollector.translateToLocal(out.getUnlocalizedName() + ".name")).trim(); + String s1 = out.getDisplayName().trim(); if(s1 != null) { s = s + " " + s1; diff --git a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java index be5e0ad7f..f4dfbeae7 100644 --- a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java +++ b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java @@ -49,7 +49,7 @@ public class ItemWatzPellet extends ItemEnumMulti { NQD( 0x4B4B4B, 0x121212, 2_000, 20, 0.01D, new FunctionLinear(2D), new FunctionSqrt(1D/25D).withOff(25D * 25D), null), NQR( 0x2D2D2D, 0x0B0B0B, 2_500, 30, 0.01D, new FunctionLinear(1.5D), new FunctionSqrt(1D/25D).withOff(25D * 25D), null); - public double yield = 1_000_000_000; + public double yield = 500_000_000; public int colorLight; public int colorDark; public double mudContent; //how much mud per reaction flux should be produced @@ -64,7 +64,7 @@ public class ItemWatzPellet extends ItemEnumMulti { this.colorDark = colorDark; this.passive = passive; this.heatEmission = heatEmission; - this.mudContent = mudContent; + this.mudContent = mudContent / 2D; this.burnFunc = burnFunction; this.heatDiv = heatDivisor; this.absorbFunc = absorbFunction; diff --git a/src/main/java/com/hbm/items/special/ItemStarterKit.java b/src/main/java/com/hbm/items/special/ItemStarterKit.java index 1890a002d..a13c09e92 100644 --- a/src/main/java/com/hbm/items/special/ItemStarterKit.java +++ b/src/main/java/com/hbm/items/special/ItemStarterKit.java @@ -215,7 +215,7 @@ public class ItemStarterKit extends Item { player.inventory.addItemStackToInventory(new ItemStack(ModItems.battery_lithium, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.battery_potato, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.screwdriver, 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_coal_off, 3)); + player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_excavator, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_diesel, 2)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_selenium, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.red_cable, 64)); diff --git a/src/main/java/com/hbm/items/special/ItemTrain.java b/src/main/java/com/hbm/items/special/ItemTrain.java index 007d31a91..6ecadd476 100644 --- a/src/main/java/com/hbm/items/special/ItemTrain.java +++ b/src/main/java/com/hbm/items/special/ItemTrain.java @@ -44,9 +44,9 @@ public class ItemTrain extends ItemEnumMulti { public static enum EnumTrainType { // Engine Gauge Max Speed Accel. Eng. Brake Parking Brake - CARGO_TRAM(TrainCargoTram.class, "Electric", "Standard Gauge", "10m/s", "0.2m/s", "<1m/s", "Yes"), + CARGO_TRAM(TrainCargoTram.class, "Electric", "Standard Gauge", "10m/s", "0.2m/s²", "<1m/s", "Yes"), CARGO_TRAM_TRAILER(TrainCargoTramTrailer.class, null, "Standard Gauge", "Yes", null, null, "No"), - TUNNEL_BORE(TrainTunnelBore.class, "NONE", "Standard Gauge", "10m/s", "0.2m/s", "<1m/s", "Yes"); + TUNNEL_BORE(TrainTunnelBore.class, "NONE", "Standard Gauge", "10m/s", "0.2m/s²", "<1m/s", "Yes"); public Class train; public String engine; @@ -78,20 +78,24 @@ public class ItemTrain extends ItemEnumMulti { try { train = type.train.getConstructor(World.class).newInstance(world); } catch(Exception e) { } if(train != null && train.getGauge() == ((IRailNTM) b).getGauge(world, x, y, z)) { - if(!world.isRemote) { - train.setPosition(x + fx, y + fy, z + fz); - BlockPos anchor = train.getCurrentAnchorPos(); - train.rotationYaw = entity.rotationYaw; - Vec3 corePos = train.getRelPosAlongRail(anchor, 0, new MoveContext(RailCheckType.CORE, 0)); + + train.setPosition(x + fx, y + fy, z + fz); + BlockPos anchor = train.getCurrentAnchorPos(); + train.rotationYaw = entity.rotationYaw; + Vec3 corePos = train.getRelPosAlongRail(anchor, 0, new MoveContext(RailCheckType.CORE, 0)); + if(corePos != null) { train.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord); Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan(), new MoveContext(RailCheckType.FRONT, train.getCollisionSpan() - train.getLengthSpan())); Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan(), new MoveContext(RailCheckType.BACK, train.getCollisionSpan() - train.getLengthSpan())); - train.rotationYaw = train.generateYaw(frontPos, backPos); - world.spawnEntityInWorld(train); + if(frontPos != null && backPos != null) { + if(!world.isRemote) { + train.rotationYaw = train.generateYaw(frontPos, backPos); + world.spawnEntityInWorld(train); + } + stack.stackSize--; + return true; + } } - - stack.stackSize--; - return true; } } diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index 3c1a0da33..01eecea43 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -2,8 +2,11 @@ package com.hbm.items.tool; import java.util.List; +import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.lib.Library; -import com.hbm.saveddata.TomSaveData; +import com.hbm.util.TrackerUtil; +import com.hbm.world.WorldUtil; +import com.hbm.world.biome.BiomeGenCraterBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -40,11 +43,19 @@ public class ItemWandD extends Item { TimeAnalyzer.endCount(); TimeAnalyzer.dump();*/ - TomSaveData data = TomSaveData.forWorld(world); + /*TomSaveData data = TomSaveData.forWorld(world); data.impact = true; data.fire = 0F; data.dust = 0F; - data.markDirty(); + data.markDirty();*/ + + /*for(int i = -5; i <= 5; i++) { + for(int j = -5; j <= 5; j++) { + WorldUtil.setBiome(world, pos.blockX + i, pos.blockZ + j, BiomeGenCraterBase.craterBiome); + } + } + + WorldUtil.syncBiomeChange(world, pos.blockX, pos.blockZ);*/ /*EntityTomBlast tom = new EntityTomBlast(world); tom.posX = pos.blockX; @@ -53,12 +64,11 @@ public class ItemWandD extends Item { tom.destructionRange = 600; world.spawnEntityInWorld(tom);*/ - /*EntityNukeTorex torex = new EntityNukeTorex(world); + EntityNukeTorex torex = new EntityNukeTorex(world); torex.setPositionAndRotation(pos.blockX, pos.blockY + 1, pos.blockZ, 0, 0); torex.setScale(1.5F); - torex.setType(1); world.spawnEntityInWorld(torex); - TrackerUtil.setTrackingRange(world, torex, 1000);*/ + TrackerUtil.setTrackingRange(world, torex, 1000); /*EntityTracker entitytracker = ((WorldServer) world).getEntityTracker(); IntHashMap map = ReflectionHelper.getPrivateValue(EntityTracker.class, entitytracker, "trackedEntityIDs", "field_72794_c"); diff --git a/src/main/java/com/hbm/items/tool/ItemWandS.java b/src/main/java/com/hbm/items/tool/ItemWandS.java index ea7ba07fa..f2b7143b7 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandS.java +++ b/src/main/java/com/hbm/items/tool/ItemWandS.java @@ -4,8 +4,6 @@ import java.util.List; import java.util.Random; import com.hbm.world.machine.FWatz; -import com.hbm.world.machine.NuclearReactor; -import com.hbm.world.machine.Watz; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -19,10 +17,8 @@ public class ItemWandS extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Creative-only item"); - list.add("\"Instant structures for everyone!\""); - list.add("(Cycle with shift-right click,"); - list.add("spawn structures with right click!)"); + list.add("DEPRECATED"); + if(itemstack.stackTagCompound != null) { switch(itemstack.stackTagCompound.getInteger("building")) @@ -58,10 +54,8 @@ public class ItemWandS extends Item { switch(stack.stackTagCompound.getInteger("building")) { case 0: - new NuclearReactor().generate(world, rand, x, up ? y : y - 4, z); break; case 1: - new Watz().generate(world, rand, x, up ? y : y - 12, z); break; case 2: new FWatz().generateHull(world, rand, x, up ? y : y - 18, z); diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java index 4eac7ec1f..a5784742f 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java @@ -216,7 +216,7 @@ public class ItemAmmoHIMARS extends Item { this.itemTypes[LARGE_TB] = new HIMARSRocket("single_tb", "himars_single_tb", 1) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { - standardExplosion(rocket, mop, 50F, 12F, true, ModBlocks.slag, 1); + standardExplosion(rocket, mop, 50F, 12F, true, ModBlocks.block_slag, 1); ExplosionLarge.spawnShrapnels(rocket.worldObj, (int) mop.hitVec.xCoord, (int) mop.hitVec.yCoord, (int) mop.hitVec.zCoord, 30); standardMush(rocket, mop, 35); }}; diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index 3cd331dae..f42d5a4c3 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -76,6 +76,8 @@ public class Library { public static String Barnaby99_x = "b04cf173-cff0-4acd-aa19-3d835224b43d"; public static String Ma118 = "1121cb7a-8773-491f-8e2b-221290c93d81"; public static String Adam29Adam29 = "bbae7bfa-0eba-40ac-a0dd-f3b715e73e61"; + public static String Alcater = "0b399a4a-8545-45a1-be3d-ece70d7d48e9"; + public static String ege444 = "42ee978c-442a-4cd8-95b6-29e469b6df10"; public static Set contributors = Sets.newHashSet(new String[] { "06ab7c03-55ce-43f8-9d3c-2850e3c652de", //mustang_rudolf @@ -164,10 +166,7 @@ public class Library { return true; if((tileentity != null && (tileentity instanceof IFluidAcceptor || tileentity instanceof IFluidSource)) || - world.getBlock(x, y, z) == ModBlocks.reactor_hatch || - world.getBlock(x, y, z) == ModBlocks.reactor_conductor || world.getBlock(x, y, z) == ModBlocks.fusion_hatch || - world.getBlock(x, y, z) == ModBlocks.watz_hatch || world.getBlock(x, y, z) == ModBlocks.fwatz_hatch || world.getBlock(x, y, z) == ModBlocks.dummy_port_ams_limiter || world.getBlock(x, y, z) == ModBlocks.dummy_port_ams_emitter || @@ -390,23 +389,6 @@ public class Library { Block block = worldObj.getBlock(x, y, z); TileEntity tileentity = worldObj.getTileEntity(x, y, z); - //Large Nuclear Reactor - if(block == ModBlocks.reactor_hatch && worldObj.getBlock(x, y, z + 2) == ModBlocks.reactor_computer) - { - tileentity = worldObj.getTileEntity(x, y, z + 2); - } - if(block == ModBlocks.reactor_hatch && worldObj.getBlock(x, y, z - 2) == ModBlocks.reactor_computer) - { - tileentity = worldObj.getTileEntity(x, y, z - 2); - } - if(block == ModBlocks.reactor_hatch && worldObj.getBlock(x + 2, y, z) == ModBlocks.reactor_computer) - { - tileentity = worldObj.getTileEntity(x + 2, y, z); - } - if(block == ModBlocks.reactor_hatch && worldObj.getBlock(x - 2, y, z) == ModBlocks.reactor_computer) - { - tileentity = worldObj.getTileEntity(x - 2, 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/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 12297eb61..a5cbbc5ea 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4824)"; + public static final String VERSION = "1.0.27 BETA (4837)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index c94f66408..9001d143a 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -185,7 +185,6 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeSolinium.class, new RenderNukeSolinium()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeN2.class, new RenderNukeN2()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeMan.class, new RenderNukeMan()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeN45.class, new RenderNukeN45()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeBalefire.class, new RenderNukeFstbmb()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBombMulti.class, new RenderBombMulti()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeMike.class, new RenderNukeMike()); @@ -224,7 +223,6 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineGasFlare.class, new RenderGasFlare()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChimneyBrick.class, new RenderChimneyBrick()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChimneyIndustrial.class, new RenderChimneyIndustrial()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiningDrill.class, new RenderMiningDrill()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiningLaser.class, new RenderLaserMiner()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAssembler.class, new RenderAssembler()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAssemfac.class, new RenderAssemfac()); @@ -339,7 +337,6 @@ public class ClientProxy extends ServerProxy { //DecoContainer ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFileCabinet.class, new RenderFileCabinet()); //multiblocks - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityStructureMarker.class, new RenderStructureMaker()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMultiblock.class, new RenderMultiblock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySoyuzStruct.class, new RenderSoyuzMultiblock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITERStruct.class, new RenderITERMultiblock()); @@ -668,6 +665,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityMissileCustom.class, new RenderMissileCustom()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileGeneric.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileDecoy.class, new RenderMissileGeneric()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileStealth.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileAntiBallistic.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileIncendiary.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileCluster.class, new RenderMissileGeneric()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index d3887d25e..b4fb99e14 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -107,8 +107,6 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.plate_polymer, 4), new Object[] { "BB", 'B', "ingotBrick" }); addRecipeAuto(new ItemStack(ModItems.plate_polymer, 4), new Object[] { "BB", 'B', "ingotNetherBrick" }); - addRecipeAuto(new ItemStack(ModBlocks.marker_structure, 1), new Object[] { "L", "G", "R", 'L', LAPIS.dust(), 'G', Items.glowstone_dust, 'R', Blocks.redstone_torch }); - addRecipeAuto(new ItemStack(ModItems.circuit_raw, 1), new Object[] { "A", "R", "S", 'S', STEEL.plate(), 'R', REDSTONE.dust(), 'A', ModItems.wire_aluminium }); addRecipeAuto(new ItemStack(ModItems.circuit_bismuth_raw, 1), new Object[] { "RPR", "ABA", "RPR", 'R', REDSTONE.dust(), 'P', ANY_PLASTIC.ingot(), 'A', (GeneralConfig.enable528 ? ModItems.circuit_tantalium : ASBESTOS.ingot()), 'B', ModItems.ingot_bismuth }); addRecipeAuto(new ItemStack(ModItems.circuit_tantalium_raw, 1), new Object[] { "RWR", "PTP", "RWR", 'R', REDSTONE.dust(), 'W', ModItems.wire_gold, 'P', CU.plate(), 'T', TA.nugget() }); @@ -518,8 +516,12 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModBlocks.rail_large_straight_short, 5), new Object[] { ModBlocks.rail_large_straight }); addRecipeAuto(new ItemStack(ModBlocks.rail_large_buffer, 1), new Object[] { " S", "RS", 'R', ModBlocks.rail_large_straight, 'S', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.rail_large_curve, 1), new Object[] { "R ", " R", 'R', ModBlocks.rail_large_straight }); - addRecipeAuto(new ItemStack(ModBlocks.rail_large_curve_wide, 1), new Object[] { "RR", " R", 'R', ModBlocks.rail_large_straight }); + addRecipeAuto(new ItemStack(ModBlocks.rail_large_curve_7, 1), new Object[] { "RR", " R", 'R', ModBlocks.rail_large_straight }); + addRecipeAuto(new ItemStack(ModBlocks.rail_large_curve_9, 1), new Object[] { "RR ", " R", " R", 'R', ModBlocks.rail_large_straight }); addRecipeAuto(new ItemStack(ModBlocks.rail_large_ramp, 1), new Object[] { " R ", "SSS", 'R', ModBlocks.rail_large_straight, 'S', KEY_SLAB }); + addRecipeAuto(new ItemStack(ModBlocks.rail_large_switch, 1), new Object[] { "R R", " RR", " R", 'R', ModBlocks.rail_large_straight }); + addShapelessAuto(new ItemStack(ModBlocks.rail_large_switch), new Object[] { ModBlocks.rail_large_switch_flipped }); + addShapelessAuto(new ItemStack(ModBlocks.rail_large_switch_flipped), new Object[] { ModBlocks.rail_large_switch }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.bomb_multi), 1), new Object[] { "AAD", "CHF", "AAD", 'A', ModItems.wire_aluminium, 'C', ModItems.circuit_aluminium, 'H', ModItems.hull_small_aluminium, 'F', ModItems.fins_quad_titanium, 'D', KEY_WHITE }); addShapelessAuto(new ItemStack(ModItems.powder_ice, 4), new Object[] { Items.snowball, KNO.dust(), REDSTONE.dust() }); @@ -1077,6 +1079,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.ore_nether_uranium, 8), new Object[] { "OOO", "OBO", "OOO", 'O', ModBlocks.ore_nether_uranium_scorched, 'B', Items.water_bucket }); addShapelessAuto(new ItemStack(ModBlocks.ore_gneiss_uranium, 1), new Object[] { ModBlocks.ore_gneiss_uranium_scorched, Items.water_bucket }); addRecipeAuto(new ItemStack(ModBlocks.ore_gneiss_uranium, 8), new Object[] { "OOO", "OBO", "OOO", 'O', ModBlocks.ore_gneiss_uranium_scorched, 'B', Items.water_bucket }); + addShapelessAuto(new ItemStack(ModBlocks.ore_uranium, 1), new Object[] { ModBlocks.ore_sellafield_uranium_scorched, Items.water_bucket }); + addRecipeAuto(new ItemStack(ModBlocks.ore_uranium, 8), new Object[] { "OOO", "OBO", "OOO", 'O', ModBlocks.ore_sellafield_uranium_scorched, 'B', Items.water_bucket }); addRecipeAuto(new ItemStack(ModItems.plate_iron, 4), new Object[] { "##", "##", '#', IRON.ingot() }); addRecipeAuto(new ItemStack(ModItems.plate_gold, 4), new Object[] { "##", "##", '#', GOLD.ingot() }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index b30c1b05b..b02fb3722 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -43,10 +43,10 @@ import com.hbm.saveddata.satellites.Satellite; import com.hbm.tileentity.TileMappings; import com.hbm.tileentity.bomb.TileEntityLaunchPad; import com.hbm.tileentity.bomb.TileEntityNukeCustom; -import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; import com.hbm.tileentity.machine.TileEntityNukeFurnace; import com.hbm.tileentity.machine.rbmk.RBMKDials; import com.hbm.util.*; +import com.hbm.world.biome.BiomeGenCraterBase; import com.hbm.world.feature.BedrockOre; import com.hbm.world.feature.OreCave; import com.hbm.world.feature.OreLayer3D; @@ -294,6 +294,8 @@ public class MainRegistry { MinecraftForge.EVENT_BUS.register(oreMan); //OreRegisterEvent OreDictManager.registerGroups(); //important to run first OreDictManager.registerOres(); + + BiomeGenCraterBase.initDictionary(); Library.superuser.add("192af5d7-ed0f-48d8-bd89-9d41af8524f8"); Library.superuser.add("5aee1e3d-3767-4987-a222-e7ce1fbdf88e"); @@ -861,7 +863,6 @@ public class MainRegistry { ArmorUtil.register(); HazmatRegistry.registerHazmats(); FluidContainerRegistry.register(); - TileEntityMachineReactorLarge.registerAll(); BlockToolConversion.registerRecipes(); AchievementHandler.register(); @@ -1189,6 +1190,26 @@ public class MainRegistry { ignoreMappings.add("hbm:tile.bomber"); ignoreMappings.add("hbm:item.bolt_tungsten"); ignoreMappings.add("hbm:item.bolt_dura_steel"); + ignoreMappings.add("hbm:tile.rail_large_curve_wide"); + ignoreMappings.add("hbm:tile.nuke_n45"); + ignoreMappings.add("hbm:tile.machine_coal_off"); + ignoreMappings.add("hbm:tile.machine_coal_on"); + ignoreMappings.add("hbm:tile.machine_drill"); + ignoreMappings.add("hbm:tile.drill_pipe"); + ignoreMappings.add("hbm:tile.dummy_block_drill"); + ignoreMappings.add("hbm:tile.dummy_port_drill"); + ignoreMappings.add("hbm:tile.machine_combine_factory"); + ignoreMappings.add("hbm:tile.watz_core"); + ignoreMappings.add("hbm:tile.watz_hatch"); + ignoreMappings.add("hbm:tile.marker_structure"); + ignoreMappings.add("hbm:tile.reactor_element"); + ignoreMappings.add("hbm:tile.reactor_control"); + ignoreMappings.add("hbm:tile.reactor_hatch"); + ignoreMappings.add("hbm:tile.reactor_ejector"); + ignoreMappings.add("hbm:tile.reactor_inserter"); + ignoreMappings.add("hbm:tile.reactor_conductor"); + ignoreMappings.add("hbm:tile.reactor_computer"); + ignoreMappings.add("hbm:tile.ff"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index ea2a605c9..72e07c9b8 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -1,6 +1,7 @@ package com.hbm.main; import java.lang.reflect.Method; +import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.Random; @@ -12,6 +13,10 @@ import org.lwjgl.opengl.GL11; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockAshes; +import com.hbm.blocks.rail.IRailNTM; +import com.hbm.blocks.rail.IRailNTM.MoveContext; +import com.hbm.blocks.rail.IRailNTM.RailCheckType; +import com.hbm.blocks.rail.IRailNTM.RailContext; import com.hbm.config.GeneralConfig; import com.hbm.entity.mob.EntityHunterChopper; import com.hbm.entity.projectile.EntityChopperMine; @@ -64,6 +69,7 @@ import com.hbm.tileentity.machine.TileEntityNukeFurnace; import com.hbm.util.I18nUtil; import com.hbm.util.ItemStackUtil; import com.hbm.util.LoggingUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.wiaj.GuiWorldInAJar; import com.hbm.wiaj.cannery.CanneryBase; import com.hbm.wiaj.cannery.Jars; diff --git a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java index 50156b735..1d589bf3a 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java +++ b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java @@ -10,6 +10,7 @@ import com.hbm.items.armor.IArmorDisableModel; import com.hbm.items.armor.IArmorDisableModel.EnumPlayerPart; import com.hbm.packet.PermaSyncHandler; import com.hbm.render.model.ModelMan; +import com.hbm.world.biome.BiomeGenCraterBase; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -20,6 +21,7 @@ import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderPlayer; +import net.minecraft.client.settings.GameSettings; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.item.EnumAction; @@ -27,12 +29,16 @@ import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; import net.minecraftforge.client.event.DrawBlockHighlightEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.EntityViewRenderEvent.FogColors; import net.minecraftforge.client.event.EntityViewRenderEvent.FogDensity; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; import net.minecraftforge.client.event.RenderPlayerEvent; +import net.minecraftforge.common.ForgeModContainer; public class ModEventHandlerRenderer { @@ -369,6 +375,13 @@ public class ModEventHandlerRenderer { @SubscribeEvent(priority = EventPriority.LOW) public void tintFog(FogColors event) { + + EntityPlayer player = MainRegistry.proxy.me(); + Vec3 color = getFogBlendColor(player.worldObj, (int) Math.floor(player.posX), (int) Math.floor(player.posZ), event.renderPartialTicks); + event.red = (float) color.xCoord; + event.green = (float) color.yCoord; + event.blue = (float) color.zCoord; + float soot = (float) (renderSoot - RadiationConfig.sootFogThreshold); float sootColor = 0.15F; float sootReq = (float) RadiationConfig.sootFogDivisor; @@ -390,4 +403,71 @@ public class ModEventHandlerRenderer { GL11.glTranslated(horizontal * mult, vertical * mult, 0); } } + + private static boolean fogInit = false; + private static int fogX; + private static int fogZ; + private static Vec3 fogRGBMultiplier; + + /** Same procedure as getting the blended sky color but for fog */ + public static Vec3 getFogBlendColor(World world, int playerX, int playerZ, double partialTicks) { + + if(playerX == fogX && playerZ == fogZ && fogInit) return fogRGBMultiplier; + + fogInit = true; + GameSettings settings = Minecraft.getMinecraft().gameSettings; + int[] ranges = ForgeModContainer.blendRanges; + int distance = 0; + + if(settings.fancyGraphics && settings.renderDistanceChunks >= 0 && settings.renderDistanceChunks < ranges.length) { + distance = ranges[settings.renderDistanceChunks]; + } + + float r = 0F; + float g = 0F; + float b = 0F; + + int divider = 0; + + for(int x = -distance; x <= distance; x++) { + for(int z = -distance; z <= distance; z++) { + BiomeGenBase biome = world.getBiomeGenForCoords(playerX + x, playerZ + z); + Vec3 color = getBiomeFogColors(world, biome, partialTicks); + r += color.xCoord; + g += color.yCoord; + b += color.zCoord; + divider++; + } + } + + fogX = playerX; + fogZ = playerZ; + + fogRGBMultiplier = Vec3.createVectorHelper(r / divider, g / divider, b / divider); + return fogRGBMultiplier; + } + + /** Returns the current biome's fog color adjusted for brightness if in a crater, or the world's cached fog color if not */ + public static Vec3 getBiomeFogColors(World world, BiomeGenBase biome, double partialTicks) { + + Vec3 worldFog = world.getFogColor((float) partialTicks); + double r = worldFog.xCoord; + double g = worldFog.yCoord; + double b = worldFog.zCoord; + + if(biome instanceof BiomeGenCraterBase) { + int color = biome.getSkyColorByTemp(biome.temperature); + r = ((color & 0xff0000) >> 16) / 255F; + g = ((color & 0x00ff00) >> 8) / 255F; + b = (color & 0x0000ff) / 255F; + + float celestialAngle = world.getCelestialAngle((float) partialTicks); + float skyBrightness = MathHelper.clamp_float(MathHelper.cos(celestialAngle * (float) Math.PI * 2.0F) * 2.0F + 0.5F, 0F, 1F); + r *= skyBrightness; + g *= skyBrightness; + b *= skyBrightness; + } + + return Vec3.createVectorHelper(r, g, b); + } } diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index 1d1697804..11cdcbcb9 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -88,7 +88,6 @@ public class NEIConfig implements IConfigureNEI { API.hideItem(ItemBattery.getEmptyBattery(ModItems.memory)); API.hideItem(ItemBattery.getFullBattery(ModItems.memory)); - API.hideItem(new ItemStack(ModBlocks.machine_coal_on)); API.hideItem(new ItemStack(ModBlocks.machine_electric_furnace_on)); API.hideItem(new ItemStack(ModBlocks.machine_difurnace_on)); API.hideItem(new ItemStack(ModBlocks.machine_nuke_furnace_on)); @@ -110,7 +109,6 @@ public class NEIConfig implements IConfigureNEI { API.hideItem(new ItemStack(ModItems.burnt_bark)); API.hideItem(new ItemStack(ModItems.ams_core_thingy)); } - API.hideItem(new ItemStack(ModBlocks.dummy_block_drill)); API.hideItem(new ItemStack(ModBlocks.dummy_block_ams_base)); API.hideItem(new ItemStack(ModBlocks.dummy_block_ams_emitter)); API.hideItem(new ItemStack(ModBlocks.dummy_block_ams_limiter)); @@ -118,7 +116,6 @@ public class NEIConfig implements IConfigureNEI { API.hideItem(new ItemStack(ModBlocks.dummy_block_blast)); API.hideItem(new ItemStack(ModBlocks.dummy_block_uf6)); API.hideItem(new ItemStack(ModBlocks.dummy_block_puf6)); - API.hideItem(new ItemStack(ModBlocks.dummy_port_drill)); API.hideItem(new ItemStack(ModBlocks.dummy_port_ams_base)); API.hideItem(new ItemStack(ModBlocks.dummy_port_ams_emitter)); API.hideItem(new ItemStack(ModBlocks.dummy_port_ams_limiter)); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 89f81b449..b27890ada 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1047,6 +1047,7 @@ public class ResourceManager { //Missiles public static final IModelCustom missileV2 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_v2.obj")).asDisplayList(); public static final IModelCustom missileABM = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_abm.obj")).asDisplayList(); + public static final IModelCustom missileStealth = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_stealth.obj"), false).asDisplayList(); public static final IModelCustom missileStrong = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_strong.obj")); public static final IModelCustom missileHuge = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_huge.obj")); public static final IModelCustom missileNuclear = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileNeon.obj")); @@ -1191,6 +1192,7 @@ public class ResourceManager { public static final ResourceLocation missileV2_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_bu.png"); public static final ResourceLocation missileV2_decoy_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_decoy.png"); public static final ResourceLocation missileAA_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_abm.png"); + public static final ResourceLocation missileStealth_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_stealth.png"); public static final ResourceLocation missileStrong_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong.png"); public static final ResourceLocation missileStrong_EMP_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong_emp.png"); public static final ResourceLocation missileStrong_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong_inc.png"); @@ -1469,7 +1471,8 @@ public class ResourceManager { public static final IModelCustom rail_standard_straight = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard.obj")); public static final IModelCustom rail_standard_straight_short = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_short.obj")); public static final IModelCustom rail_standard_curve = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend.obj")); - public static final IModelCustom rail_standard_curve_wide = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend_wide.obj")); + public static final IModelCustom rail_standard_curve_wide7 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend_wide.obj")); + public static final IModelCustom rail_standard_curve_wide9 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend_wide9.obj")); public static final IModelCustom rail_standard_ramp = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_ramp.obj")); public static final IModelCustom rail_standard_buffer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_buffer.obj")); public static final IModelCustom rail_standard_switch = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_switch.obj")); diff --git a/src/main/java/com/hbm/packet/AuxButtonPacket.java b/src/main/java/com/hbm/packet/AuxButtonPacket.java index 3cb163883..922b1704a 100644 --- a/src/main/java/com/hbm/packet/AuxButtonPacket.java +++ b/src/main/java/com/hbm/packet/AuxButtonPacket.java @@ -13,7 +13,6 @@ import com.hbm.tileentity.machine.TileEntityCoreStabilizer; import com.hbm.tileentity.machine.TileEntityForceField; import com.hbm.tileentity.machine.TileEntityMachineMiningLaser; import com.hbm.tileentity.machine.TileEntityMachineMissileAssembly; -import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; import com.hbm.tileentity.machine.TileEntitySoyuzLauncher; import com.hbm.tileentity.machine.storage.TileEntityBarrel; import com.hbm.tileentity.machine.storage.TileEntityMachineBattery; @@ -85,30 +84,6 @@ public class AuxButtonPacket implements IMessage { field.isOn = !field.isOn; } - if (te instanceof TileEntityMachineReactorLarge) { - TileEntityMachineReactorLarge reactor = (TileEntityMachineReactorLarge)te; - - if(m.id == 0) - reactor.rods = m.value; - - if(m.id == 1) { - FluidType type = Fluids.STEAM; - int fill = reactor.tanks[2].getFill(); - - switch(m.value) { - case 0: type = Fluids.HOTSTEAM; fill = (int)Math.floor(fill / 10D); break; - case 1: type = Fluids.SUPERHOTSTEAM; fill = (int)Math.floor(fill / 10D); break; - case 2: type = Fluids.STEAM; fill = (int)Math.floor(fill * 100); break; - } - - if(fill > reactor.tanks[2].getMaxFill()) - fill = reactor.tanks[2].getMaxFill(); - - reactor.tanks[2].setTankType(type); - reactor.tanks[2].setFill(fill); - } - } - if (te instanceof TileEntityMachineMissileAssembly) { TileEntityMachineMissileAssembly assembly = (TileEntityMachineMissileAssembly)te; diff --git a/src/main/java/com/hbm/packet/AuxGaugePacket.java b/src/main/java/com/hbm/packet/AuxGaugePacket.java index 09b5139c8..e97a68ce1 100644 --- a/src/main/java/com/hbm/packet/AuxGaugePacket.java +++ b/src/main/java/com/hbm/packet/AuxGaugePacket.java @@ -5,7 +5,6 @@ import com.hbm.items.weapon.ItemMissile.PartSize; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.bomb.TileEntityCompactLauncher; import com.hbm.tileentity.bomb.TileEntityLaunchTable; -import com.hbm.tileentity.bomb.TileEntityNukeN45; import com.hbm.tileentity.machine.TileEntityAMSBase; import com.hbm.tileentity.machine.TileEntityAMSEmitter; import com.hbm.tileentity.machine.TileEntityAMSLimiter; @@ -127,11 +126,6 @@ public class AuxGaugePacket implements IMessage { if(m.id == 0) boiler.heat = m.value; } - if (te instanceof TileEntityNukeN45) { - TileEntityNukeN45 nuke = (TileEntityNukeN45)te; - - nuke.primed = m.value == 1; - } if (te instanceof TileEntityCompactLauncher) { TileEntityCompactLauncher launcher = (TileEntityCompactLauncher)te; diff --git a/src/main/java/com/hbm/packet/BiomeSyncPacket.java b/src/main/java/com/hbm/packet/BiomeSyncPacket.java index aa8f992ea..203ddc281 100644 --- a/src/main/java/com/hbm/packet/BiomeSyncPacket.java +++ b/src/main/java/com/hbm/packet/BiomeSyncPacket.java @@ -28,8 +28,8 @@ public class BiomeSyncPacket implements IMessage { } public BiomeSyncPacket(int blockX, int blockZ, byte biome) { - this.chunkX = blockX << 4; - this.chunkZ = blockZ << 4; + this.chunkX = blockX >> 4; + this.chunkZ = blockZ >> 4; this.blockX = (byte) (blockX & 15); this.blockZ = (byte) (blockZ & 15); this.biome = biome; @@ -63,7 +63,6 @@ public class BiomeSyncPacket implements IMessage { this.blockX = buf.readByte(); this.blockZ = buf.readByte(); } else { - buf.writeBoolean(true); this.biomeArray = new byte[256]; for(int i = 0; i < 256; i++) { this.biomeArray[i] = buf.readByte(); @@ -80,12 +79,15 @@ public class BiomeSyncPacket implements IMessage { World world = Minecraft.getMinecraft().theWorld; if(!world.getChunkProvider().chunkExists(m.chunkX, m.chunkZ)) return null; Chunk chunk = world.getChunkFromChunkCoords(m.chunkX, m.chunkZ); + chunk.isModified = true; if(m.biomeArray == null) { chunk.getBiomeArray()[(m.blockZ & 15) << 4 | (m.blockX & 15)] = m.biome; + world.markBlockRangeForRenderUpdate(m.chunkX << 4, 0, m.chunkZ << 4, m.chunkX << 4, 255, m.chunkZ << 4); } else { for(int i = 0; i < 256; i++) { chunk.getBiomeArray()[i] = m.biomeArray[i]; + world.markBlockRangeForRenderUpdate(m.chunkX << 4, 0, m.chunkZ << 4, (m.chunkX << 4) + 15, 255, (m.chunkZ << 4) + 15); } } diff --git a/src/main/java/com/hbm/packet/LoopedSoundPacket.java b/src/main/java/com/hbm/packet/LoopedSoundPacket.java index ed0ff966b..0312680a0 100644 --- a/src/main/java/com/hbm/packet/LoopedSoundPacket.java +++ b/src/main/java/com/hbm/packet/LoopedSoundPacket.java @@ -54,18 +54,6 @@ public class LoopedSoundPacket implements IMessage { @SideOnly(Side.CLIENT) public IMessage onMessage(LoopedSoundPacket m, MessageContext ctx) { TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - if (te != null && te instanceof TileEntityMachineMiningDrill) { - - boolean flag = true; - for(int i = 0; i < SoundLoopMiner.list.size(); i++) { - if(SoundLoopMiner.list.get(i).getTE() == te && !SoundLoopMiner.list.get(i).isDonePlaying()) - flag = false; - } - - if(flag && te.getWorldObj().isRemote && ((TileEntityMachineMiningDrill)te).torque > 0.2F) - Minecraft.getMinecraft().getSoundHandler().playSound(new SoundLoopMiner(new ResourceLocation("hbm:block.minerOperate"), te)); - } if (te != null && te instanceof TileEntityMachineAssembler) { diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index 9414d49a0..5bc992dd8 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -15,10 +15,6 @@ public class PacketDispatcher { { int i = 0; - //Machine type for marker rendering - wrapper.registerMessage(TEStructurePacket.Handler.class, TEStructurePacket.class, i++, Side.CLIENT); - //Mining drill rotation for rendering - wrapper.registerMessage(TEDrillPacket.Handler.class, TEDrillPacket.class, i++, Side.CLIENT); //Fluid packet for GUI wrapper.registerMessage(TEFluidPacket.Handler.class, TEFluidPacket.class, i++, Side.CLIENT); //Sound packet that keeps client and server separated diff --git a/src/main/java/com/hbm/packet/TEDrillPacket.java b/src/main/java/com/hbm/packet/TEDrillPacket.java deleted file mode 100644 index f157550f0..000000000 --- a/src/main/java/com/hbm/packet/TEDrillPacket.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.hbm.packet; - -import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; - -public class TEDrillPacket implements IMessage { - - int x; - int y; - int z; - float spin; - float torque; - - public TEDrillPacket() - { - - } - - public TEDrillPacket(int x, int y, int z, float spin, float torque) - { - this.x = x; - this.y = y; - this.z = z; - this.spin = spin; - this.torque = torque; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - spin = buf.readFloat(); - torque = buf.readFloat(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeFloat(spin); - buf.writeFloat(torque); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(TEDrillPacket m, MessageContext ctx) { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - if (te != null && te instanceof TileEntityMachineMiningDrill) { - - TileEntityMachineMiningDrill gen = (TileEntityMachineMiningDrill) te; - gen.rotation = m.spin; - gen.torque = m.torque; - } - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/TEStructurePacket.java b/src/main/java/com/hbm/packet/TEStructurePacket.java deleted file mode 100644 index 59af50274..000000000 --- a/src/main/java/com/hbm/packet/TEStructurePacket.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.hbm.packet; - -import com.hbm.tileentity.machine.TileEntityStructureMarker; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; - -public class TEStructurePacket implements IMessage { - - int x; - int y; - int z; - int type; - - public TEStructurePacket() - { - - } - - public TEStructurePacket(int x, int y, int z, int type) - { - this.x = x; - this.y = y; - this.z = z; - this.type = type; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - type = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeInt(type); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(TEStructurePacket m, MessageContext ctx) { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - if (te != null && te instanceof TileEntityStructureMarker) { - - TileEntityStructureMarker marker = (TileEntityStructureMarker) te; - marker.type = m.type; - } - return null; - } - } -} diff --git a/src/main/java/com/hbm/render/block/RenderBlockMultipass.java b/src/main/java/com/hbm/render/block/RenderBlockMultipass.java index 9932ae2a1..181407f36 100644 --- a/src/main/java/com/hbm/render/block/RenderBlockMultipass.java +++ b/src/main/java/com/hbm/render/block/RenderBlockMultipass.java @@ -41,31 +41,35 @@ public class RenderBlockMultipass implements ISimpleBlockRenderingHandler { renderer.setRenderBoundsFromBlock(block); GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); GL11.glTranslatef(-0.5F, -0.5F, -0.5F); + IBlockMultiPass multi = (IBlockMultiPass) block; - tessellator.startDrawingQuads(); - tessellator.setNormal(0.0F, -1.0F, 0.0F); - renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(0.0F, 1.0F, 0.0F); - renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(0.0F, 0.0F, -1.0F); - renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(0.0F, 0.0F, 1.0F); - renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(-1.0F, 0.0F, 0.0F); - renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(1.0F, 0.0F, 0.0F); - renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)); - tessellator.draw(); + for(int i = 0; i < (multi.shouldRenderItemMulti() ? multi.getPasses() : 1); i++) { + this.currentPass = i; + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, -1.0F, 0.0F); + renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, -1.0F); + renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, 1.0F); + renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(-1.0F, 0.0F, 0.0F); + renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(1.0F, 0.0F, 0.0F); + renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)); + tessellator.draw(); + } /** terrible hack to make this shit work */ if(block == ModBlocks.ore_random) { diff --git a/src/main/java/com/hbm/render/entity/effect/RenderTorex.java b/src/main/java/com/hbm/render/entity/effect/RenderTorex.java index e90761d3e..10094d1ad 100644 --- a/src/main/java/com/hbm/render/entity/effect/RenderTorex.java +++ b/src/main/java/com/hbm/render/entity/effect/RenderTorex.java @@ -138,7 +138,7 @@ public class RenderTorex extends Render { float f4 = ActiveRenderInfo.rotationXY; float f5 = ActiveRenderInfo.rotationXZ; - float brightness = 0.75F * cloud.colorMod; + float brightness = cloud.type == cloud.type.CONDENSATION ? 0.9F : 0.75F * cloud.colorMod; Vec3 color = cloud.getInterpColor(interp); tess.setColorRGBA_F((float)color.xCoord * brightness, (float)color.yCoord * brightness, (float)color.zCoord * brightness, alpha); diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java index 1dff79e27..5e017039c 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java @@ -3,6 +3,7 @@ package com.hbm.render.entity.rocket; import org.lwjgl.opengl.GL11; import com.hbm.entity.missile.EntityMissileAntiBallistic; +import com.hbm.entity.missile.EntityMissileStealth; import com.hbm.entity.missile.EntityMissileTier1.*; import com.hbm.main.ResourceManager; @@ -28,6 +29,9 @@ public class RenderMissileGeneric extends Render { GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileABM.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); + } else if(entity instanceof EntityMissileStealth) { + bindTexture(ResourceManager.missileStealth_tex); + ResourceManager.missileStealth.renderAll(); } else { if(entity instanceof EntityMissileGeneric) diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index c9ca79fb9..afc1b518d 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -322,19 +322,6 @@ public class ItemRenderLibrary { GL11.glShadeModel(GL11.GL_FLAT); }}); - renderers.put(Item.getItemFromBlock(ModBlocks.machine_drill), new ItemRenderBase() { - public void renderInventory() { - GL11.glTranslated(0, -2, 0); - GL11.glScaled(3, 3, 3); - } - public void renderCommon() { - GL11.glRotated(180, 0, 1, 0); - GL11.glDisable(GL11.GL_CULL_FACE); - bindTexture(ResourceManager.drill_body_tex); ResourceManager.drill_body.renderAll(); - bindTexture(ResourceManager.drill_bolt_tex); ResourceManager.drill_bolt.renderAll(); - GL11.glEnable(GL11.GL_CULL_FACE); - }}); - renderers.put(Item.getItemFromBlock(ModBlocks.machine_mining_laser), new ItemRenderBase() { public void renderInventory() { GL11.glTranslated(0, -0.5, 0); diff --git a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java index 8b6e245aa..f2b5f3cb8 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java @@ -32,19 +32,21 @@ public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer { //TODO: add a registry for missile rendering to be reused here and for the entity renderer if(toRender.getItem() == ModItems.missile_generic) { - GL11.glScalef(1.0F, 1.0F, 1.0F); bindTexture(ResourceManager.missileV2_HE_tex); GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileV2.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); } if(toRender.getItem() == ModItems.missile_decoy) { - GL11.glScalef(1.0F, 1.0F, 1.0F); bindTexture(ResourceManager.missileV2_decoy_tex); GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileV2.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); } + if(toRender.getItem() == ModItems.missile_stealth) { + bindTexture(ResourceManager.missileStealth_tex); + ResourceManager.missileStealth.renderAll(); + } if(toRender.getItem() == ModItems.missile_strong) { GL11.glScalef(1.5F, 1.5F, 1.5F); bindTexture(ResourceManager.missileStrong_HE_tex); diff --git a/src/main/java/com/hbm/render/tileentity/RenderMiningDrill.java b/src/main/java/com/hbm/render/tileentity/RenderMiningDrill.java deleted file mode 100644 index a034556c5..000000000 --- a/src/main/java/com/hbm/render/tileentity/RenderMiningDrill.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.hbm.render.tileentity; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; -import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; - -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.tileentity.TileEntity; - -public class RenderMiningDrill extends TileEntitySpecialRenderer { - - @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) - { - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glRotatef(180, 0F, 1F, 0F); - switch(tileEntity.getBlockMetadata()) - { - case 2: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 4: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(0, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(90, 0F, 1F, 0F); break; - } - - bindTexture(ResourceManager.drill_body_tex); - - ResourceManager.drill_body.renderAll(); - - GL11.glPopMatrix(); - - renderTileEntityAt2(tileEntity, x, y, z, f); - } - - public void renderTileEntityAt2(TileEntity tileEntity, double x, double y, double z, float f) - { - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glRotatef(180, 0F, 1F, 0F); - switch(tileEntity.getBlockMetadata()) - { - case 2: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 4: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(0, 0F, 1F, 0F); break; - } - - GL11.glRotatef(((TileEntityMachineMiningDrill)tileEntity).rotation, 0F, 1F, 0F); - - bindTexture(ResourceManager.drill_bolt_tex); - ResourceManager.drill_bolt.renderAll(); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/tileentity/RenderNukeN45.java b/src/main/java/com/hbm/render/tileentity/RenderNukeN45.java deleted file mode 100644 index 415d2c26f..000000000 --- a/src/main/java/com/hbm/render/tileentity/RenderNukeN45.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.hbm.render.tileentity; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; -import com.hbm.tileentity.bomb.TileEntityNukeN45; - -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.tileentity.TileEntity; - -public class RenderNukeN45 extends TileEntitySpecialRenderer { - - @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) - { - boolean standing = tileEntity.getWorldObj().getBlock(tileEntity.xCoord, tileEntity.yCoord - 1, tileEntity.zCoord).isNormalCube(); - - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - bindTexture(ResourceManager.universal); - - GL11.glPushMatrix(); - - //GL11.glScaled(2.0D, 2.0D, 2.0D); - - if(standing) { - ResourceManager.n45_stand.renderAll(); - } - - double d = 0.25; - - if(((TileEntityNukeN45)tileEntity).primed) - d /= 4D; - - GL11.glTranslated(0, standing ? 1D : 0.5D, 0); - - ResourceManager.n45_globe.renderAll(); - - GL11.glRotated(90, 1, 0, 0); - - for(int i = 0; i < 8; i++) { - ResourceManager.n45_knob.renderAll(); - GL11.glTranslated(0, -d, 0); - ResourceManager.n45_rod.renderAll(); - GL11.glTranslated(0, d, 0); - GL11.glRotated(45, 0, 0, 1); - } - - GL11.glRotated(45, 0, 0, 1); - - for(int i = 0; i < 4; i++) { - GL11.glRotated(-45, 1, 0, 0); - ResourceManager.n45_knob.renderAll(); - GL11.glTranslated(0, -d, 0); - ResourceManager.n45_rod.renderAll(); - GL11.glTranslated(0, d, 0); - GL11.glRotated(45, 1, 0, 0); - GL11.glRotated(90, 0, 0, 1); - } - - GL11.glRotated(-90, 0, 0, 1); - - for(int i = 0; i < 4; i++) { - GL11.glRotated(45, 1, 0, 0); - ResourceManager.n45_knob.renderAll(); - GL11.glTranslated(0, -d, 0); - ResourceManager.n45_rod.renderAll(); - GL11.glTranslated(0, d, 0); - GL11.glRotated(-45, 1, 0, 0); - GL11.glRotated(90, 0, 0, 1); - } - - GL11.glRotated(45, 0, 0, 1); - GL11.glRotated(-90, 1, 0, 0); - - ResourceManager.n45_knob.renderAll(); - GL11.glTranslated(0, -d, 0); - ResourceManager.n45_rod.renderAll(); - GL11.glTranslated(0, d, 0); - - if(!standing) { - int depth = 0; - - for(int i = 0; i < 51; i++) { - - if(!tileEntity.getWorldObj().getBlock(tileEntity.xCoord, tileEntity.yCoord - i - 1, tileEntity.zCoord).isNormalCube()) { - depth++; - } else { - break; - } - } - - if(depth != 0 && depth < 51) { - - GL11.glTranslated(0, -1D, 0); - - for(int i = 0; i < depth + 1; i++) { - - ResourceManager.n45_chain.renderAll(); - GL11.glTranslated(0, -1, 0); - } - } - } - - GL11.glPopMatrix(); - - GL11.glEnable(GL11.GL_CULL_FACE); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/tileentity/RenderSolarBoiler.java b/src/main/java/com/hbm/render/tileentity/RenderSolarBoiler.java index 0dad6fd63..54c3c1ad1 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderSolarBoiler.java +++ b/src/main/java/com/hbm/render/tileentity/RenderSolarBoiler.java @@ -38,7 +38,7 @@ public class RenderSolarBoiler extends TileEntitySpecialRenderer { GL11.glShadeModel(GL11.GL_FLAT); GL11.glPopMatrix(); - if(te instanceof TileEntitySolarBoiler && Minecraft.getMinecraft().gameSettings.particleSetting < 2) { + if(te instanceof TileEntitySolarBoiler && !Minecraft.getMinecraft().gameSettings.fancyGraphics) { TileEntitySolarBoiler boiler = (TileEntitySolarBoiler) te; Tessellator tess = Tessellator.instance; diff --git a/src/main/java/com/hbm/render/tileentity/RenderStructureMaker.java b/src/main/java/com/hbm/render/tileentity/RenderStructureMaker.java deleted file mode 100644 index 20d55b4d6..000000000 --- a/src/main/java/com/hbm/render/tileentity/RenderStructureMaker.java +++ /dev/null @@ -1,239 +0,0 @@ -package com.hbm.render.tileentity; - -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL14; - -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.NuclearReactor; -import com.hbm.world.machine.Watz; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.init.Blocks; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; - -public class RenderStructureMaker extends TileEntitySpecialRenderer { - - float pixel = 1F/16F; - - @Override - public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) { - GL11.glPushMatrix(); - GL11.glTranslatef((float) x, (float) y, (float) z); - GL11.glRotatef(180, 0F, 0F, 1F); - - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_BLEND); - GL14.glBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - GL14.glBlendEquation(GL14.GL_FUNC_ADD); - GL11.glColor4f(0.5f, 0.25f, 1.0f, 1f); - this.renderBlocks((int)x, (int)y, (int)z, ((TileEntityStructureMarker)tileentity).type, tileentity.getWorldObj().getBlockMetadata(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord)); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_BLEND); - GL11.glPopMatrix(); - } - - public void renderBlocks(int x, int y, int z, int type, int meta) { - int offsetX = 0; - int offsetZ = 0; - if(type == 0) { - - if(meta == 6) { - offsetZ = 3; - } - if(meta == 7) { - offsetX = 3; - } - if(meta == 8) { - offsetZ = -3; - } - if(meta == 9) { - offsetX = -3; - } - - GL11.glTranslatef(-2 + offsetX, -3, -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 == 1) { - - if(meta == 6) { - offsetZ = 4; - } - if(meta == 7) { - offsetX = 4; - } - if(meta == 8) { - offsetZ = -4; - } - if(meta == 9) { - offsetX = -4; - } - - GL11.glTranslatef(-3 + offsetX, -12, -3 + offsetZ); - for(int a = 0; a < 7; a++) { - for(int b = 0; b < 13; b++) { - for(int c = 0; c < 7; c++) { - - Block block = Blocks.air; - if(Watz.array[b][a].substring(c, c + 1).equals("C")) - block = ModBlocks.reinforced_brick; - if(Watz.array[b][a].substring(c, c + 1).equals("A")) - block = ModBlocks.watz_hatch; - if(Watz.array[b][a].substring(c, c + 1).equals("R")) - block = ModBlocks.watz_control; - if(Watz.array[b][a].substring(c, c + 1).equals("S")) - block = ModBlocks.watz_end; - if(Watz.array[b][a].substring(c, c + 1).equals("I")) - block = ModBlocks.watz_conductor; - if(Watz.array[b][a].substring(c, c + 1).equals("#")) - block = ModBlocks.watz_core; - if(Watz.array[b][a].substring(c, c + 1).equals("K")) - block = ModBlocks.watz_cooler; - if(Watz.array[b][a].substring(c, c + 1).equals("W")) - block = ModBlocks.watz_element; - 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 == 2) { - - if(meta == 6) { - offsetZ = 10; - } - if(meta == 7) { - offsetX = 10; - } - if(meta == 8) { - offsetZ = -10; - } - if(meta == 9) { - offsetX = -10; - } - - GL11.glTranslatef(-9 + offsetX, -18, -9 + offsetZ); - for(int a = 0; a < 19; a++) { - for(int b = 0; b < 19; b++) { - for(int c = 0; c < 19; c++) { - - Block block = Blocks.air; - if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("X")) - block = ModBlocks.fwatz_scaffold; - if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("H")) - block = ModBlocks.fwatz_hatch; - if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("S")) - block = ModBlocks.fwatz_cooler; - if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("T")) - block = ModBlocks.fwatz_tank; - if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("M")) - block = ModBlocks.fwatz_conductor; - if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("C")) - block = ModBlocks.fwatz_computer; - if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("#")) - block = ModBlocks.fwatz_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); - } - } - } - } - } - } - - public void renderSmolBlockAt(ResourceLocation loc1, ResourceLocation loc2, int x, int y, int z) { - GL11.glPushMatrix(); - GL11.glTranslatef(x, y, z); - GL11.glRotatef(180, 0F, 0F, 1F); - Tessellator tesseract = Tessellator.instance; - tesseract.startDrawingQuads(); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 0); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 0); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1); - this.bindTexture(loc2); - tesseract.draw(); - - tesseract.startDrawingQuads(); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 1, 0); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 0); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 1, 1); - this.bindTexture(loc2); - tesseract.draw(); - - tesseract.startDrawingQuads(); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 1, 0); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0, 0); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0, 1); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 1, 1); - this.bindTexture(loc2); - tesseract.draw(); - - tesseract.startDrawingQuads(); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 0); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0, 0); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0, 1); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1); - this.bindTexture(loc2); - tesseract.draw(); - - tesseract.startDrawingQuads(); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 1, 0); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0, 0); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1); - this.bindTexture(loc1); - tesseract.draw(); - - tesseract.startDrawingQuads(); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 1, 0); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0, 0); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1); - this.bindTexture(loc1); - tesseract.draw(); - GL11.glPopMatrix(); - - } - -} diff --git a/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java b/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java index d2ea47b0f..5b8d04cc7 100644 --- a/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java +++ b/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java @@ -44,6 +44,7 @@ public class RenderAccessoryUtility { private static ResourceLocation pheo = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapePheo.png"); private static ResourceLocation vaer = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeVaer.png"); private static ResourceLocation adam = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeAdam.png"); + private static ResourceLocation alcater = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeAlcater.png"); public static ResourceLocation getCloakFromPlayer(EntityPlayer player) { @@ -51,7 +52,7 @@ public class RenderAccessoryUtility { String name = player.getDisplayName(); if(uuid.equals(Library.HbMinecraft)) { - return (MainRegistry.polaroidID == 11 ? hbm : hbm2); + return (MainRegistry.polaroidID == 11 ? hbm2 : hbm); } if(uuid.equals(Library.Drillgon)) { @@ -123,6 +124,9 @@ public class RenderAccessoryUtility { if(uuid.equals(Library.Adam29Adam29)) { return adam; } + if(uuid.equals(Library.Alcater)) { + return alcater; + } if(Library.contributors.contains(uuid)) { return wiki; } diff --git a/src/main/java/com/hbm/sound/SoundLoopMiner.java b/src/main/java/com/hbm/sound/SoundLoopMiner.java deleted file mode 100644 index 0655f0bdf..000000000 --- a/src/main/java/com/hbm/sound/SoundLoopMiner.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.hbm.sound; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; - -public class SoundLoopMiner extends SoundLoopMachine { - - public static List list = new ArrayList(); - - public SoundLoopMiner(ResourceLocation path, TileEntity te) { - super(path, te); - list.add(this); - } - - @Override - public void update() { - super.update(); - - if(te instanceof TileEntityMachineMiningDrill) { - TileEntityMachineMiningDrill drill = (TileEntityMachineMiningDrill)te; - - if(this.volume != 3) - volume = 3; - - if(drill.torque <= 0.5F) - this.donePlaying = true; - } - } - - public TileEntity getTE() { - return te; - } - -} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 1eef03148..0a9afce70 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -82,9 +82,7 @@ public class TileMappings { put(TileEntityConverterRfHe.class, "tileentity_converter_rfhe"); put(TileEntityMachineSchrabidiumTransmutator.class, "tileentity_schrabidium_transmutator"); put(TileEntityMachineDiesel.class, "tileentity_diesel_generator"); - put(TileEntityWatzCore.class, "tileentity_watz_multiblock"); put(TileEntityMachineShredder.class, "tileentity_machine_shredder"); - put(TileEntityMachineCMBFactory.class, "tileentity_machine_cmb"); put(TileEntityFWatzCore.class, "tileentity_fwatz_multiblock"); put(TileEntityMachineTeleporter.class, "tileentity_teleblock"); put(TileEntityHatch.class, "tileentity_seal_lid"); @@ -94,8 +92,6 @@ public class TileMappings { put(TileEntityMachineCyclotron.class, "tileentity_cyclotron"); put(TileEntityMachineExposureChamber.class, "tileentity_exposure_chamber"); put(TileEntityMachineRTG.class, "tileentity_machine_rtg"); - put(TileEntityStructureMarker.class, "tileentity_structure_marker"); - put(TileEntityMachineMiningDrill.class, "tileentity_mining_drill"); put(TileEntityMachineExcavator.class, "tileentity_ntm_excavator"); put(TileEntityFluidDuctSimple.class, "tileentity_universal_duct_simple"); put(TileEntityFluidDuct.class, "tileentity_universal_duct"); @@ -128,7 +124,6 @@ public class TileMappings { put(TileEntityLandmine.class, "tileentity_landmine"); put(TileEntityMachineKeyForge.class, "tileentity_key_forge"); put(TileEntitySellafield.class, "tileentity_sellafield_core"); - put(TileEntityNukeN45.class, "tileentity_n45"); put(TileEntityBlastDoor.class, "tileentity_blast_door"); put(TileEntitySafe.class, "tileentity_safe"); put(TileEntityMachineGasCent.class, "tileentity_gas_centrifuge"); @@ -140,7 +135,6 @@ public class TileMappings { put(TileEntityMachineShredderLarge.class, "tileentity_machine_big_shredder"); put(TileEntityRFDuct.class, "tileentity_hbm_rfduct"); put(TileEntityReactorControl.class, "tileentity_reactor_remote_control"); - put(TileEntityMachineReactorLarge.class, "tileentity_large_reactor"); put(TileEntityWasteDrum.class, "tileentity_waste_drum"); put(TileEntityDecon.class, "tileentity_decon"); put(TileEntityMachineSatDock.class, "tileentity_miner_dock"); diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java index aa3ae9816..6451f6f02 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java @@ -12,6 +12,7 @@ import com.hbm.entity.missile.EntityMissileAntiBallistic; import com.hbm.entity.missile.EntityMissileBaseNT; import com.hbm.entity.missile.EntityMissileDoomsday; import com.hbm.entity.missile.EntityMissileShuttle; +import com.hbm.entity.missile.EntityMissileStealth; import com.hbm.entity.missile.EntityMissileTier0.*; import com.hbm.entity.missile.EntityMissileTier1.*; import com.hbm.entity.missile.EntityMissileTier2.*; @@ -88,8 +89,9 @@ public class TileEntityLaunchPad extends TileEntityMachineBase implements IEnerg missiles.put(new ComparableStack(ModItems.missile_nuclear), EntityMissileNuclear.class); missiles.put(new ComparableStack(ModItems.missile_nuclear_cluster), EntityMissileMirv.class); missiles.put(new ComparableStack(ModItems.missile_volcano), EntityMissileVolcano.class); - + missiles.put(new ComparableStack(ModItems.missile_doomsday), EntityMissileDoomsday.class); + missiles.put(new ComparableStack(ModItems.missile_stealth), EntityMissileStealth.class); } public ItemStack toRender; diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeN45.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeN45.java deleted file mode 100644 index 07cd73d6a..000000000 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeN45.java +++ /dev/null @@ -1,326 +0,0 @@ -package com.hbm.tileentity.bomb; - -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityNukeTorex; -import com.hbm.entity.logic.EntityNukeExplosionMK5; -import com.hbm.explosion.ExplosionLarge; -import com.hbm.inventory.container.ContainerNukeN45; -import com.hbm.inventory.gui.GUINukeN45; -import com.hbm.items.ModItems; -import com.hbm.packet.AuxGaugePacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.IGUIProvider; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.potion.Potion; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; - -public class TileEntityNukeN45 extends TileEntity implements ISidedInventory, IGUIProvider { - - public ItemStack slots[]; - private String customName; - - public boolean primed = false; - - public TileEntityNukeN45() { - slots = new ItemStack[2]; - } - - @Override - public int getSizeInventory() { - return slots.length; - } - - @Override - public ItemStack getStackInSlot(int i) { - return slots[i]; - } - - @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 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.nukeN45"; - } - - @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; - } - } - - @Override - public void openInventory() { - - } - - @Override - public void closeInventory() { - - } - - @Override - public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) { - return false; - } - - @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) { - return new int[0]; - } - - @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 true; - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - NBTTagList list = nbt.getTagList("items", 10); - - primed = nbt.getBoolean("primed"); - - 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); - NBTTagList list = new NBTTagList(); - - nbt.setBoolean("primed", primed); - - 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); - } - - public void updateEntity() { - - if(!worldObj.isRemote) { - - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, primed ? 1 : 0, 0), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 150)); - - if(primed) { - - if(getType() == 0) { - return; - } - - int rad = 0; - - if(slots[1] != null) { - - if(slots[1].getItem() == ModItems.upgrade_effect_1) - rad = 5; - if(slots[1].getItem() == ModItems.upgrade_effect_2) - rad = 10; - if(slots[1].getItem() == ModItems.upgrade_effect_3) - rad = 15; - } - - if(rad == 0) { - primed = false; - return; - } - - List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord + 0.5 - rad, yCoord + 0.5 - rad, zCoord + 0.5 - rad, xCoord + 0.5 + rad, yCoord + 0.5 + rad, zCoord + 0.5 + rad)); - - for(Object o : list) { - - Entity e = (Entity)o; - - if(e instanceof EntityLivingBase && e.width * e.width * e.height >= 0.5 && !((EntityLivingBase)e).isPotionActive(Potion.invisibility.id)) { - int t = getType(); - this.clearSlots(); - explode(worldObj, xCoord, yCoord, zCoord, t); - break; - } - } - } - } - - } - - public static void explode(World world, int x, int y, int z, int type) { - - if(!world.isRemote) { - world.setBlockToAir(x, y, z); - - //System.out.println(type); - - switch(type) { - case 1: - world.createExplosion(null, x + 0.5, y + 0.5, z + 0.5, 1.5F, true); - break; - case 2: - world.createExplosion(null, x + 0.5, y + 0.5, z + 0.5, 4.0F, true); - break; - case 3: - ExplosionLarge.explode(world, x, y, z, 15, true, false, false); - break; - case 4: - world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, (int)(BombConfig.missileRadius * 0.75F), x + 0.5, y + 0.5, z + 0.5)); - EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.missileRadius * 0.75F); - break; - } - } - } - - public int getType() { - - if(!primed && slots[1] != null) { - - if(slots[1].getItem() == ModItems.upgrade_effect_1 || - slots[1].getItem() == ModItems.upgrade_effect_2 || - slots[1].getItem() == ModItems.upgrade_effect_3) - return 100; - } - - if(slots[0] != null) { - - if(slots[0].getItem() == Item.getItemFromBlock(ModBlocks.det_cord)) - return 1; - if(slots[0].getItem() == Item.getItemFromBlock(Blocks.tnt)) - return 2; - if(slots[0].getItem() == Item.getItemFromBlock(ModBlocks.det_charge)) - return 3; - if(slots[0].getItem() == Item.getItemFromBlock(ModBlocks.det_nuke)) - return 4; - } - - return 0; - } - - public void clearSlots() { - for(int i = 0; i < slots.length; i++) - { - slots[i] = null; - } - } - - @Override - public AxisAlignedBB getRenderBoundingBox() { - return TileEntity.INFINITE_EXTENT_AABB; - } - - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { - return 65536.0D; - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerNukeN45(player.inventory, this); - } - - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUINukeN45(player.inventory, this); - } - -} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java index 8bcfe28db..6a4d19226 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java @@ -354,7 +354,7 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements @Override public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { - info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_electric_furnace_off)); + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_arc_welder)); if(type == UpgradeType.SPEED) { info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 100 / 6) + "%")); info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCMBFactory.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCMBFactory.java deleted file mode 100644 index 9232bc0da..000000000 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCMBFactory.java +++ /dev/null @@ -1,385 +0,0 @@ -package com.hbm.tileentity.machine; - -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidContainer; -import com.hbm.inventory.container.ContainerMachineCMBFactory; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.inventory.gui.GUIMachineCMBFactory; -import com.hbm.items.ModItems; -import com.hbm.lib.Library; -import com.hbm.packet.AuxElectricityPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityLoadedBase; - -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyUser; -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.client.gui.GuiScreen; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Items; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.world.World; - -public class TileEntityMachineCMBFactory extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider { - - private ItemStack slots[]; - - public long power = 0; - public int process = 0; - public int soundCycle = 0; - public static final long maxPower = 100000000; - public static final int processSpeed = 200; - public FluidTank tank; - - private static final int[] slots_top = new int[] {1, 3}; - private static final int[] slots_bottom = new int[] {0, 2, 4}; - private static final int[] slots_side = new int[] {0, 2}; - - private String customName; - - public TileEntityMachineCMBFactory() { - slots = new ItemStack[6]; - tank = new FluidTank(Fluids.WATZ, 8000, 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.machineCMB"; - } - - @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; - } - } - - @Override - public void openInventory() {} - @Override - public void closeInventory() {} - - @Override - public boolean isItemValidForSlot(int i, ItemStack stack) { - switch(i) - { - case 0: - if(stack.getItem() instanceof IBatteryItem) - return true; - break; - case 1: - if(stack.getItem() == ModItems.ingot_magnetized_tungsten || stack.getItem() == ModItems.powder_magnetized_tungsten) - return true; - break; - case 2: - if(stack.getItem() == ModItems.bucket_mud) - return true; - break; - case 3: - if(stack.getItem() == ModItems.ingot_advanced_alloy || stack.getItem() == ModItems.powder_advanced_alloy) - return true; - break; - } - - 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; - } - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - NBTTagList list = nbt.getTagList("items", 10); - - power = nbt.getLong("power"); - tank.readFromNBT(nbt, "watz"); - process = nbt.getShort("process"); - 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); - tank.writeToNBT(nbt, "watz"); - nbt.setShort("process", (short) process); - 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) { - if(i == 4) - return true; - if(i == 0) - if (itemStack.getItem() instanceof IBatteryItem && ((IBatteryItem)itemStack.getItem()).getCharge(itemStack) == 0) - return true; - if(i == 2) - if(itemStack.getItem() == Items.bucket) - return true; - - return false; - } - - public long getPowerScaled(long i) { - return (power * i) / maxPower; - } - - public int getProgressScaled(int i) { - return (process * i) / processSpeed; - } - - public boolean canProcess() { - - boolean b = false; - - if(tank.getFill() >= 1 && power >= 100000 && slots[1] != null && slots[3] != null && (slots[4] == null || slots[4].stackSize <= 60)) - { - boolean flag0 = slots[1].getItem() == ModItems.ingot_magnetized_tungsten || slots[1].getItem() == ModItems.powder_magnetized_tungsten; - boolean flag1 = slots[3].getItem() == ModItems.ingot_advanced_alloy || slots[3].getItem() == ModItems.powder_advanced_alloy; - - b = flag0 && flag1; - } - - return b; - } - - public boolean isProcessing() { - return process > 0; - } - - public void process() { - tank.setFill(tank.getFill() - 1); - power -= 100000; - - process++; - - if(process >= processSpeed) { - - slots[1].stackSize--; - if (slots[1].stackSize == 0) { - slots[1] = null; - } - - slots[3].stackSize--; - if (slots[3].stackSize == 0) { - slots[3] = null; - } - - if(slots[4] == null) - { - slots[4] = new ItemStack(ModItems.ingot_combine_steel, 4); - } else { - - slots[4].stackSize += 4; - } - - process = 0; - } - } - - @Override - public void updateEntity() { - - if (!worldObj.isRemote) { - - this.updateConnections(); - - power = Library.chargeTEFromItems(slots, 0, power, maxPower); - - tank.loadTank(2, 5, slots); - tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); - - if (canProcess()) { - process(); - if(soundCycle == 0) - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "minecart.base", 1.0F, 1.5F); - soundCycle++; - - if(soundCycle >= 25) - soundCycle = 0; - } else { - process = 0; - } - - PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - } - } - - private void updateConnections() { - this.updateStandardConnections(worldObj, this); - this.subscribeToAllAround(tank.getTankType(), this); - } - - @Override - public void setPower(long i) { - power = i; - } - - @Override - public long getPower() { - return power; - } - - @Override - public long getMaxPower() { - return maxPower; - } - - @Override - public void setFillForSync(int fill, int index) { - tank.setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { - tank.setTankType(type); - } - - @Override - public int getMaxFluidFill(FluidType type) { - return type.name().equals(this.tank.getTankType().name()) ? tank.getMaxFill() : 0; - } - - @Override - public int getFluidFill(FluidType type) { - return type.name().equals(this.tank.getTankType().name()) ? tank.getFill() : 0; - } - - @Override - public void setFluidFill(int i, FluidType type) { - if(type.name().equals(tank.getTankType().name())) - tank.setFill(i); - } - - @Override - public FluidTank[] getReceivingTanks() { - return new FluidTank[] { tank }; - } - - @Override - public FluidTank[] getAllTanks() { - return new FluidTank[] { tank }; - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerMachineCMBFactory(player.inventory, this); - } - - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIMachineCMBFactory(player.inventory, this); - } -} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index 00523e45b..3c421facd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -428,41 +428,50 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; int[] access = sided != null ? sided.getAccessibleSlotsFromSide(dir.ordinal()) : null; - for(int i = 5; i <= 8; i++) { - - ItemStack out = slots[i]; - - if(out != null) { + boolean shouldOutput = true; + + while(shouldOutput) { + shouldOutput = false; + outer: + for(int i = 5; i <= 8; i++) { - for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { - - int slot = access != null ? access[j] : j; + ItemStack out = slots[i]; + + if(out != null) { - if(!inv.isItemValidForSlot(slot, out)) - continue; + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { + + int slot = access != null ? access[j] : j; - ItemStack target = inv.getStackInSlot(slot); - - if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < target.getMaxStackSize()) { - this.decrStackSize(i, 1); - target.stackSize++; - return; + if(!inv.isItemValidForSlot(slot, out)) + continue; + + ItemStack target = inv.getStackInSlot(slot); + + if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < Math.min(target.getMaxStackSize(), inv.getInventoryStackLimit())) { + int toDec = Math.min(out.stackSize, Math.min(target.getMaxStackSize(), inv.getInventoryStackLimit()) - target.stackSize); + this.decrStackSize(i, toDec); + target.stackSize += toDec; + shouldOutput = true; + break outer; + } } - } - - for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { - - int slot = access != null ? access[j] : j; - if(!inv.isItemValidForSlot(slot, out)) - continue; - - if(inv.getStackInSlot(slot) == null && (sided != null ? sided.canInsertItem(slot, out, dir.ordinal()) : inv.isItemValidForSlot(slot, out))) { - ItemStack copy = out.copy(); - copy.stackSize = 1; - inv.setInventorySlotContents(slot, copy); - this.decrStackSize(i, 1); - return; + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { + + int slot = access != null ? access[j] : j; + + if(!inv.isItemValidForSlot(slot, out)) + continue; + + if(inv.getStackInSlot(slot) == null && (sided != null ? sided.canInsertItem(slot, out, dir.ordinal()) : inv.isItemValidForSlot(slot, out))) { + ItemStack copy = out.copy(); + copy.stackSize = 1; + inv.setInventorySlotContents(slot, copy); + this.decrStackSize(i, 1); + shouldOutput = true; + break outer; + } } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java index 129a665fd..162a456f2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java @@ -271,42 +271,50 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa IInventory inv = (IInventory) te; ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; int[] access = sided != null ? sided.getAccessibleSlotsFromSide(coord.getDir().ordinal()) : null; - - for(int i = indices[2]; i <= indices[3]; i++) { - - ItemStack out = slots[i]; - - if(out != null) { - - for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { - int slot = access != null ? access[j] : j; + boolean shouldOutput = true; + while(shouldOutput) { + shouldOutput = false; + outer: + for(int i = indices[2]; i <= indices[3]; i++) { + + ItemStack out = slots[i]; + + if(out != null) { - if(!inv.isItemValidForSlot(slot, out)) - continue; - - ItemStack target = inv.getStackInSlot(slot); - - if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < target.getMaxStackSize() && target.stackSize < inv.getInventoryStackLimit()) { - this.decrStackSize(i, 1); - target.stackSize++; - return; + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { + + int slot = access != null ? access[j] : j; + + if(!inv.isItemValidForSlot(slot, out)) + continue; + + ItemStack target = inv.getStackInSlot(slot); + + if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < target.getMaxStackSize() && target.stackSize < inv.getInventoryStackLimit()) { + int toDec = Math.min(out.stackSize, Math.min(target.getMaxStackSize(), inv.getInventoryStackLimit()) - target.stackSize); + this.decrStackSize(i, toDec); + target.stackSize += toDec; + shouldOutput = true; + break outer; + } } - } - - for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { - - int slot = access != null ? access[j] : j; - if(!inv.isItemValidForSlot(slot, out)) - continue; - - if(inv.getStackInSlot(slot) == null && (sided != null ? sided.canInsertItem(slot, out, coord.getDir().ordinal()) : inv.isItemValidForSlot(slot, out))) { - ItemStack copy = out.copy(); - copy.stackSize = 1; - inv.setInventorySlotContents(slot, copy); - this.decrStackSize(i, 1); - return; + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { + + int slot = access != null ? access[j] : j; + + if(!inv.isItemValidForSlot(slot, out)) + continue; + + if(inv.getStackInSlot(slot) == null && (sided != null ? sided.canInsertItem(slot, out, coord.getDir().ordinal()) : inv.isItemValidForSlot(slot, out))) { + ItemStack copy = out.copy(); + copy.stackSize = 1; + inv.setInventorySlotContents(slot, copy); + this.decrStackSize(i, 1); + shouldOutput = true; + break outer; + } } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningDrill.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningDrill.java deleted file mode 100644 index f34c79c98..000000000 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningDrill.java +++ /dev/null @@ -1,495 +0,0 @@ -package com.hbm.tileentity.machine; - -import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.UpgradeManager; -import com.hbm.inventory.container.ContainerMachineMiningDrill; -import com.hbm.inventory.gui.GUIMachineMiningDrill; -import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; -import com.hbm.lib.Library; -import com.hbm.packet.AuxElectricityPacket; -import com.hbm.packet.LoopedSoundPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEDrillPacket; -import com.hbm.sound.SoundLoopMachine; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; - -import api.hbm.block.IDrillInteraction; -import api.hbm.block.IMiningDrill; -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyUser; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; - -public class TileEntityMachineMiningDrill extends TileEntityMachineBase implements IEnergyUser, IMiningDrill, IGUIProvider { - - public long power; - public int warning; - public static final long maxPower = 100000; - int age = 0; - int timer = 50; - int radius = 100; - int consumption = 100; - int fortune = 0; - boolean flag = true; - public float torque; - public float rotation; - SoundLoopMachine sound; - - public TileEntityMachineMiningDrill() { - super(13); - } - - @Override - public String getName() { - return "container.miningDrill"; - } - - @Override - public boolean isItemValidForSlot(int i, ItemStack itemStack) { - if(i == 0) - if(itemStack.getItem() instanceof IBatteryItem) - return true; - - if(i == 1) - return true; - - return false; - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - this.power = nbt.getLong("power"); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - nbt.setLong("power", power); - } - - public long getPowerScaled(long i) { - return (power * i) / maxPower; - } - - @Override - public void updateEntity() { - - if(!worldObj.isRemote) { - - this.updateConnections(); - - this.consumption = 100; - this.timer = 50; - this.radius = 1; - this.fortune = 0; - - UpgradeManager.eval(slots, 10, 12); - this.radius += Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3); - this.consumption += Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3) * 80; - - this.timer -= Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3) * 15; - this.consumption += Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3) * 300; - - this.consumption -= Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3) * 30; - this.timer += Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3) * 5; - - this.fortune += Math.min(UpgradeManager.getLevel(UpgradeType.FORTUNE), 3); - this.timer += Math.min(UpgradeManager.getLevel(UpgradeType.FORTUNE), 3) * 15; - - age++; - if(age >= timer) - age -= timer; - - power = Library.chargeTEFromItems(slots, 0, power, maxPower); - - if(power >= consumption) { - - //operation start - - if(age == timer - 1) { - warning = 0; - - //warning 0, green: drill is operational - //warning 1, red: drill is full, has no power or the drill is jammed - //warning 2, yellow: drill has reached max depth - - for(int i = this.yCoord - 1; i > this.yCoord - 1 - 100; i--) { - - if(i <= 3) { - //Code 2: The drilling ended - warning = 2; - break; - } - - if(worldObj.getBlock(xCoord, i, zCoord) != ModBlocks.drill_pipe) { - - if(worldObj.getBlock(xCoord, i, zCoord).isReplaceable(worldObj, xCoord, i, zCoord) || this.tryDrill(xCoord, i, zCoord)) { - - if(worldObj.getBlock(xCoord, i, zCoord).isReplaceable(worldObj, xCoord, i, zCoord)) { - worldObj.setBlock(xCoord, i, zCoord, ModBlocks.drill_pipe); - } - - break; - - } else { - this.warning = 1; - break; - } - } - - if(this.drill(xCoord, i, zCoord, radius)) - break; - } - } - - //operation end - - power -= consumption; - } else { - warning = 1; - } - - int meta = worldObj.getBlockMetadata(this.xCoord, this.yCoord, this.zCoord); - TileEntity te = null; - if(meta == 2) { - te = worldObj.getTileEntity(xCoord - 2, yCoord, zCoord); - //worldObj.setBlock(xCoord - 2, yCoord, zCoord, Blocks.dirt); - } - if(meta == 3) { - te = worldObj.getTileEntity(xCoord + 2, yCoord, zCoord); - //worldObj.setBlock(xCoord - 2, yCoord, zCoord, Blocks.dirt); - } - if(meta == 4) { - te = worldObj.getTileEntity(xCoord, yCoord, zCoord + 2); - //worldObj.setBlock(xCoord - 2, yCoord, zCoord, Blocks.dirt); - } - if(meta == 5) { - te = worldObj.getTileEntity(xCoord, yCoord, zCoord - 2); - //worldObj.setBlock(xCoord - 2, yCoord, zCoord, Blocks.dirt); - } - - if(te != null && te instanceof IInventory) { - IInventory chest = (IInventory)te; - - for(int i = 1; i < 10; i++) - if(tryFillContainer(chest, i)) - break; - } - - if(warning == 0) { - torque += 0.1; - if(torque > (100/timer)) - torque = (100/timer); - } else { - torque -= 0.1F; - if(torque < -(100/timer)) - torque = -(100/timer); - } - - if(torque < 0) { - torque = 0; - } - rotation += torque; - if(rotation >= 360) - rotation -= 360; - - PacketDispatcher.wrapper.sendToAllAround(new TEDrillPacket(xCoord, yCoord, zCoord, rotation, torque), 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)); - } - } - - private void updateConnections() { - this.getBlockMetadata(); - - if(this.blockMetadata == 5 || this.blockMetadata == 4) { - this.trySubscribe(worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); - this.trySubscribe(worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); - - } else if(this.blockMetadata == 3 || this.blockMetadata == 2) { - this.trySubscribe(worldObj, xCoord, yCoord, zCoord + 2, Library.POS_Z); - this.trySubscribe(worldObj, xCoord, yCoord, zCoord - 2, Library.NEG_Z); - } - } - - public boolean tryFillContainer(IInventory inventory, int slot) { - - int size = inventory.getSizeInventory(); - - for(int i = 0; i < size; i++) { - if(inventory.getStackInSlot(i) != null) { - - if(slots[slot] == null) - return false; - - ItemStack sta1 = inventory.getStackInSlot(i).copy(); - ItemStack sta2 = slots[slot].copy(); - - if(!inventory.isItemValidForSlot(i, sta2)) - continue; - - if(sta1 != null && sta2 != null) { - sta1.stackSize = 1; - sta2.stackSize = 1; - - if(ItemStack.areItemStacksEqual(sta1, sta2) && ItemStack.areItemStackTagsEqual(sta1, sta2) && inventory.getStackInSlot(i).stackSize < inventory.getStackInSlot(i).getMaxStackSize()) { - slots[slot].stackSize--; - - if(slots[slot].stackSize <= 0) - slots[slot] = null; - - ItemStack sta3 = inventory.getStackInSlot(i).copy(); - sta3.stackSize++; - inventory.setInventorySlotContents(i, sta3); - - return true; - } - } - } - } - for(int i = 0; i < size; i++) { - - if(slots[slot] == null) - return false; - - ItemStack sta2 = slots[slot].copy(); - - if(!inventory.isItemValidForSlot(i, sta2)) - continue; - - if(inventory.getStackInSlot(i) == null && sta2 != null) { - sta2.stackSize = 1; - slots[slot].stackSize--; - - if(slots[slot].stackSize <= 0) - slots[slot] = null; - - inventory.setInventorySlotContents(i, sta2); - - return true; - } - } - - return false; - } - - //Method: isOre - //"make it oreo!" - //"ok" - public boolean isOreo(int x, int y, int z) { - - Block b = worldObj.getBlock(x, y, z); - float hardness = b.getBlockHardness(worldObj, x, y, z); - - return hardness < 70 && hardness >= 0; - } - - public boolean isMinableOreo(int x, int y, int z) { - - Block b = worldObj.getBlock(x, y, z); - float hardness = b.getBlockHardness(worldObj, x, y, z); - - return (hardness < 70 && hardness >= 0) || b instanceof IDrillInteraction; - } - - /** - * returns true if there has been a successful mining operation - * returns false if no block could be mined and the drill is ready to extend - * */ - public boolean drill(int x, int y, int z, int rad) { - - if(!flag) - return false; - - for(int ix = x - rad; ix <= x + rad; ix++) { - for(int iz = z - rad; iz <= z + rad; iz++) { - - if(ix != x || iz != z) - if(tryDrill(ix, y, iz)) - return true; - } - } - - return false; - } - - /** - * returns true if there has been a successful mining operation - * returns false if no block could be mined, as it is either air or unmineable - * */ - public boolean tryDrill(int x, int y, int z) { - - if(worldObj.getBlock(x, y, z).isAir(worldObj, x, y, z) || !isMinableOreo(x, y, z)) - return false; - if(worldObj.getBlock(x, y, z).getMaterial().isLiquid()) { - worldObj.func_147480_a(x, y, z, false); - return false; - } - - Block b = worldObj.getBlock(x, y, z); - int meta = worldObj.getBlockMetadata(x, y, z); - - if(b instanceof IDrillInteraction) { - IDrillInteraction in = (IDrillInteraction) b; - - ItemStack sta = in.extractResource(worldObj, x, y, z, meta, this); - - if(sta != null && hasSpace(sta)) { - this.addItemToInventory(sta); - } - - if(!in.canBreak(worldObj, x, y, z, meta, this)) - return true; //true because the block is still there and mining should continue - } - - ItemStack stack = new ItemStack(b.getItemDropped(meta, worldObj.rand, fortune), b.quantityDropped(meta, fortune, worldObj.rand), b.damageDropped(meta)); - - //yup that worked - if(stack != null && stack.getItem() == null) { - worldObj.func_147480_a(x, y, z, false); - return true; - } - - if(hasSpace(stack)) { - this.addItemToInventory(stack); - worldObj.func_147480_a(x, y, z, false); - return true; - } - - return true; - } - - public boolean hasSpace(ItemStack stack) { - - ItemStack st = stack.copy(); - - if(st == null) - return true; - - for(int i = 1; i < 10; i++) { - if(slots[i] == null) - return true; - } - - st.stackSize = 1; - - ItemStack[] fakeArray = slots.clone(); - boolean flag = true; - for(int i = 0; i < stack.stackSize; i++) { - if(!canAddItemToArray(st, fakeArray)) - flag = false; - } - - return flag; - } - - public void addItemToInventory(ItemStack stack) { - - ItemStack st = stack.copy(); - - if(st == null) - return; - - int size = st.stackSize; - st.stackSize = 1; - - for(int i = 0; i < size; i++) - canAddItemToArray(st, this.slots); - - } - - public boolean canAddItemToArray(ItemStack stack, ItemStack[] array) { - - ItemStack st = stack.copy(); - - if(stack == null || st == null) - return true; - - for(int i = 1; i < 10; i++) { - - if(array[i] != null) { - ItemStack sta = array[i].copy(); - - if(stack == null || st == null) - return true; - - if(sta != null && sta.getItem() == st.getItem() && sta.stackSize < st.getMaxStackSize()) { - array[i].stackSize++; - return true; - } - } - } - - for(int i = 1; i < 10; i++) { - if(array[i] == null) { - array[i] = stack.copy(); - return true; - } - } - - return false; - } - - @Override - public void setPower(long i) { - power = i; - - } - - @Override - public long getPower() { - return power; - - } - - @Override - public long getMaxPower() { - return maxPower; - } - - @Override - public AxisAlignedBB getRenderBoundingBox() { - return TileEntity.INFINITE_EXTENT_AABB; - } - - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { - return 65536.0D; - } - - @Override - public DrillType getDrillTier() { - return DrillType.INDUSTRIAL; - } - - @Override - public int getDrillRating() { - return 50; - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerMachineMiningDrill(player.inventory, this); - } - - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIMachineMiningDrill(player.inventory, this); - } -} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index 93d4a8218..357779cc7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -22,6 +22,7 @@ import com.hbm.main.MainRegistry; import com.hbm.saveddata.SatelliteSavedData; import com.hbm.saveddata.satellites.Satellite; import com.hbm.saveddata.satellites.Satellite.Interfaces; +import com.hbm.saveddata.satellites.SatelliteHorizons; import com.hbm.saveddata.satellites.SatelliteLaser; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; @@ -428,6 +429,16 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I sat.onClick(world, x, z); } } + if(sat instanceof SatelliteHorizons) { + if(data.hasKey("launchPosX")) { + int x = data.getInteger("launchPosX"); + int z = data.getInteger("launchPosZ"); + int y = 60; //one day I will make radars transmit Y coordinate as well and you will be butchered alhamdulila + worldObj.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + sat.onCoordAction(world,player,x,y,z); + } + + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorLarge.java deleted file mode 100644 index 9cfafeb0d..000000000 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorLarge.java +++ /dev/null @@ -1,1017 +0,0 @@ -package com.hbm.tileentity.machine; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.config.MobConfig; -import com.hbm.explosion.ExplosionNukeGeneric; -import com.hbm.handler.radiation.ChunkRadiationManager; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidContainer; -import com.hbm.interfaces.IFluidSource; -import com.hbm.inventory.container.ContainerReactorMultiblock; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.inventory.gui.GUIReactorMultiblock; -import com.hbm.items.ModItems; -import com.hbm.items.machine.ItemFuelRod; -import com.hbm.lib.Library; -import com.hbm.packet.AuxGaugePacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityLoadedBase; - -import api.hbm.fluid.IFluidStandardTransceiver; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.Item; -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.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public class TileEntityMachineReactorLarge extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, IGUIProvider { - - private ItemStack slots[]; - - public int hullHeat; - public final int maxHullHeat = 100000; - public int coreHeat; - public final int maxCoreHeat = 50000; - public int rods; - public final int rodsMax = 100; - public int age = 0; - public List list = new ArrayList(); - public FluidTank[] tanks; - public ReactorFuelType type; - public int fuel; - public int maxFuel = 240 * fuelMult; - public int waste; - public int maxWaste = 240 * fuelMult; - - public static int fuelMult = 1000; - public static int cycleDuration = 24000; - private static int fuelBase = 240 * fuelMult; - private static int waterBase = 128 * 1000; - private static int coolantBase = 64 * 1000; - private static int steamBase = 32 * 1000; - - private static final int[] slots_top = new int[] { 0 }; - private static final int[] slots_bottom = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 16 }; - private static final int[] slots_side = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16 }; - - private String customName; - - public TileEntityMachineReactorLarge() { - slots = new ItemStack[8]; - tanks = new FluidTank[3]; - tanks[0] = new FluidTank(Fluids.WATER, 128000, 0); - tanks[1] = new FluidTank(Fluids.COOLANT, 64000, 1); - tanks[2] = new FluidTank(Fluids.STEAM, 32000, 2); - type = ReactorFuelType.URANIUM; - } - - @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.reactorLarge"; - } - - @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 itemStack) { - 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; - } - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - NBTTagList list = nbt.getTagList("items", 10); - - coreHeat = nbt.getInteger("heat"); - hullHeat = nbt.getInteger("hullHeat"); - rods = nbt.getInteger("rods"); - fuel = nbt.getInteger("fuel"); - waste = nbt.getInteger("waste"); - slots = new ItemStack[getSizeInventory()]; - tanks[0].readFromNBT(nbt, "water"); - tanks[1].readFromNBT(nbt, "coolant"); - tanks[2].readFromNBT(nbt, "steam"); - type = ReactorFuelType.getEnum(nbt.getInteger("type")); - - 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.setInteger("heat", coreHeat); - nbt.setInteger("hullHeat", hullHeat); - nbt.setInteger("rods", rods); - nbt.setInteger("fuel", fuel); - nbt.setInteger("waste", waste); - NBTTagList list = new NBTTagList(); - tanks[0].writeToNBT(nbt, "water"); - tanks[1].writeToNBT(nbt, "coolant"); - tanks[2].writeToNBT(nbt, "steam"); - nbt.setInteger("type", type.getID()); - - 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 false; - } - - @Override - public boolean canExtractItem(int i, ItemStack itemStack, int j) { - return false; - - } - - public int getCoreHeatScaled(int i) { - return (coreHeat * i) / maxCoreHeat; - } - - public int getHullHeatScaled(int i) { - return (hullHeat * i) / maxHullHeat; - } - - public int getFuelScaled(int i) { - return (fuel * i) / maxFuel; - } - - public int getWasteScaled(int i) { - return (waste * i) / maxWaste; - } - - public int getSteamScaled(int i) { - return (tanks[2].getFill() * i) / tanks[2].getMaxFill(); - } - - public boolean hasCoreHeat() { - return coreHeat > 0; - } - - public boolean hasHullHeat() { - return hullHeat > 0; - } - - public boolean checkBody() { - - return worldObj.getBlock(xCoord + 1, yCoord, zCoord + 1) == ModBlocks.reactor_element && - worldObj.getBlock(xCoord - 1, yCoord, zCoord + 1) == ModBlocks.reactor_element && - worldObj.getBlock(xCoord - 1, yCoord, zCoord - 1) == ModBlocks.reactor_element && - worldObj.getBlock(xCoord + 1, yCoord, zCoord - 1) == ModBlocks.reactor_element && - worldObj.getBlock(xCoord + 1, yCoord, zCoord) == ModBlocks.reactor_control && - worldObj.getBlock(xCoord - 1, yCoord, zCoord) == ModBlocks.reactor_control && - worldObj.getBlock(xCoord, yCoord, zCoord + 1) == ModBlocks.reactor_control && - worldObj.getBlock(xCoord, yCoord, zCoord - 1) == ModBlocks.reactor_control; - } - - public boolean checkSegment(int offset) { - - return worldObj.getBlock(xCoord + 1, yCoord + offset, zCoord + 1) == ModBlocks.reactor_element && - worldObj.getBlock(xCoord - 1, yCoord + offset, zCoord + 1) == ModBlocks.reactor_element && - worldObj.getBlock(xCoord - 1, yCoord + offset, zCoord - 1) == ModBlocks.reactor_element && - worldObj.getBlock(xCoord + 1, yCoord + offset, zCoord - 1) == ModBlocks.reactor_element && - worldObj.getBlock(xCoord + 1, yCoord + offset, zCoord) == ModBlocks.reactor_control && - worldObj.getBlock(xCoord - 1, yCoord + offset, zCoord) == ModBlocks.reactor_control && - worldObj.getBlock(xCoord, yCoord + offset, zCoord + 1) == ModBlocks.reactor_control && - worldObj.getBlock(xCoord, yCoord + offset, zCoord - 1) == ModBlocks.reactor_control && - worldObj.getBlock(xCoord, yCoord + offset, zCoord) == ModBlocks.reactor_conductor; - } - - private float checkHull() { - - float max = getSize() * 12; - float count = 0; - - for(int y = yCoord - depth; y <= yCoord + height; y++) { - - if(blocksRad(xCoord - 1, y, zCoord + 2)) - count++; - if(blocksRad(xCoord, y, zCoord + 2)) - count++; - if(blocksRad(xCoord + 1, y, zCoord + 2)) - count++; - - if(blocksRad(xCoord - 1, y, zCoord - 2)) - count++; - if(blocksRad(xCoord, y, zCoord - 2)) - count++; - if(blocksRad(xCoord + 1, y, zCoord - 2)) - count++; - - if(blocksRad(xCoord + 2, y, zCoord - 1)) - count++; - if(blocksRad(xCoord + 2, y, zCoord)) - count++; - if(blocksRad(xCoord + 2, y, zCoord + 1)) - count++; - - if(blocksRad(xCoord - 2, y, zCoord - 1)) - count++; - if(blocksRad(xCoord - 2, y, zCoord)) - count++; - if(blocksRad(xCoord - 2, y, zCoord + 1)) - count++; - } - - if(count == 0) - return 1; - - //System.out.println(count + "/" + max); - - return 1 - (count / max); - } - - private boolean blocksRad(int x, int y, int z) { - - Block b = worldObj.getBlock(x, y, z); - - if(b == ModBlocks.block_lead || b == ModBlocks.block_desh || b == ModBlocks.brick_concrete) - return true; - - if(b.getExplosionResistance(null) >= 100) - return true; - - return false; - } - - int height; - int depth; - public int size; - - private void caluclateSize() { - - height = 0; - depth = 0; - - for(int i = 0; i < 7; i++) { - - if(checkSegment(i + 1)) - height++; - else - break; - } - - for(int i = 0; i < 7; i++) { - - if(checkSegment(-i - 1)) - depth++; - else - break; - } - - size = height + depth + 1; - } - - private int getSize() { - return size; - } - - private void generate() { - - int consumption = (int) (((double)maxFuel / cycleDuration) * rods / 100); - - if(consumption > fuel) - consumption = fuel; - - if(consumption + waste > maxWaste) - consumption = maxWaste - waste; - - fuel -= consumption; - waste += consumption; - - int heat = (int) (((double)consumption / size) * type.heat / fuelMult); - - this.coreHeat += heat; - - } - - @Override - public void updateEntity() { - - if (!worldObj.isRemote && checkBody()) { - - age++; - if (age >= 20) { - age = 0; - } - - fillFluidInit(tanks[2].getTankType()); - - caluclateSize(); - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, size, 3), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - } - - tanks[0].changeTankSize(waterBase * getSize()); - tanks[1].changeTankSize(coolantBase * getSize()); - tanks[2].changeTankSize(steamBase * getSize()); - - maxWaste = maxFuel = fuelBase * getSize(); - - if(!worldObj.isRemote) { - - if(waste > maxWaste) - waste = maxWaste; - - if(fuel > maxFuel) - fuel = maxFuel; - - tanks[0].loadTank(0, 1, slots); - tanks[1].loadTank(2, 3, slots); - - //Change fuel type if empty - if(fuel == 0) { - - if(slots[4] != null && !getFuelType(slots[4].getItem()).toString().equals(ReactorFuelType.UNKNOWN.toString())) { - - this.type = getFuelType(slots[4].getItem()); - this.waste = 0; - - } - } - - //Meteorite sword - if(slots[4] != null && coreHeat > 0 && slots[4].getItem() == ModItems.meteorite_sword_bred) - slots[4] = new ItemStack(ModItems.meteorite_sword_irradiated); - - //Load fuel - if(slots[4] != null && getFuelContent(slots[4], type) > 0) { - - int cont = getFuelContent(slots[4], type) * fuelMult; - - if(fuel + cont <= maxFuel) { - - if(!slots[4].getItem().hasContainerItem()) { - - slots[4].stackSize--; - fuel += cont; - - } else if(slots[5] == null) { - - slots[5] = new ItemStack(slots[4].getItem().getContainerItem()); - slots[4].stackSize--; - fuel += cont; - - } else if(slots[4].getItem().getContainerItem() == slots[5].getItem() && slots[5].stackSize < slots[5].getMaxStackSize()) { - - slots[4].stackSize--; - slots[5].stackSize++; - fuel += cont; - - } - - if(slots[4].stackSize == 0) - slots[4] = null; - } - } - - //Unload waste - if(slots[6] != null && getWasteAbsorbed(slots[6].getItem(), type) > 0) { - - int absorbed = getWasteAbsorbed(slots[6].getItem(), type) * fuelMult; - - if(absorbed <= waste) { - - if(slots[7] == null) { - - waste -= absorbed; - slots[7] = new ItemStack(getWaste(slots[6].getItem(), type)); - slots[6].stackSize--; - - } else if(slots[7] != null && slots[7].getItem() == getWaste(slots[6].getItem(), type) && slots[7].stackSize < slots[7].getMaxStackSize()) { - - waste -= absorbed; - slots[7].stackSize++; - slots[6].stackSize--; - } - - if(slots[6].stackSize == 0) - slots[6] = null; - } - - } - - if(rods > 0) - generate(); - - if (this.coreHeat > 0 && this.tanks[1].getFill() > 0 && this.hullHeat < this.maxHullHeat) { - this.hullHeat += this.coreHeat * 0.175; - this.coreHeat -= this.coreHeat * 0.1; - - this.tanks[1].setFill(this.tanks[1].getFill() - 10); - - if (this.tanks[1].getFill() < 0) - this.tanks[1].setFill(0); - } - - if (this.hullHeat > maxHullHeat) { - this.hullHeat = maxHullHeat; - } - - if (this.hullHeat > 0 && this.tanks[0].getFill() > 0) { - generateSteam(); - this.hullHeat -= this.hullHeat * 0.085; - } - - if (this.coreHeat > maxCoreHeat) { - this.explode(); - } - - if (rods > 0 && coreHeat > 0 && age == 5) { - - float rad = (float)coreHeat / (float)maxCoreHeat * 50F; - rad *= checkHull(); - ChunkRadiationManager.proxy.incrementRad(worldObj, xCoord, yCoord, zCoord, rad); - } - - for (int i = 0; i < 3; i++) - tanks[i].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); - - if(worldObj.getBlock(xCoord, yCoord, zCoord - 2) == ModBlocks.reactor_ejector && worldObj.getBlockMetadata(xCoord, yCoord, zCoord - 2) == 2) - tryEjectInto(xCoord, yCoord, zCoord - 3); - if(worldObj.getBlock(xCoord, yCoord, zCoord + 2) == ModBlocks.reactor_ejector && worldObj.getBlockMetadata(xCoord, yCoord, zCoord + 2) == 3) - tryEjectInto(xCoord, yCoord, zCoord + 3); - if(worldObj.getBlock(xCoord - 2, yCoord, zCoord) == ModBlocks.reactor_ejector && worldObj.getBlockMetadata(xCoord - 2, yCoord, zCoord) == 4) - tryEjectInto(xCoord - 3, yCoord, zCoord); - if(worldObj.getBlock(xCoord + 2, yCoord, zCoord) == ModBlocks.reactor_ejector && worldObj.getBlockMetadata(xCoord + 2, yCoord, zCoord) == 5) - tryEjectInto(xCoord + 3, yCoord, zCoord); - - if(worldObj.getBlock(xCoord, yCoord, zCoord - 2) == ModBlocks.reactor_inserter && worldObj.getBlockMetadata(xCoord, yCoord, zCoord - 2) == 2) - tryInsertFrom(xCoord, yCoord, zCoord - 3); - if(worldObj.getBlock(xCoord, yCoord, zCoord + 2) == ModBlocks.reactor_inserter && worldObj.getBlockMetadata(xCoord, yCoord, zCoord + 2) == 3) - tryInsertFrom(xCoord, yCoord, zCoord + 3); - if(worldObj.getBlock(xCoord - 2, yCoord, zCoord) == ModBlocks.reactor_inserter && worldObj.getBlockMetadata(xCoord - 2, yCoord, zCoord) == 4) - tryInsertFrom(xCoord - 3, yCoord, zCoord); - if(worldObj.getBlock(xCoord + 2, yCoord, zCoord) == ModBlocks.reactor_inserter && worldObj.getBlockMetadata(xCoord + 2, yCoord, zCoord) == 5) - tryInsertFrom(xCoord + 3, yCoord, zCoord); - - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, rods, 0), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, coreHeat, 1), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, hullHeat, 2), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, fuel, 4), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, waste, 5), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, type.getID(), 6), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - } - } - - private void tryEjectInto(int x, int y, int z) { - - int wSize = type.toString().equals(ReactorFuelType.SCHRABIDIUM.toString()) ? 60 * fuelMult : 6 * fuelMult; - - if(waste < wSize) - return; - - TileEntity te = worldObj.getTileEntity(x, y, z); - - if(te instanceof IInventory) { - - IInventory chest = (IInventory)te; - - Item waste = ModItems.waste_uranium; - - switch(type) { - case PLUTONIUM: - waste = ModItems.waste_plutonium; - break; - case MOX: - waste = ModItems.waste_mox; - break; - case SCHRABIDIUM: - waste = ModItems.waste_schrabidium; - break; - case THORIUM: - waste = ModItems.waste_thorium; - break; - default: - waste = ModItems.waste_uranium; - break; - } - - for(int i = 0; i < chest.getSizeInventory(); i++) { - - if(chest.isItemValidForSlot(i, new ItemStack(waste, 1, 1)) && chest.getStackInSlot(i) != null && chest.getStackInSlot(i).getItem() == waste && chest.getStackInSlot(i).stackSize < chest.getStackInSlot(i).getMaxStackSize()) { - chest.setInventorySlotContents(i, new ItemStack(waste, chest.getStackInSlot(i).stackSize + 1, 1)); - this.waste -= wSize; - return; - } - } - - for(int i = 0; i < chest.getSizeInventory(); i++) { - - if(chest.isItemValidForSlot(i, new ItemStack(waste, 1, 1)) && chest.getStackInSlot(i) == null) { - chest.setInventorySlotContents(i, new ItemStack(waste, 1, 1)); - this.waste -= wSize; - return; - } - } - } - } - - private void tryInsertFrom(int x, int y, int z) { - - TileEntity te = worldObj.getTileEntity(x, y, z); - - if(te instanceof IInventory) { - - IInventory chest = (IInventory)te; - - if(fuel > 0) { - for(int i = 0; i < chest.getSizeInventory(); i++) { - - if(chest.getStackInSlot(i) != null) { - int cont = getFuelContent(chest.getStackInSlot(i), type) * fuelMult; - - if(cont > 0 && fuel + cont <= maxFuel) { - - Item container = chest.getStackInSlot(i).getItem().getContainerItem(); - - chest.decrStackSize(i, 1); - fuel += cont; - - if(chest.getStackInSlot(i) == null && container != null) - chest.setInventorySlotContents(i, new ItemStack(container)); - } - } - } - } else { - for(int i = 0; i < chest.getSizeInventory(); i++) { - - if(chest.getStackInSlot(i) != null) { - int cont = getFuelContent(chest.getStackInSlot(i), getFuelType(chest.getStackInSlot(i).getItem())) * fuelMult; - - if(cont > 0 && fuel + cont <= maxFuel) { - - Item container = chest.getStackInSlot(i).getItem().getContainerItem(); - - type = getFuelType(chest.getStackInSlot(i).getItem()); - chest.decrStackSize(i, 1); - fuel += cont; - - if(chest.getStackInSlot(i) == null && container != null) - chest.setInventorySlotContents(i, new ItemStack(container)); - } - } - } - } - } - } - - private void generateSteam() { - - //function of SHS produced per tick - //maxes out at heat% * tank capacity / 20 - - double statSteMaFiFiLe = 8000; - - double steam = (((double)hullHeat / (double)maxHullHeat) * (/*(double)tanks[2].getMaxFill()*/statSteMaFiFiLe / 50D)) * size; - - double water = steam; - - FluidType type = tanks[2].getTankType(); - if(type == Fluids.STEAM) water /= 100D; - if(type == Fluids.HOTSTEAM) water /= 10; - - tanks[0].setFill(tanks[0].getFill() - (int)Math.ceil(water)); - tanks[2].setFill(tanks[2].getFill() + (int)Math.floor(steam)); - - if(tanks[0].getFill() < 0) - tanks[0].setFill(0); - - if(tanks[2].getFill() > tanks[2].getMaxFill()) - tanks[2].setFill(tanks[2].getMaxFill()); - - } - - private void explode() { - for (int i = 0; i < slots.length; i++) { - this.slots[i] = null; - } - - int rad = (int)(((long)fuel) * 25000L / (fuelBase * 15L)); - - ChunkRadiationManager.proxy.incrementRad(worldObj, xCoord, yCoord, zCoord, rad); - - worldObj.createExplosion(null, this.xCoord, this.yCoord, this.zCoord, 7.5F, true); - ExplosionNukeGeneric.waste(worldObj, this.xCoord, this.yCoord, this.zCoord, 35); - - for(int i = yCoord - depth; i <= yCoord + height; i++) { - - if(worldObj.rand.nextInt(2) == 0) { - randomizeRadBlock(this.xCoord + 1, i, this.zCoord + 1); - } - if(worldObj.rand.nextInt(2) == 0) { - randomizeRadBlock(this.xCoord + 1, i, this.zCoord - 1); - } - if(worldObj.rand.nextInt(2) == 0) { - randomizeRadBlock(this.xCoord - 1, i, this.zCoord - 1); - } - if(worldObj.rand.nextInt(2) == 0) { - randomizeRadBlock(this.xCoord - 1, i, this.zCoord + 1); - } - - if(worldObj.rand.nextInt(5) == 0) { - worldObj.createExplosion(null, this.xCoord, this.yCoord, this.zCoord, 5.0F, true); - } - } - - worldObj.setBlock(this.xCoord, this.yCoord, this.zCoord, ModBlocks.sellafield, 5, 3); - - if(MobConfig.enableElementals) { - List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).expand(100, 100, 100)); - - for(EntityPlayer player : players) { - player.getEntityData().getCompoundTag(player.PERSISTED_NBT_TAG).setBoolean("radMark", true); - } - } - } - - private void randomizeRadBlock(int x, int y, int z) { - - int rand = worldObj.rand.nextInt(20); - - if(rand < 7) - worldObj.setBlock(x, y, z, ModBlocks.toxic_block); - else if(rand < 10) - worldObj.setBlock(x, y, z, ModBlocks.sellafield, 0, 3); - else if(rand < 14) - worldObj.setBlock(x, y, z, ModBlocks.sellafield, 1, 3); - else if(rand < 17) - worldObj.setBlock(x, y, z, ModBlocks.sellafield, 2, 3); - else if(rand < 19) - worldObj.setBlock(x, y, z, ModBlocks.sellafield, 3, 3); - else - worldObj.setBlock(x, y, z, ModBlocks.sellafield, 4, 3); - } - - @Override - public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { - Library.transmitFluid(x, y, z, newTact, this, worldObj, type); - } - - @Override - public void fillFluidInit(FluidType type) { - - for(ForgeDirection dir : new ForgeDirection[] {Library.POS_X, Library.NEG_X, Library.POS_Z, Library.NEG_Z}) { - - if(worldObj.getBlock(xCoord + dir.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2) == ModBlocks.reactor_hatch) { - fillFluid(this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3, getTact(), type); - for(int i = 0; i < 2; i++) this.trySubscribe(tanks[i].getTankType(), worldObj, this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3, Library.NEG_X); - this.sendFluid(tanks[2], worldObj, this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3, Library.NEG_X); - } else { - for(int i = 0; i < 2; i++) this.tryUnsubscribe(tanks[i].getTankType(), worldObj, this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3); - } - } - - fillFluid(this.xCoord, this.yCoord + height + 1, this.zCoord, getTact(), type); - fillFluid(this.xCoord, this.yCoord - depth - 1, this.zCoord, getTact(), type); - - this.sendFluid(tanks[2], worldObj, this.xCoord, this.yCoord + height + 1, this.zCoord, Library.POS_Y); - this.sendFluid(tanks[2], worldObj, this.xCoord, this.yCoord - depth - 1, this.zCoord, Library.NEG_Y); - } - - @Override - public boolean getTact() { - return this.worldObj.getTotalWorldTime() % 2 == 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - if (type.name().equals(tanks[0].getTankType().name())) - return tanks[0].getMaxFill(); - else if (type.name().equals(tanks[1].getTankType().name())) - return tanks[1].getMaxFill(); - else - return 0; - } - - @Override - public void setFluidFill(int i, FluidType type) { - if (type.name().equals(tanks[0].getTankType().name())) - tanks[0].setFill(i); - else if (type.name().equals(tanks[1].getTankType().name())) - tanks[1].setFill(i); - else if (type.name().equals(tanks[2].getTankType().name())) - tanks[2].setFill(i); - } - - @Override - public int getFluidFill(FluidType type) { - if (type.name().equals(tanks[0].getTankType().name())) - return tanks[0].getFill(); - else if (type.name().equals(tanks[1].getTankType().name())) - return tanks[1].getFill(); - else if (type.name().equals(tanks[2].getTankType().name())) - return tanks[2].getFill(); - else - return 0; - } - - @Override - public void setFillForSync(int fill, int index) { - if (index < 3 && tanks[index] != null) - tanks[index].setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { - if (index < 3 && tanks[index] != null) - tanks[index].setTankType(type); - } - - @Override - public List getFluidList(FluidType type) { - return list; - } - - @Override - public void clearFluidList(FluidType type) { - list.clear(); - } - - public enum ReactorFuelType { - - URANIUM(250000), - THORIUM(200000), - PLUTONIUM(312500), - MOX(250000), - SCHRABIDIUM(2085000), - UNKNOWN(1); - - private ReactorFuelType(int i) { - heat = i; - } - - //Heat per nugget burned - private int heat; - - public int getHeat() { - return heat; - } - - public int getID() { - return Arrays.asList(ReactorFuelType.values()).indexOf(this); - } - - public static ReactorFuelType getEnum(int i) { - if(i < ReactorFuelType.values().length) - return ReactorFuelType.values()[i]; - else - return ReactorFuelType.URANIUM; - } - } - - static class ReactorFuelEntry { - - int value; - ReactorFuelType type; - Item item; - - public ReactorFuelEntry(int value, ReactorFuelType type, Item item) { - this.value = value; - this.type = type; - this.item = item; - } - } - - static class ReactorWasteEntry { - - int value; - ReactorFuelType type; - Item in; - Item out; - - public ReactorWasteEntry(int value, ReactorFuelType type, Item in, Item out) { - this.value = value; - this.type = type; - this.in = in; - this.out = out; - } - } - - //TODO: turn this steaming hot garbage into hashmaps - static List fuels = new ArrayList(); - static List wastes = new ArrayList(); - - public static void registerAll() { - - TileEntityMachineReactorLarge.registerFuelEntry(1, ReactorFuelType.URANIUM, ModItems.nugget_uranium_fuel); - TileEntityMachineReactorLarge.registerFuelEntry(9, ReactorFuelType.URANIUM, ModItems.ingot_uranium_fuel); - - TileEntityMachineReactorLarge.registerFuelEntry(1, ReactorFuelType.PLUTONIUM, ModItems.nugget_plutonium_fuel); - TileEntityMachineReactorLarge.registerFuelEntry(9, ReactorFuelType.PLUTONIUM, ModItems.ingot_plutonium_fuel); - - TileEntityMachineReactorLarge.registerFuelEntry(1, ReactorFuelType.MOX, ModItems.nugget_mox_fuel); - TileEntityMachineReactorLarge.registerFuelEntry(9, ReactorFuelType.MOX, ModItems.ingot_mox_fuel); - - TileEntityMachineReactorLarge.registerFuelEntry(10, ReactorFuelType.SCHRABIDIUM, ModItems.nugget_schrabidium_fuel); - TileEntityMachineReactorLarge.registerFuelEntry(90, ReactorFuelType.SCHRABIDIUM, ModItems.ingot_schrabidium_fuel); - - TileEntityMachineReactorLarge.registerFuelEntry(1, ReactorFuelType.THORIUM, ModItems.nugget_thorium_fuel); - TileEntityMachineReactorLarge.registerFuelEntry(9, ReactorFuelType.THORIUM, ModItems.ingot_thorium_fuel); - } - - public static void registerFuelEntry(int nuggets, ReactorFuelType type, Item fuel) { - - fuels.add(new ReactorFuelEntry(nuggets, type, fuel)); - } - - public static void registerWasteEntry(int nuggets, ReactorFuelType type, Item in, Item out) { - - wastes.add(new ReactorWasteEntry(nuggets, type, in, out)); - } - - public static int getFuelContent(ItemStack item, ReactorFuelType type) { - - if(item == null) - return 0; - - for(ReactorFuelEntry ent : fuels) { - if(ent.item == item.getItem() && type.toString().equals(ent.type.toString())) { - - int value = ent.value; - - //if it's a fuel rod that has been used up, multiply by damage and floor it - if(item.getItem() instanceof ItemFuelRod) { - - double mult = 1D - ((double)ItemFuelRod.getLifeTime(item) / (double)((ItemFuelRod)item.getItem()).lifeTime); - return (int)Math.floor(mult * value); - } - - return value; - } - } - - return 0; - } - - public static ReactorFuelType getFuelType(Item item) { - - for(ReactorFuelEntry ent : fuels) { - if(ent.item == item) - return ent.type; - } - - return ReactorFuelType.UNKNOWN; - } - - public static Item getWaste(Item item, ReactorFuelType type) { - - for(ReactorWasteEntry ent : wastes) { - if(ent.in == item && type.toString().equals(ent.type.toString())) - return ent.out; - } - - return null; - } - - public static int getWasteAbsorbed(Item item, ReactorFuelType type) { - - for(ReactorWasteEntry ent : wastes) { - if(ent.in == item && type.toString().equals(ent.type.toString())) - return ent.value; - } - - return 0; - } - - @Override - public FluidTank[] getAllTanks() { - return tanks; - } - - @Override - public FluidTank[] getSendingTanks() { - return new FluidTank[] {tanks[2]}; - } - - @Override - public FluidTank[] getReceivingTanks() { - return new FluidTank[] {tanks[0], tanks[1]}; - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerReactorMultiblock(player.inventory, this); - } - - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIReactorMultiblock(player.inventory, this); - } -} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java index ab91d87c3..0a41526db 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java @@ -30,18 +30,14 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui public HashSet secondary = new HashSet(); public TileEntitySolarBoiler() { - water = new FluidTank(Fluids.WATER, 16000, 0); - steam = new FluidTank(Fluids.STEAM, 1600000, 1); + water = new FluidTank(Fluids.WATER, 100, 0); + steam = new FluidTank(Fluids.STEAM, 10_000, 1); } @Override public void updateEntity() { if(!worldObj.isRemote) { - - //if(worldObj.getTotalWorldTime() % 5 == 0) { - fillFluidInit(Fluids.STEAM); - //} this.trySubscribe(water.getTankType(), worldObj, xCoord, yCoord + 3, zCoord, Library.POS_Y); this.trySubscribe(water.getTankType(), worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityStructureMarker.java b/src/main/java/com/hbm/tileentity/machine/TileEntityStructureMarker.java deleted file mode 100644 index e6551423b..000000000 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityStructureMarker.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.hbm.tileentity.machine; - -import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEStructurePacket; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; - -public class TileEntityStructureMarker extends TileEntity { - - //0: Nuclear Reactor - //1: Watz Power Plant - //2: Fusionary Watz Plant - public int type = 0; - - @Override - public void updateEntity() { - - 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)); - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - type = nbt.getInteger("type"); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - nbt.setInteger("type", type); - } - -} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java index a1f6d8b65..32ec41b3e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java @@ -169,7 +169,7 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand public void updateCoolant(FluidTank[] tanks) { - double coolingFactor = 0.1D; //10% per tick, TEMP + double coolingFactor = 0.2D; //20% per tick double heatToUse = this.heat * coolingFactor; FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java deleted file mode 100644 index ad410410b..000000000 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java +++ /dev/null @@ -1,787 +0,0 @@ -package com.hbm.tileentity.machine; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import com.hbm.blocks.ModBlocks; -import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityCloudFleija; -import com.hbm.entity.logic.EntityNukeExplosionMK3; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidContainer; -import com.hbm.interfaces.IFluidSource; -import com.hbm.interfaces.IReactor; -import com.hbm.inventory.container.ContainerWatzCore; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.inventory.gui.GUIWatzCore; -import com.hbm.items.ModItems; -import com.hbm.items.special.WatzFuel; -import com.hbm.items.tool.ItemTitaniumFilter; -import com.hbm.lib.Library; -import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxElectricityPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityLoadedBase; - -import api.hbm.energy.IEnergyGenerator; -import api.hbm.fluid.IFluidStandardSender; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -@Deprecated -public class TileEntityWatzCore extends TileEntityLoadedBase implements ISidedInventory, IReactor, IEnergyGenerator, IFluidContainer, IFluidSource, IFluidStandardSender, IGUIProvider { - - public long power; - public final static long maxPower = 100000000; - public int heat; - - public int heatMultiplier; - public int powerMultiplier; - public int decayMultiplier; - - public int heatList; - public int wasteList; - public int powerList; - - Random rand = new Random(); - - private ItemStack slots[]; - public int age = 0; - public List list1 = new ArrayList(); - public FluidTank tank; - - private String customName; - - public TileEntityWatzCore() { - slots = new ItemStack[40]; - tank = new FluidTank(Fluids.WATZ, 64000, 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.watzPowerplant"; - } - - @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"); - tank.readFromNBT(nbt, "watz"); - - 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); - tank.writeToNBT(nbt, "watz"); - - 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) { - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 3, this.yCoord + i, this.zCoord - 1) != ModBlocks.reinforced_brick) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 3, this.yCoord + i, this.zCoord + 1) != ModBlocks.reinforced_brick) - return false; - } - - - - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 2, this.yCoord + i, this.zCoord - 2) != ModBlocks.reinforced_brick) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 2, this.yCoord + i, this.zCoord - 1) != ModBlocks.watz_element) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 2, this.yCoord + i, this.zCoord) != ModBlocks.watz_control) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 2, this.yCoord + i, this.zCoord + 1) != ModBlocks.watz_element) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 2, this.yCoord + i, this.zCoord + 2) != ModBlocks.reinforced_brick) - return false; - } - - - - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 1, this.yCoord + i, this.zCoord - 3) != ModBlocks.reinforced_brick) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 1, this.yCoord + i, this.zCoord - 2) != ModBlocks.watz_element) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 1, this.yCoord + i, this.zCoord - 1) != ModBlocks.watz_control) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 1, this.yCoord + i, this.zCoord) != ModBlocks.watz_cooler) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 1, this.yCoord + i, this.zCoord + 1) != ModBlocks.watz_control) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 1, this.yCoord + i, this.zCoord + 2) != ModBlocks.watz_element) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 1, this.yCoord + i, this.zCoord + 3) != ModBlocks.reinforced_brick) - return false; - } - - - - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 0, this.yCoord + i, this.zCoord - 2) != ModBlocks.watz_control) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 0, this.yCoord + i, this.zCoord - 1) != ModBlocks.watz_cooler) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 0, this.yCoord + i, this.zCoord + 1) != ModBlocks.watz_cooler) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 0, this.yCoord + i, this.zCoord + 2) != ModBlocks.watz_control) - return false; - } - - - - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 1, this.yCoord + i, this.zCoord - 3) != ModBlocks.reinforced_brick) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 1, this.yCoord + i, this.zCoord - 2) != ModBlocks.watz_element) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 1, this.yCoord + i, this.zCoord - 1) != ModBlocks.watz_control) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 1, this.yCoord + i, this.zCoord) != ModBlocks.watz_cooler) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 1, this.yCoord + i, this.zCoord + 1) != ModBlocks.watz_control) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 1, this.yCoord + i, this.zCoord + 2) != ModBlocks.watz_element) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 1, this.yCoord + i, this.zCoord + 3) != ModBlocks.reinforced_brick) - return false; - } - - - - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 2, this.yCoord + i, this.zCoord - 2) != ModBlocks.reinforced_brick) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 2, this.yCoord + i, this.zCoord - 1) != ModBlocks.watz_element) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 2, this.yCoord + i, this.zCoord) != ModBlocks.watz_control) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 2, this.yCoord + i, this.zCoord + 1) != ModBlocks.watz_element) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 2, this.yCoord + i, this.zCoord + 2) != ModBlocks.reinforced_brick) - return false; - } - - - - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 3, this.yCoord + i, this.zCoord - 1) != ModBlocks.reinforced_brick) - return false; - } - for(int i = -5; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 3, this.yCoord + i, this.zCoord + 1) != ModBlocks.reinforced_brick) - return false; - } - - - - for(int i = -5; i <= -1; i++) - { - if(world.getBlock(this.xCoord, this.yCoord + i, this.zCoord) != ModBlocks.watz_conductor) - return false; - } - for(int i = 1; i <= 5; i++) - { - if(world.getBlock(this.xCoord, this.yCoord + i, this.zCoord) != ModBlocks.watz_conductor) - return false; - } - - for(int i = -5; i <= -1; i++) - { - if(world.getBlock(this.xCoord + 3, this.yCoord + i, this.zCoord) != ModBlocks.reinforced_brick) - return false; - } - for(int i = 1; i <= 5; i++) - { - if(world.getBlock(this.xCoord + 3, this.yCoord + i, this.zCoord) != ModBlocks.reinforced_brick) - return false; - } - - for(int i = -5; i <= -1; i++) - { - if(world.getBlock(this.xCoord - 3, this.yCoord + i, this.zCoord) != ModBlocks.reinforced_brick) - return false; - } - for(int i = 1; i <= 5; i++) - { - if(world.getBlock(this.xCoord - 3, this.yCoord + i, this.zCoord) != ModBlocks.reinforced_brick) - return false; - } - - for(int i = -5; i <= -1; i++) - { - if(world.getBlock(this.xCoord, this.yCoord + i, this.zCoord + 3) != ModBlocks.reinforced_brick) - return false; - } - for(int i = 1; i <= 5; i++) - { - if(world.getBlock(this.xCoord, this.yCoord + i, this.zCoord + 3) != ModBlocks.reinforced_brick) - return false; - } - - for(int i = -5; i <= -1; i++) - { - if(world.getBlock(this.xCoord, this.yCoord + i, this.zCoord - 3) != ModBlocks.reinforced_brick) - return false; - } - for(int i = 1; i <= 5; i++) - { - if(world.getBlock(this.xCoord, this.yCoord + i, this.zCoord - 3) != ModBlocks.reinforced_brick) - return false; - } - - if(world.getBlock(this.xCoord + 3, this.yCoord, this.zCoord) != ModBlocks.watz_hatch) - return false; - - if(world.getBlock(this.xCoord - 3, this.yCoord, this.zCoord) != ModBlocks.watz_hatch) - return false; - - if(world.getBlock(this.xCoord, this.yCoord, this.zCoord + 3) != ModBlocks.watz_hatch) - return false; - - if(world.getBlock(this.xCoord, this.yCoord, this.zCoord - 3) != ModBlocks.watz_hatch) - return false; - - for(int i = -3; i <= 3; i++) - { - for(int j = -3; j <= 3; j++) - { - if(world.getBlock(this.xCoord + i, this.yCoord + 6, this.zCoord + j) != ModBlocks.watz_end && world.getBlock(this.xCoord + i, this.yCoord + 6, this.zCoord + j) != ModBlocks.watz_conductor) - return false; - } - } - for(int i = -3; i <= 3; i++) - { - for(int j = -3; j <= 3; j++) - { - if(world.getBlock(this.xCoord + i, this.yCoord - 6, this.zCoord + j) != ModBlocks.watz_end && world.getBlock(this.xCoord + i, this.yCoord - 6, this.zCoord + j) != ModBlocks.watz_conductor) - return false; - } - } - - return true; - } - - @Override - public boolean isCoatingValid(World world) { - { - return true; - } - - //return false; - } - - @Override - public boolean hasFuse() { - return slots[38] != null && slots[38].getItem() == ModItems.titanium_filter && ItemTitaniumFilter.getDura(slots[38]) > 0; - } - - @Override - public int getWaterScaled(int i) { - return 0; - } - - @Override - public long getPowerScaled(long i) { - return (power/100 * i) / (maxPower/100); - } - - @Override - public int getCoolantScaled(int i) { - return 0; - } - - @Override - public int getHeatScaled(int i) { - return 0; - } - - @Override - public void updateEntity() { - - if(this.isStructureValid(this.worldObj)) { - - powerMultiplier = 100; - heatMultiplier = 100; - decayMultiplier = 100; - powerList = 0; - heatList = 0; - heat = 0; - - if (hasFuse()) { - - //Adds power and heat - for (int i = 0; i < 36; i++) { - surveyPellet(slots[i]); - } - //Calculates modifiers - for (int i = 0; i < 36; i++) { - surveyPelletAgain(slots[i]); - } - //Decays pellet by (DECAYMULTIPLIER * DEFAULTDECAY=100)/100 ticks - for (int i = 0; i < 36; i++) { - decayPellet(i); - } - } - - if(!worldObj.isRemote) { - - age++; - if (age >= 20) { - age = 0; - } - - this.sendPower(worldObj, xCoord, yCoord + 7, zCoord, ForgeDirection.UP); - this.sendPower(worldObj, xCoord, yCoord - 7, zCoord, ForgeDirection.DOWN); - - this.sendFluid(tank, worldObj, xCoord + 4, yCoord, zCoord, Library.POS_X); - this.sendFluid(tank, worldObj, xCoord, yCoord, zCoord + 4, Library.POS_Z); - this.sendFluid(tank, worldObj, xCoord - 4, yCoord, zCoord, Library.NEG_X); - this.sendFluid(tank, worldObj, xCoord, yCoord, zCoord - 4, Library.NEG_Z); - - if (age == 9 || age == 19) { - fillFluidInit(tank.getTankType()); - } - - //Only damages filter when heat is present (thus waste being created) - if (heatList > 0) { - ItemTitaniumFilter.setDura(slots[38], ItemTitaniumFilter.getDura(slots[38]) - 1); - } - - heatList *= heatMultiplier; - heatList /= 100; - heat = heatList; - - powerList *= powerMultiplier; - powerList /= 100; - power += powerList; - - tank.setFill(tank.getFill() + ((decayMultiplier * heat) / 100) / 100); - - if(power > maxPower) - power = maxPower; - - //Gets rid of 1/4 of the total waste, if at least one access hatch is not occupied - if(tank.getFill() > tank.getMaxFill()) - emptyWaste(); - - power = Library.chargeItemsFromTE(slots, 37, power, maxPower); - - tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); - tank.unloadTank(36, 39, slots); - - PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - } - } - } - - public void surveyPellet(ItemStack stack) { - if(stack != null && stack.getItem() instanceof WatzFuel) - { - WatzFuel fuel = (WatzFuel)stack.getItem(); - this.powerList += fuel.power; - this.heatList += fuel.heat; - } - } - - public void surveyPelletAgain(ItemStack stack) { - if(stack != null && stack.getItem() instanceof WatzFuel) - { - WatzFuel fuel = (WatzFuel)stack.getItem(); - this.powerMultiplier *= fuel.powerMultiplier; - this.heatMultiplier *= fuel.heatMultiplier; - this.decayMultiplier *= fuel.decayMultiplier; - } - } - - public void decayPellet(int i) { - if(slots[i] != null && slots[i].getItem() instanceof WatzFuel) - { - WatzFuel fuel = (WatzFuel)slots[i].getItem(); - WatzFuel.setLifeTime(slots[i], WatzFuel.getLifeTime(slots[i]) + this.decayMultiplier); - WatzFuel.updateDamage(slots[i]); - if(WatzFuel.getLifeTime(slots[i]) >= fuel.lifeTime) - { - if(slots[i].getItem() == ModItems.pellet_lead) - slots[i] = new ItemStack(ModItems.powder_lead); - else - slots[i] = new ItemStack(ModItems.pellet_lead); - } - } - } - - public void emptyWaste() { - tank.setFill(tank.getFill() / 4); - tank.setFill(tank.getFill() * 3); - if (!worldObj.isRemote) { - if (this.worldObj.getBlock(this.xCoord + 4, this.yCoord, this.zCoord) == Blocks.air) - { - this.worldObj.setBlock(this.xCoord + 4, this.yCoord, this.zCoord, ModBlocks.mud_block); - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "game.neutral.swim.splash", 3.0F, 0.5F); - } - else if (this.worldObj.getBlock(this.xCoord - 4, this.yCoord, this.zCoord) == Blocks.air) - { - this.worldObj.setBlock(this.xCoord - 4, this.yCoord, this.zCoord, ModBlocks.mud_block); - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "game.neutral.swim.splash", 3.0F, 0.5F); - } - else if (this.worldObj.getBlock(this.xCoord, this.yCoord, this.zCoord + 4) == Blocks.air) - { - this.worldObj.setBlock(this.xCoord, this.yCoord, this.zCoord + 4, ModBlocks.mud_block); - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "game.neutral.swim.splash", 3.0F, 0.5F); - } - else if (this.worldObj.getBlock(this.xCoord, this.yCoord, this.zCoord - 4) == Blocks.air) - { - this.worldObj.setBlock(this.xCoord, this.yCoord, this.zCoord - 4, ModBlocks.mud_block); - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "game.neutral.swim.splash", 3.0F, 0.5F); - } - else { - List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, - AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).expand(50, 50, 50)); - - for(EntityPlayer player : players) { - player.triggerAchievement(MainRegistry.achWatzBoom); - } - - if (rand.nextInt(10) != 0) { - for (int i = -3; i <= 3; i++) - for (int j = -5; j <= 5; j++) - for (int k = -3; k <= 3; k++) - if (rand.nextInt(2) == 0) - this.worldObj.setBlock(this.xCoord + i, this.yCoord + j, this.zCoord + k, - ModBlocks.mud_block); - this.worldObj.setBlock(this.xCoord, this.yCoord, this.zCoord, ModBlocks.mud_block); - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "game.neutral.swim.splash", 3.0F, 0.5F); - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "random.explode", 3.0F, 0.75F); - } else { - EntityNukeExplosionMK3 ex = EntityNukeExplosionMK3.statFacFleija(worldObj, xCoord, yCoord, zCoord, BombConfig.fleijaRadius); - if(!ex.isDead) { - worldObj.spawnEntityInWorld(ex); - EntityCloudFleija cloud = new EntityCloudFleija(worldObj, BombConfig.fleijaRadius); - cloud.posX = xCoord + 0.5; - cloud.posY = yCoord + 0.5; - cloud.posZ = zCoord + 0.6; - worldObj.spawnEntityInWorld(cloud); - } - } - } - } - } - - @Override - public boolean getTact() { - if(age >= 0 && age < 10) - { - return true; - } - - return false; - } - - @Override - public long getPower() { - return power; - } - - @Override - public void setPower(long i) { - this.power = i; - } - - @Override - public long getMaxPower() { - return this.maxPower; - } - - @Override - public void setFillForSync(int fill, int index) { - tank.setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { - tank.setTankType(type); - } - - @Override - public void fillFluidInit(FluidType type) { - fillFluid(this.xCoord + 4, this.yCoord, this.zCoord, getTact(), type); - fillFluid(this.xCoord - 4, this.yCoord, this.zCoord, getTact(), type); - fillFluid(this.xCoord, this.yCoord, this.zCoord + 4, getTact(), type); - fillFluid(this.xCoord, this.yCoord, this.zCoord - 4, getTact(), type); - - } - - @Override - public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { - Library.transmitFluid(x, y, z, newTact, this, worldObj, type); - } - - @Override - public int getFluidFill(FluidType type) { - return tank.getFill(); - } - - @Override - public void setFluidFill(int i, FluidType type) { - tank.setFill(i); - } - - @Override - public List getFluidList(FluidType type) { - return list1; - } - - @Override - public void clearFluidList(FluidType type) { - list1.clear(); - } - @Override - public FluidTank[] getSendingTanks() { - return new FluidTank[] { tank }; - } - - @Override - public FluidTank[] getAllTanks() { - return new FluidTank[] { tank }; - } - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerWatzCore(player.inventory, this); - } - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIWatzCore(player.inventory, this); - } -} diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index 66ea25fcb..9ce319342 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -87,6 +87,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc public long transferFluid(FluidType type, int pressure, long fluid) { long toTransfer = Math.min(getDemand(type, pressure), fluid); tank.setFill(tank.getFill() + (int) toTransfer); + this.markChanged(); return fluid - toTransfer; } @@ -109,12 +110,6 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc tank.setFill(transmitFluidFairly(worldObj, tank, this, tank.getFill(), this.mode == 0 || this.mode == 1, this.mode == 1 || this.mode == 2, getConPos())); this.sendingBrake = false; - age++; - if(age >= 20) { - age = 0; - this.markChanged(); - } - if((mode == 1 || mode == 2) && (age == 9 || age == 19)) fillFluidInit(tank.getTankType()); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index fa55c200b..53496d00a 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -29,6 +29,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatExternal; import api.hbm.energy.IEnergyUser; +import api.hbm.entity.IRadarDetectableNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -642,6 +643,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple if(targetMachines) { + if(e instanceof IRadarDetectableNT && !((IRadarDetectableNT)e).canBeSeenBy(this)) return false; if(e instanceof EntityMissileBaseNT) return true; if(e instanceof EntityMissileCustom) return true; if(e instanceof EntityMinecart) return true; @@ -653,9 +655,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple if(targetPlayers ) { - if(e instanceof FakePlayer) - return false; - + if(e instanceof FakePlayer) return false; if(e instanceof EntityPlayer) return true; for(Class c : CompatExternal.turretTargetPlayer) if(c.isAssignableFrom(e.getClass())) return true; } diff --git a/src/main/java/com/hbm/util/ArmorUtil.java b/src/main/java/com/hbm/util/ArmorUtil.java index 33272462b..ddf3d89dd 100644 --- a/src/main/java/com/hbm/util/ArmorUtil.java +++ b/src/main/java/com/hbm/util/ArmorUtil.java @@ -63,6 +63,7 @@ public class ArmorUtil { ArmorRegistry.registerHazard(ModItems.euphemium_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.rpa_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.envsuit_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); + ArmorRegistry.registerHazard(ModItems.trenchmaster_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); //Ob ihr wirklich richtig steht, seht ihr wenn das Licht angeht! registerIfExists(Compat.MOD_GT6, "gt.armor.hazmat.universal.head", HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); diff --git a/src/main/java/com/hbm/util/ContaminationUtil.java b/src/main/java/com/hbm/util/ContaminationUtil.java index c09b3ba4a..63689591b 100644 --- a/src/main/java/com/hbm/util/ContaminationUtil.java +++ b/src/main/java/com/hbm/util/ContaminationUtil.java @@ -254,7 +254,7 @@ public class ContaminationUtil { DIGAMMA, //preventable by fau armor or stability DIGAMMA2, //preventable by robes CREATIVE, //preventable by creative mode, for rad calculation armor piece bonuses still apply - RAD_BYPASS, //same as craative but will not apply radiation resistance calculation + RAD_BYPASS, //same as creative but will not apply radiation resistance calculation NONE //not preventable } diff --git a/src/main/java/com/hbm/world/WorldUtil.java b/src/main/java/com/hbm/world/WorldUtil.java index f8667dad7..b06cf9d86 100644 --- a/src/main/java/com/hbm/world/WorldUtil.java +++ b/src/main/java/com/hbm/world/WorldUtil.java @@ -21,6 +21,18 @@ public class WorldUtil { public static void setBiome(World world, int x, int z, BiomeGenBase biome) { Chunk chunk = world.getChunkFromBlockCoords(x, z); chunk.getBiomeArray()[(z & 15) << 4 | (x & 15)] = (byte)(biome.biomeID & 255); + chunk.isModified = true; + } + + public static void syncBiomeChange(World world, int x, int z) { + Chunk chunk = world.getChunkFromBlockCoords(x, z); + PacketDispatcher.wrapper.sendToAllAround(new BiomeSyncPacket(x >> 4, z >> 4, chunk.getBiomeArray()), new TargetPoint(world.provider.dimensionId, x, 128, z, 1024D)); + } + + public static void syncBiomeChangeBlock(World world, int x, int z) { + Chunk chunk = world.getChunkFromBlockCoords(x, z); + byte biome = chunk.getBiomeArray()[(z & 15) << 4 | (x & 15)]; + PacketDispatcher.wrapper.sendToAllAround(new BiomeSyncPacket(x, z, biome), new TargetPoint(world.provider.dimensionId, x, 128, z, 1024D)); } public static void syncBiomeChange(World world, Chunk chunk) { @@ -69,18 +81,16 @@ public class WorldUtil { } } } - - public static void syncBiomeChange(World world, int x, int z) { - Chunk chunk = world.getChunkFromBlockCoords(x, z); - //byte biome = chunk.getBiomeArray()[(z & 15) << 4 | (x & 15)]; - PacketDispatcher.wrapper.sendToAllAround(new BiomeSyncPacket(x, z, chunk.getBiomeArray()), new TargetPoint(world.provider.dimensionId, x, 128, z, 1024D)); - } public static Chunk provideChunk(WorldServer world, int chunkX, int chunkZ) { - ChunkProviderServer provider = world.theChunkProviderServer; - Chunk chunk = (Chunk) provider.loadedChunkHashMap.getValueByKey(ChunkCoordIntPair.chunkXZ2Int(chunkX, chunkZ)); - if(chunk != null) return chunk; - return loadChunk(world, provider, chunkX, chunkZ); + try { + ChunkProviderServer provider = world.theChunkProviderServer; + Chunk chunk = (Chunk) provider.loadedChunkHashMap.getValueByKey(ChunkCoordIntPair.chunkXZ2Int(chunkX, chunkZ)); + if(chunk != null) return chunk; + return loadChunk(world, provider, chunkX, chunkZ); + } catch(Throwable x) { + return null; + } } private static Chunk loadChunk(WorldServer world, ChunkProviderServer provider, int chunkX, int chunkZ) { diff --git a/src/main/java/com/hbm/world/biome/BiomeGenCraterBase.java b/src/main/java/com/hbm/world/biome/BiomeGenCraterBase.java new file mode 100644 index 000000000..467ee78ef --- /dev/null +++ b/src/main/java/com/hbm/world/biome/BiomeGenCraterBase.java @@ -0,0 +1,88 @@ +package com.hbm.world.biome; + +import com.hbm.config.WorldConfig; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraftforge.common.BiomeDictionary; + +import static net.minecraftforge.common.BiomeDictionary.Type.*; + +public class BiomeGenCraterBase extends BiomeGenBase { + + public static final BiomeGenBase craterBiome = new BiomeGenCrater(WorldConfig.craterBiomeId).setDisableRain().setBiomeName("Crater"); + public static final BiomeGenBase craterInnerBiome = new BiomeGenCraterInner(WorldConfig.craterBiomeInnerId).setDisableRain().setBiomeName("Inner Crater"); + public static final BiomeGenBase craterOuterBiome = new BiomeGenCraterOuter(WorldConfig.craterBiomeOuterId).setDisableRain().setBiomeName("Outer Crater"); + + public static void initDictionary() { + BiomeDictionary.registerBiomeType(craterBiome, DRY, DEAD, WASTELAND); + BiomeDictionary.registerBiomeType(craterInnerBiome, DRY, DEAD, WASTELAND); + BiomeDictionary.registerBiomeType(craterOuterBiome, DRY, DEAD, WASTELAND); + } + + public int getWaterColorMultiplier() { + return 0x505020; //0x50d030 + } + + public BiomeGenCraterBase(int id) { + super(id); + this.waterColorMultiplier = 0xE0FFAE; //swamp color + this.spawnableCreatureList.clear(); + this.spawnableWaterCreatureList.clear(); + this.spawnableCaveCreatureList.clear(); + } + + public static class BiomeGenCrater extends BiomeGenCraterBase { + + public BiomeGenCrater(int id) { super(id); } + + @Override @SideOnly(Side.CLIENT) + public int getBiomeGrassColor(int x, int y, int z) { + double noise = plantNoise.func_151601_a((double) x * 0.225D, (double) z * 0.225D); + return noise < -0.1D ? 0x606060 : 0x505050; + } + + @Override @SideOnly(Side.CLIENT) + public int getBiomeFoliageColor(int x, int y, int z) { return 0x6A7039; } + + @Override @SideOnly(Side.CLIENT) + public int getSkyColorByTemp(float temp) { return 0x525A52; } + } + + public static class BiomeGenCraterOuter extends BiomeGenCraterBase { + + public BiomeGenCraterOuter(int id) { super(id); } + + @Override @SideOnly(Side.CLIENT) + public int getBiomeGrassColor(int x, int y, int z) { + double noise = plantNoise.func_151601_a((double) x * 0.225D, (double) z * 0.225D); + return noise < -0.1D ? 0x776F59 : 0x6F6752; + } + + @Override @SideOnly(Side.CLIENT) + public int getBiomeFoliageColor(int x, int y, int z) { return 0x6A7039; } + + @Override @SideOnly(Side.CLIENT) + public int getSkyColorByTemp(float temp) { return 0x6B9189; } + + } + + public static class BiomeGenCraterInner extends BiomeGenCraterBase { + + public BiomeGenCraterInner(int id) { super(id); } + + @Override @SideOnly(Side.CLIENT) + public int getBiomeGrassColor(int x, int y, int z) { + double noise = plantNoise.func_151601_a((double) x * 0.225D, (double) z * 0.225D); + return noise < -0.1D ? 0x404040 : 0x303030; + } + + @Override @SideOnly(Side.CLIENT) + public int getBiomeFoliageColor(int x, int y, int z) { return 0x6A7039; } + + @Override @SideOnly(Side.CLIENT) + public int getSkyColorByTemp(float temp) { return 0x424A42; } + + } +} diff --git a/src/main/java/com/hbm/world/dungeon/Spaceship.java b/src/main/java/com/hbm/world/dungeon/Spaceship.java index c5f4cc5e2..ff8ca297b 100644 --- a/src/main/java/com/hbm/world/dungeon/Spaceship.java +++ b/src/main/java/com/hbm/world/dungeon/Spaceship.java @@ -22,7 +22,7 @@ public class Spaceship extends WorldGenerator Block Block3 = ModBlocks.deco_steel; Block Block4 = ModBlocks.fusion_heater; Block Block5 = ModBlocks.block_meteor; - Block Block6 = ModBlocks.reactor_element; + Block Block6 = ModBlocks.pwr_fuel; Block Block7 = ModBlocks.cable_switch; Block Block8 = ModBlocks.fusion_hatch; Block Block9 = ModBlocks.reinforced_light; diff --git a/src/main/java/com/hbm/world/dungeon/Spaceship2.java b/src/main/java/com/hbm/world/dungeon/Spaceship2.java index 165fd93d8..d94cb01ae 100644 --- a/src/main/java/com/hbm/world/dungeon/Spaceship2.java +++ b/src/main/java/com/hbm/world/dungeon/Spaceship2.java @@ -18,7 +18,7 @@ public class Spaceship2 Block Block3 = ModBlocks.deco_steel; Block Block4 = ModBlocks.fusion_heater; Block Block5 = ModBlocks.block_meteor; - Block Block6 = ModBlocks.reactor_element; + Block Block6 = ModBlocks.pwr_fuel; 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/NuclearReactor.java b/src/main/java/com/hbm/world/machine/NuclearReactor.java deleted file mode 100644 index c9117a619..000000000 --- a/src/main/java/com/hbm/world/machine/NuclearReactor.java +++ /dev/null @@ -1,208 +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 NuclearReactor extends WorldGenerator -{ - public static String[][] array2 = new String[][] { - { - " ", - " BBB ", - " B B ", - " BBB ", - " " - }, - { - " BBB ", - "BRCRB", - "BCICB", - "BRCRB", - " BBB " - }, - { - " BAB ", - "BRCRB", - "AC#CA", - "BRCRB", - " BAB " - }, - { - " BBB ", - "BRCRB", - "BCICB", - "BRCRB", - " BBB " - }, - { - " ", - " BBB ", - " B B ", - " BBB ", - " " - } - }; - - Block Block1 = ModBlocks.brick_concrete; - Block Block2 = ModBlocks.reactor_element; - Block Block3 = ModBlocks.reactor_control; - Block Block4 = ModBlocks.reactor_conductor; - Block Block5 = ModBlocks.reactor_hatch; - Block Block6 = ModBlocks.reactor_computer; - - @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 -= 2; - z -= 2; - - 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 + 3, y + 0, z + 0, Block1, 0, 3); - world.setBlock(x + 4, 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, Block1, 0, 3); - world.setBlock(x + 2, y + 0, z + 1, Block1, 0, 3); - world.setBlock(x + 3, y + 0, z + 1, Block1, 0, 3); - world.setBlock(x + 4, 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, ModBlocks.fluid_duct, 0, 3); - world.setBlock(x + 3, y + 0, z + 2, Block1, 0, 3); - world.setBlock(x + 4, y + 0, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + 0, z + 3, Block1, 0, 3); - world.setBlock(x + 1, y + 0, z + 3, Block1, 0, 3); - world.setBlock(x + 2, y + 0, z + 3, Block1, 0, 3); - world.setBlock(x + 3, y + 0, z + 3, Block1, 0, 3); - world.setBlock(x + 4, y + 0, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + 0, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + 0, z + 4, Block1, 0, 3); - world.setBlock(x + 2, y + 0, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + 0, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + 0, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + 1, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + 1, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + 1, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + 1, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + 1, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + 1, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + 1, z + 1, Block2, 0, 3); - world.setBlock(x + 2, y + 1, z + 1, Block3, 0, 3); - world.setBlock(x + 3, y + 1, z + 1, Block2, 0, 3); - world.setBlock(x + 4, y + 1, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + 1, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + 1, z + 2, Block3, 0, 3); - world.setBlock(x + 2, y + 1, z + 2, Block4, 0, 3); - world.setBlock(x + 3, y + 1, z + 2, Block3, 0, 3); - world.setBlock(x + 4, y + 1, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + 1, z + 3, Block1, 0, 3); - world.setBlock(x + 1, y + 1, z + 3, Block2, 0, 3); - world.setBlock(x + 2, y + 1, z + 3, Block3, 0, 3); - world.setBlock(x + 3, y + 1, z + 3, Block2, 0, 3); - world.setBlock(x + 4, y + 1, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + 1, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + 1, z + 4, Block1, 0, 3); - world.setBlock(x + 2, y + 1, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + 1, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + 1, z + 4, 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, Block5, 2, 3); - world.setBlock(x + 3, y + 2, z + 0, Block1, 0, 3); - world.setBlock(x + 4, 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, Block3, 0, 3); - world.setBlock(x + 3, y + 2, z + 1, Block2, 0, 3); - world.setBlock(x + 4, y + 2, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + 2, z + 2, Block5, 4, 3); - world.setBlock(x + 1, y + 2, z + 2, Block3, 0, 3); - world.setBlock(x + 2, y + 2, z + 2, Block6, 0, 3); - world.setBlock(x + 3, y + 2, z + 2, Block3, 0, 3); - world.setBlock(x + 4, y + 2, z + 2, Block5, 5, 3); - world.setBlock(x + 0, y + 2, z + 3, Block1, 0, 3); - world.setBlock(x + 1, y + 2, z + 3, Block2, 0, 3); - world.setBlock(x + 2, y + 2, z + 3, Block3, 0, 3); - world.setBlock(x + 3, y + 2, z + 3, Block2, 0, 3); - world.setBlock(x + 4, y + 2, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + 2, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + 2, z + 4, Block1, 0, 3); - world.setBlock(x + 2, y + 2, z + 4, Block5, 3, 3); - world.setBlock(x + 3, y + 2, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + 2, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + 3, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + 3, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + 3, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + 3, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + 3, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + 3, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + 3, z + 1, Block2, 0, 3); - world.setBlock(x + 2, y + 3, z + 1, Block3, 0, 3); - world.setBlock(x + 3, y + 3, z + 1, Block2, 0, 3); - world.setBlock(x + 4, y + 3, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + 3, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + 3, z + 2, Block3, 0, 3); - world.setBlock(x + 2, y + 3, z + 2, Block4, 0, 3); - world.setBlock(x + 3, y + 3, z + 2, Block3, 0, 3); - world.setBlock(x + 4, y + 3, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + 3, z + 3, Block1, 0, 3); - world.setBlock(x + 1, y + 3, z + 3, Block2, 0, 3); - world.setBlock(x + 2, y + 3, z + 3, Block3, 0, 3); - world.setBlock(x + 3, y + 3, z + 3, Block2, 0, 3); - world.setBlock(x + 4, y + 3, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + 3, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + 3, z + 4, Block1, 0, 3); - world.setBlock(x + 2, y + 3, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + 3, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + 3, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + 4, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + 4, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + 4, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + 4, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + 4, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + 4, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + 4, z + 1, Block1, 0, 3); - world.setBlock(x + 2, y + 4, z + 1, Block1, 0, 3); - world.setBlock(x + 3, y + 4, z + 1, Block1, 0, 3); - world.setBlock(x + 4, y + 4, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + 4, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + 4, z + 2, Block1, 0, 3); - world.setBlock(x + 2, y + 4, z + 2, ModBlocks.fluid_duct, 0, 3); - world.setBlock(x + 3, y + 4, z + 2, Block1, 0, 3); - world.setBlock(x + 4, y + 4, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + 4, z + 3, Block1, 0, 3); - world.setBlock(x + 1, y + 4, z + 3, Block1, 0, 3); - world.setBlock(x + 2, y + 4, z + 3, Block1, 0, 3); - world.setBlock(x + 3, y + 4, z + 3, Block1, 0, 3); - world.setBlock(x + 4, y + 4, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + 4, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + 4, z + 4, Block1, 0, 3); - world.setBlock(x + 2, y + 4, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + 4, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + 4, z + 4, Block1, 0, 3); - return true; - - } - -} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/machine/Watz.java b/src/main/java/com/hbm/world/machine/Watz.java deleted file mode 100644 index 1fcfdafb3..000000000 --- a/src/main/java/com/hbm/world/machine/Watz.java +++ /dev/null @@ -1,795 +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.init.Blocks; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class Watz extends WorldGenerator -{ - public static String[][] array = new String[][] { - { - "SSSSSSS", - "SSSSSSS", - "SSSSSSS", - "SSSISSS", - "SSSSSSS", - "SSSSSSS", - "SSSSSSS" - }, - { - " CCC ", - " CWRWC ", - "CWRKRWC", - "CRKIKRC", - "CWRKRWC", - " CWRWC ", - " CCC " - }, - { - " CCC ", - " CWRWC ", - "CWRKRWC", - "CRKIKRC", - "CWRKRWC", - " CWRWC ", - " CCC " - }, - { - " CCC ", - " CWRWC ", - "CWRKRWC", - "CRKIKRC", - "CWRKRWC", - " CWRWC ", - " CCC " - }, - { - " CCC ", - " CWRWC ", - "CWRKRWC", - "CRKIKRC", - "CWRKRWC", - " CWRWC ", - " CCC " - }, - { - " CCC ", - " CWRWC ", - "CWRKRWC", - "CRKIKRC", - "CWRKRWC", - " CWRWC ", - " CCC " - }, - { - " CAC ", - " CWRWC ", - "CWRKRWC", - "ARK#KRA", - "CWRKRWC", - " CWRWC ", - " CAC " - }, - { - " CCC ", - " CWRWC ", - "CWRKRWC", - "CRKIKRC", - "CWRKRWC", - " CWRWC ", - " CCC " - }, - { - " CCC ", - " CWRWC ", - "CWRKRWC", - "CRKIKRC", - "CWRKRWC", - " CWRWC ", - " CCC " - }, - { - " CCC ", - " CWRWC ", - "CWRKRWC", - "CRKIKRC", - "CWRKRWC", - " CWRWC ", - " CCC " - }, - { - " CCC ", - " CWRWC ", - "CWRKRWC", - "CRKIKRC", - "CWRKRWC", - " CWRWC ", - " CCC " - }, - { - " CCC ", - " CWRWC ", - "CWRKRWC", - "CRKIKRC", - "CWRKRWC", - " CWRWC ", - " CCC " - }, - { - "SSSSSSS", - "SSSSSSS", - "SSSSSSS", - "SSSISSS", - "SSSSSSS", - "SSSSSSS", - "SSSSSSS" - } - }; - - @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 -= 3; - z -= 3; - - world.setBlock(x + 0, y + 0, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 0, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 0, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 0, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 0, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 0, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 0, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 0, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 0, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 0, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 0, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 0, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 0, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 0, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 0, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 0, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 0, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 0, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 0, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 0, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 0, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 0, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 0, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 0, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 0, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 0, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 0, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 0, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 0, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 0, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 0, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 0, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 0, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 0, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 0, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 0, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 0, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 0, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 0, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 0, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 0, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 0, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 0, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 0, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 0, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 0, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 0, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 0, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 0, z + 6, ModBlocks.watz_end, 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, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 1, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 1, z + 0, ModBlocks.reinforced_brick, 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 + 0, y + 1, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 1, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 1, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 1, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 1, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 1, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 1, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 1, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 1, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 1, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 1, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 1, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 1, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 1, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 1, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 1, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 1, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 1, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 1, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 1, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 1, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 1, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 1, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 1, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 1, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 1, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 1, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 1, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 1, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 1, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 1, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 1, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 1, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 1, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, 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, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 1, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 1, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 1, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 1, z + 6, 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, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 2, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 2, z + 0, ModBlocks.reinforced_brick, 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 + 0, y + 2, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 2, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 2, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 2, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 2, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 2, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 2, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 2, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 2, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 2, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 2, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 2, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 2, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 2, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 2, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 2, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 2, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 2, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 2, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 2, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 2, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 2, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 2, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 2, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 2, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 2, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 2, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 2, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 2, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 2, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 2, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 2, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 2, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 2, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, 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, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 2, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 2, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 2, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 2, z + 6, 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, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 3, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 3, z + 0, ModBlocks.reinforced_brick, 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 + 0, y + 3, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 3, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 3, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 3, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 3, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 3, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 3, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 3, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 3, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 3, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 3, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 3, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 3, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 3, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 3, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 3, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 3, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 3, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 3, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 3, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 3, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 3, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 3, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 3, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 3, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 3, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 3, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 3, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 3, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 3, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 3, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 3, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 3, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 3, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, 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, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 3, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 3, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 3, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 3, z + 6, 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, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 4, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 4, z + 0, ModBlocks.reinforced_brick, 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 + 0, y + 4, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 4, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 4, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 4, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 4, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 4, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 4, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 4, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 4, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 4, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 4, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 4, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 4, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 4, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 4, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 4, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 4, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 4, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 4, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 4, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 4, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 4, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 4, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 4, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 4, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 4, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 4, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 4, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 4, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 4, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 4, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 4, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 4, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 4, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, 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, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 4, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 4, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 4, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 4, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 5, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 5, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 5, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 5, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 5, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 5, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 5, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 5, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 5, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 5, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 5, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 5, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 5, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 5, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 5, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 5, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 5, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 5, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 5, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 5, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 5, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 5, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 5, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 5, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 5, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 5, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 5, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 5, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 5, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 5, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 5, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 5, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 5, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 5, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 5, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 5, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 5, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 5, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 5, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 5, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 5, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 5, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 5, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 5, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 5, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 5, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 5, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 5, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 5, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 6, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 6, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 6, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 6, z + 0, ModBlocks.watz_hatch, 2, 3); - world.setBlock(x + 4, y + 6, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 6, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 6, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 6, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 6, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 6, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 6, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 6, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 6, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 6, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 6, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 6, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 6, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 6, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 6, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 6, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 6, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 6, z + 3, ModBlocks.watz_hatch, 4, 3); - world.setBlock(x + 1, y + 6, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 6, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 6, z + 3, ModBlocks.watz_core, 0, 3); - world.setBlock(x + 4, y + 6, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 6, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 6, z + 3, ModBlocks.watz_hatch, 5, 3); - world.setBlock(x + 0, y + 6, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 6, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 6, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 6, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 6, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 6, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 6, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 6, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 6, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 6, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 6, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 6, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 6, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 6, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 6, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 6, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 6, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 6, z + 6, ModBlocks.watz_hatch, 3, 3); - world.setBlock(x + 4, y + 6, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 6, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 6, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 7, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 7, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 7, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 7, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 7, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 7, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 7, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 7, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 7, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 7, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 7, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 7, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 7, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 7, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 7, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 7, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 7, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 7, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 7, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 7, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 7, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 7, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 7, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 7, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 7, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 7, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 7, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 7, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 7, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 7, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 7, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 7, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 7, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 7, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 7, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 7, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 7, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 7, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 7, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 7, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 7, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 7, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 7, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 7, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 7, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 7, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 7, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 7, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 7, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 8, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 8, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 8, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 8, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 8, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 8, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 8, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 8, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 8, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 8, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 8, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 8, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 8, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 8, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 8, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 8, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 8, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 8, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 8, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 8, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 8, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 8, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 8, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 8, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 8, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 8, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 8, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 8, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 8, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 8, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 8, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 8, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 8, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 8, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 8, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 8, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 8, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 8, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 8, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 8, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 8, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 8, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 8, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 8, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 8, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 8, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 8, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 8, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 8, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 9, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 9, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 9, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 9, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 9, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 9, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 9, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 9, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 9, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 9, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 9, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 9, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 9, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 9, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 9, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 9, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 9, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 9, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 9, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 9, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 9, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 9, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 9, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 9, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 9, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 9, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 9, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 9, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 9, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 9, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 9, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 9, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 9, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 9, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 9, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 9, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 9, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 9, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 9, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 9, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 9, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 9, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 9, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 9, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 9, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 9, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 9, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 9, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 9, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 10, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 10, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 10, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 10, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 10, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 10, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 10, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 10, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 10, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 10, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 10, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 10, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 10, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 10, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 10, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 10, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 10, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 10, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 10, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 10, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 10, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 10, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 10, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 10, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 10, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 10, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 10, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 10, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 10, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 10, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 10, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 10, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 10, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 10, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 10, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 10, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 10, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 10, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 10, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 10, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 10, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 10, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 10, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 10, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 10, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 10, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 10, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 10, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 10, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 11, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 11, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 11, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 11, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 11, z + 0, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 11, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 11, z + 0, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 11, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 11, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 11, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 11, z + 1, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 11, z + 1, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 11, z + 1, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 11, z + 1, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 11, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 11, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 11, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 11, z + 2, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 11, z + 2, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 11, z + 2, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 11, z + 2, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 11, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 11, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 2, y + 11, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 3, y + 11, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 11, z + 3, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 5, y + 11, z + 3, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 6, y + 11, z + 3, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 11, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 1, y + 11, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 2, y + 11, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 3, y + 11, z + 4, ModBlocks.watz_cooler, 0, 3); - world.setBlock(x + 4, y + 11, z + 4, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 5, y + 11, z + 4, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 6, y + 11, z + 4, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 0, y + 11, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 11, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 2, y + 11, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 3, y + 11, z + 5, ModBlocks.watz_control, 0, 3); - world.setBlock(x + 4, y + 11, z + 5, ModBlocks.watz_element, 0, 3); - world.setBlock(x + 5, y + 11, z + 5, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 6, y + 11, z + 5, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 11, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 1, y + 11, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 2, y + 11, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 3, y + 11, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 4, y + 11, z + 6, ModBlocks.reinforced_brick, 0, 3); - world.setBlock(x + 5, y + 11, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 6, y + 11, z + 6, Blocks.air, 0, 3); - world.setBlock(x + 0, y + 12, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 12, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 12, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 12, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 12, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 12, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 12, z + 0, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 12, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 12, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 12, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 12, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 12, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 12, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 12, z + 1, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 12, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 12, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 12, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 12, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 12, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 12, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 12, z + 2, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 12, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 12, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 12, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 12, z + 3, ModBlocks.watz_conductor, 0, 3); - world.setBlock(x + 4, y + 12, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 12, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 12, z + 3, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 12, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 12, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 12, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 12, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 12, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 12, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 12, z + 4, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 12, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 12, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 12, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 12, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 12, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 12, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 12, z + 5, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 0, y + 12, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 1, y + 12, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 2, y + 12, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 3, y + 12, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 4, y + 12, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 5, y + 12, z + 6, ModBlocks.watz_end, 0, 3); - world.setBlock(x + 6, y + 12, z + 6, ModBlocks.watz_end, 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 6921bf4f1..3ab0b70e1 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1292,9 +1292,9 @@ item.bobmazon_machines.name=Bobmazon: Blöcke und Maschinen item.bobmazon_materials.name=Bobmazon: Ressourcen item.bobmazon_tools.name=Bobmazon: Werkzeuge item.bobmazon_weapons.name=Bobmazon: Waffen und Sprengstoffe -item.bolt_compound.name=Verstärkte Turbinenwelle -item.bolt_dura_steel.name=Schnellarbeitsstahlbolzen item.bolt.name=%sbolzen +item.bolt_compound.name=Verstärkte Turbinenwelle +item.boltgun.name=Pneumatische Nietenpistole item.bomb_caller.name=Luftschlag Zielmarker item.bomb_waffle.name=Massenvernichtungswaffel item.guide_book.name=Handbuch @@ -2316,18 +2316,10 @@ item.missile_nuclear_cluster.name=H-Rakete item.missile_rain.name=Schüttbombenregen item.missile_schrabidium.name=Schrabidiumrakete item.missile_shuttle.name=Reliant Robin Space Shuttle -item.missile_skin_camo.name=Raketenskin: Camouflage -item.missile_skin_desert.name=Raketenskin: Wüstencamouflage -item.missile_skin_flames.name=Raketenskin: Krasse Flammen -item.missile_skin_manly_pink.name=Raketenskin: Männliches Pink -item.missile_skin_metal.name=Raketenskin: Metall -item.missile_skin_orange_insulation.name=Raketenskin: Oranger Isolator -item.missile_skin_sleek.name=Raketenskin: IF-R&D -item.missile_skin_soviet_glory.name=Raketenskin: Sowjetischer Ruhm -item.missile_skin_soviet_stank.name=Raketenskin: Sowjetischer Mief item.missile_soyuz.name=Soyuz-FG item.missile_soyuz_lander.name=Orbitalmodul item.missile_strong.name=Starke HE Rakete +item.missile_stealth.name=Stealth-Rakete item.missile_taint.name=Verdorbene Rakete item.missile_volcano.name=Tectonic Missile item.missile_volcano.desc=Mit der Kraft von Kernwaffen können wir einen Vulkan beschwören! @@ -4383,6 +4375,15 @@ tile.radiorec.name=UKW Radio tile.rail_booster.name=Hochgeschwindigkeits-Boosterschienen tile.rail_highspeed.name=Hochgeschwindigkeitsschienen tile.rail_narrow.name=Schmalspurschienen +tile.rail_large_buffer.name=Normalspur-Prellbock (5m) +tile.rail_large_curve.name=Normalspur-Kurve (5m) +tile.rail_large_curve_7.name=Normalspur-Kurve (7m) +tile.rail_large_curve_9.name=Normalspur-Kurve (9m) +tile.rail_large_ramp.name=Normalspur-Rampe (5m) +tile.rail_large_straight.name=Normalspur-Schiene (5m) +tile.rail_large_straight_short.name=Normalspur-Schiene (1m) +tile.rail_large_switch.name=Normalspur-Weiche (15m, Links) +tile.rail_large_switch_flipped.name=Normalspur-Weiche (15m, Rechts) tile.rail_wood.name=Holzschienen tile.rbmk_absorber.name=RBMK Bor-Neutronenabsorber tile.rbmk_blank.name=RBMK Strukturteil diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index b091bfe19..eaa9c1851 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1958,8 +1958,8 @@ item.bobmazon_machines.name=Bobmazon: Blocks and Machines item.bobmazon_materials.name=Bobmazon: Materials item.bobmazon_tools.name=Bobmazon: Tools item.bobmazon_weapons.name=Bobmazon: Weapons and Explosives -item.bolt_compound.name=Reinforced Turbine Shaft item.bolt.name=%s Bolt +item.bolt_compound.name=Reinforced Turbine Shaft item.boltgun.name=Pneumatic Rivet Gun item.bomb_caller.name=Airstrike Designator item.bomb_waffle.name=Waffle of Mass Destruction @@ -3062,27 +3062,10 @@ item.missile_nuclear_cluster.name=Thermonuclear Missile item.missile_rain.name=Bomblet Rain item.missile_schrabidium.name=Schrabidium Missile item.missile_shuttle.name=Reliant Robin Space Shuttle -item.missile_skin_camo.name=Missile Skin: Camo -item.missile_skin_color.desc=I can't find my missile anymore! -item.missile_skin_desert.name=Missile Skin: Desert Camo -item.missile_skin_desert.desc=Looks like sand, tastes like metal. -item.missile_skin_flames.name=Missile Skin: Sick Flames -item.missile_skin_flames.desc=Radical! -item.missile_skin_manly_pink.name=Missile Skin: Manly Pink -item.missile_skin_manly_pink.desc=Pink, the manliest color of them all. -item.missile_skin_metal.name=Missile Skin: Metal -item.missile_skin_metal.desc=Metal sheets and metal bolts, reinforced with metal. -item.missile_skin_orange_insulation.name=Missile Skin: Orange Insulation -item.missile_skin_orange_insulation.desc=Not an orange juice bottle;$do not attempt to drink contents. -item.missile_skin_sleek.name=Missile Skin: IF-R&D -item.missile_skin_sleek.desc=Chevrons are cool! -item.missile_skin_soviet_glory.name=Missile Skin: Soviet Glory -item.missile_skin_soviet_glory.desc=услуга перевода недоступна -item.missile_skin_soviet_stank.name=Missile Skin: Soviet Stank -item.missile_skin_soviet_stank.desc=This one's got the real 60's stank to it. item.missile_soyuz.name=Soyuz-FG item.missile_soyuz_lander.name=Orbital Module item.missile_soyuz_lander.desc=Doubles as a crappy lander! +item.missile_stealth.name=Stealth Missile item.missile_strong.name=Strong HE Missile item.missile_taint.name=Taint-Tipped Missile item.missile_volcano.name=Tectonic Missile @@ -4803,7 +4786,7 @@ tile.corium_block.name=Corium tile.crane_boxer.name=Conveyor Boxer tile.crane_boxer.desc=Loads a configurable amount of stacks into boxes which move along conveyor belts$Right-click with screwdriver to set input side$Shift-click with screwdriver to set the output side$Click twice to set the opposite side tile.crane_extractor.name=Conveyor Ejector -tile.crane_extractor.desc=Takes items from inventories and places them on covneyor belts$Has up to 9 filter slots with black and whitelist$Right-click with screwdriver to set output side$Shift-click with screwdriver to set the input side$Click twice to set the opposite side +tile.crane_extractor.desc=Takes items from inventories and places them on conveyor belts$Has up to 9 filter slots with black and whitelist$Right-click with screwdriver to set output side$Shift-click with screwdriver to set the input side$Click twice to set the opposite side tile.crane_grabber.name=Conveyor Grabber tile.crane_grabber.desc=Takes items from passing conveyors and places them into containers$Will only take items from the closest lane$Has up to 9 filter slots with black and whitelist$Right-click with screwdriver to set input side$Shift-click with screwdriver to set the output side$Click twice to set the opposite side tile.crane_inserter.name=Conveyor Inserter @@ -5133,7 +5116,7 @@ tile.machine_forcefield.name=Forcefield Emitter tile.machine_fraction_tower.name=Fractioning Tower tile.machine_fracking_tower.name=Hydraulic Fracking Tower tile.machine_funnel.name=Combinator Funnel -tile.machine_funnel.desc=Automatically compresses items in a 2x2 or 3x3 crafting grid$Top: Input$Bottom: Output$Side: Output for clearing incredients +tile.machine_funnel.desc=Automatically compresses items in a 2x2 or 3x3 crafting grid$Top: Input$Bottom: Output$Side: Output for clearing ingredients tile.machine_gascent.name=Gas Centrifuge tile.machine_generator.name=Nuclear Reactor (Old) tile.machine_geo.name=Geothermal Electric Generator @@ -5389,6 +5372,15 @@ tile.radiobox.name=Rosenberg Pest Control Box tile.radiorec.name=FM Radio tile.rail_booster.name=High Speed Booster Rail tile.rail_highspeed.name=High Speed Rail +tile.rail_large_buffer.name=Standard Gauge Buffer Stop Rail (5m) +tile.rail_large_curve.name=Standard Gauge Curve Rail (5m) +tile.rail_large_curve_7.name=Standard Gauge Curve Rail (7m) +tile.rail_large_curve_9.name=Standard Gauge Curve Rail (9m) +tile.rail_large_ramp.name=Standard Gauge Ramp Rail (5m) +tile.rail_large_straight.name=Standard Gauge Rail (5m) +tile.rail_large_straight_short.name=Standard Gauge Rail (1m) +tile.rail_large_switch.name=Standard Gauge Switch Rail (15m, Left) +tile.rail_large_switch_flipped.name=Standard Gauge Switch Rail (15m, Right) tile.rail_narrow.name=Narrow Gauge Cart Rail tile.rail_wood.name=Wooden Tracks tile.rbmk_absorber.name=RBMK Boron Neutron Absorber @@ -5424,7 +5416,7 @@ tile.red_barrel.name=Explosive Barrel tile.red_cable.name=Red Copper Cable tile.red_cable_classic.name=Red Copper Cable (Classic) tile.red_cable_gauge.name=Power Gauge -tile.red_cable_gauge.desc=Cable that displays how much power$moves within the network per tick.$Split networks connected by energy$stroage blocks are considered as one shared network. +tile.red_cable_gauge.desc=Cable that displays how much power$moves within the network per tick.$Split networks connected by energy$storage blocks are considered as one shared network. tile.red_cable_paintable.name=Paintable Red Copper Cable tile.red_connector.name=Electricity Connector tile.red_pylon.name=Electricity Pole diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 38f25617b..82de31e27 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -1987,6 +1987,9 @@ container.assembler=Сборочная машина tile.machine_assemfac.name=Сборочный завод tile.machine_autocrafter.name=Стол автокрафта container.autocrafter=Стол автокрафта +container.machineFunnel=Комбинаторная воронка +tile.machine_funnel.name=Комбинаторная воронка +tile.machine_funnel.descАвтоматически сжимает предметы в сетке 2x2 или 3x3 для крафтинга$Верх: Вход$Низ: Выход$Бок: Выход для очистки ингредиентов tile.machine_chemplant.name=Химическая установка container.chemplant=Химическая установка tile.machine_chemfac.name=Химический завод @@ -2431,6 +2434,16 @@ tile.rail_wood.name=Деревянные рельсы container.trainTram=Трамвай с плоской платформой item.train.cargo_tram.name=Трамвай с плоской платформой +tile.rail_large_buffer.name=Стандартный буферный упорный рельс (5м) +tile.rail_large_curve.name=Стандартная кривая колея (5м) +tile.rail_large_curve_7.name=Стандартная кривая колея (7м) +tile.rail_large_curve_9.name=Стандартная кривая рельса (9м) +tile.rail_large_ramp.name=Стандартная рампа (5м) +tile.rail_large_straight.name=Стандартная колея (5м) +tile.rail_large_straight_short.name=Стандартная колея (1м) +tile.rail_large_switch.name=Переключатель стандартной колеи (15м, левый) +tile.rail_large_switch_flipped.name=Переключатель стандартной колеи (15м, правый) + tile.factory_titanium_hull.name=Корпус базовой фабрики tile.factory_titanium_furnace.name=Люк доступа базовой фабрики tile.factory_titanium_conductor.name=Порт электричества базовой фабрики @@ -2750,11 +2763,10 @@ item.ingot_polymer.name=Полимер item.ingot_rubber.name=Резина item.ingot_biorubber.name=Брусок латекса item.ingot_polonium.name=Слиток полония-210 -item.bolt_dura_steel.name=Высокоскоростной стальной стержень item.pipes_steel.name=Стальные трубы item.pipes_steel.desc=Раскрафт был исключен из-за уклонения от уплаты налогов item.drill_titanium.name=Титановый бур -item.bolt_tungsten.name=Вольфрамовый стержень +item.bolt.name=%s стержень item.bolt_compound.name=Укрепленный вал турбины item.plate_polymer.name=Изолятор item.ingot_solinium.name=Солиниевый слиток @@ -5118,17 +5130,8 @@ item.mp_thruster_20_solid.name=Твердотопливный ракетный item.mp_thruster_20_solid_multi.name=Твердотопливные 30-сопловые двигатели 20-го размера item.mp_thruster_20_solid_multier.name=Твердотопливные 47-сопловые двигатели 20-го размера -item.missile_skin_camo.name=Скин Ракеты: Камуфляж -item.missile_skin_desert.name=Скин Ракеты: Пустынный Камуфляж -item.missile_skin_flames.name=Скин Ракеты: Sick Flames -item.missile_skin_manly_pink.name=Скин Ракеты: Мужественный Розовый -item.missile_skin_orange_insulation.name=Скин Ракеты: Оранжевый Изолятор -item.missile_skin_sleek.name=Скин Ракеты: IF-R&D -item.missile_skin_soviet_glory.name=Скин Ракеты: Советская Слава -item.missile_skin_soviet_stank.name=Скин Ракеты: Советская Вонь -item.missile_skin_metal.name=Скин Ракеты: Металл - item.missile_custom.name=Пользовательская Ракета +item.missile_stealth.name=Стелс-ракета item.missile_carrier.name=Ракета-носитель HTR-01 item.missile_soyuz.name=Союз-ФГ @@ -5147,6 +5150,7 @@ item.sat_chip.name=Спутниковый ID-чип item.sat_interface.name=Интерфейс спутникового управления item.sat_coord.name=Спутниковый целеуказатель item.sat_designator.name=Спутниковый лазерный целеуказатель +item.sat_relay.name=Спутниковый радарный передатчик tile.sat_mapper.name=Спутник для картографирования поверхности (Декор) tile.sat_scanner.name=Спутник с модулем глубинно-ресурсного сканирования (Декор) tile.sat_radar.name=Спутник с радиолокационным зондированием (Декор) diff --git a/src/main/resources/assets/hbm/models/blocks/rail_standard_bend_wide9.obj b/src/main/resources/assets/hbm/models/blocks/rail_standard_bend_wide9.obj new file mode 100644 index 000000000..d03d672a0 --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/rail_standard_bend_wide9.obj @@ -0,0 +1,1966 @@ +# Blender v2.79 (sub 0) OBJ File: 'rail_standard_curve_wide9.blend' +# www.blender.org +o Plane.001 +v -1.312500 0.062500 0.500000 +v -1.312500 0.187500 0.500000 +v -1.250000 0.062500 0.500000 +v -1.250000 0.187500 0.500000 +v 0.250000 0.062500 0.500000 +v 0.312499 0.062500 0.500000 +v 0.312499 0.187500 0.500000 +v 0.250000 0.187500 0.500000 +v -1.502724 0.000000 0.229277 +v 0.492993 0.000000 0.098470 +v -1.527250 0.000000 -0.144921 +v 0.468467 0.000000 -0.275727 +v -1.527250 0.062500 -0.144921 +v -1.502724 0.062500 0.229277 +v 0.492993 0.062500 0.098470 +v 0.468467 0.062500 -0.275727 +v 0.414277 0.125000 -0.146907 +v 0.102446 0.125000 -0.126468 +v 0.422452 0.125000 -0.022174 +v 0.110621 0.125000 -0.001736 +v 0.414277 0.062500 -0.146907 +v 0.102446 0.062500 -0.126468 +v 0.422452 0.062500 -0.022174 +v 0.110621 0.062500 -0.001736 +v -1.448533 0.062500 0.100457 +v -1.136702 0.062500 0.080018 +v -1.456709 0.062500 -0.024276 +v -1.144878 0.062500 -0.044714 +v -1.448533 0.125000 0.100457 +v -1.136702 0.125000 0.080018 +v -1.456709 0.125000 -0.024276 +v -1.144878 0.125000 -0.044714 +v 0.202066 0.187500 -0.414624 +v 0.264223 0.187500 -0.421157 +v 0.264223 0.062500 -0.421157 +v 0.202066 0.062500 -0.414624 +v -1.289716 0.187500 -0.257831 +v -1.289716 0.062500 -0.257831 +v -1.351874 0.187500 -0.251298 +v -1.351874 0.062500 -0.251298 +v 0.119925 0.187500 -1.332222 +v 0.119925 0.062500 -1.332222 +v 0.058792 0.187500 -1.319227 +v 0.058792 0.062500 -1.319227 +v -1.469564 0.062500 -0.994365 +v -1.408430 0.062500 -1.007360 +v -1.408430 0.187500 -1.007360 +v -1.469564 0.187500 -0.994365 +v -0.118814 0.187500 -2.223212 +v -0.118814 0.062500 -2.223212 +v -0.178254 0.187500 -2.203898 +v -0.178254 0.062500 -2.203898 +v -1.664281 0.062500 -1.721060 +v -1.604840 0.062500 -1.740373 +v -1.604840 0.187500 -1.740373 +v -1.664281 0.187500 -1.721060 +v -0.449381 0.187500 -3.084367 +v -0.449381 0.062500 -3.084367 +v -0.506476 0.187500 -3.058946 +v -0.506476 0.062500 -3.058946 +v -1.933891 0.062500 -2.423420 +v -1.876795 0.062500 -2.448841 +v -1.876795 0.187500 -2.448841 +v -1.933891 0.187500 -2.423420 +v -0.868151 0.187500 -3.906250 +v -0.868151 0.062500 -3.906250 +v -0.922276 0.187500 -3.875000 +v -0.922276 0.062500 -3.875000 +v -2.275442 0.062500 -3.093750 +v -2.221315 0.062500 -3.125000 +v -2.221315 0.187500 -3.125000 +v -2.275442 0.187500 -3.093750 +v -1.370537 0.187500 -4.679857 +v -1.370537 0.062500 -4.679857 +v -1.421100 0.187500 -4.643121 +v -1.421100 0.062500 -4.643121 +v -2.685189 0.062500 -3.724707 +v -2.634626 0.062500 -3.761444 +v -2.634626 0.187500 -3.761444 +v -2.685189 0.187500 -3.724707 +v -1.951035 0.187500 -5.396713 +v -1.951035 0.062500 -5.396713 +v -1.997481 0.187500 -5.354893 +v -1.997481 0.062500 -5.354893 +v -3.158646 0.062500 -4.309377 +v -3.112200 0.062500 -4.351198 +v -3.112200 0.187500 -4.351198 +v -3.158646 0.187500 -4.309377 +v -2.603286 0.187500 -6.048964 +v -2.603286 0.062500 -6.048964 +v -2.645105 0.187500 -6.002518 +v -2.645105 0.062500 -6.002518 +v -3.690623 0.062500 -4.841354 +v -3.648803 0.062500 -4.887801 +v -3.648803 0.187500 -4.887801 +v -3.690623 0.187500 -4.841354 +v -3.320142 0.187500 -6.629462 +v -3.320142 0.062500 -6.629462 +v -3.356877 0.187500 -6.578900 +v -3.356877 0.062500 -6.578900 +v -4.275292 0.062500 -5.314811 +v -4.238556 0.062500 -5.365375 +v -4.238556 0.187500 -5.365375 +v -4.275292 0.187500 -5.314811 +v -4.093749 0.187500 -7.131849 +v -4.093749 0.062500 -7.131849 +v -4.124998 0.187500 -7.077724 +v -4.124998 0.062500 -7.077724 +v -4.906249 0.062500 -5.724559 +v -4.875000 0.062500 -5.778686 +v -4.875000 0.187500 -5.778686 +v -4.906249 0.187500 -5.724559 +v -4.915632 0.187500 -7.550620 +v -4.915632 0.062500 -7.550620 +v -4.941052 0.187500 -7.493525 +v -4.941052 0.062500 -7.493525 +v -5.576580 0.062500 -6.066110 +v -5.551159 0.062500 -6.123206 +v -5.551159 0.187500 -6.123206 +v -5.576580 0.187500 -6.066110 +v -5.776787 0.187500 -7.881186 +v -5.776787 0.062500 -7.881186 +v -5.796100 0.187500 -7.821747 +v -5.796100 0.062500 -7.821747 +v -6.278940 0.062500 -6.335721 +v -6.259626 0.062500 -6.395162 +v -6.259626 0.187500 -6.395162 +v -6.278940 0.187500 -6.335721 +v -6.667778 0.187500 -8.119927 +v -6.667778 0.062500 -8.119927 +v -6.680771 0.187500 -8.058794 +v -6.680771 0.062500 -8.058794 +v -7.005634 0.062500 -6.530438 +v -6.992640 0.062500 -6.591572 +v -6.992640 0.187500 -6.591572 +v -7.005634 0.187500 -6.530438 +v -7.578842 0.187500 -8.264227 +v -7.578842 0.062500 -8.264227 +v -7.585375 0.187500 -8.202069 +v -7.585375 0.062500 -8.202069 +v -7.748702 0.062500 -6.648129 +v -7.742168 0.062500 -6.710286 +v -7.742168 0.187500 -6.710286 +v -7.748702 0.187500 -6.648129 +v -8.500000 0.187500 -8.312503 +v -8.500000 0.062500 -8.312503 +v -8.499999 0.187500 -8.250003 +v -8.499999 0.062500 -8.250003 +v -8.500000 0.062500 -6.687503 +v -8.500000 0.062500 -6.750003 +v -8.500000 0.187500 -6.750003 +v -8.500000 0.187500 -6.687503 +v -1.593841 0.000000 -0.657635 +v 0.369080 0.000000 -1.040966 +v -1.665715 0.000000 -1.025683 +v 0.297205 0.000000 -1.409014 +v -1.665715 0.062500 -1.025683 +v -1.593841 0.062500 -0.657635 +v 0.369080 0.062500 -1.040966 +v 0.297205 0.062500 -1.409014 +v 0.259823 0.125000 -1.274352 +v -0.046885 0.125000 -1.214457 +v 0.283780 0.125000 -1.151670 +v -0.022925 0.125000 -1.091774 +v 0.259823 0.062500 -1.274352 +v -0.046885 0.062500 -1.214457 +v 0.283780 0.062500 -1.151670 +v -0.022925 0.062500 -1.091774 +v -1.556457 0.062500 -0.792297 +v -1.249751 0.062500 -0.852192 +v -1.580416 0.062500 -0.914979 +v -1.273710 0.062500 -0.974875 +v -1.556457 0.125000 -0.792297 +v -1.249751 0.125000 -0.852192 +v -1.580416 0.125000 -0.914979 +v -1.273710 0.125000 -0.974875 +v -1.804025 0.000000 -1.549166 +v 0.092067 0.000000 -2.185431 +v -1.923324 0.000000 -1.904684 +v -0.027232 0.000000 -2.540948 +v -1.923324 0.062500 -1.904684 +v -1.804025 0.062500 -1.549166 +v 0.092067 0.062500 -2.185431 +v -0.027232 0.062500 -2.540948 +v -0.046719 0.125000 -2.402559 +v -0.342983 0.125000 -2.303143 +v -0.006952 0.125000 -2.284053 +v -0.303216 0.125000 -2.184637 +v -0.046719 0.062500 -2.402559 +v -0.342983 0.062500 -2.303143 +v -0.006952 0.062500 -2.284053 +v -0.303216 0.062500 -2.184637 +v -1.784539 0.062500 -1.687555 +v -1.488274 0.062500 -1.786972 +v -1.824306 0.062500 -1.806061 +v -1.528041 0.062500 -1.905477 +v -1.784539 0.125000 -1.687555 +v -1.488274 0.125000 -1.786972 +v -1.824306 0.125000 -1.806061 +v -1.528041 0.125000 -1.905477 +v -2.128780 0.000000 -2.405635 +v -0.331959 0.000000 -3.283946 +v -2.293463 0.000000 -2.742540 +v -0.496641 0.000000 -3.620850 +v -2.293463 0.062500 -2.742540 +v -2.128780 0.062500 -2.405635 +v -0.331959 0.062500 -3.283946 +v -0.496641 0.062500 -3.620850 +v -0.497897 0.125000 -3.481102 +v -0.778651 0.125000 -3.343866 +v -0.443003 0.125000 -3.368800 +v -0.723756 0.125000 -3.231565 +v -0.497897 0.062500 -3.481102 +v -0.778651 0.062500 -3.343866 +v -0.443003 0.062500 -3.368800 +v -0.723756 0.062500 -3.231565 +v -2.127524 0.062500 -2.545384 +v -1.846769 0.062500 -2.682620 +v -2.182419 0.062500 -2.657685 +v -1.901665 0.062500 -2.794921 +v -2.127524 0.125000 -2.545384 +v -1.846769 0.125000 -2.682620 +v -2.182419 0.125000 -2.657685 +v -1.901665 0.125000 -2.794921 +v -2.562548 0.000000 -3.212389 +v -0.895741 0.000000 -4.317718 +v -2.769797 0.000000 -3.524915 +v -1.102990 0.000000 -4.630244 +v -2.769797 0.062500 -3.524915 +v -2.562548 0.062500 -3.212389 +v -0.895741 0.062500 -4.317718 +v -1.102990 0.062500 -4.630244 +v -1.085994 0.125000 -4.491527 +v -1.346433 0.125000 -4.318820 +v -1.016911 0.125000 -4.387352 +v -1.277349 0.125000 -4.214644 +v -1.085994 0.062500 -4.491527 +v -1.346433 0.062500 -4.318820 +v -1.016911 0.062500 -4.387352 +v -1.277349 0.062500 -4.214644 +v -2.579544 0.062500 -3.351105 +v -2.319104 0.062500 -3.523814 +v -2.648627 0.062500 -3.455281 +v -2.388188 0.062500 -3.627988 +v -2.579544 0.125000 -3.351105 +v -2.319104 0.125000 -3.523814 +v -2.648627 0.125000 -3.455281 +v -2.388188 0.125000 -3.627988 +v -3.097907 0.000000 -3.955622 +v -1.589635 0.000000 -5.269057 +v -3.344176 0.000000 -4.238423 +v -1.835903 0.000000 -5.551857 +v -3.344176 0.062500 -4.238423 +v -3.097907 0.062500 -3.955622 +v -1.589635 0.062500 -5.269057 +v -1.835903 0.062500 -5.551857 +v -1.800947 0.125000 -5.416546 +v -2.036615 0.125000 -5.211322 +v -1.718857 0.125000 -5.322279 +v -1.954525 0.125000 -5.117055 +v -1.800947 0.062500 -5.416546 +v -2.036615 0.062500 -5.211322 +v -1.718857 0.062500 -5.322279 +v -1.954525 0.062500 -5.117055 +v -3.132864 0.062500 -4.090933 +v -2.897195 0.062500 -4.296158 +v -3.214954 0.062500 -4.185201 +v -2.979286 0.062500 -4.390424 +v -3.132864 0.125000 -4.090933 +v -2.897195 0.125000 -4.296158 +v -3.214954 0.125000 -4.185201 +v -2.979286 0.125000 -4.390424 +v -3.725698 0.000000 -4.622618 +v -2.401767 0.000000 -6.121686 +v -4.006773 0.000000 -4.870855 +v -2.682841 0.000000 -6.369922 +v -4.006773 0.062500 -4.870855 +v -3.725698 0.062500 -4.622618 +v -2.401767 0.062500 -6.121686 +v -2.682841 0.062500 -6.369922 +v -2.630522 0.125000 -6.240331 +v -2.837387 0.125000 -6.006102 +v -2.536831 0.125000 -6.157585 +v -2.743695 0.125000 -5.923357 +v -2.630522 0.062500 -6.240331 +v -2.837387 0.062500 -6.006102 +v -2.536831 0.062500 -6.157585 +v -2.743695 0.062500 -5.923357 +v -3.778018 0.062500 -4.752209 +v -3.571152 0.062500 -4.986439 +v -3.871710 0.062500 -4.834955 +v -3.664845 0.062500 -5.069184 +v -3.778018 0.125000 -4.752209 +v -3.571152 0.125000 -4.986439 +v -3.871710 0.125000 -4.834955 +v -3.664845 0.125000 -5.069184 +v -4.435179 0.000000 -5.201965 +v -3.318242 0.000000 -6.861015 +v -4.746251 0.000000 -5.411391 +v -3.629313 0.000000 -7.070441 +v -4.746251 0.062500 -5.411391 +v -4.435179 0.062500 -5.201965 +v -3.318242 0.062500 -6.861015 +v -3.629313 0.062500 -7.070441 +v -3.560526 0.125000 -6.948788 +v -3.735048 0.125000 -6.689561 +v -3.456836 0.125000 -6.878979 +v -3.631357 0.125000 -6.619753 +v -3.560526 0.062500 -6.948788 +v -3.735048 0.062500 -6.689561 +v -3.456836 0.062500 -6.878979 +v -3.631357 0.062500 -6.619753 +v -4.503965 0.062500 -5.323618 +v -4.329443 0.062500 -5.582846 +v -4.607657 0.062500 -5.393427 +v -4.433135 0.062500 -5.652653 +v -4.503965 0.125000 -5.323618 +v -4.329443 0.125000 -5.582846 +v -4.607657 0.125000 -5.393427 +v -4.433135 0.125000 -5.652653 +v -5.214210 0.000000 -5.683750 +v -4.323378 0.000000 -7.474396 +v -5.549956 0.000000 -5.850781 +v -4.659122 0.000000 -7.641427 +v -5.549956 0.062500 -5.850781 +v -5.214210 0.062500 -5.683750 +v -4.323378 0.062500 -7.474396 +v -4.659122 0.062500 -7.641427 +v -4.575046 0.125000 -7.529794 +v -4.714239 0.125000 -7.250005 +v -4.463130 0.125000 -7.474116 +v -4.602324 0.125000 -7.194328 +v -4.575046 0.062500 -7.529794 +v -4.714239 0.062500 -7.250005 +v -4.463130 0.062500 -7.474116 +v -4.602324 0.062500 -7.194328 +v -5.298286 0.062500 -5.795384 +v -5.159094 0.062500 -6.075173 +v -5.410203 0.062500 -5.851061 +v -5.271009 0.062500 -6.130849 +v -5.298286 0.125000 -5.795384 +v -5.159094 0.125000 -6.075173 +v -5.410203 0.125000 -5.851061 +v -5.271009 0.125000 -6.130849 +v -6.049461 0.000000 -6.059729 +v -5.399977 0.000000 -7.951333 +v -6.404138 0.000000 -6.181507 +v -5.754651 0.000000 -8.073112 +v -6.404138 0.062500 -6.181507 +v -6.049461 0.062500 -6.059729 +v -5.399977 0.062500 -7.951333 +v -5.754651 0.062500 -8.073112 +v -5.656723 0.125000 -7.973407 +v -5.758205 0.125000 -7.677843 +v -5.538497 0.125000 -7.932814 +v -5.639980 0.125000 -7.637251 +v -5.656723 0.062500 -7.973407 +v -5.758205 0.062500 -7.677843 +v -5.538497 0.062500 -7.932814 +v -5.639980 0.062500 -7.637251 +v -6.147390 0.062500 -6.159434 +v -6.045908 0.062500 -6.454998 +v -6.265616 0.062500 -6.200027 +v -6.164133 0.062500 -6.495589 +v -6.147390 0.125000 -6.159434 +v -6.045908 0.125000 -6.454998 +v -6.265616 0.125000 -6.200027 +v -6.164133 0.125000 -6.495589 +v -6.926642 0.000000 -6.323469 +v -6.529619 0.000000 -8.283666 +v -7.294180 0.000000 -6.397911 +v -6.897154 0.000000 -8.358108 +v -7.294180 0.062500 -6.397911 +v -6.926642 0.062500 -6.323469 +v -6.529619 0.062500 -8.283666 +v -6.897154 0.062500 -8.358108 +v -6.787049 0.125000 -8.272038 +v -6.849084 0.125000 -7.965756 +v -6.664536 0.125000 -8.247224 +v -6.726572 0.125000 -7.940943 +v -6.787049 0.062500 -8.272038 +v -6.849084 0.062500 -7.965756 +v -6.664536 0.062500 -8.247224 +v -6.726572 0.062500 -7.940943 +v -7.036747 0.062500 -6.409539 +v -6.974712 0.062500 -6.715820 +v -7.159261 0.062500 -6.434352 +v -7.097224 0.062500 -6.740633 +v -7.036747 0.125000 -6.409539 +v -6.974712 0.125000 -6.715820 +v -7.159261 0.125000 -6.434352 +v -7.097224 0.125000 -6.740633 +v -7.830744 0.000000 -6.470458 +v -7.692974 0.000000 -8.465706 +v -8.204854 0.000000 -6.496290 +v -8.067081 0.000000 -8.491539 +v -8.204854 0.062500 -6.496290 +v -7.830744 0.062500 -6.470458 +v -7.692974 0.062500 -8.465706 +v -8.067081 0.062500 -8.491539 +v -7.946684 0.125000 -8.420578 +v -7.968211 0.125000 -8.108818 +v -7.821981 0.125000 -8.411966 +v -7.843508 0.125000 -8.100208 +v -7.946684 0.062500 -8.420578 +v -7.968211 0.062500 -8.108818 +v -7.821981 0.062500 -8.411966 +v -7.843508 0.062500 -8.100208 +v -7.951141 0.062500 -6.541420 +v -7.929615 0.062500 -6.853178 +v -8.075846 0.062500 -6.550030 +v -8.054317 0.062500 -6.861787 +v -7.951141 0.125000 -6.541420 +v -7.929615 0.125000 -6.853178 +v -8.075846 0.125000 -6.550030 +v -8.054317 0.125000 -6.861787 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.531250 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.500000 0.718750 +vt 0.406250 1.000000 +vt 0.218750 0.000000 +vt 0.406250 0.000000 +vt 0.000000 1.000000 +vt 0.187500 0.000000 +vt 0.187500 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.218750 1.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.593750 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.718750 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.500000 0.718750 +vt 0.531250 0.656250 +vt 0.000000 0.000000 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.406250 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.406250 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.718750 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.9979 0.0000 0.0654 +vn 0.0654 0.0000 0.9979 +vn 0.9979 0.0000 -0.0654 +vn -0.0654 0.0000 -0.9979 +vn 0.9986 0.0000 -0.0523 +vn -0.9986 0.0000 0.0523 +vn -0.9659 0.0000 0.2588 +vn 0.9877 0.0000 -0.1564 +vn -0.9877 0.0000 0.1564 +vn -0.9336 0.0000 0.3584 +vn 0.9659 0.0000 -0.2588 +vn 0.9336 0.0000 -0.3584 +vn 0.8387 0.0000 -0.5446 +vn 0.8910 0.0000 -0.4540 +vn -0.8910 0.0000 0.4540 +vn -0.8387 0.0000 0.5446 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.7771 0.0000 0.6293 +vn 0.7771 0.0000 -0.6293 +vn 0.6293 0.0000 -0.7771 +vn 0.5446 0.0000 -0.8387 +vn -0.5446 0.0000 0.8387 +vn -0.6293 0.0000 0.7771 +vn -0.4540 0.0000 0.8910 +vn 0.3584 0.0000 -0.9336 +vn 0.4540 0.0000 -0.8910 +vn 0.2588 0.0000 -0.9659 +vn -0.3584 0.0000 0.9336 +vn -0.1564 0.0000 0.9877 +vn -0.2588 0.0000 0.9659 +vn -0.0523 0.0000 0.9986 +vn 0.1564 0.0000 -0.9877 +vn -1.0000 0.0000 0.0000 +vn 0.0523 0.0000 -0.9986 +vn -0.9815 0.0000 0.1917 +vn 0.1917 0.0000 0.9815 +vn 0.9815 0.0000 -0.1917 +vn -0.1917 0.0000 -0.9815 +vn -0.9480 0.0000 0.3181 +vn 0.3181 0.0000 0.9480 +vn 0.9480 0.0000 -0.3181 +vn -0.3181 0.0000 -0.9480 +vn -0.8984 0.0000 0.4392 +vn 0.4392 0.0000 0.8984 +vn 0.8984 0.0000 -0.4392 +vn -0.4392 0.0000 -0.8984 +vn -0.8334 0.0000 0.5527 +vn 0.5527 0.0000 0.8334 +vn 0.8334 0.0000 -0.5527 +vn -0.5527 0.0000 -0.8334 +vn -0.7541 0.0000 0.6567 +vn 0.6567 0.0000 0.7541 +vn 0.7541 0.0000 -0.6567 +vn -0.6567 0.0000 -0.7541 +vn -0.6620 0.0000 0.7495 +vn 0.7495 0.0000 0.6620 +vn 0.6620 0.0000 -0.7495 +vn -0.7495 0.0000 -0.6620 +vn -0.5585 0.0000 0.8295 +vn 0.8295 0.0000 0.5585 +vn 0.5585 0.0000 -0.8295 +vn -0.8295 0.0000 -0.5585 +vn -0.4454 0.0000 0.8953 +vn 0.8953 0.0000 0.4454 +vn 0.4454 0.0000 -0.8953 +vn -0.8953 0.0000 -0.4454 +vn -0.3247 0.0000 0.9458 +vn 0.9458 0.0000 0.3247 +vn 0.3247 0.0000 -0.9458 +vn -0.9458 0.0000 -0.3247 +vn -0.1985 0.0000 0.9801 +vn 0.9801 0.0000 0.1985 +vn 0.1985 0.0000 -0.9801 +vn -0.9801 0.0000 -0.1985 +vn -0.0689 0.0000 0.9976 +vn 0.9976 0.0000 0.0689 +vn 0.0689 0.0000 -0.9976 +vn -0.9976 0.0000 -0.0689 +s off +f 3/1/1 2/2/1 1/3/1 +f 8/4/1 6/5/1 7/6/1 +f 9/7/2 12/8/2 10/9/2 +f 14/10/3 16/11/3 13/12/3 +f 9/13/4 13/14/4 11/15/4 +f 10/16/5 14/17/5 9/18/5 +f 12/19/6 15/20/6 10/9/6 +f 11/21/7 16/11/7 12/8/7 +f 29/22/4 27/23/4 25/24/4 +f 20/25/3 17/26/3 18/27/3 +f 17/26/6 23/28/6 21/29/6 +f 19/30/5 24/31/5 23/32/5 +f 18/27/7 21/33/7 22/34/7 +f 20/25/4 22/35/4 24/36/4 +f 31/37/7 28/38/7 27/39/7 +f 30/40/5 25/41/5 26/42/5 +f 32/43/6 26/44/6 28/45/6 +f 29/22/3 32/43/3 31/37/3 +f 40/46/2 3/47/2 1/48/2 +f 7/49/3 33/50/3 8/51/3 +f 35/52/8 7/49/8 6/53/8 +f 39/54/9 1/55/9 2/56/9 +f 37/57/3 2/56/3 4/58/3 +f 36/59/2 6/53/2 5/60/2 +f 33/50/9 5/61/9 8/51/9 +f 38/62/8 4/58/8 3/47/8 +f 34/63/3 43/64/3 33/65/3 +f 45/66/2 38/67/2 40/68/2 +f 51/69/10 44/70/10 43/71/10 +f 52/72/2 42/73/2 44/74/2 +f 42/75/11 34/63/11 35/76/11 +f 48/77/12 40/78/12 39/79/12 +f 47/80/3 39/79/3 37/81/3 +f 44/82/2 35/76/2 36/83/2 +f 43/64/12 36/84/12 33/65/12 +f 46/85/11 37/81/11 38/67/11 +f 55/86/3 64/87/3 56/88/3 +f 64/87/13 53/89/13 56/88/13 +f 54/90/14 47/91/14 46/92/14 +f 45/93/2 54/90/2 46/92/2 +f 41/94/3 51/69/3 43/71/3 +f 50/95/14 41/94/14 42/73/14 +f 56/96/10 45/97/10 48/98/10 +f 55/99/3 48/98/3 47/91/3 +f 57/100/3 67/101/3 59/102/3 +f 69/103/2 62/104/2 61/105/2 +f 60/106/2 50/107/2 52/108/2 +f 59/109/13 52/110/13 51/111/13 +f 62/112/15 55/86/15 54/113/15 +f 61/114/2 54/113/2 53/115/2 +f 49/116/3 59/109/3 51/111/3 +f 58/117/15 49/116/15 50/107/15 +f 77/118/2 70/119/2 69/120/2 +f 78/121/16 71/122/16 70/119/16 +f 66/123/17 57/100/17 58/124/17 +f 72/125/18 61/126/18 64/127/18 +f 63/128/3 72/125/3 64/127/3 +f 68/129/2 58/124/2 60/130/2 +f 67/101/18 60/131/18 59/102/18 +f 70/132/17 63/128/17 62/104/17 +f 84/133/2 74/134/2 76/135/2 +f 79/136/3 88/137/3 80/138/3 +f 65/139/3 75/140/3 67/141/3 +f 74/142/16 65/139/16 66/143/16 +f 80/144/19 69/145/19 72/146/19 +f 71/122/3 80/144/3 72/146/3 +f 76/147/2 66/143/2 68/148/2 +f 75/140/19 68/149/19 67/141/19 +f 96/150/20 85/151/20 88/152/20 +f 90/153/21 81/154/21 82/155/21 +f 83/156/22 76/157/22 75/158/22 +f 86/159/23 79/136/23 78/160/23 +f 85/161/2 78/160/2 77/162/2 +f 73/163/3 83/156/3 75/158/3 +f 82/164/23 73/163/23 74/134/23 +f 88/137/22 77/165/22 80/138/22 +f 101/166/2 94/167/2 93/168/2 +f 102/169/24 95/170/24 94/167/24 +f 87/171/3 96/150/3 88/152/3 +f 92/172/2 82/155/2 84/173/2 +f 91/174/20 84/175/20 83/176/20 +f 94/177/21 87/171/21 86/178/21 +f 93/179/2 86/178/2 85/180/2 +f 81/154/3 91/174/3 83/176/3 +f 110/181/25 103/182/25 102/183/25 +f 107/184/26 100/185/26 99/186/26 +f 89/187/3 99/188/3 91/189/3 +f 98/190/24 89/187/24 90/191/24 +f 104/192/27 93/193/27 96/194/27 +f 95/170/3 104/192/3 96/194/3 +f 100/195/2 90/191/2 92/196/2 +f 99/188/27 92/197/27 91/189/27 +f 111/198/3 120/199/3 112/200/3 +f 120/199/28 109/201/28 112/200/28 +f 109/202/2 102/183/2 101/203/2 +f 97/204/3 107/184/3 99/186/3 +f 106/205/25 97/204/25 98/206/25 +f 112/207/26 101/208/26 104/209/26 +f 103/182/3 112/207/3 104/209/3 +f 108/210/2 98/206/2 100/211/2 +f 122/212/29 113/213/29 114/214/29 +f 113/213/3 123/215/3 115/216/3 +f 116/217/2 106/218/2 108/219/2 +f 115/220/28 108/221/28 107/222/28 +f 118/223/30 111/198/30 110/224/30 +f 117/225/2 110/224/2 109/226/2 +f 105/227/3 115/220/3 107/222/3 +f 114/228/30 105/227/30 106/218/30 +f 133/229/2 126/230/2 125/231/2 +f 134/232/31 127/233/31 126/230/31 +f 128/234/32 117/235/32 120/236/32 +f 119/237/3 128/234/3 120/236/3 +f 124/238/2 114/214/2 116/239/2 +f 123/215/32 116/240/32 115/216/32 +f 126/241/29 119/237/29 118/242/29 +f 125/243/2 118/242/2 117/244/2 +f 139/245/33 132/246/33 131/247/33 +f 140/248/2 130/249/2 132/250/2 +f 121/251/3 131/252/3 123/253/3 +f 130/254/31 121/251/31 122/255/31 +f 136/256/34 125/257/34 128/258/34 +f 127/233/3 136/256/3 128/258/3 +f 132/259/2 122/255/2 124/260/2 +f 131/252/34 124/261/34 123/253/34 +f 151/262/3 144/263/3 143/264/3 +f 152/265/35 141/266/35 144/263/35 +f 142/267/36 135/268/36 134/269/36 +f 133/270/2 142/267/2 134/269/2 +f 129/271/3 139/245/3 131/247/3 +f 138/272/36 129/271/36 130/249/36 +f 144/273/33 133/274/33 136/275/33 +f 143/276/3 136/275/3 135/268/3 +f 146/277/37 147/278/37 145/279/37 +f 152/280/37 150/281/37 149/282/37 +f 148/283/2 138/284/2 140/285/2 +f 147/286/35 140/287/35 139/288/35 +f 150/289/38 143/264/38 142/290/38 +f 149/291/2 142/290/2 141/292/2 +f 137/293/3 147/286/3 139/288/3 +f 146/294/38 137/293/38 138/284/38 +f 155/295/2 154/296/2 153/297/2 +f 159/298/3 157/299/3 158/300/3 +f 153/301/39 157/302/39 155/303/39 +f 154/304/40 158/305/40 153/306/40 +f 156/307/41 159/308/41 154/296/41 +f 155/295/42 160/309/42 156/310/42 +f 173/311/39 171/312/39 169/313/39 +f 164/314/3 161/315/3 162/316/3 +f 161/315/41 167/317/41 165/318/41 +f 163/319/40 168/320/40 167/321/40 +f 162/316/42 165/322/42 166/323/42 +f 164/314/39 166/324/39 168/325/39 +f 175/326/42 172/327/42 171/328/42 +f 174/329/40 169/330/40 170/331/40 +f 176/332/41 170/333/41 172/334/41 +f 173/311/3 176/332/3 175/326/3 +f 179/335/2 178/336/2 177/337/2 +f 183/338/3 181/339/3 182/340/3 +f 177/341/43 181/342/43 179/343/43 +f 178/344/44 182/345/44 177/346/44 +f 180/347/45 183/348/45 178/336/45 +f 179/335/46 184/349/46 180/350/46 +f 197/351/43 195/352/43 193/353/43 +f 188/354/3 185/355/3 186/356/3 +f 185/355/45 191/357/45 189/358/45 +f 187/359/44 192/360/44 191/361/44 +f 186/356/46 189/362/46 190/363/46 +f 188/354/43 190/364/43 192/365/43 +f 199/366/46 196/367/46 195/368/46 +f 198/369/44 193/370/44 194/371/44 +f 200/372/45 194/373/45 196/374/45 +f 197/351/3 200/372/3 199/366/3 +f 203/375/2 202/376/2 201/377/2 +f 207/378/3 205/379/3 206/380/3 +f 201/381/47 205/382/47 203/383/47 +f 202/384/48 206/385/48 201/386/48 +f 204/387/49 207/388/49 202/376/49 +f 203/375/50 208/389/50 204/390/50 +f 221/391/47 219/392/47 217/393/47 +f 212/394/3 209/395/3 210/396/3 +f 209/395/49 215/397/49 213/398/49 +f 211/399/48 216/400/48 215/401/48 +f 210/396/50 213/402/50 214/403/50 +f 212/394/47 214/404/47 216/405/47 +f 223/406/50 220/407/50 219/408/50 +f 222/409/48 217/410/48 218/411/48 +f 224/412/49 218/413/49 220/414/49 +f 221/391/3 224/412/3 223/406/3 +f 227/415/2 226/416/2 225/417/2 +f 231/418/3 229/419/3 230/420/3 +f 225/421/51 229/422/51 227/423/51 +f 226/424/52 230/425/52 225/426/52 +f 228/427/53 231/428/53 226/416/53 +f 227/415/54 232/429/54 228/430/54 +f 245/431/51 243/432/51 241/433/51 +f 236/434/3 233/435/3 234/436/3 +f 233/435/53 239/437/53 237/438/53 +f 235/439/52 240/440/52 239/441/52 +f 234/436/54 237/442/54 238/443/54 +f 236/434/51 238/444/51 240/445/51 +f 247/446/54 244/447/54 243/448/54 +f 246/449/52 241/450/52 242/451/52 +f 248/452/53 242/453/53 244/454/53 +f 245/431/3 248/452/3 247/446/3 +f 251/455/2 250/456/2 249/457/2 +f 255/458/3 253/459/3 254/460/3 +f 249/461/55 253/462/55 251/463/55 +f 250/464/56 254/465/56 249/466/56 +f 252/467/57 255/468/57 250/456/57 +f 251/455/58 256/469/58 252/470/58 +f 269/471/55 267/472/55 265/473/55 +f 260/474/3 257/475/3 258/476/3 +f 257/475/57 263/477/57 261/478/57 +f 259/479/56 264/480/56 263/481/56 +f 258/476/58 261/482/58 262/483/58 +f 260/474/55 262/484/55 264/485/55 +f 271/486/58 268/487/58 267/488/58 +f 270/489/56 265/490/56 266/491/56 +f 272/492/57 266/493/57 268/494/57 +f 269/471/3 272/492/3 271/486/3 +f 275/495/2 274/496/2 273/497/2 +f 279/498/3 277/499/3 278/500/3 +f 273/501/59 277/502/59 275/503/59 +f 274/504/60 278/505/60 273/506/60 +f 276/507/61 279/508/61 274/496/61 +f 275/495/62 280/509/62 276/510/62 +f 293/511/59 291/512/59 289/513/59 +f 284/514/3 281/515/3 282/516/3 +f 281/515/61 287/517/61 285/518/61 +f 283/519/60 288/520/60 287/521/60 +f 282/516/62 285/522/62 286/523/62 +f 284/514/59 286/524/59 288/525/59 +f 295/526/62 292/527/62 291/528/62 +f 294/529/60 289/530/60 290/531/60 +f 296/532/61 290/533/61 292/534/61 +f 293/511/3 296/532/3 295/526/3 +f 299/535/2 298/536/2 297/537/2 +f 303/538/3 301/539/3 302/540/3 +f 297/541/63 301/542/63 299/543/63 +f 298/544/64 302/545/64 297/546/64 +f 300/547/65 303/548/65 298/536/65 +f 299/535/66 304/549/66 300/550/66 +f 317/551/63 315/552/63 313/553/63 +f 308/554/3 305/555/3 306/556/3 +f 305/555/65 311/557/65 309/558/65 +f 307/559/64 312/560/64 311/561/64 +f 306/556/66 309/562/66 310/563/66 +f 308/554/63 310/564/63 312/565/63 +f 319/566/66 316/567/66 315/568/66 +f 318/569/64 313/570/64 314/571/64 +f 320/572/65 314/573/65 316/574/65 +f 317/551/3 320/572/3 319/566/3 +f 323/575/2 322/576/2 321/577/2 +f 327/578/3 325/579/3 326/580/3 +f 321/581/67 325/582/67 323/583/67 +f 322/584/68 326/585/68 321/586/68 +f 324/587/69 327/588/69 322/576/69 +f 323/575/70 328/589/70 324/590/70 +f 341/591/67 339/592/67 337/593/67 +f 332/594/3 329/595/3 330/596/3 +f 329/595/69 335/597/69 333/598/69 +f 331/599/68 336/600/68 335/601/68 +f 330/596/70 333/602/70 334/603/70 +f 332/594/67 334/604/67 336/605/67 +f 343/606/70 340/607/70 339/608/70 +f 342/609/68 337/610/68 338/611/68 +f 344/612/69 338/613/69 340/614/69 +f 341/591/3 344/612/3 343/606/3 +f 347/615/2 346/616/2 345/617/2 +f 351/618/3 349/619/3 350/620/3 +f 345/621/71 349/622/71 347/623/71 +f 346/624/72 350/625/72 345/626/72 +f 348/627/73 351/628/73 346/616/73 +f 347/615/74 352/629/74 348/630/74 +f 365/631/71 363/632/71 361/633/71 +f 356/634/3 353/635/3 354/636/3 +f 353/635/73 359/637/73 357/638/73 +f 355/639/72 360/640/72 359/641/72 +f 354/636/74 357/642/74 358/643/74 +f 356/634/71 358/644/71 360/645/71 +f 367/646/74 364/647/74 363/648/74 +f 366/649/72 361/650/72 362/651/72 +f 368/652/73 362/653/73 364/654/73 +f 365/631/3 368/652/3 367/646/3 +f 371/655/2 370/656/2 369/657/2 +f 375/658/3 373/659/3 374/660/3 +f 369/661/75 373/662/75 371/663/75 +f 370/664/76 374/665/76 369/666/76 +f 372/667/77 375/668/77 370/656/77 +f 371/655/78 376/669/78 372/670/78 +f 389/671/75 387/672/75 385/673/75 +f 380/674/3 377/675/3 378/676/3 +f 377/675/77 383/677/77 381/678/77 +f 379/679/76 384/680/76 383/681/76 +f 378/676/78 381/682/78 382/683/78 +f 380/674/75 382/684/75 384/685/75 +f 391/686/78 388/687/78 387/688/78 +f 390/689/76 385/690/76 386/691/76 +f 392/692/77 386/693/77 388/694/77 +f 389/671/3 392/692/3 391/686/3 +f 395/695/2 394/696/2 393/697/2 +f 399/698/3 397/699/3 398/700/3 +f 393/701/79 397/702/79 395/703/79 +f 394/704/80 398/705/80 393/706/80 +f 396/707/81 399/708/81 394/696/81 +f 395/695/82 400/709/82 396/710/82 +f 413/711/79 411/712/79 409/713/79 +f 404/714/3 401/715/3 402/716/3 +f 401/715/81 407/717/81 405/718/81 +f 403/719/80 408/720/80 407/721/80 +f 402/716/82 405/722/82 406/723/82 +f 404/714/79 406/724/79 408/725/79 +f 415/726/82 412/727/82 411/728/82 +f 414/729/80 409/730/80 410/731/80 +f 416/732/81 410/733/81 412/734/81 +f 413/711/3 416/732/3 415/726/3 +f 3/1/1 4/735/1 2/2/1 +f 8/4/1 5/736/1 6/5/1 +f 9/7/2 11/21/2 12/8/2 +f 14/10/3 15/737/3 16/11/3 +f 9/13/4 14/738/4 13/14/4 +f 10/16/5 15/739/5 14/17/5 +f 12/19/6 16/740/6 15/20/6 +f 11/21/7 13/12/7 16/11/7 +f 29/22/4 31/37/4 27/23/4 +f 20/25/3 19/30/3 17/26/3 +f 17/26/6 19/30/6 23/28/6 +f 19/30/5 20/25/5 24/31/5 +f 18/27/7 17/26/7 21/33/7 +f 20/25/4 18/27/4 22/35/4 +f 31/37/7 32/43/7 28/38/7 +f 30/40/5 29/22/5 25/41/5 +f 32/43/6 30/40/6 26/44/6 +f 29/22/3 30/40/3 32/43/3 +f 40/46/2 38/62/2 3/47/2 +f 7/49/3 34/741/3 33/50/3 +f 35/52/8 34/741/8 7/49/8 +f 39/54/9 40/742/9 1/55/9 +f 37/57/3 39/54/3 2/56/3 +f 36/59/2 35/52/2 6/53/2 +f 33/50/9 36/743/9 5/61/9 +f 38/62/8 37/57/8 4/58/8 +f 34/63/3 41/744/3 43/64/3 +f 45/66/2 46/85/2 38/67/2 +f 51/69/10 52/745/10 44/70/10 +f 52/72/2 50/95/2 42/73/2 +f 42/75/11 41/744/11 34/63/11 +f 48/77/12 45/746/12 40/78/12 +f 47/80/3 48/77/3 39/79/3 +f 44/82/2 42/75/2 35/76/2 +f 43/64/12 44/747/12 36/84/12 +f 46/85/11 47/80/11 37/81/11 +f 55/86/3 63/748/3 64/87/3 +f 64/87/13 61/749/13 53/89/13 +f 54/90/14 55/99/14 47/91/14 +f 45/93/2 53/750/2 54/90/2 +f 41/94/3 49/751/3 51/69/3 +f 50/95/14 49/751/14 41/94/14 +f 56/96/10 53/752/10 45/97/10 +f 55/99/3 56/96/3 48/98/3 +f 57/100/3 65/753/3 67/101/3 +f 69/103/2 70/132/2 62/104/2 +f 60/106/2 58/117/2 50/107/2 +f 59/109/13 60/754/13 52/110/13 +f 62/112/15 63/748/15 55/86/15 +f 61/114/2 62/112/2 54/113/2 +f 49/116/3 57/755/3 59/109/3 +f 58/117/15 57/755/15 49/116/15 +f 77/118/2 78/121/2 70/119/2 +f 78/121/16 79/756/16 71/122/16 +f 66/123/17 65/753/17 57/100/17 +f 72/125/18 69/757/18 61/126/18 +f 63/128/3 71/758/3 72/125/3 +f 68/129/2 66/123/2 58/124/2 +f 67/101/18 68/759/18 60/131/18 +f 70/132/17 71/758/17 63/128/17 +f 84/133/2 82/164/2 74/134/2 +f 79/136/3 87/760/3 88/137/3 +f 65/139/3 73/761/3 75/140/3 +f 74/142/16 73/761/16 65/139/16 +f 80/144/19 77/762/19 69/145/19 +f 71/122/3 79/756/3 80/144/3 +f 76/147/2 74/142/2 66/143/2 +f 75/140/19 76/763/19 68/149/19 +f 96/150/20 93/764/20 85/151/20 +f 90/153/21 89/765/21 81/154/21 +f 83/156/22 84/766/22 76/157/22 +f 86/159/23 87/760/23 79/136/23 +f 85/161/2 86/159/2 78/160/2 +f 73/163/3 81/767/3 83/156/3 +f 82/164/23 81/767/23 73/163/23 +f 88/137/22 85/768/22 77/165/22 +f 101/166/2 102/169/2 94/167/2 +f 102/169/24 103/769/24 95/170/24 +f 87/171/3 95/770/3 96/150/3 +f 92/172/2 90/153/2 82/155/2 +f 91/174/20 92/771/20 84/175/20 +f 94/177/21 95/770/21 87/171/21 +f 93/179/2 94/177/2 86/178/2 +f 81/154/3 89/765/3 91/174/3 +f 110/181/25 111/772/25 103/182/25 +f 107/184/26 108/773/26 100/185/26 +f 89/187/3 97/774/3 99/188/3 +f 98/190/24 97/774/24 89/187/24 +f 104/192/27 101/775/27 93/193/27 +f 95/170/3 103/769/3 104/192/3 +f 100/195/2 98/190/2 90/191/2 +f 99/188/27 100/776/27 92/197/27 +f 111/198/3 119/777/3 120/199/3 +f 120/199/28 117/778/28 109/201/28 +f 109/202/2 110/181/2 102/183/2 +f 97/204/3 105/779/3 107/184/3 +f 106/205/25 105/779/25 97/204/25 +f 112/207/26 109/780/26 101/208/26 +f 103/182/3 111/772/3 112/207/3 +f 108/210/2 106/205/2 98/206/2 +f 122/212/29 121/781/29 113/213/29 +f 113/213/3 121/781/3 123/215/3 +f 116/217/2 114/228/2 106/218/2 +f 115/220/28 116/782/28 108/221/28 +f 118/223/30 119/777/30 111/198/30 +f 117/225/2 118/223/2 110/224/2 +f 105/227/3 113/783/3 115/220/3 +f 114/228/30 113/783/30 105/227/30 +f 133/229/2 134/232/2 126/230/2 +f 134/232/31 135/784/31 127/233/31 +f 128/234/32 125/785/32 117/235/32 +f 119/237/3 127/786/3 128/234/3 +f 124/238/2 122/212/2 114/214/2 +f 123/215/32 124/787/32 116/240/32 +f 126/241/29 127/786/29 119/237/29 +f 125/243/2 126/241/2 118/242/2 +f 139/245/33 140/788/33 132/246/33 +f 140/248/2 138/272/2 130/249/2 +f 121/251/3 129/789/3 131/252/3 +f 130/254/31 129/789/31 121/251/31 +f 136/256/34 133/790/34 125/257/34 +f 127/233/3 135/784/3 136/256/3 +f 132/259/2 130/254/2 122/255/2 +f 131/252/34 132/791/34 124/261/34 +f 151/262/3 152/265/3 144/263/3 +f 152/265/35 149/792/35 141/266/35 +f 142/267/36 143/276/36 135/268/36 +f 133/270/2 141/793/2 142/267/2 +f 129/271/3 137/794/3 139/245/3 +f 138/272/36 137/794/36 129/271/36 +f 144/273/33 141/795/33 133/274/33 +f 143/276/3 144/273/3 136/275/3 +f 146/277/37 148/796/37 147/278/37 +f 152/280/37 151/797/37 150/281/37 +f 148/283/2 146/294/2 138/284/2 +f 147/286/35 148/798/35 140/287/35 +f 150/289/38 151/262/38 143/264/38 +f 149/291/2 150/289/2 142/290/2 +f 137/293/3 145/799/3 147/286/3 +f 146/294/38 145/799/38 137/293/38 +f 155/295/2 156/310/2 154/296/2 +f 159/298/3 160/309/3 157/299/3 +f 153/301/39 158/800/39 157/302/39 +f 154/304/40 159/801/40 158/305/40 +f 156/307/41 160/802/41 159/308/41 +f 155/295/42 157/299/42 160/309/42 +f 173/311/39 175/326/39 171/312/39 +f 164/314/3 163/319/3 161/315/3 +f 161/315/41 163/319/41 167/317/41 +f 163/319/40 164/314/40 168/320/40 +f 162/316/42 161/315/42 165/322/42 +f 164/314/39 162/316/39 166/324/39 +f 175/326/42 176/332/42 172/327/42 +f 174/329/40 173/311/40 169/330/40 +f 176/332/41 174/329/41 170/333/41 +f 173/311/3 174/329/3 176/332/3 +f 179/335/2 180/350/2 178/336/2 +f 183/338/3 184/349/3 181/339/3 +f 177/341/43 182/803/43 181/342/43 +f 178/344/44 183/804/44 182/345/44 +f 180/347/45 184/805/45 183/348/45 +f 179/335/46 181/339/46 184/349/46 +f 197/351/43 199/366/43 195/352/43 +f 188/354/3 187/359/3 185/355/3 +f 185/355/45 187/359/45 191/357/45 +f 187/359/44 188/354/44 192/360/44 +f 186/356/46 185/355/46 189/362/46 +f 188/354/43 186/356/43 190/364/43 +f 199/366/46 200/372/46 196/367/46 +f 198/369/44 197/351/44 193/370/44 +f 200/372/45 198/369/45 194/373/45 +f 197/351/3 198/369/3 200/372/3 +f 203/375/2 204/390/2 202/376/2 +f 207/378/3 208/389/3 205/379/3 +f 201/381/47 206/806/47 205/382/47 +f 202/384/48 207/807/48 206/385/48 +f 204/387/49 208/808/49 207/388/49 +f 203/375/50 205/379/50 208/389/50 +f 221/391/47 223/406/47 219/392/47 +f 212/394/3 211/399/3 209/395/3 +f 209/395/49 211/399/49 215/397/49 +f 211/399/48 212/394/48 216/400/48 +f 210/396/50 209/395/50 213/402/50 +f 212/394/47 210/396/47 214/404/47 +f 223/406/50 224/412/50 220/407/50 +f 222/409/48 221/391/48 217/410/48 +f 224/412/49 222/409/49 218/413/49 +f 221/391/3 222/409/3 224/412/3 +f 227/415/2 228/430/2 226/416/2 +f 231/418/3 232/429/3 229/419/3 +f 225/421/51 230/809/51 229/422/51 +f 226/424/52 231/810/52 230/425/52 +f 228/427/53 232/811/53 231/428/53 +f 227/415/54 229/419/54 232/429/54 +f 245/431/51 247/446/51 243/432/51 +f 236/434/3 235/439/3 233/435/3 +f 233/435/53 235/439/53 239/437/53 +f 235/439/52 236/434/52 240/440/52 +f 234/436/54 233/435/54 237/442/54 +f 236/434/51 234/436/51 238/444/51 +f 247/446/54 248/452/54 244/447/54 +f 246/449/52 245/431/52 241/450/52 +f 248/452/53 246/449/53 242/453/53 +f 245/431/3 246/449/3 248/452/3 +f 251/455/2 252/470/2 250/456/2 +f 255/458/3 256/469/3 253/459/3 +f 249/461/55 254/812/55 253/462/55 +f 250/464/56 255/813/56 254/465/56 +f 252/467/57 256/814/57 255/468/57 +f 251/455/58 253/459/58 256/469/58 +f 269/471/55 271/486/55 267/472/55 +f 260/474/3 259/479/3 257/475/3 +f 257/475/57 259/479/57 263/477/57 +f 259/479/56 260/474/56 264/480/56 +f 258/476/58 257/475/58 261/482/58 +f 260/474/55 258/476/55 262/484/55 +f 271/486/58 272/492/58 268/487/58 +f 270/489/56 269/471/56 265/490/56 +f 272/492/57 270/489/57 266/493/57 +f 269/471/3 270/489/3 272/492/3 +f 275/495/2 276/510/2 274/496/2 +f 279/498/3 280/509/3 277/499/3 +f 273/501/59 278/815/59 277/502/59 +f 274/504/60 279/816/60 278/505/60 +f 276/507/61 280/817/61 279/508/61 +f 275/495/62 277/499/62 280/509/62 +f 293/511/59 295/526/59 291/512/59 +f 284/514/3 283/519/3 281/515/3 +f 281/515/61 283/519/61 287/517/61 +f 283/519/60 284/514/60 288/520/60 +f 282/516/62 281/515/62 285/522/62 +f 284/514/59 282/516/59 286/524/59 +f 295/526/62 296/532/62 292/527/62 +f 294/529/60 293/511/60 289/530/60 +f 296/532/61 294/529/61 290/533/61 +f 293/511/3 294/529/3 296/532/3 +f 299/535/2 300/550/2 298/536/2 +f 303/538/3 304/549/3 301/539/3 +f 297/541/63 302/818/63 301/542/63 +f 298/544/64 303/819/64 302/545/64 +f 300/547/65 304/820/65 303/548/65 +f 299/535/66 301/539/66 304/549/66 +f 317/551/63 319/566/63 315/552/63 +f 308/554/3 307/559/3 305/555/3 +f 305/555/65 307/559/65 311/557/65 +f 307/559/64 308/554/64 312/560/64 +f 306/556/66 305/555/66 309/562/66 +f 308/554/63 306/556/63 310/564/63 +f 319/566/66 320/572/66 316/567/66 +f 318/569/64 317/551/64 313/570/64 +f 320/572/65 318/569/65 314/573/65 +f 317/551/3 318/569/3 320/572/3 +f 323/575/2 324/590/2 322/576/2 +f 327/578/3 328/589/3 325/579/3 +f 321/581/67 326/821/67 325/582/67 +f 322/584/68 327/822/68 326/585/68 +f 324/587/69 328/823/69 327/588/69 +f 323/575/70 325/579/70 328/589/70 +f 341/591/67 343/606/67 339/592/67 +f 332/594/3 331/599/3 329/595/3 +f 329/595/69 331/599/69 335/597/69 +f 331/599/68 332/594/68 336/600/68 +f 330/596/70 329/595/70 333/602/70 +f 332/594/67 330/596/67 334/604/67 +f 343/606/70 344/612/70 340/607/70 +f 342/609/68 341/591/68 337/610/68 +f 344/612/69 342/609/69 338/613/69 +f 341/591/3 342/609/3 344/612/3 +f 347/615/2 348/630/2 346/616/2 +f 351/618/3 352/629/3 349/619/3 +f 345/621/71 350/824/71 349/622/71 +f 346/624/72 351/825/72 350/625/72 +f 348/627/73 352/826/73 351/628/73 +f 347/615/74 349/619/74 352/629/74 +f 365/631/71 367/646/71 363/632/71 +f 356/634/3 355/639/3 353/635/3 +f 353/635/73 355/639/73 359/637/73 +f 355/639/72 356/634/72 360/640/72 +f 354/636/74 353/635/74 357/642/74 +f 356/634/71 354/636/71 358/644/71 +f 367/646/74 368/652/74 364/647/74 +f 366/649/72 365/631/72 361/650/72 +f 368/652/73 366/649/73 362/653/73 +f 365/631/3 366/649/3 368/652/3 +f 371/655/2 372/670/2 370/656/2 +f 375/658/3 376/669/3 373/659/3 +f 369/661/75 374/827/75 373/662/75 +f 370/664/76 375/828/76 374/665/76 +f 372/667/77 376/829/77 375/668/77 +f 371/655/78 373/659/78 376/669/78 +f 389/671/75 391/686/75 387/672/75 +f 380/674/3 379/679/3 377/675/3 +f 377/675/77 379/679/77 383/677/77 +f 379/679/76 380/674/76 384/680/76 +f 378/676/78 377/675/78 381/682/78 +f 380/674/75 378/676/75 382/684/75 +f 391/686/78 392/692/78 388/687/78 +f 390/689/76 389/671/76 385/690/76 +f 392/692/77 390/689/77 386/693/77 +f 389/671/3 390/689/3 392/692/3 +f 395/695/2 396/710/2 394/696/2 +f 399/698/3 400/709/3 397/699/3 +f 393/701/79 398/830/79 397/702/79 +f 394/704/80 399/831/80 398/705/80 +f 396/707/81 400/832/81 399/708/81 +f 395/695/82 397/699/82 400/709/82 +f 413/711/79 415/726/79 411/712/79 +f 404/714/3 403/719/3 401/715/3 +f 401/715/81 403/719/81 407/717/81 +f 403/719/80 404/714/80 408/720/80 +f 402/716/82 401/715/82 405/722/82 +f 404/714/79 402/716/79 406/724/79 +f 415/726/82 416/732/82 412/727/82 +f 414/729/80 413/711/80 409/730/80 +f 416/732/81 414/729/81 410/733/81 +f 413/711/3 414/729/3 416/732/3 diff --git a/src/main/resources/assets/hbm/models/missile_stealth.obj b/src/main/resources/assets/hbm/models/missile_stealth.obj new file mode 100644 index 000000000..f723b225a --- /dev/null +++ b/src/main/resources/assets/hbm/models/missile_stealth.obj @@ -0,0 +1,384 @@ +# Blender v2.79 (sub 0) OBJ File: 'MissileStealth.blend' +# www.blender.org +o Cylinder +v 0.487139 0.500000 -0.281250 +v 0.487139 0.500000 0.281250 +v 0.000000 0.500000 0.562500 +v -0.487139 0.500000 0.281250 +v 0.000000 0.500000 -0.562500 +v -0.487139 0.500000 -0.281250 +v 0.000000 1.000000 -0.750000 +v -0.649519 1.000000 -0.375000 +v -0.649519 1.000000 0.375000 +v 0.000000 1.000000 0.750000 +v 0.649519 1.000000 0.375000 +v 0.649519 1.000000 -0.375000 +v 0.000000 7.000000 -0.750000 +v -0.649519 7.000000 -0.375000 +v -0.649519 7.000000 0.375000 +v 0.000000 7.000000 0.750000 +v 0.649519 7.000000 0.375000 +v 0.649519 7.000000 -0.375000 +v 0.000000 11.000000 0.000000 +v 0.755918 -0.020288 -1.295622 +v 0.255918 0.979712 -0.429596 +v 0.505918 -0.020288 -0.862609 +v 0.755918 1.479711 -1.295621 +v 0.255918 3.479711 -0.429596 +v 0.310045 0.979712 -0.398346 +v 0.310045 3.479711 -0.398346 +v 0.810045 -0.020288 -1.264372 +v 0.560045 -0.020288 -0.831359 +v 0.810045 1.479711 -1.264371 +v 0.689955 1.479712 1.333705 +v 0.439955 -0.020288 0.900692 +v 0.689955 -0.020288 1.333705 +v 0.189955 3.479711 0.467680 +v 0.189955 0.979712 0.467680 +v 0.244082 3.479711 0.436430 +v 0.744082 1.479712 1.302455 +v 0.494082 -0.020288 0.869442 +v 0.244082 0.979712 0.436430 +v 0.744082 -0.020288 1.302455 +v -1.500000 -0.020288 -0.006834 +v -0.500000 0.979712 -0.006834 +v -1.000000 -0.020288 -0.006834 +v -1.500000 1.479712 -0.006834 +v -0.500000 3.479712 -0.006834 +v -0.500000 0.979712 -0.069334 +v -0.500000 3.479712 -0.069334 +v -1.500000 -0.020288 -0.069334 +v -1.000000 -0.020288 -0.069334 +v -1.500000 1.479712 -0.069334 +v -0.744082 -0.020288 -1.302455 +v -0.244082 0.979712 -0.436430 +v -0.494082 -0.020288 -0.869442 +v -0.744082 1.479711 -1.302455 +v -0.244082 3.479711 -0.436430 +v -0.189955 0.979712 -0.467680 +v -0.189955 3.479711 -0.467680 +v -0.689956 -0.020288 -1.333705 +v -0.439955 -0.020288 -0.900692 +v -0.689956 1.479711 -1.333705 +v 1.500000 1.479712 0.069333 +v 1.000000 -0.020288 0.069334 +v 1.500000 -0.020288 0.069333 +v 0.500000 3.479711 0.069334 +v 0.500000 0.979712 0.069334 +v 0.500000 3.479711 0.006834 +v 1.500000 1.479712 0.006834 +v 1.000000 -0.020288 0.006834 +v 0.500000 0.979712 0.006834 +v 1.500000 -0.020288 0.006833 +v -0.755918 -0.020288 1.295621 +v -0.255918 0.979712 0.429596 +v -0.505918 -0.020288 0.862609 +v -0.755918 1.479712 1.295621 +v -0.255918 3.479712 0.429596 +v -0.310045 0.979712 0.398346 +v -0.310045 3.479712 0.398346 +v -0.810045 -0.020288 1.264371 +v -0.560045 -0.020288 0.831359 +v -0.810045 1.479712 1.264371 +vt 0.400000 0.047619 +vt 0.511111 0.000000 +vt 0.533333 0.047619 +vt 0.666667 0.047619 +vt 0.777778 -0.000000 +vt 0.800000 0.047619 +vt 0.133333 0.047619 +vt 0.244444 0.000000 +vt 0.266667 0.047619 +vt 0.644444 0.000000 +vt 0.022222 0.000000 +vt 0.111111 0.000000 +vt 0.850033 0.099935 +vt 0.800066 0.053571 +vt 0.850033 0.007208 +vt 0.266667 0.619048 +vt 0.000000 0.619048 +vt 0.000000 0.047619 +vt 0.533333 0.619048 +vt 0.133333 0.619048 +vt 0.666667 0.619048 +vt 0.400000 0.619048 +vt 0.377778 0.000000 +vt 0.600000 1.000000 +vt 0.800000 0.619048 +vt 0.733333 1.000000 +vt 0.066667 1.000000 +vt 0.200000 1.000000 +vt 0.333333 1.000000 +vt 0.466667 1.000000 +vt 0.977778 0.392857 +vt 0.977778 0.250000 +vt 0.888889 0.250000 +vt 0.888889 0.250000 +vt 0.977778 0.250000 +vt 0.977778 0.392857 +vt 0.988889 0.392857 +vt 0.988889 0.250000 +vt 0.977778 0.202381 +vt 0.988889 0.202381 +vt 0.988889 0.583333 +vt 0.988889 0.107143 +vt 0.977778 0.107143 +vt 0.988889 0.107143 +vt 0.977778 0.202381 +vt 0.977778 0.107143 +vt 0.988889 0.392857 +vt 0.977778 0.583333 +vt 0.977778 0.392857 +vt 0.988889 0.250000 +vt 0.988889 0.202381 +vt 0.977778 0.250000 +vt 0.888889 0.250000 +vt 0.977778 0.392857 +vt 0.977778 0.250000 +vt 0.888889 0.250000 +vt 0.977778 0.392857 +vt 0.977778 0.250000 +vt 0.888889 0.250000 +vt 0.888889 0.250000 +vt 0.977778 0.250000 +vt 0.977778 0.392857 +vt 0.988889 0.392857 +vt 0.988889 0.250000 +vt 0.977778 0.202381 +vt 0.988889 0.202381 +vt 0.988889 0.583333 +vt 0.977778 0.107143 +vt 0.988889 0.107143 +vt 0.977778 0.392857 +vt 0.977778 0.250000 +vt 0.888889 0.250000 +vt 0.888889 0.250000 +vt 0.977778 0.250000 +vt 0.977778 0.392857 +vt 0.988889 0.392857 +vt 0.988889 0.250000 +vt 0.988889 0.202381 +vt 0.977778 0.202381 +vt 0.988889 0.583333 +vt 0.977778 0.107143 +vt 0.988889 0.107143 +vt 0.988889 0.202381 +vt 0.977778 0.107143 +vt 0.988889 0.107143 +vt 0.988889 0.583333 +vt 0.977778 0.392857 +vt 0.988889 0.392857 +vt 0.977778 0.250000 +vt 0.977778 0.202381 +vt 0.988889 0.250000 +vt 0.888889 0.250000 +vt 0.977778 0.392857 +vt 0.977778 0.250000 +vt 0.888889 0.250000 +vt 0.977778 0.392857 +vt 0.977778 0.250000 +vt 0.888889 0.250000 +vt 0.888889 0.250000 +vt 0.977778 0.250000 +vt 0.977778 0.392857 +vt 0.988889 0.392857 +vt 0.988889 0.250000 +vt 0.988889 0.202381 +vt 0.977778 0.202381 +vt 0.988889 0.583333 +vt 0.977778 0.107143 +vt 0.988889 0.107143 +vt 0.422222 0.000000 +vt 0.688889 0.000000 +vt 0.155556 0.000000 +vt 0.555556 -0.000000 +vt 0.949967 0.007208 +vt 0.999934 0.053571 +vt 0.949967 0.099935 +vt 0.288889 0.000000 +vt 0.800000 0.345238 +vt 0.800000 0.583333 +vt 0.800000 0.583333 +vt 0.800000 0.345238 +vt 0.977778 0.583333 +vt 0.988889 0.583333 +vt 0.800000 0.583333 +vt 0.800000 0.345238 +vt 0.800000 0.345238 +vt 0.800000 0.583333 +vt 0.800000 0.345238 +vt 0.800000 0.583333 +vt 0.800000 0.583333 +vt 0.800000 0.345238 +vt 0.977778 0.583333 +vt 0.800000 0.345238 +vt 0.800000 0.583333 +vt 0.800000 0.583333 +vt 0.800000 0.345238 +vt 0.977778 0.583333 +vt 0.977778 0.583333 +vt 0.800000 0.583333 +vt 0.800000 0.345238 +vt 0.800000 0.345238 +vt 0.800000 0.583333 +vt 0.800000 0.345238 +vt 0.800000 0.583333 +vt 0.800000 0.583333 +vt 0.800000 0.345238 +vt 0.977778 0.583333 +vn -0.4756 -0.3089 -0.8237 +vn -0.4756 -0.3089 0.8237 +vn 0.9511 -0.3089 0.0000 +vn -0.9511 -0.3089 0.0000 +vn 0.4756 -0.3089 0.8237 +vn -0.0000 -1.0000 0.0000 +vn 0.5000 0.0000 -0.8660 +vn 0.5000 0.0000 0.8660 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.5000 0.0000 0.8660 +vn -0.5000 0.0000 -0.8660 +vn 0.4756 -0.3089 -0.8237 +vn -0.9871 0.1603 0.0000 +vn -0.4935 0.1603 0.8548 +vn 0.4935 0.1603 0.8548 +vn 0.9871 0.1603 0.0000 +vn 0.4935 0.1603 -0.8548 +vn -0.4935 0.1603 -0.8548 +vn -0.8660 0.0000 -0.5000 +vn 0.8660 -0.0000 0.5000 +vn 0.4472 0.4472 -0.7746 +vn -0.4472 -0.4472 0.7746 +vn -0.4472 -0.4472 -0.7746 +vn 0.4472 0.4472 0.7746 +vn -0.8660 -0.0000 0.5000 +vn 0.8660 0.0000 -0.5000 +vn 0.0000 0.0000 1.0000 +vn -0.0000 0.0000 -1.0000 +vn -0.8944 0.4472 0.0000 +vn 0.8944 -0.4472 0.0000 +vn -0.4472 0.4472 -0.7746 +vn 0.4472 -0.4472 0.7746 +vn -0.8944 -0.4472 0.0000 +vn 0.8944 0.4472 -0.0000 +vn -0.4472 0.4472 0.7746 +vn 0.4472 -0.4472 -0.7746 +s off +f 7/1/1 6/2/1 8/3/1 +f 9/4/2 3/5/2 10/6/2 +f 11/7/3 1/8/3 12/9/3 +f 8/3/4 4/10/4 9/4/4 +f 11/7/5 3/11/5 2/12/5 +f 2/13/6 3/14/6 4/15/6 +f 7/1/7 18/16/7 12/9/7 +f 11/7/8 16/17/8 10/18/8 +f 9/4/9 14/19/9 8/3/9 +f 12/9/10 17/20/10 11/7/10 +f 10/6/11 15/21/11 9/4/11 +f 8/3/12 13/22/12 7/1/12 +f 12/9/13 5/23/13 7/1/13 +f 14/19/14 15/21/14 19/24/14 +f 15/21/15 16/25/15 19/26/15 +f 16/17/16 17/20/16 19/27/16 +f 17/20/17 18/16/17 19/28/17 +f 18/16/18 13/22/18 19/29/18 +f 13/22/19 14/19/19 19/30/19 +f 23/31/20 20/32/20 22/33/20 +f 28/34/21 27/35/21 29/36/21 +f 23/37/7 27/35/7 20/38/7 +f 20/38/6 28/39/6 22/40/6 +f 24/41/22 29/36/22 23/37/22 +f 21/42/23 28/39/23 25/43/23 +f 38/44/24 31/45/24 34/46/24 +f 36/47/25 33/48/25 30/49/25 +f 39/50/6 31/45/6 37/51/6 +f 36/47/8 32/52/8 39/50/8 +f 31/53/26 32/52/26 30/49/26 +f 36/54/27 39/55/27 37/56/27 +f 43/57/28 40/58/28 42/59/28 +f 48/60/29 47/61/29 49/62/29 +f 43/63/9 47/61/9 40/64/9 +f 40/64/6 48/65/6 42/66/6 +f 44/67/30 49/62/30 43/63/30 +f 42/66/31 45/68/31 41/69/31 +f 53/70/26 50/71/26 52/72/26 +f 58/73/27 57/74/27 59/75/27 +f 53/76/12 57/74/12 50/77/12 +f 52/78/6 57/74/6 58/79/6 +f 54/80/32 59/75/32 53/76/32 +f 52/78/33 55/81/33 51/82/33 +f 67/83/34 64/84/34 68/85/34 +f 65/86/35 60/87/35 66/88/35 +f 67/83/6 62/89/6 61/90/6 +f 66/88/10 62/89/10 69/91/10 +f 61/92/28 62/89/28 60/87/28 +f 66/93/29 69/94/29 67/95/29 +f 73/96/21 70/97/21 72/98/21 +f 78/99/20 77/100/20 79/101/20 +f 73/102/11 77/100/11 70/103/11 +f 72/104/6 77/100/6 78/105/6 +f 74/106/36 79/101/36 73/102/36 +f 72/104/37 75/107/37 71/108/37 +f 7/1/1 5/109/1 6/2/1 +f 9/4/2 4/110/2 3/5/2 +f 11/7/3 2/111/3 1/8/3 +f 8/3/4 6/112/4 4/10/4 +f 11/7/5 10/18/5 3/11/5 +f 4/15/6 6/113/6 5/114/6 +f 5/114/6 1/115/6 4/15/6 +f 1/115/6 2/13/6 4/15/6 +f 7/1/7 13/22/7 18/16/7 +f 11/7/8 17/20/8 16/17/8 +f 9/4/9 15/21/9 14/19/9 +f 12/9/10 18/16/10 17/20/10 +f 10/6/11 16/25/11 15/21/11 +f 8/3/12 14/19/12 13/22/12 +f 12/9/13 1/116/13 5/23/13 +f 22/33/20 21/117/20 23/31/20 +f 21/117/20 24/118/20 23/31/20 +f 26/119/21 25/120/21 29/36/21 +f 25/120/21 28/34/21 29/36/21 +f 23/37/7 29/36/7 27/35/7 +f 20/38/6 27/35/6 28/39/6 +f 24/41/22 26/121/22 29/36/22 +f 21/42/23 22/40/23 28/39/23 +f 38/44/24 37/51/24 31/45/24 +f 36/47/25 35/122/25 33/48/25 +f 39/50/6 32/52/6 31/45/6 +f 36/47/8 30/49/8 32/52/8 +f 33/123/26 34/124/26 30/49/26 +f 34/124/26 31/53/26 30/49/26 +f 37/56/27 38/125/27 36/54/27 +f 38/125/27 35/126/27 36/54/27 +f 42/59/28 41/127/28 43/57/28 +f 41/127/28 44/128/28 43/57/28 +f 46/129/29 45/130/29 49/62/29 +f 45/130/29 48/60/29 49/62/29 +f 43/63/9 49/62/9 47/61/9 +f 40/64/6 47/61/6 48/65/6 +f 44/67/30 46/131/30 49/62/30 +f 42/66/31 48/65/31 45/68/31 +f 52/72/26 51/132/26 53/70/26 +f 51/132/26 54/133/26 53/70/26 +f 56/134/27 55/135/27 59/75/27 +f 55/135/27 58/73/27 59/75/27 +f 53/76/12 59/75/12 57/74/12 +f 52/78/6 50/77/6 57/74/6 +f 54/80/32 56/136/32 59/75/32 +f 52/78/33 58/79/33 55/81/33 +f 67/83/34 61/90/34 64/84/34 +f 65/86/35 63/137/35 60/87/35 +f 67/83/6 69/91/6 62/89/6 +f 66/88/10 60/87/10 62/89/10 +f 63/138/28 64/139/28 60/87/28 +f 64/139/28 61/92/28 60/87/28 +f 67/95/29 68/140/29 66/93/29 +f 68/140/29 65/141/29 66/93/29 +f 72/98/21 71/142/21 73/96/21 +f 71/142/21 74/143/21 73/96/21 +f 76/144/20 75/145/20 79/101/20 +f 75/145/20 78/99/20 79/101/20 +f 73/102/11 79/101/11 77/100/11 +f 72/104/6 70/103/6 77/100/6 +f 74/106/36 76/146/36 79/101/36 +f 72/104/37 78/105/37 75/107/37 diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index adc21ea33..b7038f609 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -202,6 +202,7 @@ "weapon.glReload": {"category": "player", "sounds": [{"name": "weapon/glReload", "stream": false}]}, "weapon.glShoot": {"category": "player", "sounds": [{"name": "weapon/glShoot", "stream": false}]}, "weapon.44Shoot": {"category": "player", "sounds": [{"name": "weapon/44Shoot", "stream": false}]}, + "weapon.trainImpact": {"category": "player", "sounds": [{"name": "weapon/trainImpact", "stream": false}]}, "weapon.dFlash": {"category": "player", "sounds": [{"name": "weapon/dFlash", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/sounds/weapon/trainImpact.ogg b/src/main/resources/assets/hbm/sounds/weapon/trainImpact.ogg new file mode 100644 index 000000000..22b179fda Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/trainImpact.ogg differ diff --git a/src/main/resources/assets/hbm/textures/blocks/inserter_side.png b/src/main/resources/assets/hbm/textures/blocks/inserter_side.png deleted file mode 100644 index 528fcd142..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/inserter_side.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/inserter_top.png b/src/main/resources/assets/hbm/textures/blocks/inserter_top.png deleted file mode 100644 index 703d13408..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/inserter_top.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_deuterium_front.png b/src/main/resources/assets/hbm/textures/blocks/machine_deuterium_front.png deleted file mode 100644 index 5811d823d..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_deuterium_front.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_deuterium_side.png b/src/main/resources/assets/hbm/textures/blocks/machine_deuterium_side.png deleted file mode 100644 index bd8c49821..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_deuterium_side.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_diesel_bottom.png b/src/main/resources/assets/hbm/textures/blocks/machine_diesel_bottom.png deleted file mode 100644 index 8c88d493c..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_diesel_bottom.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_diesel_front.png b/src/main/resources/assets/hbm/textures/blocks/machine_diesel_front.png deleted file mode 100644 index 81a7fb19b..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_diesel_front.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_diesel_side.png b/src/main/resources/assets/hbm/textures/blocks/machine_diesel_side.png deleted file mode 100644 index babe6929c..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_diesel_side.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_diesel_top.png b/src/main/resources/assets/hbm/textures/blocks/machine_diesel_top.png deleted file mode 100644 index 2dc9eeb63..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_diesel_top.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_drill.png b/src/main/resources/assets/hbm/textures/blocks/machine_drill.png deleted file mode 100644 index 379b7371a..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_drill.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_refinery_side.png b/src/main/resources/assets/hbm/textures/blocks/machine_refinery_side.png deleted file mode 100644 index f16831e2f..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_refinery_side.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_refinery_side_alt.png b/src/main/resources/assets/hbm/textures/blocks/machine_refinery_side_alt.png deleted file mode 100644 index 5d6cc6d84..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_refinery_side_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_refinery_top.png b/src/main/resources/assets/hbm/textures/blocks/machine_refinery_top.png deleted file mode 100644 index 6c8ca9a7c..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_refinery_top.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_blue.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_blue.png deleted file mode 100644 index 5ddff42de..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_blue.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_cyan.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_cyan.png deleted file mode 100644 index fac216a59..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_cyan.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_green.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_green.png deleted file mode 100644 index 5b3f8f914..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_green.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_grey.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_grey.png deleted file mode 100644 index 7128c950c..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_grey.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_orange.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_orange.png deleted file mode 100644 index da4f8ad1f..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_orange.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_purple.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_purple.png deleted file mode 100644 index c0b633247..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_purple.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_red.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_red.png deleted file mode 100644 index 076167a90..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_red.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_yellow.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_yellow.png deleted file mode 100644 index 2f54bb11b..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_side_yellow.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top.png deleted file mode 100644 index 8e3391409..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_blue.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_blue.png deleted file mode 100644 index 74c8aba72..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_blue.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_cyan.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_cyan.png deleted file mode 100644 index c62daaeb5..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_cyan.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_green.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_green.png deleted file mode 100644 index 2b436376c..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_green.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_grey.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_grey.png deleted file mode 100644 index aa04dc3c9..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_grey.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_orange.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_orange.png deleted file mode 100644 index b77a727ff..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_orange.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_purple.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_purple.png deleted file mode 100644 index d3853fe50..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_purple.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_red.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_red.png deleted file mode 100644 index 6065c582a..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_red.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_yellow.png b/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_yellow.png deleted file mode 100644 index 00431d187..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_rtg_top_yellow.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/marker_structure.png b/src/main/resources/assets/hbm/textures/blocks/marker_structure.png deleted file mode 100755 index 9d7ad2cad..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/marker_structure.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_overlay_diamond.png b/src/main/resources/assets/hbm/textures/blocks/ore_overlay_diamond.png new file mode 100644 index 000000000..af9244edd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_overlay_diamond.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_overlay_emerald.png b/src/main/resources/assets/hbm/textures/blocks/ore_overlay_emerald.png new file mode 100644 index 000000000..60d3d6548 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_overlay_emerald.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_overlay_schrabidium.png b/src/main/resources/assets/hbm/textures/blocks/ore_overlay_schrabidium.png new file mode 100644 index 000000000..40fafd83f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_overlay_schrabidium.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_overlay_uranium.png b/src/main/resources/assets/hbm/textures/blocks/ore_overlay_uranium.png new file mode 100644 index 000000000..39aef25e1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_overlay_uranium.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_overlay_uranium_scorched.png b/src/main/resources/assets/hbm/textures/blocks/ore_overlay_uranium_scorched.png new file mode 100644 index 000000000..c1a41dd08 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_overlay_uranium_scorched.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/sellafield_slaked_1.png b/src/main/resources/assets/hbm/textures/blocks/sellafield_slaked_1.png new file mode 100644 index 000000000..32bd9afb4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/sellafield_slaked_1.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/sellafield_slaked_2.png b/src/main/resources/assets/hbm/textures/blocks/sellafield_slaked_2.png new file mode 100644 index 000000000..32f32cfa3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/sellafield_slaked_2.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/sellafield_slaked_3.png b/src/main/resources/assets/hbm/textures/blocks/sellafield_slaked_3.png new file mode 100644 index 000000000..834cb05fd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/sellafield_slaked_3.png differ diff --git a/src/main/resources/assets/hbm/textures/items/book_of_2.png b/src/main/resources/assets/hbm/textures/items/book_of_2.png new file mode 100644 index 000000000..d737a7b7b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/book_of_2.png differ diff --git a/src/main/resources/assets/hbm/textures/items/missile_stealth.png b/src/main/resources/assets/hbm/textures/items/missile_stealth.png new file mode 100644 index 000000000..f7a8d3af2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/missile_stealth.png differ diff --git a/src/main/resources/assets/hbm/textures/models/capes/CapeAlcater.png b/src/main/resources/assets/hbm/textures/models/capes/CapeAlcater.png new file mode 100644 index 000000000..0d883299e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/capes/CapeAlcater.png differ diff --git a/src/main/resources/assets/hbm/textures/models/capes/CapeHbm.png b/src/main/resources/assets/hbm/textures/models/capes/CapeHbm.png deleted file mode 100644 index 3a189322f..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/capes/CapeHbm.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/missile_stealth.png b/src/main/resources/assets/hbm/textures/models/missile_stealth.png new file mode 100644 index 000000000..8ebb99bfe Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/missile_stealth.png differ