From 94a47a6f63d6228c3b41153952d7b2493579939f Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 4 May 2026 14:50:25 +0200 Subject: [PATCH] gramfeld, why hast thou consumed all the pasta --- changelog | 33 +++++- gradle.properties | 2 +- src/main/java/com/hbm/blocks/ModBlocks.java | 14 +-- .../java/com/hbm/blocks/generic/Spikes.java | 54 ++++----- .../com/hbm/blocks/turret/TurretBrandon.java | 23 ---- .../entity/missile/EntityMissileBaseNT.java | 2 +- .../inventory/material/MatDistribution.java | 4 +- .../inventory/recipes/ArcWelderRecipes.java | 4 + .../recipes/AssemblyMachineRecipes.java | 5 +- .../recipes/ChemicalPlantRecipes.java | 8 +- .../inventory/recipes/anvil/AnvilRecipes.java | 2 +- src/main/java/com/hbm/items/ModItems.java | 3 - .../com/hbm/items/machine/ItemScraps.java | 18 +-- .../hbm/items/tool/ItemOreDensityScanner.java | 18 +++ src/main/java/com/hbm/lib/HbmWorldGen.java | 2 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 1 - .../java/com/hbm/main/CraftingManager.java | 26 ++-- src/main/java/com/hbm/main/MainRegistry.java | 1 + .../java/com/hbm/main/ResourceManager.java | 4 - .../tileentity/RenderTurretBrandon.java | 43 ------- .../java/com/hbm/tileentity/TileMappings.java | 1 - .../machine/TileEntityReactorZirnox.java | 2 +- .../machine/storage/TileEntityBarrel.java | 4 +- .../storage/TileEntityBatterySocket.java | 10 +- .../storage/TileEntityMachineBattery.java | 10 +- .../storage/TileEntityMachineFluidTank.java | 4 +- .../turret/TileEntityTurretBaseArtillery.java | 34 +++++- .../turret/TileEntityTurretBaseNT.java | 49 +++++++- .../turret/TileEntityTurretBrandon.java | 48 -------- .../com/hbm/util/DamageResistanceHandler.java | 8 +- .../com/hbm/world/feature/BedrockOre.java | 33 ++++++ src/main/resources/assets/hbm/lang/de_DE.lang | 107 +---------------- src/main/resources/assets/hbm/lang/en_US.lang | 112 +----------------- .../hbm/textures/gui/machine/gui_radar.png | Bin 21539 -> 0 bytes .../gui/machine/gui_rbmk_numitron.png | Bin 1809 -> 2958 bytes .../hbm/textures/models/turrets/brandon.png | Bin 1121 -> 0 bytes .../textures/models/turrets/brandon_drum.png | Bin 608 -> 0 bytes 38 files changed, 265 insertions(+), 426 deletions(-) delete mode 100644 src/main/java/com/hbm/blocks/turret/TurretBrandon.java delete mode 100644 src/main/java/com/hbm/render/tileentity/RenderTurretBrandon.java delete mode 100644 src/main/java/com/hbm/tileentity/turret/TileEntityTurretBrandon.java delete mode 100644 src/main/resources/assets/hbm/textures/gui/machine/gui_radar.png delete mode 100644 src/main/resources/assets/hbm/textures/models/turrets/brandon.png delete mode 100644 src/main/resources/assets/hbm/textures/models/turrets/brandon_drum.png diff --git a/changelog b/changelog index d6fe0941a..c0f86ae33 100644 --- a/changelog +++ b/changelog @@ -12,8 +12,13 @@ * If two pipe anchors are connected, one having a type set and one still being "none", instead of erroring, the "none" pipe will assume the other one's type * Self-chargers in battery sockets now produce unreliable power output which constantly fluctuates * Self-chargers in battery sockets now cause static discharges in regular intervals -* Added more RoR functionality to the boilers, industrial combustion engine, CCGT and ZIRNOX +* Added more RoR functionality to the boilers, industrial combustion engine, heat exchangers, fluid burners, CCGT and ZIRNOX +* Turrets can now be toggled and configured with RoR +* Artillery turrets can now have targets enqueued with RoR +* The RBMK numeric displays can now be controlled via OpenComputers, and come with built-in settings for shortening numbers and displaying leading zeroes * The industrial steam turbine now has OpenComputers integration +* The RBMK fuel crane can now report stats for the loaded fuel rod to OpenComputers +* The RBMK console can now detect and send all stored RBMK fuel rods in storage columns via OpenComputers * Crates now open when right-clicked by default, holding shift is required to place them down * The automatic buzzsaw can now burn coal tar creosote * The old cluster type effect used by MPBs and cluster missiles now use the new generic projectile system with actual bomblet models @@ -24,9 +29,30 @@ * Tungsten carbide is made in the pyrolysis oven using syngas and tungsten powder * Many recipes that used to use neutron reflectors now use alternative materials like HSS plates or weapon steel * This effectively means that neutron reflectors are post oil 3 + * PWR neutron reflectors have an alternate recipe allowing them to be made with weaponsteel * Removed legacy battery items and selfchargers * Added more QMAW pages * Expensive mode plastic sheets now only use rubber instead of rubber or latex +* Updated the texture on the fop thing +* RoR info on tanks now displays the (0-3) value range of the mode setting +* Spike, tesla and microwave damage have now been categorized as physical, energy and energy respectively, making armors resistant against them +* Fau and DNT armor now have explicit physical resistances, making them harder to pierce +* The rubber recipe now yields two rubber per sulfur used +* Foundry scraps now show their material in the name instead of the description +* Bedrock ore minimum tier and bore fluid is no longer fixed at (1/NONE), rather it scales with the quality of the bedrock ore at that spot + * The bedrock ore density scanner will try to predict the required tier and bore fluid at the current spot, and show it as part of the HUD + * This only applies to newly generated bedrock ore patches +* Reduced industrial turbine cost from 3 titanium steam turbine blades to 2 +* Motors now have yet another alternate recipe in the arc welder, using steel plates but substituting the coils with a dense red copper wires +* Dense red copper wires can now be welded +* The old factory hull blocks have been deprecated +* The singularity screwdriver, being with no purpose ever since the fwatz got removed, has been removed as well +* Desh motors now use dense golden wires instead of golden ring coils +* Added "desh from cracked oil" recipe + * Default recipe, doesn't need a blueprint + * Uses cracked light oil instead of regular light oil (500mB at 1 PU, or 2.5x more than the standard recipe, plus one compressor) + * Uses 100mB of mercury instead of 200mB +* All standard coils now have alternate recipes, using a steel core instead of an iron one ## Fixed * Fixed uncrafting of the nickel RTG pellet not respecting item metadata @@ -35,4 +61,7 @@ * Fixed dispensed dynamites being considered impact grenades for some reason * Fixed RBMK flux detection with RoR and OC not working * Moved the soyuz launcher core component recipe to the assembler, fixing an issue where the component recipe is not available in 528 mode -* Fixed crash caused by using the copy tool on uncolored RBMK control rods \ No newline at end of file +* Fixed crash caused by using the copy tool on uncolored RBMK control rods +* Fixed turbine blade smelting in the crucible only yielding 2 ingots worth of material +* Fixed cluster missiles never properly splitting before impact + * The final splitting height depends on the trajectory's arc, cluster missiles are therefore not suitable for very long distances diff --git a/gradle.properties b/gradle.properties index ed73b6b38..0d9971fd7 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=5671 +mod_build_number=5685 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 764527e5d..1b1167623 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -846,8 +846,8 @@ public class ModBlocks { public static Block struct_watz_core; public static Block struct_icf_core; - public static Block factory_titanium_hull; - public static Block factory_advanced_hull; + @Deprecated public static Block factory_titanium_hull; + @Deprecated public static Block factory_advanced_hull; public static Block cm_block; public static Block cm_sheet; @@ -1917,9 +1917,9 @@ public class ModBlocks { pneumatic_tube = new PneumoTube().setBlockName("pneumatic_tube").setStepSound(ModSoundTypes.pipe).setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pneumatic_tube"); pneumatic_tube_paintable = new PneumoTubePaintableBlock().setBlockName("pneumatic_tube_paintable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - pneumatic_storage_access = new PneumoStorageAccess().setBlockName("pneumatic_storage_access").setStepSound(ModSoundTypes.pipe).setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_access"); - pneumatic_storage_clutter = new PneumoStorageClutter().setBlockName("pneumatic_storage_clutter").setStepSound(ModSoundTypes.pipe).setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_clutter"); - pneumatic_storage_mono = new PneumoStorageMono().setBlockName("pneumatic_storage_mono").setStepSound(ModSoundTypes.pipe).setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_mono"); + pneumatic_storage_access = new PneumoStorageAccess().setBlockName("pneumatic_storage_access").setStepSound(ModSoundTypes.pipe).setHardness(0.1F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_access"); + pneumatic_storage_clutter = new PneumoStorageClutter().setBlockName("pneumatic_storage_clutter").setStepSound(ModSoundTypes.pipe).setHardness(0.1F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_clutter"); + pneumatic_storage_mono = new PneumoStorageMono().setBlockName("pneumatic_storage_mono").setStepSound(ModSoundTypes.pipe).setHardness(0.1F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_mono"); chain = new BlockChain(Material.iron).setBlockName("dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":chain"); @@ -1962,8 +1962,8 @@ public class ModBlocks { struct_watz_core = new BlockWatzStruct(Material.iron).setBlockName("struct_watz_core").setLightLevel(1F).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":struct_watz_core"); struct_icf_core = new BlockICFStruct(Material.iron).setBlockName("struct_icf_core").setLightLevel(1F).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":struct_icf_core"); - factory_titanium_hull = new BlockGeneric(Material.iron).setBlockName("factory_titanium_hull").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":factory_titanium_hull"); - factory_advanced_hull = new BlockGeneric(Material.iron).setBlockName("factory_advanced_hull").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":factory_advanced_hull"); + factory_titanium_hull = new BlockGeneric(Material.iron).setBlockName("factory_titanium_hull").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":factory_titanium_hull"); + factory_advanced_hull = new BlockGeneric(Material.iron).setBlockName("factory_advanced_hull").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":factory_advanced_hull"); cm_block = new BlockCM(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_block").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_block"); cm_sheet = new BlockCM(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_sheet").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_sheet"); diff --git a/src/main/java/com/hbm/blocks/generic/Spikes.java b/src/main/java/com/hbm/blocks/generic/Spikes.java index 3065a5020..399679d42 100644 --- a/src/main/java/com/hbm/blocks/generic/Spikes.java +++ b/src/main/java/com/hbm/blocks/generic/Spikes.java @@ -12,38 +12,28 @@ import net.minecraft.world.World; public class Spikes extends Block { - public Spikes(Material mat) { - super(mat); - } - - public boolean isOpaqueCube() - { - return false; - } - - public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) - { - return null; - } - - public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - - public int getRenderType() - { - return renderID; - } - - public boolean renderAsNormalBlock() - { - return false; + public Spikes(Material mat) { + super(mat); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + return null; + } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override public int getRenderType() { return renderID; } + @Override public boolean renderAsNormalBlock() { return false; } + @Override public boolean isOpaqueCube() { return false; } + + @Override + public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity ent) { + + if(ent instanceof EntityLivingBase && ent.motionY < -0.1) { + if(ent.attackEntityFrom(ModDamageSource.spikes, 100)) + world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:entity.slicer", 1.0F, 1.0F); + } } - - public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity ent) { - - if(ent instanceof EntityLivingBase && ent.motionY < -0.1) { - if(ent.attackEntityFrom(ModDamageSource.spikes, 100)) - world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:entity.slicer", 1.0F, 1.0F); - } - } } diff --git a/src/main/java/com/hbm/blocks/turret/TurretBrandon.java b/src/main/java/com/hbm/blocks/turret/TurretBrandon.java deleted file mode 100644 index 2c2029063..000000000 --- a/src/main/java/com/hbm/blocks/turret/TurretBrandon.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.hbm.blocks.turret; - -import com.hbm.tileentity.TileEntityProxyCombo; -import com.hbm.tileentity.turret.TileEntityTurretBrandon; - -import net.minecraft.block.material.Material; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -public class TurretBrandon extends TurretBaseNT { - - public TurretBrandon(Material mat) { - super(mat); - } - - @Override - public TileEntity createNewTileEntity(World world, int meta) { - - if(meta >= 12) - return new TileEntityTurretBrandon(); - return new TileEntityProxyCombo().inventory().power(); - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java index 6da5ec5a8..30eda7173 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java @@ -149,7 +149,7 @@ public abstract class EntityMissileBaseNT extends EntityThrowableInterp implemen motionY -= 0.05; } - if(motionY < -velocity && this.isCluster) { + if(motionY < -1.5 && this.isCluster) { cluster(); this.setDead(); return; diff --git a/src/main/java/com/hbm/inventory/material/MatDistribution.java b/src/main/java/com/hbm/inventory/material/MatDistribution.java index 6daea2e40..ac05c6637 100644 --- a/src/main/java/com/hbm/inventory/material/MatDistribution.java +++ b/src/main/java/com/hbm/inventory/material/MatDistribution.java @@ -47,8 +47,8 @@ public class MatDistribution extends SerializableRecipe { registerEntry(Items.minecart, MAT_IRON, INGOT.q(5)); //castables - registerEntry(ModItems.blade_titanium, MAT_TITANIUM, INGOT.q(2)); - registerEntry(ModItems.blade_tungsten, MAT_TUNGSTEN, INGOT.q(2)); + registerEntry(ModItems.blade_titanium, MAT_TITANIUM, INGOT.q(3)); + registerEntry(ModItems.blade_tungsten, MAT_TUNGSTEN, INGOT.q(3)); registerEntry(ModItems.blades_steel, MAT_STEEL, INGOT.q(4)); registerEntry(ModItems.blades_titanium, MAT_TITANIUM, INGOT.q(4)); registerEntry(ModItems.blades_advanced_alloy, MAT_ALLOY, INGOT.q(4)); diff --git a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java index 104f40590..8b4c1806c 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java @@ -37,6 +37,8 @@ public class ArcWelderRecipes extends SerializableRecipe { new OreDictStack(IRON.plate(), 2), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor, 2), 100, 400L, new OreDictStack(STEEL.plate(), 1), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor, 2), 100, 400L, + new OreDictStack(STEEL.plate(), 2), new OreDictStack(MINGRADE.wireDense(), 2))); recipes.add(new ArcWelderRecipe(DictFrame.fromOne(ModItems.part_generic, EnumPartType.LDE), 200, 5_000L, new OreDictStack(AL.plate(), 4), new OreDictStack(FIBER.ingot(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot()))); recipes.add(new ArcWelderRecipe(DictFrame.fromOne(ModItems.part_generic, EnumPartType.LDE), 200, 10_000L, @@ -47,6 +49,8 @@ public class ArcWelderRecipes extends SerializableRecipe { //Dense Wires recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_COPPER.id), 100, 10_000L, new OreDictStack(CU.wireFine(), 8))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_MINGRADE.id), 100, 10_000L, + new OreDictStack(MINGRADE.wireFine(), 8))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_ALLOY.id), 100, 10_000L, new OreDictStack(ALLOY.wireFine(), 8))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_GOLD.id), 100, 10_000L, diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index cdb46d914..c31a406f3 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -383,7 +383,7 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItems(new OreDictStack(STEEL.pipe(), 12), new OreDictStack(STEEL.ingot(), 24), new OreDictStack(CU.plate(), 24), new OreDictStack(NB.ingot(), 4), new OreDictStack(RUBBER.ingot(), 12), new ComparableStack(ModBlocks.glass_quartz, 16)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.HEAVY_FRAME), new OreDictStack(NB.ingot(), 16), new OreDictStack(RUBBER.ingot(), 16), new ComparableStack(ModBlocks.glass_quartz, 16))); this.register(new GenericRecipe("ass.iturbine").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_industrial_turbine, 1)) - .inputItems(new OreDictStack(STEEL.plate(), 16), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.turbine_titanium, 3), new OreDictStack(GOLD.wireDense(), 4), new OreDictStack(DURA.pipe(), 4), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.BASIC)) + .inputItems(new OreDictStack(STEEL.plate(), 16), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.turbine_titanium, 2), new OreDictStack(GOLD.wireDense(), 4), new OreDictStack(DURA.pipe(), 4), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.BASIC)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.turbine_titanium, 3), new OreDictStack(GOLD.wireDense(), 16), new OreDictStack(DURA.pipe(), 16), new ComparableStack(ModItems.item_expensive, 3, EnumExpensiveType.CIRCUIT))); this.register(new GenericRecipe("ass.leviturbine").setup(600, 100).outputItems(new ItemStack(ModBlocks.machine_chungus, 1)) .inputItems(new OreDictStack(STEEL.shell(), 6), new OreDictStack(STEEL.plateWelded(), 16), new OreDictStack(TI.plate(), 12), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 16), new ComparableStack(ModItems.turbine_tungsten, 5), new ComparableStack(ModItems.turbine_titanium, 3), new ComparableStack(ModItems.flywheel_beryllium, 1), new OreDictStack(GOLD.wireDense(), 48), new OreDictStack(DURA.pipe(), 16), new OreDictStack(STEEL.pipe(), 16)) @@ -506,6 +506,9 @@ public class AssemblyMachineRecipes extends GenericRecipes { this.register(new GenericRecipe("ass.pwrreflector").setup(200, 500).outputItems(new ItemStack(ModBlocks.pwr_reflector, 4)) .inputItems(new OreDictStack(STEEL.plateCast(), 2), new ComparableStack(ModItems.neutron_reflector, 4)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.STEEL_PLATING), new ComparableStack(ModItems.neutron_reflector, 16))); + this.register(new GenericRecipe("ass.pwrreflectoralt").setup(200, 500).outputItems(new ItemStack(ModBlocks.pwr_reflector, 4)) + .inputItems(new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(WEAPONSTEEL.plate(), 16)) + .inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.STEEL_PLATING), new OreDictStack(WEAPONSTEEL.plate(), 32))); this.register(new GenericRecipe("ass.pwrcasing").setup(200, 500).outputItems(new ItemStack(ModBlocks.pwr_casing, 4)) .inputItems(new OreDictStack(PB.plate(), 4), new OreDictStack(ANY_CONCRETE.any(), 4)) .inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ANY_CONCRETE.any(), 4))); diff --git a/src/main/java/com/hbm/inventory/recipes/ChemicalPlantRecipes.java b/src/main/java/com/hbm/inventory/recipes/ChemicalPlantRecipes.java index 88606f017..9fb9ddff7 100644 --- a/src/main/java/com/hbm/inventory/recipes/ChemicalPlantRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ChemicalPlantRecipes.java @@ -193,6 +193,12 @@ public class ChemicalPlantRecipes extends GenericRecipes { new FluidStack[] {new FluidStack(Fluids.LIGHTOIL, 200)} : new FluidStack[] {new FluidStack(Fluids.LIGHTOIL, 200), new FluidStack(Fluids.MERCURY, 200)}) .outputItems(new ItemStack(ModItems.ingot_desh))); + this.register(new GenericRecipe("chem.deshcracked").setupNamed(100, 100) + .inputItems(new ComparableStack(ModItems.powder_desh_mix)) + .inputFluids((GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) ? + new FluidStack[] {new FluidStack(Fluids.LIGHTOIL_CRACK, 500)} : + new FluidStack[] {new FluidStack(Fluids.LIGHTOIL_CRACK, 500, 1), new FluidStack(Fluids.MERCURY, 100)}) + .outputItems(new ItemStack(ModItems.ingot_desh))); this.register(new GenericRecipe("chem.polymer").setup(100, 100) .inputItems(new OreDictStack(COAL.dust(), 2), new OreDictStack(F.dust())) @@ -206,7 +212,7 @@ public class ChemicalPlantRecipes extends GenericRecipes { this.register(new GenericRecipe("chem.rubber").setup(100, 200) .inputItems(new OreDictStack(S.dust())) .inputFluids(new FluidStack(Fluids.UNSATURATEDS, 500, GeneralConfig.enable528PressurizedRecipes ? 2 : 0)) - .outputItems(new ItemStack(ModItems.ingot_rubber))); + .outputItems(new ItemStack(ModItems.ingot_rubber, 2))); this.register(new GenericRecipe("chem.hardplastic").setup(100, 1_000) .inputFluids(new FluidStack(Fluids.XYLENE, 500, GeneralConfig.enable528PressurizedRecipes ? 2 : 0), new FluidStack(Fluids.PHOSGENE, 500, GeneralConfig.enable528PressurizedRecipes ? 2 : 0)) diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 8254c965f..54bba8c4a 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -216,7 +216,7 @@ public class AnvilRecipes extends SerializableRecipe { new AStack[] {new OreDictStack(IRON.plate(), 2), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus)}, new AnvilOutput(new ItemStack(ModItems.motor, 2))).setTier(1)); constructionRecipes.add(new AnvilConstructionRecipe( - new AStack[] {new ComparableStack(ModItems.motor), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(DESH.ingot(), 2), new ComparableStack(ModItems.coil_gold_torus)}, + new AStack[] {new ComparableStack(ModItems.motor), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(DESH.ingot(), 2), new OreDictStack(GOLD.wireDense())}, new AnvilOutput(new ItemStack(ModItems.motor_desh, 1))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe( diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index f42a98753..78a804e86 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1565,7 +1565,6 @@ public class ModItems { public static Item blowtorch; public static Item acetylene_torch; public static Item boltgun; - public static Item overfuse; public static Item arc_electrode; public static Item arc_electrode_burnt; @@ -3731,7 +3730,6 @@ public class ModItems { blowtorch = new ItemBlowtorch().setUnlocalizedName("blowtorch"); acetylene_torch = new ItemBlowtorch().setUnlocalizedName("acetylene_torch"); boltgun = new ItemBoltgun().setUnlocalizedName("boltgun"); - overfuse = new ItemCustomLore().setUnlocalizedName("overfuse").setMaxStackSize(1).setFull3D().setTextureName(RefStrings.MODID + ":overfuse"); arc_electrode = new ItemArcElectrode().setUnlocalizedName("arc_electrode").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":arc_electrode"); arc_electrode_burnt = new ItemArcElectrodeBurnt().setUnlocalizedName("arc_electrode_burnt").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":arc_electrode_burnt"); @@ -5284,7 +5282,6 @@ public class ModItems { GameRegistry.registerItem(blowtorch, blowtorch.getUnlocalizedName()); GameRegistry.registerItem(acetylene_torch, acetylene_torch.getUnlocalizedName()); GameRegistry.registerItem(boltgun, boltgun.getUnlocalizedName()); - GameRegistry.registerItem(overfuse, overfuse.getUnlocalizedName()); GameRegistry.registerItem(arc_electrode, arc_electrode.getUnlocalizedName()); GameRegistry.registerItem(arc_electrode_burnt, arc_electrode_burnt.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/machine/ItemScraps.java b/src/main/java/com/hbm/items/machine/ItemScraps.java index 72788e5ac..f2f0f6007 100644 --- a/src/main/java/com/hbm/items/machine/ItemScraps.java +++ b/src/main/java/com/hbm/items/machine/ItemScraps.java @@ -87,14 +87,18 @@ public class ItemScraps extends ItemAutogen { @Override public String getItemStackDisplayName(ItemStack stack) { - if(stack.hasTagCompound() && stack.stackTagCompound.getBoolean("liquid")) { - MaterialStack contents = getMats(stack); - if(contents != null) { - return I18nUtil.resolveKey(contents.material.getUnlocalizedName()); + MaterialStack contents = getMats(stack); + if(contents != null) { + String matName = contents.material.getUnlocalizedName(); + + if(stack.hasTagCompound() && stack.stackTagCompound.getBoolean("liquid")) { + return I18nUtil.resolveKey(matName); + } else { + return ("" + StatCollector.translateToLocalFormatted(this.getUnlocalizedNameInefficiently(stack) + ".name", matName)).trim(); } } - return ("" + StatCollector.translateToLocal(this.getUnlocalizedNameInefficiently(stack) + ".name")).trim(); + return "Foundry Scraps"; } @Override @@ -103,11 +107,11 @@ public class ItemScraps extends ItemAutogen { if(contents != null) { + list.add(Mats.formatAmount(contents.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); + if(stack.hasTagCompound() && stack.stackTagCompound.getBoolean("liquid")) { list.add(Mats.formatAmount(contents.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); if(contents.material.smeltable == contents.material.smeltable.ADDITIVE) list.add(EnumChatFormatting.DARK_RED + "Additive, not castable!"); - } else { - list.add(I18nUtil.resolveKey(contents.material.getUnlocalizedName()) + ", " + Mats.formatAmount(contents.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); } } } diff --git a/src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java b/src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java index 8ccbe4163..d82f0e904 100644 --- a/src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java +++ b/src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java @@ -1,10 +1,12 @@ package com.hbm.items.tool; +import com.hbm.inventory.FluidStack; import com.hbm.items.special.ItemBedrockOreBase; import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.util.ChatBuilder; +import com.hbm.world.feature.BedrockOre; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayerMP; @@ -22,6 +24,8 @@ public class ItemOreDensityScanner extends Item { EntityPlayerMP player = (EntityPlayerMP) entity; + double totalLevel = 0D; + for(BedrockOreType type : BedrockOreType.values()) { double level = ItemBedrockOreBase.getOreLevel((int) Math.floor(player.posX), (int) Math.floor(player.posZ), type); PacketDispatcher.wrapper.sendTo(new PlayerInformPacket( @@ -30,7 +34,21 @@ public class ItemOreDensityScanner extends Item { .nextTranslation(translateDensity(level)).color(getColor(level)) .next(")").color(EnumChatFormatting.RESET).flush(), 777 + type.ordinal(), 4000), player); + totalLevel += level; } + totalLevel /= BedrockOreType.values().length; + + int tier = BedrockOre.getTier(totalLevel); + FluidStack boreFluid = BedrockOre.getBoreFluid(totalLevel); + + ChatBuilder builder = ChatBuilder.start("Tier " + tier); + if(boreFluid != null) { + builder.next(" - " + boreFluid.fill + "mB ") + .nextTranslation(boreFluid.type.getUnlocalizedName()); + } + builder.color(EnumChatFormatting.YELLOW); + + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(builder.flush(), 777 + BedrockOreType.values().length, 4000), player); } public static String translateDensity(double density) { diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index fd886f72e..e8a4171ad 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -146,7 +146,7 @@ public class HbmWorldGen implements IWorldGenerator { int randPosX = i + rand.nextInt(2) + 8; int randPosZ = j + rand.nextInt(2) + 8; - BedrockOre.generate(world, randPosX, randPosZ, new ItemStack(ModItems.bedrock_ore_base), null, 0xD78A16, 1); + BedrockOre.generateAuto(world, randPosX, randPosZ); } } else { diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 7662937d1..17c8762d6 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 (5671)"; + public static final String VERSION = "1.0.27 BETA (5685)"; //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 6639e83b9..38a046975 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -240,7 +240,6 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretHowardDamaged.class, new RenderTurretHowardDamaged()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretMaxwell.class, new RenderTurretMaxwell()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretFritz.class, new RenderTurretFritz()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretBrandon.class, new RenderTurretBrandon()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretArty.class, new RenderTurretArty()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretHIMARS.class, new RenderTurretHIMARS()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretSentry.class, new RenderTurretSentry()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index d9e51839f..3ccde0b5f 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -170,20 +170,25 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.biomass, 4), new Object[] { DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED), DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED), DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED), DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED), DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED), DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED) }); addRecipeAuto(new ItemStack(ModItems.coil_copper, 1), new Object[] { "WWW", "WIW", "WWW", 'W', MINGRADE.wireFine(), 'I', IRON.ingot() }); + addRecipeAuto(new ItemStack(ModItems.coil_copper, 1), new Object[] { "WWW", "WIW", "WWW", 'W', MINGRADE.wireFine(), 'I', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModItems.coil_advanced_alloy, 1), new Object[] { "WWW", "WIW", "WWW", 'W', ALLOY.wireFine(), 'I', IRON.ingot() }); + addRecipeAuto(new ItemStack(ModItems.coil_advanced_alloy, 1), new Object[] { "WWW", "WIW", "WWW", 'W', ALLOY.wireFine(), 'I', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModItems.coil_gold, 1), new Object[] { "WWW", "WIW", "WWW", 'W', GOLD.wireFine(), 'I', IRON.ingot() }); - addRecipeAuto(new ItemStack(ModItems.coil_copper_torus, 2), new Object[] { " C ", "CPC", " C ", 'P', IRON.plate(), 'C', ModItems.coil_copper }); - addRecipeAuto(new ItemStack(ModItems.coil_advanced_torus, 2), new Object[] { " C ", "CPC", " C ", 'P', IRON.plate(), 'C', ModItems.coil_advanced_alloy }); - addRecipeAuto(new ItemStack(ModItems.coil_gold_torus, 2), new Object[] { " C ", "CPC", " C ", 'P', IRON.plate(), 'C', ModItems.coil_gold }); - addRecipeAuto(new ItemStack(ModItems.coil_copper_torus, 2), new Object[] { " C ", "CPC", " C ", 'P', STEEL.plate(), 'C', ModItems.coil_copper }); - addRecipeAuto(new ItemStack(ModItems.coil_advanced_torus, 2), new Object[] { " C ", "CPC", " C ", 'P', STEEL.plate(), 'C', ModItems.coil_advanced_alloy }); - addRecipeAuto(new ItemStack(ModItems.coil_gold_torus, 2), new Object[] { " C ", "CPC", " C ", 'P', STEEL.plate(), 'C', ModItems.coil_gold }); - addRecipeAuto(new ItemStack(ModItems.coil_tungsten, 1), new Object[] { "WWW", "WIW", "WWW", 'W', W.wireFine(), 'I', IRON.ingot() }); + addRecipeAuto(new ItemStack(ModItems.coil_gold, 1), new Object[] { "WWW", "WIW", "WWW", 'W', GOLD.wireFine(), 'I', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModItems.coil_magnetized_tungsten, 1), new Object[] { "WWW", "WIW", "WWW", 'W', MAGTUNG.wireFine(), 'I', IRON.ingot() }); + addRecipeAuto(new ItemStack(ModItems.coil_magnetized_tungsten, 1), new Object[] { "WWW", "WIW", "WWW", 'W', MAGTUNG.wireFine(), 'I', STEEL.ingot() }); + addRecipeAuto(new ItemStack(ModItems.coil_tungsten, 1), new Object[] { "WWW", "WIW", "WWW", 'W', W.wireFine(), 'I', IRON.ingot() }); + addRecipeAuto(new ItemStack(ModItems.coil_tungsten, 1), new Object[] { "WWW", "WIW", "WWW", 'W', W.wireFine(), 'I', STEEL.ingot() }); + addRecipeAuto(new ItemStack(ModItems.coil_copper_torus, 2), new Object[] { " C ", "CPC", " C ", 'P', IRON.plate(), 'C', ModItems.coil_copper }); + addRecipeAuto(new ItemStack(ModItems.coil_copper_torus, 2), new Object[] { " C ", "CPC", " C ", 'P', STEEL.plate(), 'C', ModItems.coil_copper }); + addRecipeAuto(new ItemStack(ModItems.coil_advanced_torus, 2), new Object[] { " C ", "CPC", " C ", 'P', IRON.plate(), 'C', ModItems.coil_advanced_alloy }); + addRecipeAuto(new ItemStack(ModItems.coil_advanced_torus, 2), new Object[] { " C ", "CPC", " C ", 'P', STEEL.plate(), 'C', ModItems.coil_advanced_alloy }); + addRecipeAuto(new ItemStack(ModItems.coil_gold_torus, 2), new Object[] { " C ", "CPC", " C ", 'P', IRON.plate(), 'C', ModItems.coil_gold }); + addRecipeAuto(new ItemStack(ModItems.coil_gold_torus, 2), new Object[] { " C ", "CPC", " C ", 'P', STEEL.plate(), 'C', ModItems.coil_gold }); addRecipeAuto(new ItemStack(ModItems.tank_steel, 2), new Object[] { "STS", "S S", "STS", 'S', STEEL.plate(), 'T', TI.plate() }); addRecipeAuto(new ItemStack(ModItems.motor, 2), new Object[] { " R ", "ICI", "ITI", 'R', MINGRADE.wireFine(), 'T', ModItems.coil_copper_torus, 'I', IRON.plate(), 'C', ModItems.coil_copper }); addRecipeAuto(new ItemStack(ModItems.motor, 2), new Object[] { " R ", "ICI", " T ", 'R', MINGRADE.wireFine(), 'T', ModItems.coil_copper_torus, 'I', STEEL.plate(), 'C', ModItems.coil_copper }); - addRecipeAuto(new ItemStack(ModItems.motor_desh, 1), new Object[] { "PCP", "DMD", "PCP", 'P', ANY_PLASTIC.ingot(), 'C', ModItems.coil_gold_torus, 'D', DESH.ingot(), 'M', ModItems.motor }); + addRecipeAuto(new ItemStack(ModItems.motor_desh, 1), new Object[] { "PCP", "DMD", "PCP", 'P', ANY_PLASTIC.ingot(), 'C', GOLD.wireDense(), 'D', DESH.ingot(), 'M', ModItems.motor }); addRecipeAuto(new ItemStack(ModItems.motor_bismuth, 1), new Object[] { "BCB", "SDS", "BCB", 'B', BI.nugget(), 'C', ModBlocks.hadron_coil_alloy, 'S', STEEL.plateCast(), 'D', DURA.ingot() }); addRecipeAuto(new ItemStack(ModItems.deuterium_filter, 1), new Object[] { "TST", "SCS", "TST", 'T', ANY_RESISTANTALLOY.ingot(), 'S', S.dust(), 'C', ModItems.catalyst_clay }); @@ -320,9 +325,6 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.upgrade_template, 1), new Object[] { "WIW", "PCP", "WIW", 'W', CU.wireFine(), 'I', IRON.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'P', ModItems.plate_polymer }); addRecipeAuto(new ItemStack(ModItems.upgrade_template, 1), new Object[] { "WIW", "PCP", "WIW", 'W', CU.wireFine(), 'I', ANY_PLASTIC.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'P', ModItems.plate_polymer }); - addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_titanium_hull), 8), new Object[] { "PIP", "I I", "PIP", 'P', TI.plate(), 'I', TI.ingot() }); - addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_advanced_hull), 8), new Object[] { "PIP", "I I", "PIP", 'P', ALLOY.plate(), 'I', ALLOY.ingot() }); - addRecipeAuto(DictFrame.fromOne(ModItems.arc_electrode, EnumElectrodeType.GRAPHITE), new Object[] { "C", "T", "C", 'C', GRAPHITE.ingot(), 'T', STEEL.bolt() }); addRecipeAuto(DictFrame.fromOne(ModItems.arc_electrode, EnumElectrodeType.GRAPHITE), new Object[] { "C", "T", "C", 'C', PETCOKE.gem(), 'T', ANY_TAR.any() }); addRecipeAuto(DictFrame.fromOne(ModItems.arc_electrode, EnumElectrodeType.LANTHANIUM), new Object[] { "C", "T", "C", 'C', LA.ingot(), 'T', KEY_BRICK }); @@ -343,8 +345,6 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.crystal_xen, 1), new Object[] { "EEE", "EIE", "EEE", 'E', ModItems.powder_power, 'I', EUPH.ingot() }); addShapelessAuto(new ItemStack(ModItems.fuse, 1), new Object[] { STEEL.plate(), ModItems.plate_polymer, W.wireFine() }); - addShapelessAuto(new ItemStack(ModItems.overfuse, 1), new Object[] { STEEL.bolt(), NP237.dust(), I.dust(), TH232.dust(), AT.dust(), ND.dust(), CU.plateCast(), ModItems.black_hole, CS.dust() }); - addShapelessAuto(new ItemStack(ModItems.overfuse, 1), new Object[] { STEEL.bolt(), ST.dust(), BR.dust(), CO.dust(), TS.dust(), NB.dust(), CU.plateCast(), ModItems.black_hole, CE.dust() }); addRecipeAuto(new ItemStack(ModItems.blades_steel, 1), new Object[] { " P ", "PIP", " P ", 'P', STEEL.plate(), 'I', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModItems.blades_titanium, 1), new Object[] { " P ", "PIP", " P ", 'P', TI.plate(), 'I', TI.ingot() }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index d5407f218..5fd775159 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1604,6 +1604,7 @@ public class MainRegistry { ignoreMappings.add("hbm:item.battery_sc_gold"); ignoreMappings.add("hbm:item.battery_sc_lead"); ignoreMappings.add("hbm:item.battery_sc_americium"); + ignoreMappings.add("hbm:item.overfuse"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index b2c16d869..36ed87261 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -27,7 +27,6 @@ public class ResourceManager { public static final IModelCustom turret_howard = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_howard.obj")).asVBO(); public static final IModelCustom turret_maxwell = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_microwave.obj")).asVBO(); public static final IModelCustom turret_fritz = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_fritz.obj")).asVBO(); - public static final IModelCustom turret_brandon = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_brandon.obj")).asVBO(); public static final IModelCustom turret_arty = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_arty.obj")).asVBO(); public static final IModelCustom turret_himars = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_himars.obj")).asVBO(); public static final IModelCustom turret_sentry = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_sentry.obj")).asVBO(); @@ -444,7 +443,6 @@ public class ResourceManager { public static final ResourceLocation turret_howard_barrels_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/howard_barrels.png"); public static final ResourceLocation turret_maxwell_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/maxwell.png"); public static final ResourceLocation turret_fritz_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/fritz.png"); - public static final ResourceLocation turret_brandon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/brandon.png"); public static final ResourceLocation turret_arty_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/arty.png"); public static final ResourceLocation turret_himars_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/himars.png"); public static final ResourceLocation turret_sentry_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/sentry.png"); @@ -458,8 +456,6 @@ public class ResourceManager { public static final ResourceLocation turret_howard_rusted = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/rusted/howard.png"); public static final ResourceLocation turret_howard_barrels_rusted = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/rusted/howard_barrels.png"); - public static final ResourceLocation brandon_explosive = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/brandon_drum.png"); - //Landmines public static final ResourceLocation mine_ap_grass_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_ap_grass.png"); public static final ResourceLocation mine_ap_desert_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_ap_desert.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderTurretBrandon.java b/src/main/java/com/hbm/render/tileentity/RenderTurretBrandon.java deleted file mode 100644 index 8c184665a..000000000 --- a/src/main/java/com/hbm/render/tileentity/RenderTurretBrandon.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.hbm.render.tileentity; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.fluid.Fluids; -import com.hbm.main.ResourceManager; -import com.hbm.tileentity.turret.TileEntityTurretBrandon; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Vec3; - -public class RenderTurretBrandon extends RenderTurretBase { - - @Override - public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) { - - TileEntityTurretBrandon turret = (TileEntityTurretBrandon)te; - Vec3 pos = turret.getHorizontalOffset(); - - GL11.glPushMatrix(); - GL11.glTranslated(x + pos.xCoord, y, z + pos.zCoord); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glShadeModel(GL11.GL_SMOOTH); - - this.renderConnectors(turret, true, false, Fluids.NONE); - - bindTexture(ResourceManager.turret_base_tex); - ResourceManager.turret_chekhov.renderPart("Base"); - double pitch = Math.toDegrees(turret.lastRotationPitch + (turret.rotationPitch - turret.lastRotationPitch) * interp); - - GL11.glTranslated(0, 1.5, 0); - GL11.glRotated(pitch, 0, 0, 1); - GL11.glTranslated(0, -1.5, 0); - bindTexture(ResourceManager.turret_brandon_tex); - ResourceManager.turret_brandon.renderPart("Launcher"); - bindTexture(ResourceManager.brandon_explosive); - ResourceManager.turret_brandon.renderPart("Barrel"); - - GL11.glShadeModel(GL11.GL_FLAT); - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index f290b4af0..7ac651a45 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -285,7 +285,6 @@ public class TileMappings { put(TileEntityTurretHowardDamaged.class, "tileentity_turret_howard_damaged"); put(TileEntityTurretMaxwell.class, "tileentity_turret_maxwell"); put(TileEntityTurretFritz.class, "tileentity_turret_fritz"); - put(TileEntityTurretBrandon.class, "tileentity_turret_brandon"); put(TileEntityTurretArty.class, "tileentity_turret_arty"); put(TileEntityTurretHIMARS.class, "tileentity_turret_himars"); put(TileEntityTurretSentry.class, "tileentity_turret_sentry"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java index 0950227f6..c0833b105 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java @@ -609,7 +609,7 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC PREFIX_VALUE + "steam", PREFIX_VALUE + "co2", PREFIX_VALUE + "state", - PREFIX_FUNCTION + "setState" + NAME_SEPARATOR + "active", + PREFIX_FUNCTION + "setState" + NAME_SEPARATOR + "active (0 or 1)", PREFIX_FUNCTION + "ventCO2" }; } 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 49019ccf8..8f6d4f87e 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -412,8 +412,8 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom PREFIX_VALUE + "type", PREFIX_VALUE + "fill", PREFIX_VALUE + "fillpercent", - PREFIX_FUNCTION + "setmode" + NAME_SEPARATOR + "mode", - PREFIX_FUNCTION + "setmode" + NAME_SEPARATOR + "mode" + PARAM_SEPARATOR + "fallback", + PREFIX_FUNCTION + "setmode" + NAME_SEPARATOR + "mode (0-3)", + PREFIX_FUNCTION + "setmode" + NAME_SEPARATOR + "mode" + PARAM_SEPARATOR + "fallback (0-3)", }; } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBatterySocket.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBatterySocket.java index e3e262618..cc9b9b75f 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBatterySocket.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBatterySocket.java @@ -312,11 +312,11 @@ public class TileEntityBatterySocket extends TileEntityBatteryBase implements IR PREFIX_VALUE + "fill", PREFIX_VALUE + "fillpercent", PREFIX_VALUE + "delta", - PREFIX_FUNCTION + "setmode" + NAME_SEPARATOR + "mode", - PREFIX_FUNCTION + "setmode" + NAME_SEPARATOR + "mode" + PARAM_SEPARATOR + "fallback", - PREFIX_FUNCTION + "setredmode" + NAME_SEPARATOR + "mode", - PREFIX_FUNCTION + "setredmode" + NAME_SEPARATOR + "mode" + PARAM_SEPARATOR + "fallback", - PREFIX_FUNCTION + "setpriority" + NAME_SEPARATOR + "priority", + PREFIX_FUNCTION + "setmode" + NAME_SEPARATOR + "mode (0-3)", + PREFIX_FUNCTION + "setmode" + NAME_SEPARATOR + "mode" + PARAM_SEPARATOR + "fallback (0-3)", + PREFIX_FUNCTION + "setredmode" + NAME_SEPARATOR + "mode (0-3)", + PREFIX_FUNCTION + "setredmode" + NAME_SEPARATOR + "mode" + PARAM_SEPARATOR + "fallback (0-3)", + PREFIX_FUNCTION + "setpriority" + NAME_SEPARATOR + "priority (0-2)", }; } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java index 23666eac8..b581618c1 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -378,11 +378,11 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I PREFIX_VALUE + "fill", PREFIX_VALUE + "fillpercent", PREFIX_VALUE + "delta", - PREFIX_FUNCTION + "setmode" + NAME_SEPARATOR + "mode", - PREFIX_FUNCTION + "setmode" + NAME_SEPARATOR + "mode" + PARAM_SEPARATOR + "fallback", - PREFIX_FUNCTION + "setredmode" + NAME_SEPARATOR + "mode", - PREFIX_FUNCTION + "setredmode" + NAME_SEPARATOR + "mode" + PARAM_SEPARATOR + "fallback", - PREFIX_FUNCTION + "setpriority" + NAME_SEPARATOR + "priority", + PREFIX_FUNCTION + "setmode" + NAME_SEPARATOR + "mode (0-3)", + PREFIX_FUNCTION + "setmode" + NAME_SEPARATOR + "mode" + PARAM_SEPARATOR + "fallback (0-3)", + PREFIX_FUNCTION + "setredmode" + NAME_SEPARATOR + "mode (0-3)", + PREFIX_FUNCTION + "setredmode" + NAME_SEPARATOR + "mode" + PARAM_SEPARATOR + "fallback (0-3)", + PREFIX_FUNCTION + "setpriority" + NAME_SEPARATOR + "priority (0-2)", }; } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index b8f4c199f..e4c7be1ea 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -552,8 +552,8 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements PREFIX_VALUE + "type", PREFIX_VALUE + "fill", PREFIX_VALUE + "fillpercent", - PREFIX_FUNCTION + "setmode" + NAME_SEPARATOR + "mode", - PREFIX_FUNCTION + "setmode" + NAME_SEPARATOR + "mode" + PARAM_SEPARATOR + "fallback", + PREFIX_FUNCTION + "setmode" + NAME_SEPARATOR + "mode (0-3)", + PREFIX_FUNCTION + "setmode" + NAME_SEPARATOR + "mode" + PARAM_SEPARATOR + "fallback (0-3)", }; } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java index be61fcf98..e971b8e6f 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java @@ -6,6 +6,7 @@ import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.tileentity.IRadarCommandReceiver; +import api.hbm.redstoneoverradio.IRORInteractive; import cpw.mods.fml.common.Optional; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; @@ -14,7 +15,7 @@ import net.minecraft.entity.Entity; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; -public abstract class TileEntityTurretBaseArtillery extends TileEntityTurretBaseNT implements IRadarCommandReceiver { +public abstract class TileEntityTurretBaseArtillery extends TileEntityTurretBaseNT implements IRadarCommandReceiver, IRORInteractive { protected List targetQueue = new ArrayList(); @@ -91,4 +92,35 @@ public abstract class TileEntityTurretBaseArtillery extends TileEntityTurretBase public Object[] getTargetDistance(Context context, Arguments args) { return new Object[] {Math.sqrt(Math.pow(xCoord - args.checkDouble(0), 2)+Math.pow(yCoord - args.checkDouble(1), 2)+Math.pow(zCoord - args.checkDouble(2), 2))}; } + + @Override + public String[] getFunctionInfo() { + return new String[] { + PREFIX_FUNCTION + "setActive" + NAME_SEPARATOR + "active (0 or 1)", + PREFIX_FUNCTION + "targetPlayers" + NAME_SEPARATOR + "enabled (0 or 1)", + PREFIX_FUNCTION + "targetAnimals" + NAME_SEPARATOR + "enabled (0 or 1)", + PREFIX_FUNCTION + "targetMobs" + NAME_SEPARATOR + "enabled (0 or 1)", + PREFIX_FUNCTION + "targetMachines" + NAME_SEPARATOR + "enabled (0 or 1)", + PREFIX_FUNCTION + "addWhitelist" + NAME_SEPARATOR + "name", + PREFIX_FUNCTION + "removeWhitelist" + NAME_SEPARATOR + "name", + PREFIX_FUNCTION + "enqueue" + NAME_SEPARATOR + "x" + PARAM_SEPARATOR + "y" + PARAM_SEPARATOR + "z", + }; + } + + @Override + public String runRORFunction(String name, String[] params) { + super.runRORFunction(name, params); + + if((PREFIX_FUNCTION + "enqueue").equals(name) && params.length > 2) { + try { + int x = Integer.parseInt(params[0]); + int y = Integer.parseInt(params[1]); + int z = Integer.parseInt(params[2]); + this.sendCommandPosition(x, y, z); + this.markChanged(); + } catch(NumberFormatException e) {} + } + + return null; + } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index 67455333e..1d75b1679 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -30,6 +30,7 @@ import com.hbm.util.CompatExternal; import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.entity.IRadarDetectableNT; +import api.hbm.redstoneoverradio.IRORInteractive; import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -66,7 +67,7 @@ import net.minecraftforge.common.util.ForgeDirection; * */ @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IControlReceiver, IGUIProvider, SimpleComponent, CompatHandler.OCComponent { +public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IControlReceiver, IGUIProvider, SimpleComponent, IRORInteractive, CompatHandler.OCComponent { @Override public boolean hasPermission(EntityPlayer player) { @@ -1057,4 +1058,50 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple } throw new NoSuchMethodException(); } + + @Override + public String[] getFunctionInfo() { + return new String[] { + PREFIX_FUNCTION + "setActive" + NAME_SEPARATOR + "active (0 or 1)", + PREFIX_FUNCTION + "targetPlayers" + NAME_SEPARATOR + "enabled (0 or 1)", + PREFIX_FUNCTION + "targetAnimals" + NAME_SEPARATOR + "enabled (0 or 1)", + PREFIX_FUNCTION + "targetMobs" + NAME_SEPARATOR + "enabled (0 or 1)", + PREFIX_FUNCTION + "targetMachines" + NAME_SEPARATOR + "enabled (0 or 1)", + PREFIX_FUNCTION + "addWhitelist" + NAME_SEPARATOR + "name", + PREFIX_FUNCTION + "removeWhitelist" + NAME_SEPARATOR + "name", + }; + } + + @Override + public String runRORFunction(String name, String[] params) { + if((PREFIX_FUNCTION + "setActive").equals(name) && params.length > 0) { + try { this.isOn = (Integer.parseInt(params[0]) == 1); this.markChanged(); } catch(NumberFormatException e) {} + } + if((PREFIX_FUNCTION + "targetPlayers").equals(name) && params.length > 0) { + try { this.targetPlayers = (Integer.parseInt(params[0]) == 1); this.markChanged(); } catch(NumberFormatException e) {} + } + if((PREFIX_FUNCTION + "targetAnimals").equals(name) && params.length > 0) { + try { this.targetAnimals = (Integer.parseInt(params[0]) == 1); this.markChanged(); } catch(NumberFormatException e) {} + } + if((PREFIX_FUNCTION + "targetMobs").equals(name) && params.length > 0) { + try { this.targetMobs = (Integer.parseInt(params[0]) == 1); this.markChanged(); } catch(NumberFormatException e) {} + } + if((PREFIX_FUNCTION + "targetMachines").equals(name) && params.length > 0) { + try { this.targetMachines = (Integer.parseInt(params[0]) == 1); this.markChanged(); } catch(NumberFormatException e) {} + } + if((PREFIX_FUNCTION + "addWhitelist").equals(name) && params.length > 0) { + String playerName = params[0]; + List whitelist = this.getWhitelist(); + if(!whitelist.contains(playerName)) this.addName(playerName); + this.markChanged(); + } + if((PREFIX_FUNCTION + "removeWhitelist").equals(name) && params.length > 0) { + String playerName = params[0]; + List whitelist = this.getWhitelist(); + if(whitelist.contains(playerName)) this.removeName(whitelist.indexOf(playerName)); + this.markChanged(); + } + + return null; + } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBrandon.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBrandon.java deleted file mode 100644 index e04fef2f6..000000000 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBrandon.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.hbm.tileentity.turret; - -import java.util.List; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.world.World; - -public class TileEntityTurretBrandon extends TileEntityTurretBaseNT { - - @Override - public long getMaxPower() { - // TODO Auto-generated method stub - return 0; - } - - @Override - public void updateFiringTick() { - // TODO Auto-generated method stub - - } - - @Override - protected List getAmmoList() { - // TODO Auto-generated method stub - return null; - } - - @Override - public String getName() { - // TODO Auto-generated method stub - return null; - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return null; - } - - @Override - @SideOnly(Side.CLIENT) - public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return null; - } - -} diff --git a/src/main/java/com/hbm/util/DamageResistanceHandler.java b/src/main/java/com/hbm/util/DamageResistanceHandler.java index 7ba9daa7b..22dc26b74 100644 --- a/src/main/java/com/hbm/util/DamageResistanceHandler.java +++ b/src/main/java/com/hbm/util/DamageResistanceHandler.java @@ -19,6 +19,7 @@ import com.google.gson.stream.JsonWriter; import com.hbm.entity.mob.EntityCreeperNuclear; import com.hbm.items.ModItems; import com.hbm.items.armor.ArmorFSBPowered; +import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; import com.hbm.util.Tuple.Quartet; import com.hbm.util.i18n.I18nUtil; @@ -222,12 +223,14 @@ public class DamageResistanceHandler { .addExact(DamageSource.fall.damageType, 0F, 1F) .setOther(2F, 0.25F)); registerSet(ModItems.fau_helmet, ModItems.fau_plate, ModItems.fau_legs, ModItems.fau_boots, new ResistanceStats() + .addCategory(CATEGORY_PHYSICAL, 100F, 0.99F) .addCategory(CATEGORY_EXPLOSION, 50F, 0.95F) - .addCategory(CATEGORY_FIRE, 0F, 1F) + .addCategory(CATEGORY_FIRE, 100F, 1F) .addExact(DamageClass.LASER.name(), 25F, 0.95F) .addExact(DamageSource.fall.damageType, 0F, 1F) .setOther(100F, 0.99F)); registerSet(ModItems.dns_helmet, ModItems.dns_plate, ModItems.dns_legs, ModItems.dns_boots, new ResistanceStats() + .addCategory(CATEGORY_PHYSICAL, 1000F, 1F) .addCategory(CATEGORY_EXPLOSION, 100F, 0.99F) .addCategory(CATEGORY_FIRE, 0F, 1F) .setOther(1000F, 1F)); @@ -472,6 +475,9 @@ public class DamageResistanceHandler { if(source.damageType.toLowerCase(Locale.US).equals(DamageClass.SUBATOMIC.name().toLowerCase(Locale.US))) return CATEGORY_ENERGY; if(source.damageType.toLowerCase(Locale.US).equals(DamageClass.ELECTRIC.name().toLowerCase(Locale.US))) return CATEGORY_ENERGY; if(source == DamageSource.cactus) return CATEGORY_PHYSICAL; + if(source == ModDamageSource.spikes) return CATEGORY_PHYSICAL; + if(source == ModDamageSource.electricity) return CATEGORY_ENERGY; + if(source == ModDamageSource.microwave) return CATEGORY_ENERGY; if(source instanceof EntityDamageSource) return CATEGORY_PHYSICAL; return source.damageType; } diff --git a/src/main/java/com/hbm/world/feature/BedrockOre.java b/src/main/java/com/hbm/world/feature/BedrockOre.java index 629658a85..110675609 100644 --- a/src/main/java/com/hbm/world/feature/BedrockOre.java +++ b/src/main/java/com/hbm/world/feature/BedrockOre.java @@ -12,7 +12,9 @@ import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ItemEnums.EnumChunkType; import com.hbm.items.ModItems; +import com.hbm.items.special.ItemBedrockOreBase; import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; import com.hbm.util.WeightedRandomGeneric; import net.minecraft.block.Block; @@ -61,6 +63,37 @@ public class BedrockOre { generate(world, x, z, stack, acid, color, tier, ModBlocks.stone_depth); } + public static void generateAuto(World world, int x, int z) { + double totalLevel = 0; + for(BedrockOreType type : BedrockOreType.values()) { + totalLevel += ItemBedrockOreBase.getOreLevel(x, z, type); + } + + totalLevel /= BedrockOreType.values().length; + FluidStack acid = getBoreFluid(totalLevel); + int tier = getTier(totalLevel); + + generate(world, x, z, new ItemStack(ModItems.bedrock_ore_base), acid, 0xD78A16, tier, ModBlocks.stone_depth); + } + + public static final FluidStack BORE_TIER_1 = null; + public static final FluidStack BORE_TIER_2 = new FluidStack(Fluids.WATER, 1_000); + public static final FluidStack BORE_TIER_3 = new FluidStack(Fluids.SULFURIC_ACID, 1_000); + public static final FluidStack BORE_TIER_4 = new FluidStack(Fluids.SOLVENT, 2_000); + + public static FluidStack getBoreFluid(double density) { + if(density > 1.5) return BORE_TIER_4; + if(density > 1) return BORE_TIER_3; + if(density > 0.75) return BORE_TIER_2; + return BORE_TIER_1; + } + public static int getTier(double density) { + if(density > 1.5) return 4; + if(density > 1) return 3; + if(density > 0.75) return 2; + return 1; + } + public static void generate(World world, int x, int z, ItemStack stack, FluidStack acid, int color, int tier, Block depthRock) { for(int ix = x - 1; ix <= x + 1; ix++) { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index ff06f8ec0..351be16c2 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -206,110 +206,7 @@ chem.coallube=Schmiermittel aus Kohleteer chem.heavylube=Schmiermittel aus Schweröl chem.oilelectrodes=Instant-Elektroden (Heizöl) chem.lubeelectrodes=Instant-Elektroden (Schmiermittel) - -chem.ARSENIC=Arsenextraktion -chem.ASPHALT=Asphaltherstellung -chem.BAKELITE=Bakelitherstellung -chem.BALEFIRE=BF-Raketentreibstoffherstellung -chem.BP_BIOFUEL=Biodieselumesterung -chem.BP_BIOGAS=Biogasherstellung -chem.C4=C4-Synthese -chem.CC_CENTRIFUGE=Chlorokalzitspaltung -chem.CC_ELECTROLYSIS=Kalziumchloridelektrolyse -chem.CC_HEATING=Fortgeschrittene Kohleverflüssigung -chem.CC_HEAVY=Einfache Kohleverflüssigung -chem.CC_I=Erweiterte Kohleverflüssigung -chem.CC_NAPHTHA=Naphtha-Kohleverflüssigung -chem.CC_OIL=Kohleverflüssigung -chem.CIRCUIT_4=Überstaktete Schaltkreisherstellung -chem.CIRCUIT_5=Leistungsstarke Schaltkreisherstellung -chem.CO2=CO2-Herstellung -chem.COALGAS_LEADED=Bleikohlebenzin mischen -chem.COLTAN_CLEANING=Coltanreinigung -chem.COLTAN_CRYSTAL=Tantal-Kristallisierung -chem.COLTAN_PAIN=Pandemonium(III)tantalit-Herstellung -chem.CONCRETE=Betonherstellung -chem.CONCRETE_ASBESTOS=Asbestbetonherstellung -chem.COOLANT=Kühlflüssigkeit mischen -chem.CORDITE=Korditherstellung -chem.CRYOGEL=Kryogel mischen -chem.DESH=Deshherstellung -chem.DEUTERIUM=Deuteriumextrahierung -chem.DYN_DNT=Dineutronium-Dynosynthese -chem.DYN_EUPH=Euphemium-Dynosynthese -chem.DYN_SCHRAB=Schrabidium-Dynosynthese -chem.DYNAMITE=Dynamitherstellung -chem.ELECTROLYSIS=Kryo-Elektrolyse -chem.EPEARL=Enderperlen-Synthese -chem.ETHANOL=Ethanolherstellung -chem.FC_BITUMEN=Bitumen-Cracking -chem.FC_DIESEL_KEROSENE=Diesel-Cracking -chem.FC_GAS_PETROLEUM=Erdgas-Cracking -chem.FC_I_NAPHTHA=Industriöl-Cracking -chem.FC_KEROSENE_PETROLEUM=Kerosin-Cracking -chem.FP_HEAVYOIL=Schwerölverarbeitung -chem.FP_LIGHTOIL=Leichtölverarbeitung -chem.FP_NAPHTHA=Mitteldestillatsverarbeitung -chem.FP_SMEAR=Industrieölverarbeitung -chem.FR_PETROIL=Gemischherstellung -chem.FR_REOIL=Öl-Wiederaufbereitung -chem.GASOLINE=Benzinherstellung -chem.GASOLINE_LEADED=Bleibenzin mischen -chem.HELIUM3=Helium-3-Extraktion aus Mondgestein -chem.KEVLAR=Kevlarverbundherstellung -chem.LAMINATE=Laminatherstellung -chem.LPG=Petroleumgasverflüssigung -chem.LUBRICANT=Schmieröl mischen -chem.NITAN=NITAN-Supertreibstoff mischen -chem.NITRIC_ACID=Salpetersäureherstellung -chem.OIL_SAND=Teersand-Extraktion -chem.OSMIRIDIUM_DEATH=Osmiridiumlösung-Herstellung -chem.PC=Polycarbonatherstellung -chem.PC_ELECTROLYSIS=Kaliumchloridelektrolyse -chem.PEROXIDE=Wasserstoffperoxidherstellung -chem.PET=PET-Synthese -chem.PETROIL_LEADED=Bleigemisch mischen -chem.POLYMER=Polymersynthese -chem.PUF6=Plutoniumhexafluoridproduktion -chem.PVC=Polyvinylchloridherstellung -chem.RUBBER=Gummiherstellung -chem.SAS3=Schrabidiumtrisulfatherstellung -chem.SATURN=Saturnitherstellung -chem.SCHRABIDATE=Eisenschrabidatherstellung -chem.SCHRABIDIC=Schrabidische Säure mischen -chem.SF_BIOFUEL=Biodieselverfestigung -chem.SF_BIOGAS=Biogasverfestigung -chem.SF_DIESEL=Dieselverfestigung -chem.SF_GAS=Erdgasverfestigung -chem.SF_HEATINGOIL=Heizölverfestigung -chem.SF_HEAVYOIL=Schwerölverfestigung -chem.SF_KEROSENE=Kerosinverfestigung -chem.SF_LIGHTOIL=Leichtölverfestigung -chem.SF_LUBRICANT=Schmiermittelverfestigung -chem.SF_NAPHTHA=Mitteldestillatsverfestigung -chem.SF_OIL=Rohölverfestigung -chem.SF_PETROIL=Gemischverfestigung -chem.SF_PETROLEUM=Petroleumgasverfestigung -chem.SF_RECLAIMED=Verfestigung von wiederaufbereitetem Industrieöl -chem.SF_SMEAR=Industrieölverfestigung -chem.SHELL_CHLORINE=Chlorgas-Artilleriegeschoss-Herstellung -chem.SHELL_MUSTARD=Senfgas-Artilleriegeschoss-Herstellung -chem.SHELL_PHOSGENE=Phosgen-Artilleriegeschoss-Herstellung -chem.SOLID_FUEL=Festbrennstoffherstellung -chem.SOLVENT=Organisches Lösungsmittel mischen -chem.STEAM=Wasser kochen -chem.SULFURIC_ACID=Schwefelsäureherstellung -chem.TATB=TATB-Synthese -chem.TEL=TEL mischen -chem.TEST=Test -chem.THORIUM_SALT=Thoriumsalz-Anreicherung -chem.TNT=TNT-Synthese -chem.UF6=Uranhexafluoridproduktion -chem.VIT_GAS=Gas-Atommüllvitrifizierung -chem.VIT_LIQUID=Flüssig-Atommüllvitrifizierung -chem.XENON=Lindeverfahren (Xenon) -chem.XENON_OXY=Verbessertes Lindeverfahren (Xenon) -chem.YELLOWCAKE=Yellowcakeproduktion +chem.deshcracked=Desh aus Cracköl container.ammoBag=Mun-Tasche container.annihilator=Vernichter @@ -3402,7 +3299,7 @@ item.scrap.name=Schrott item.scrap_nuclear.name=Radioaktiver Schutt item.scrap_oil.name=Öliger Schutt item.scrap_plastic.name=Geschreddertes Plastik -item.scraps.name=Gießerei-Schutt +item.scraps.name=%s-Schutt item.screwdriver.name=Schraubenzieher item.screwdriver.desc=Könnte statt einer Sicherung verwendet werden... item.screwdriver_desh.name=Desh-Schraubenzieher diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 2c4b9b481..408604858 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -596,115 +596,7 @@ chem.coallube=Lubricant from Coal Tar Creosote chem.heavylube=Lubricant from Heavy Oil chem.oilelectrodes=Instant Electrodes (Heating Oil) chem.lubeelectrodes=Instant Electrodes (Lubricant) - -chem.ARSENIC=Arsenic Extraction -chem.ASPHALT=Asphalt Production -chem.BAKELITE=Bakelite Production -chem.BALEFIRE=BF Rocket Fuel Mixing -chem.BP_BIOFUEL=Biofuel Transesterification -chem.BP_BIOGAS=Biogas Production -chem.C4=C-4 Synthesis -chem.CC_CENTRIFUGE=Chlorocalcite Separation -chem.CC_ELECTROLYSIS=Calcium Chloride Electrolysis -chem.CC_HEATING=Advanced Coal Liquefaction -chem.CC_HEAVY=Basic Coal Liquefaction -chem.CC_I=Enhanced Coal Liquefaction -chem.CC_NAPHTHA=Naphtha Coal Liquefaction -chem.CC_OIL=Coal Liquefaction -chem.CIRCUIT_4=Overclocked Circuit Production -chem.CIRCUIT_5=High Performance Circuit Production -chem.CO2=Carbon Dioxide Production -chem.COALGAS_LEADED=Leaded Coal Gasoline Mixing -chem.COLTAN_CLEANING=Coltan Purifying -chem.COLTAN_CRYSTAL=Tantalum Crystallizing -chem.COLTAN_PAIN=Pandemonium(III)tantalite Production -chem.CONCRETE=Concrete Production -chem.CONCRETE_ASBESTOS=Asbestos Concrete Production -chem.COOLANT=Coolant Mixing -chem.CORDITE=Cordite Production -chem.CRYOGEL=Cryogel Mixing -chem.DESH=Desh Production -chem.DEUTERIUM=Deuterium Extraction -chem.DUCRETE=Ducrete Production -chem.DYN_DNT=Dineutronium Dynosynthesis -chem.DYN_EUPH=Euphemium Dynosynthesis -chem.DYN_SCHRAB=Schrabidium Dynosynthesis -chem.DYNAMITE=Dynamite Synthesis -chem.ELECTROLYSIS=Cryo-Electrolysis -chem.EPEARL=Ender Pearl Synthesis -chem.ETHANOL=Ethanol Production -chem.FC_BITUMEN=Bitumen Cracking -chem.FC_DIESEL_KEROSENE=Diesel Cracking -chem.FC_GAS_PETROLEUM=Gas Cracking -chem.FC_I_NAPHTHA=Industrial Oil Cracking -chem.FC_KEROSENE_PETROLEUM=Kerosene Cracking -chem.FP_HEAVYOIL=Heavy Oil Processing -chem.FP_LIGHTOIL=Light Oil Processing -chem.FP_NAPHTHA=Naphtha Processing -chem.FP_SMEAR=Industrial Oil Processing -chem.FR_PETROIL=Petroil Mixing -chem.FR_REOIL=Oil Reprocessing -chem.FRACKSOL=Fracking Solution Production -chem.GASOLINE=Gasoline Production -chem.GASOLINE_LEADED=Leaded Gasoline Mixing -chem.HEAVY_ELECTROLYSIS=Heavy Water Cryo-Electrolysis -chem.HELIUM3=Helium-3 Extraction from Moon Turf -chem.KEVLAR=Kevlar Compound Production -chem.LAMINATE=Laminate Production -chem.LPG=Petroleum Gas Liquefaction -chem.LUBRICANT=Lubricant Mixing -chem.METH=Methamphetamine Synthesis -chem.MEAT_PROCESSING=Glyphid Meat Mineral Extraction -chem.NITAN=NITAN Super Fuel Mixing -chem.NITRIC_ACID=Nitric Acid Production -chem.OIL_SAND=Tar Sand Extraction -chem.OSMIRIDIUM_DEATH=Osmiridic Solution Production -chem.PC=Polycarbonate Synthesis -chem.PC_ELECTROLYSIS=Potassium Chloride Electrolysis -chem.PEROXIDE=Hydrogen Peroxide Production -chem.PET=PET Synthesis -chem.PETROIL_LEADED=Leaded Petroil Mixing -chem.POLYMER=Polymer Synthesis -chem.PUF6=Plutonium Hexafluoride Production -chem.PVC=Polyvinylchloride Synthesis -chem.RUBBER=Rubber Production -chem.SAS3=Schrabidium Trisulfide Production -chem.SATURN=Saturnite Production -chem.SCHRABIDATE=Ferric Schrabidate Production -chem.SCHRABIDIC=Schrabidic Acid Mixing -chem.SF_BIOFUEL=Biofuel Solidification -chem.SF_BIOGAS=Biogas Solidification -chem.SF_DIESEL=Diesel Solidification -chem.SF_GAS=Natural Gas Solidification -chem.SF_HEATINGOIL=Heating Oil Solidification -chem.SF_HEAVYOIL=Heavy Oil Solidification -chem.SF_KEROSENE=Kerosene Solidification -chem.SF_LIGHTOIL=Light Oil Solidification -chem.SF_LUBRICANT=Lubricant Solidification -chem.SF_NAPHTHA=Naphtha Solidification -chem.SF_OIL=Crude Oil Solidification -chem.SF_PETROIL=Petroil Solidification -chem.SF_PETROLEUM=Petroleum Gas Solidification -chem.SF_RECLAIMED=Reclaimed Oil Solidification -chem.SF_SMEAR=Industrial Oil Solidification -chem.SHELL_CHLORINE=Chlorine Gas Artillery Shell Production -chem.SHELL_MUSTARD=Mustard Gas Artillery Shell Production -chem.SHELL_PHOSGENE=Phosgene Artillery Shell Production -chem.SOLID_FUEL=Solid Rocket Fuel Production -chem.SOLVENT=Organic Solvent Mixing -chem.STEAM=Water Boiling -chem.SULFURIC_ACID=Sulfuric Acid Production -chem.TATB=TATB Synthesis -chem.TEL=TEL Mixing -chem.TEST=Test -chem.THORIUM_SALT=Thorium Salt Enrichment -chem.TNT=TNT Synthesis -chem.UF6=Uranium Hexafluoride Production -chem.VIT_GAS=Gaseous Nuclear Waste Vitrification -chem.VIT_LIQUID=Liquid Nuclear Waste Vitrification -chem.XENON=Linde Xenon Cycle -chem.XENON_OXY=Boosted Linde Xenon Cycle -chem.YELLOWCAKE=Yellowcake Production +chem.deshcracked=Desh from Cracked Oil commands.satellite.no_active_satellites=No active satellites found! commands.satellite.no_satellite=No satellite using this frequency found! @@ -4503,7 +4395,7 @@ item.scrap.name=Scrap item.scrap_nuclear.name=Radioactive Scraps item.scrap_oil.name=Oily Scraps item.scrap_plastic.name=Plastic Scraps -item.scraps.name=Foundry Scraps +item.scraps.name=%s Scraps item.screwdriver.name=Screwdriver item.screwdriver.desc=Could be used instead of a fuse... item.screwdriver_desh.name=Desh Screwdriver diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_radar.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_radar.png deleted file mode 100644 index 2c8bca3923a7b3388520ee6c8a737f8fec3bf4c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21539 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 F{|2AoB~kzY literal 1809 zcmdT^X;4#F6uvJZLX@2#h#<%!3K1h3P(TupD7zSf1OyC%ipB+`1X(1{D9R!V1vKD7 zR7@QUVG);6gcqVBRTRY)7otV1MSyXVZ@+>qdv zI#bQ20swUUe0|seAovymT14FOtGJv=mdsx14P^JsKj1`TlUI-z0Ck6_jmMI3el;YJ z!@_;5{7lK=w6L%+iA2I=G9dsELK=<6;c(jH;v_*qrgW2pgoG3ZV}_SWAOt9i!YA=U z0QP8reOh3@HptNjC;^B_;D8P&FabrDpmYv^LLm$bhHL#{JPU4TK!F>~aE0h@xX}mh z^nmDMnCAow9pRn~D9nPQMX<;LmfOLK*>GPfL^I(DYj}1RJZBDblAtIZ{yY;_nZf+6 z@K6HGPQhi@&8Zm1o#zki;80xfe_!D0*CZD_6FJd0A{hW(#Uzl{9p~Z!ARY1Z@#5@? z`E)Fo{lb^Rq9Xw`s*8o!2D{6D++Z_YDtgDccJXCKj^E>VZ?;%03y{A0 z#42hHps-?kCKUN56VvV8eo?%cT^GoI7z-iNx8e-mU} zA2krxL~CN$w#O6!b4a{d^R7qWH`_Ni1sY()D_1t{Z(?(t?;BE z|2lBMf+lT5M-}}M(-NN{aZ>%lgXvO&xd2OeUmuMGU7hmGgvY)rttD>x;)!LWk zybEvN5Ae;bc$Z9{0weoH-ld_#(UP6#o2GFNxdAucHVwXJRlx!dztW<%cfxgi=n2;y zn>mB`3B5OJ)-n4N`c6eh)lR(Qa|5ZX*CC1-r(!(p8a(=z%DaF?M_)>Ysw5=!NwVl7 zQiI&eZMk7MY>e7ZH41pN2Hb;J#0KY&SAkUJTnAel)QDUNz8fai{3r1xDH|Va%kg<_ zS35M@R0RgD!QNY+)UfC8yBieRMOWW+ll!@^2=sqyN=O`=WfUML_)|+Q-g+~u!}G7{ zhx9#uOG{i!&$bA;V_{S5CK+~L!Oqi@#b)fkRbnEEjx!P*e5S9gB}%)OM0hicWr&(2 zE|Jaqh(imEbrD64Cu45;hFIstOw=9MYp zC1v=d&JPg&YUCrN1L>l>h*Its3JNwq6$=XNI$o0wPNw?Zk$LS_1OKkaYBBe86JgLN zc71NwRP2kT2|k5lW2LS+D?45z(Hb$t=JTAU>!+Q$@32(WICqF<+mhcnH*e5}Xnp#& z!mjf337WQIxS+kdy1ihSroEdg9^lcsbItOP!VaqTeR#W4&Aj|yK%U(U#3T3Cu0Rqx@ zt<{7v&~G`be;_Nye8lqefn%!%Hy>Lrmv8-eBI@--dU{sYSW0Tz&`^2JZTr!N_EQp~ z%gCyl{)#NUDa{rAHNo9uim-%*I8@G!OJ-F2&a7Ulz@?BjCHE;mj=f2vnQEW3l-+;L zU?ab#&NnEeGX2+_3D(!QU9jg8**ExGO(9AKNu^u?DTl zz?oEg-8k6Q#+JW&IUJY5A@#R!>W9rs8C#oyhbbH!RI4sR)dS(~#$~n?)b2}Orl`5o yym8!&O>GPBF&aP7+o3%5!izxTE&rcjZwv+_K6f=Fl-rB(ZyWfrf_-G(JkcNM!WM@B diff --git a/src/main/resources/assets/hbm/textures/models/turrets/brandon.png b/src/main/resources/assets/hbm/textures/models/turrets/brandon.png deleted file mode 100644 index 4d5100ace7c93055e895cc51a3589965ce3ef2ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1121 zcmV-n1fKheP)k~&3BizzhCb}4KH zi&I!o|Avr8(nO0BjE9wlEH($Jj0RE|@IcXnfP}#AK@MDtb?^4)?XQ{Hon$}F?T^`E z?z?Z_y!U1#MNv##V79lnC7S)Is_N2nie~2}ekyqn;JlzHirHv1eAg>M7fa|-T5v*~ zKDO8EMYb<}Fk>ol-h#-`juMhm`e4Qg?}JrUmD=ktYgM3DwTyKzG%*+gWCzr(S5?)( zKEv_};eBv>9ifTRqJ_=Z)}Tnz{oi%-6D* zrU^mQG~b_jufSwAn*-J)Ha}x|xt}M03n3_1A6%!~_13Fg)T$Ed)7F2re*qKib(lpIfhDde zLYC!Jo!9~c_UvuFGuk41Emj1m2z-2eJUS+$S)Gl@G;w~tL6fw%ZB&~em`rkH2hw0@ z)dY;Qv3sviONE{IR##U;$1~|(6wIOs5k)41_{I}-EeTA+G!aF1R>f$nxHGRsh$=Fz z?F?LsJ$Z>t2r;vM;#uKVO%u_QX~4Cb#yW(1`{cfPW9d2$_78FJ41B>1mKlJ(!osv&+k)c_!$KzEZzM&hZ96ujig~QR70seEn7ejO-5# z1_PGMCBxwm!!VFi9<5cm!*$zVzXAC9X0sUpuIpC0>2!MXndhewLI_OL#I|j0+r~6agb<9~$Nq$) zC_0J{rNc0M^*LSFF$@DC1eRrCSyr{%sziF*Vc+-hJg^PR}=+OO0q1g za#@xkrKBhdphsa3O^%O;eI2AxRR_G_7QnaBufvC9Wj9*6?DzWgc&s$D5-btb}{P_kE%$!t*@BFeC_q z*0$D#-fLLZZkHNX++@=EzK@jhsGghttEh9cNp}uiCf!9l{MOgZ`lM6jd0zc8_xtcA u+;q~NLzhYSu7qJX>27v`KbQJ+JLC_z+$`H@CnACX0000