From a814e581b994cca2aeea552d2238d27ef7303e19 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 3 Feb 2025 16:24:41 +0100 Subject: [PATCH] time to eat 40lbs of dynamite then die --- changelog | 35 +++++++------------ gradle.properties | 3 +- .../java/com/hbm/crafting/ArmorRecipes.java | 2 +- .../com/hbm/handler/nei/BoilingHandler.java | 4 ++- .../com/hbm/handler/nei/DeuteriumHandler.java | 27 ++++++++++++++ .../com/hbm/items/machine/ItemPACoil.java | 1 + src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../java/com/hbm/main/CraftingManager.java | 2 +- src/main/java/com/hbm/main/NEIRegistry.java | 1 + .../machine/albion/TileEntityPADetector.java | 13 +++++++ .../machine/albion/TileEntityPADipole.java | 6 ++-- .../albion/TileEntityPAQuadrupole.java | 4 +-- .../machine/albion/TileEntityPARFC.java | 2 +- .../machine/albion/TileEntityPASource.java | 4 +-- 14 files changed, 71 insertions(+), 35 deletions(-) create mode 100644 src/main/java/com/hbm/handler/nei/DeuteriumHandler.java diff --git a/changelog b/changelog index f7dacb66a..55e5f6d36 100644 --- a/changelog +++ b/changelog @@ -1,25 +1,16 @@ -## Added -* Bauxite processing - * Bauxite is now processed by mixing it with lye, and then fractioning it into sodium aluminate and red mud - * Red mud can now be turned into cement - * Sodium aluminate can either be processed directly into aluminium in a rotary furnace, or turned into alumina with fluorite to be used in an electrolyzer - * Standard aluminium ore is now "aluminium-bearing ore" which drops cryolite, which can either be smelted into aluminium like normal or combination smelted into aluminium and lye -* Particle accelerator - * Should be about finished now - * Recipes should now be doable - * Added recipes to all the components - * Changed the dipole mechanic from a momentum penalty to a power draw penalty for smaller accelerator rings - * Added explicit compressor recipes for perfluoromethyl in order to change the standard compression speed of 100 ticks to 50 - * All the parts have tooltips, you'll figure it out - ## Changed -* Blast doors will now pulverize any block that gets in their way during closing -* The nuclear and RTG furnaces will be retired, their recipes have been removed but they remain operational for now -* Changed the magnetron recipe to be 3 copper plates and 4 tungsten wires -* Added recipes to some secret ammo types +* Changed PA power draw penalties from x5 to x10 +* Particles will now crash instantly if the dipole has both penalties in effect (underspeed + undersized ring) + * This means that undersized accelerators require appropriate tier coils, and overtiered accelerators (i.e. high coils for low velocities) need to meet the size requirement + * Accelerators where both penalties take effect are usually tiny ones with single tier coils (usually the highest tier required) which are lame +* DNT nano suit helmets now require quantum circuits instead of bismuth ones +* Made particle capsules more expensive + * Since invalid recipes no longer void containers, this shouldn't really be a huge deal +* Both quadrupoles and dipoles now have a power cap of 2.5MHE +* RFCs now use 250kHE per pass (instead of 100k) +* Heavy water extraction now has a NEI handler ## Fixed -* Fixed the CCGT's steam output breaking as soon as the steam buffer runs full -* Fixed crash caused by mobs holding belt-fed guns -* Fixed boiler heat input being way too low due to operation order (diffusion was applied AFTER the input heat was capped) -* Fixed stinger playing its lockon sound on the wrong side \ No newline at end of file +* Fixed particle detector not consuming power +* Fixed empty capsules not being recoverable from the color coded slots on the particle source +* Fixed particle detector nor charging from batteries \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index ddcabff47..f1fef826d 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=5229 +mod_build_number=5230 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ @@ -39,6 +39,7 @@ credits=HbMinecraft,\ \ Nos (models),\ \ Minecreep (models),\ \ 70k (textures, glyphid AI, strand caster, electrolyzer changes, cryolite),\ + \ instantnootles (concept artist),\ \ haru315 (spiral point algorithm),\ \ Sten89 (models),\ \ Pixelguru26 (textures),\ diff --git a/src/main/java/com/hbm/crafting/ArmorRecipes.java b/src/main/java/com/hbm/crafting/ArmorRecipes.java index d8c87323d..1f12beaf9 100644 --- a/src/main/java/com/hbm/crafting/ArmorRecipes.java +++ b/src/main/java/com/hbm/crafting/ArmorRecipes.java @@ -89,7 +89,7 @@ public class ArmorRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.fau_plate, 1), new Object[] { "MCM", "PBP", "PSP", 'M', ModItems.motor_desh, 'C', ModItems.demon_core_closed, 'P', ModItems.plate_armor_fau, 'B', ModItems.starmetal_plate, 'S', ModBlocks.ancient_scrap }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.fau_legs, 1), new Object[] { "MPM", "PBP", "PDP", 'M', ModItems.motor_desh, 'P', ModItems.plate_armor_fau, 'B', ModItems.starmetal_legs, 'D', ModItems.billet_polonium }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.fau_boots, 1), new Object[] { "PDP", "PBP", 'P', ModItems.plate_armor_fau, 'D', ModItems.billet_polonium, 'B', ModItems.starmetal_boots }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.dns_helmet, 1), new Object[] { "PCP", "PBP", "PSP", 'P', ModItems.plate_armor_dnt, 'S', ModItems.ingot_chainsteel, 'B', ModItems.bj_helmet, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID) }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.dns_helmet, 1), new Object[] { "PCP", "PBP", "PSP", 'P', ModItems.plate_armor_dnt, 'S', ModItems.ingot_chainsteel, 'B', ModItems.bj_helmet, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.QUANTUM) }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.dns_plate, 1), new Object[] { "PCP", "PBP", "PSP", 'P', ModItems.plate_armor_dnt, 'S', ModItems.ingot_chainsteel, 'B', ModItems.bj_plate_jetpack, 'C', ModItems.singularity_spark }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.dns_legs, 1), new Object[] { "PCP", "PBP", "PSP", 'P', ModItems.plate_armor_dnt, 'S', ModItems.ingot_chainsteel, 'B', ModItems.bj_legs, 'C', ModItems.coin_worm }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.dns_boots, 1), new Object[] { "PCP", "PBP", "PSP", 'P', ModItems.plate_armor_dnt, 'S', ModItems.ingot_chainsteel, 'B', ModItems.bj_boots, 'C', ModItems.demon_core_closed }); diff --git a/src/main/java/com/hbm/handler/nei/BoilingHandler.java b/src/main/java/com/hbm/handler/nei/BoilingHandler.java index 392468a89..e68801314 100644 --- a/src/main/java/com/hbm/handler/nei/BoilingHandler.java +++ b/src/main/java/com/hbm/handler/nei/BoilingHandler.java @@ -10,10 +10,12 @@ import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingStep; import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType; import com.hbm.items.machine.ItemFluidIcon; +import net.minecraft.item.ItemStack; + public class BoilingHandler extends NEIUniversalHandler { public BoilingHandler() { - super(ModBlocks.machine_boiler.getLocalizedName(), ModBlocks.machine_boiler, generateRecipes()); + super(ModBlocks.machine_boiler.getLocalizedName(), new ItemStack[] { new ItemStack(ModBlocks.machine_boiler), new ItemStack(ModBlocks.machine_industrial_boiler) }, generateRecipes()); } @Override diff --git a/src/main/java/com/hbm/handler/nei/DeuteriumHandler.java b/src/main/java/com/hbm/handler/nei/DeuteriumHandler.java new file mode 100644 index 000000000..91e0d3675 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/DeuteriumHandler.java @@ -0,0 +1,27 @@ +package com.hbm.handler.nei; + +import java.util.HashMap; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.machine.ItemFluidIcon; + +import net.minecraft.item.ItemStack; + +public class DeuteriumHandler extends NEIUniversalHandler { + + public DeuteriumHandler() { + super(ModBlocks.machine_deuterium_extractor.getLocalizedName(), new ItemStack[] { new ItemStack(ModBlocks.machine_deuterium_extractor), new ItemStack(ModBlocks.machine_deuterium_tower) }, generateRecipes()); + } + + @Override + public String getKey() { + return "ntmDeuterium"; + } + + public static HashMap generateRecipes() { + HashMap map = new HashMap(); + map.put(ItemFluidIcon.make(Fluids.WATER, 1_000), ItemFluidIcon.make(Fluids.HEAVYWATER, 20)); + return map; + } +} diff --git a/src/main/java/com/hbm/items/machine/ItemPACoil.java b/src/main/java/com/hbm/items/machine/ItemPACoil.java index 2b68d7a8c..8730a3787 100644 --- a/src/main/java/com/hbm/items/machine/ItemPACoil.java +++ b/src/main/java/com/hbm/items/machine/ItemPACoil.java @@ -46,5 +46,6 @@ public class ItemPACoil extends ItemEnumMulti { list.add(EnumChatFormatting.BLUE + "Dipole minimum side length: " + EnumChatFormatting.RESET + type.diDistMin); list.add(EnumChatFormatting.RED + "Minimums not met result in a power draw penalty!"); list.add(EnumChatFormatting.RED + "Maximums exceeded result in the particle crashing!"); + list.add(EnumChatFormatting.RED + "Particles will crash in dipoles if both penalties take effect!"); } } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index d618572ed..1440e8237 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 (5229)"; + public static final String VERSION = "1.0.27 BETA (5230)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 7b59c3c46..61431fc45 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -126,7 +126,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.cell_empty, 6), new Object[] { " S ", "G G", " S ", 'S', STEEL.plate(), 'G', KEY_ANYPANE }); addRecipeAuto(new ItemStack(ModItems.cell_deuterium, 8), new Object[] { "DDD", "DTD", "DDD", 'D', ModItems.cell_empty, 'T', ModItems.mike_deut }); - addRecipeAuto(new ItemStack(ModItems.particle_empty, 2), new Object[] { "STS", "G G", "STS", 'S', STEEL.plate(), 'T', W.ingot(), 'G', KEY_ANYPANE }); + addRecipeAuto(new ItemStack(ModItems.particle_empty, 2), new Object[] { "STS", "G G", "STS", 'S', PB.plateCast(), 'T', ModItems.coil_gold, 'G', KEY_ANYPANE }); addShapelessAuto(new ItemStack(ModItems.particle_copper, 1), new Object[] { ModItems.particle_empty, CU.dust(), ModItems.pellet_charged }); addShapelessAuto(new ItemStack(ModItems.particle_lead, 1), new Object[] { ModItems.particle_empty, PB.dust(), ModItems.pellet_charged }); addShapelessAuto(new ItemStack(ModItems.cell_antimatter, 1), new Object[] { ModItems.particle_aproton, ModItems.particle_aelectron, ModItems.cell_empty }); diff --git a/src/main/java/com/hbm/main/NEIRegistry.java b/src/main/java/com/hbm/main/NEIRegistry.java index 69b0f4474..9ca24ffcd 100644 --- a/src/main/java/com/hbm/main/NEIRegistry.java +++ b/src/main/java/com/hbm/main/NEIRegistry.java @@ -70,6 +70,7 @@ public class NEIRegistry { handlers.add(new AmmoPressHandler()); handlers.add(new CompressorHandler()); handlers.add(new ParticleAcceleratorHandler()); + handlers.add(new DeuteriumHandler()); //this shit comes last handlers.add(new FluidRecipeHandler()); diff --git a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADetector.java b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADetector.java index 58f73310d..5b0ad9efb 100644 --- a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADetector.java +++ b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADetector.java @@ -4,6 +4,7 @@ import com.hbm.inventory.container.ContainerPADetector; import com.hbm.inventory.gui.GUIPADetector; import com.hbm.inventory.recipes.ParticleAcceleratorRecipes; import com.hbm.inventory.recipes.ParticleAcceleratorRecipes.ParticleAcceleratorRecipe; +import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.machine.albion.TileEntityPASource.PAState; import com.hbm.tileentity.machine.albion.TileEntityPASource.Particle; @@ -32,6 +33,16 @@ public class TileEntityPADetector extends TileEntityCooledBase implements IGUIPr return "container.paDetector"; } + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + this.power = Library.chargeTEFromItems(slots, 0, power, this.getMaxPower()); + } + + super.updateEntity(); + } + @Override public DirPos[] getConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); @@ -131,6 +142,8 @@ public class TileEntityPADetector extends TileEntityCooledBase implements IGUIPr return; } } + + this.power -= this.usage; } public boolean canAccept(ParticleAcceleratorRecipe recipe) { diff --git a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADipole.java b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADipole.java index 607621bed..549bc02b3 100644 --- a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADipole.java +++ b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADipole.java @@ -40,7 +40,7 @@ public class TileEntityPADipole extends TileEntityCooledBase implements IGUIProv @Override public long getMaxPower() { - return 5_000_000; + return 2_500_000; } @Override @@ -70,8 +70,8 @@ public class TileEntityPADipole extends TileEntityCooledBase implements IGUIProv int mult = 1; if(slots[1] != null && slots[1].getItem() == ModItems.pa_coil) { type = EnumUtil.grabEnumSafely(EnumCoilType.class, slots[1].getItemDamage()); - if(type.diMin > particle.momentum) mult *= 5; - if(type.diDistMin > particle.distanceTraveled) mult *= 5; + if(type.diMin > particle.momentum) mult *= 10; + if(type.diDistMin > particle.distanceTraveled) mult *= 10; } if(!isCool()) particle.crash(PAState.CRASH_NOCOOL); diff --git a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPAQuadrupole.java b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPAQuadrupole.java index a68c36576..283e2e417 100644 --- a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPAQuadrupole.java +++ b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPAQuadrupole.java @@ -31,7 +31,7 @@ public class TileEntityPAQuadrupole extends TileEntityCooledBase implements IGUI @Override public long getMaxPower() { - return 1_000_000; + return 2_500_000; } @Override @@ -53,7 +53,7 @@ public class TileEntityPAQuadrupole extends TileEntityCooledBase implements IGUI int mult = 1; if(slots[1] != null && slots[1].getItem() == ModItems.pa_coil) { type = EnumUtil.grabEnumSafely(EnumCoilType.class, slots[1].getItemDamage()); - mult = type.quadMin > particle.momentum ? 5 : 1; + mult = type.quadMin > particle.momentum ? 10 : 1; } if(!isCool()) particle.crash(PAState.CRASH_NOCOOL); diff --git a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPARFC.java b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPARFC.java index e9ce4a119..2c463c37c 100644 --- a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPARFC.java +++ b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPARFC.java @@ -19,7 +19,7 @@ import net.minecraftforge.common.util.ForgeDirection; public class TileEntityPARFC extends TileEntityCooledBase implements IGUIProvider, IParticleUser { - public static final long usage = 100_000; + public static final long usage = 250_000; public static final int momentumGain = 100; public static final int defocusGain = 100; diff --git a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPASource.java b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPASource.java index 37c70d4a1..b3a9021f4 100644 --- a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPASource.java +++ b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPASource.java @@ -164,8 +164,8 @@ public class TileEntityPASource extends TileEntityCooledBase implements IGUIProv //reusing the same fucking instance because doing anything else would be retarded public static final BlockPos cheapAss = new BlockPos(0, 0, 0); - public static final int[] slotsRed = new int[] {1}; - public static final int[] slotsYellow = new int[] {2}; + public static final int[] slotsRed = new int[] {1, 3, 4}; + public static final int[] slotsYellow = new int[] {2, 3, 4}; @Override public int[] getAccessibleSlotsFromSide(int x, int y, int z, int side) { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10);