diff --git a/changelog b/changelog index 902ab1ad0d..2052ac7a57 100644 --- a/changelog +++ b/changelog @@ -1,55 +1,33 @@ ## Added -* Doors! - * Your favorites from 1.12, the 7 remaining doors have finally been ported - * Thanks to KoblizekXD for biting the bullet -* Rubber boat - * Made from latex or synthetic rubber - * A much less jankier alternative to the vanilla boat. Rotations are silky smooth and done via the strafe keys instead of based on the player's orientation - * Won't break from ramming into blocks - * Faster than a regular boat, but will decelerate quicker when there's nobody sitting in it, preventing the boat from drifting off too far when empty -* Exposure chamber - * Now performs the particle transmutation recipes that were previously done in the crafting table - * Stylish as hell -* Decoy missile - * A cheap tier 1 missile that shows up on radar screens as tier 4 (eg. nuclear) missiles -* Printing press stamps - * 8 different stamps for printing certain pages - * If a meteor dungeon safe is generated without a black book inside, it will generate two random stamps instead - * With all 8 stamps, allows you to print your own black book +* Gylphid pheromones + * Used by certain glyphids, killing those allows for the pheromone glands to be harvested + * By mixing the pheromone with blood and medicine, it can be modified to extend its positive effects to non-glyphid entities +* Disperser canisters + * Throwable like grenades, will cause a small AoE effect based on the fluid + * Effectively a gas grenade, allows phosgene and mustard gas to be used directly + * Hot things like hot coolant or steam are especially effective ## Changed -* Updated russian localization -* Reduced the blast resistance of the large doors from absurdly high to still very but not quite as high -* Custom missiles are now launchable using the radar -* NTM's structures should no longer spawn in dimensions besides the overworld. Ores will still generate, assuming the config option is set. -* Decreased M1tty's radiation resistance - * It's really damn cheap, what did you expect -* M1tty's helmet now acts like a protective mask -* Most non-custom missiles except tier 0s are now assembled in the arc welder - * Crafting complexity has been reduced, the recipes only need the three major components without any extra loose plates -* Non-custom missiles have been slightly buffed - * Explosions are now slightly larger and they use the new cross-detection entity damage code which still affects entities behind small hills that would otherwise be shielded - * Explosions now have a 2x larger entity damage radius -* Updated the digiminer recipe for mekanism compat -* Added config options to the ground water pumps -* Missile parts such as non-custom thrusters and fuselages are now made in the arc welder, recipe ingredients have been adjusted as well -* Null grenades now have a slightly larger radius, should no longer wipe playerdata and require UNDEFINED to make -* Added some breedable material to BFB PWR fuel rods, meaning that the recycling recipes now actually yield a net positive instead of being a massive waste of time -* The RBMK control panel has been upgraded - * Right.clicking the color buttons will now assign the color to the selected control rods - * There's now a new button that allows to cycle through compressor settings on RBMK steam channels - * The flux display is now functional. It will display the flux curve of the last 30 seconds, as well as labels for the total flux level. - * With the color assigning buttons and the flux display finished, the console is now finally complete -* Compressing blood at 4 PU now turns it into crude oil at a ratio of 2:1 -* Increased the cap for the overdrive upgrade in acidizers, tier 2 should now yield the proper amount and tier 3 should now be better than tier 2 -* The tooltip of valid upgrades now changes when a compatible machine GUI is open +* Reworked glyphids + * Hives are no longer open, instead they are much flatter with multiple spawners inside + * Naturally spawning hives now spawn with some loot inside + * Spawners now place glyphids nearby instead of on top, preventing them from suffocating instantly + * Glyphids no longer spawn every second, instead they spawn in waves + * More config option for spawning behavior + * A new config option for rampant mode which makes glyphids more aggressive, scouts expand directly towards players and all glyphids able to dig away obstacles + * A dedicated glyphid for digging also exists outside of rampant mode + * Glyphid meat can now be processed into resources + * Glyphid behemoths now have an acid attack and create a gas effect on death + * Larger glyphids can now destroy lanterns + * Infested glyphids + * 10% of all glyphid hives will be infested + * Infested glyphids are roughly equal, but apply a poison effect and nausea when attacking + * When killed, they will drop maggots that attack the player + * Infested scouts will also create infested hives +* Glyphid hive blocks no longer drop when broken +* The industrial generator no longer has an exponential modifier for power generation, which means it no longer produces several times more power than any other generator +* The igen by default only burns with 50% efficiency, which can be raised back to 100% with water and even to 125% with lubricant, making it slightly better when lubed than the fluid burner ## Fixed -* Fixed ancient bug where custom missiles launched using the launch table would not use the accuracy calculation and always be pin-point accurate -* Fixed RBMK heat exchangers being able to use heatable fluids that don't have heat exchanger efficiency defined like liquid sodium, heavy water and thorium salt -* Fixed RBMK heat exchangers not using the heat exchanger efficiency variable to determine cooling power -* Fixed the ballistic gauntlet spawning a client-side ghost bullet that doesn't move or despawn -* Fixed bug where different custom machine cores would merge in a stack when picked up, turning them into the same type -* Fixed radar screen blips being visible through the back of the model -* Fixed desh crate's last half of slots preventing radiation entirely -* Fixed large mining drill shift-clicking \ No newline at end of file +* Fixed the info system not being visible with a gun equipped +* Fixed a potential crash with suit batteries \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index f4e7c2b0a7..d52227a0bc 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=4809H1 +mod_build_number=4816 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/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 0ed6e8a9c6..111c9a1694 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -99,7 +99,7 @@ public static void register() { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mirv, 1), new Object[] { "LLL", "WFW", "SSS", 'S', STEEL.plate(), 'L', PB.plate(), 'W', ModItems.wire_gold, 'F', ModItems.gun_fatman }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_proto, 1), new Object[] { "LLL", "WFW", "SSS", 'S', ANY_RUBBER.ingot(), 'L', ModItems.plate_desh, 'W', ModItems.wire_tungsten, 'F', ModItems.gun_fatman }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_nuke, 1, AmmoFatman.BALEFIRE.ordinal()), new Object[] { " S ", "EBE", " S ", 'S', ModItems.hull_small_steel, 'E', ModItems.powder_power, 'B', ModItems.egg_balefire_shard }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mp40, 1), new Object[] { "IIM", " SW", " S ", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'W', KEY_PLANKS, 'M', ModItems.mechanism_rifle_2 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mp40, 1), new Object[] { "IIM", " SW", " S ", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'W', KEY_PLANKS, 'M', ModItems.mechanism_rifle_1 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_thompson, 1), new Object[] { "IIM", " SW", " S ", 'S', IRON.plate(), 'I', STEEL.plate(), 'W', KEY_PLANKS, 'M', ModItems.mechanism_rifle_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flechette, 1), new Object[] { "PPM", "TIS", "G ", 'P', STEEL.plate(), 'M', ModItems.mechanism_rifle_2, 'T', ModItems.hull_small_steel, 'I', STEEL.ingot(), 'S', ANY_PLASTIC.ingot(), 'G', ModItems.mechanism_launcher_1 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uboinik, 1), new Object[] { "IIM", "SPW", 'P', STEEL.plate(), 'I', STEEL.ingot(), 'W', KEY_PLANKS, 'S', KEY_STICK, 'M', ModItems.mechanism_revolver_2 }); @@ -365,6 +365,7 @@ public static void register() { CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_pink_cloud), new Object[] { " S ", "ECE", " E ", 'S', ModItems.powder_spark_mix, 'E', ModItems.powder_magic, 'C', ModItems.grenade_cloud }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.nuclear_waste_pearl), new Object[] { "WWW", "WFW", "WWW", 'W', ModItems.nuclear_waste_tiny, 'F', ModBlocks.block_fallout }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.grenade_kyiv), new Object[] { ModItems.canister_napalm, ModItems.bottle2_empty, ModItems.rag }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.disperser_canister_empty, 4), new Object[] { " P ", "PGP", " P ", 'P', ANY_HARDPLASTIC.ingot(), 'G', ModBlocks.glass_boron }); //Sticks of explosives CraftingManager.addRecipeAuto(new ItemStack(ModItems.stick_dynamite, 4), new Object[] { " S ", "PDP", "PDP", 'S', ModItems.safety_fuse, 'P', Items.paper, 'D', ModItems.ball_dynamite }); diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index d4dd8544b9..edc8be8f05 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -272,7 +272,7 @@ public static void init() { UNSATURATEDS = new FluidType("UNSATURATEDS", 0x628FAE, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(1_000_000), GASEOUS); //acetylene burns as hot as satan's asshole SALIENT = new FluidType("SALIENT", 0x457F2D, 0, 0, 0, EnumSymbol.NONE).addTraits(DELICIOUS, LIQUID, VISCOUS); XPJUICE = new FluidType("XPJUICE", 0xBBFF09, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); - ENDERJUICE = new FluidType("ENDERJUICE", 0x127766, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); + ENDERJUICE = new FluidType("ENDERJUICE", 0x127766, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); PETROIL_LEADED = new FluidType("PETROIL_LEADED", 0x44413d, 1, 3, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x2331F6)).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 450_000), LIQUID, LEADED); GASOLINE_LEADED = new FluidType("GASOLINE_LEADED", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x2F775A)).addTraits(new FT_Flammable(400_000), new FT_Combustible(FuelGrade.HIGH, 1_500_000), LIQUID, LEADED); COALGAS_LEADED = new FluidType("COALGAS_LEADED", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x1E155F)).addTraits(new FT_Flammable(75_000), new FT_Combustible(FuelGrade.MEDIUM, 250_000), LIQUID, LEADED); diff --git a/src/main/java/com/hbm/items/tool/ItemFusionCore.java b/src/main/java/com/hbm/items/tool/ItemFusionCore.java index b99f8fa162..afa388fa5a 100644 --- a/src/main/java/com/hbm/items/tool/ItemFusionCore.java +++ b/src/main/java/com/hbm/items/tool/ItemFusionCore.java @@ -23,32 +23,32 @@ public ItemFusionCore(int charge) { @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - - if(ArmorFSB.hasFSBArmorIgnoreCharge(player) && player.inventory.armorInventory[3].getItem() instanceof ArmorFSBPowered) { - - for(ItemStack st : player.inventory.armorInventory) { - - if(st == null) - continue; - - if(st.getItem() instanceof IBatteryItem) { - - long maxcharge = ((IBatteryItem)st.getItem()).getMaxCharge(); - long charge = ((IBatteryItem)st.getItem()).getCharge(st); - long newcharge = Math.min(charge + this.charge, maxcharge); - - ((IBatteryItem)st.getItem()).setCharge(st, newcharge); - } - } - - stack.stackSize--; - - world.playSoundAtEntity(player, "hbm:item.battery", 1.0F, 1.0F); - } - + + if(ArmorFSB.hasFSBArmorIgnoreCharge(player) && player.inventory.armorInventory[2].getItem() instanceof ArmorFSBPowered) { + + for(ItemStack st : player.inventory.armorInventory) { + + if(st == null) + continue; + + if(st.getItem() instanceof IBatteryItem) { + + long maxcharge = ((IBatteryItem) st.getItem()).getMaxCharge(); + long charge = ((IBatteryItem) st.getItem()).getCharge(st); + long newcharge = Math.min(charge + this.charge, maxcharge); + + ((IBatteryItem) st.getItem()).setCharge(st, newcharge); + } + } + + stack.stackSize--; + + world.playSoundAtEntity(player, "hbm:item.battery", 1.0F, 1.0F); + } + return stack; } - + @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index da9765623e..40d84cd272 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ 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 (4809H1)"; + public static final String VERSION = "1.0.27 BETA (4816)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java index 141c16d388..7cf0c451f9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java @@ -61,11 +61,8 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement public static int waterCap = 16000; public static int oilCap = 16000; public static int lubeCap = 4000; - public static int coalGenRate = 20; + public static int coalGenRate = 100; public static double rtgHeatMult = 0.15D; - public static double waterPowerMult = 1.0D; - public static double lubePowerMult = 1.5D; - public static double heatExponent = 1.15D; public static int waterRate = 10; public static int lubeRate = 1; public static long fluidHeatDiv = 1_000L; @@ -81,11 +78,8 @@ public void readIfPresent(JsonObject obj) { waterCap = IConfigurableMachine.grab(obj, "I:waterCap", waterCap); oilCap = IConfigurableMachine.grab(obj, "I:oilCap", oilCap); lubeCap = IConfigurableMachine.grab(obj, "I:lubeCap", lubeCap); - coalGenRate = IConfigurableMachine.grab(obj, "I:solidFuelRate", coalGenRate); + coalGenRate = IConfigurableMachine.grab(obj, "I:solidFuelRate2", coalGenRate); rtgHeatMult = IConfigurableMachine.grab(obj, "D:rtgHeatMult", rtgHeatMult); - waterPowerMult = IConfigurableMachine.grab(obj, "D:waterPowerMult", waterPowerMult); - lubePowerMult = IConfigurableMachine.grab(obj, "D:lubePowerMult", lubePowerMult); - heatExponent = IConfigurableMachine.grab(obj, "D:heatExponent", heatExponent); waterRate = IConfigurableMachine.grab(obj, "I:waterRate", waterRate); lubeRate = IConfigurableMachine.grab(obj, "I:lubeRate", lubeRate); fluidHeatDiv = IConfigurableMachine.grab(obj, "D:fluidHeatDiv", fluidHeatDiv); @@ -97,11 +91,8 @@ public void writeConfig(JsonWriter writer) throws IOException { writer.name("I:waterCap").value(waterCap); writer.name("I:oilCap").value(oilCap); writer.name("I:lubeCap").value(lubeCap); - writer.name("I:solidFuelRate").value(coalGenRate); + writer.name("I:solidFuelRate2").value(coalGenRate); writer.name("D:rtgHeatMult").value(rtgHeatMult); - writer.name("D:waterPowerMult").value(waterPowerMult); - writer.name("D:lubePowerMult").value(lubePowerMult); - writer.name("D:heatExponent").value(heatExponent); writer.name("I:waterRate").value(waterRate); writer.name("I:lubeRate").value(lubeRate); writer.name("D:fluidHeatDiv").value(fluidHeatDiv); @@ -215,19 +206,20 @@ public void updateEntity() { if(this.spin > 0) { - int powerGen = this.spin; + double genMult = 0.5D; + if(this.tanks[0].getFill() >= 10) { - powerGen += this.spin * waterPowerMult; + genMult += 0.5D; this.tanks[0].setFill(this.tanks[0].getFill() - waterRate); } if(this.tanks[2].getFill() >= 1) { - powerGen += this.spin * lubePowerMult; + genMult += 0.25D; this.tanks[2].setFill(this.tanks[2].getFill() - lubeRate); } - this.power += Math.pow(powerGen, heatExponent); + this.power += this.spin * genMult; if(this.power > this.maxPower) this.power = this.maxPower;