From 8ab33835d2543589047289ae499a580f3b716acb Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 10 Dec 2022 16:25:32 +0100 Subject: [PATCH] combination recipe adjustments, added back older coke recipes, fixes --- src/main/java/com/hbm/config/WorldConfig.java | 2 + .../com/hbm/crafting/SmeltingRecipes.java | 9 ++++ .../hbm/entity/projectile/EntityMeteor.java | 14 +++-- .../com/hbm/handler/BossSpawnHandler.java | 4 +- .../inventory/recipes/CombinationRecipes.java | 7 ++- .../inventory/recipes/anvil/AnvilRecipes.java | 9 ++++ .../com/hbm/items/armor/ItemModCharm.java | 5 +- src/main/java/com/hbm/lib/HbmWorldGen.java | 8 +++ .../machine/TileEntityFurnaceCombination.java | 12 +++++ .../oil/TileEntityMachineLiquefactor.java | 2 +- .../oil/TileEntityMachineSolidifier.java | 2 +- .../java/com/hbm/world/feature/Meteorite.java | 48 +++++++++++++++--- .../textures/gui/machine/gui_mining_drill.png | Bin 0 -> 3772 bytes 13 files changed, 102 insertions(+), 20 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/gui/machine/gui_mining_drill.png diff --git a/src/main/java/com/hbm/config/WorldConfig.java b/src/main/java/com/hbm/config/WorldConfig.java index a8d93a2bc..91ba31a22 100644 --- a/src/main/java/com/hbm/config/WorldConfig.java +++ b/src/main/java/com/hbm/config/WorldConfig.java @@ -31,6 +31,7 @@ public class WorldConfig { public static int cobaltSpawn = 2; public static int oilSpawn = 100; public static int bedrockOilSpawn = 200; + public static int meteoriteSpawn = 500; public static int ironClusterSpawn = 4; public static int titaniumClusterSpawn = 2; @@ -121,6 +122,7 @@ public class WorldConfig { alexandriteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.20_alexandriteSpawnRate", "Spawns an alexandrite vein every nTH chunk", 100); oilSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.21_oilSpawnRate", "Spawns an oil bubble every nTH chunk", 100); bedrockOilSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.22_bedrockOilSpawnRate", "Spawns a bedrock oil node every nTH chunk", 200); + meteoriteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.23_meteoriteSpawnRate", "Spawns a fallen meteorite every nTH chunk", 200); ironClusterSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.C00_ironClusterSpawn", "Amount of iron cluster veins per chunk", 4); titaniumClusterSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.C01_titaniumClusterSpawn", "Amount of titanium cluster veins per chunk", 2); diff --git a/src/main/java/com/hbm/crafting/SmeltingRecipes.java b/src/main/java/com/hbm/crafting/SmeltingRecipes.java index eccb2ef69..d760dc97b 100644 --- a/src/main/java/com/hbm/crafting/SmeltingRecipes.java +++ b/src/main/java/com/hbm/crafting/SmeltingRecipes.java @@ -59,6 +59,15 @@ public class SmeltingRecipes { GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_australium), new ItemStack(ModItems.nugget_australium), 2.5F); GameRegistry.addSmelting(ModItems.powder_australium, new ItemStack(ModItems.ingot_australium), 5.0F); + /* in-furnace coking didn't need to be removed since combination coking is already better in every way */ + //GameRegistry.addSmelting(ModItems.powder_coal, DictFrame.fromOne(ModItems.coke, EnumCokeType.COAL), 1.0F); + GameRegistry.addSmelting(ModItems.coal_infernal, DictFrame.fromOne(ModItems.coke, EnumCokeType.COAL), 0.5F); + GameRegistry.addSmelting(ModItems.briquette_lignite, DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), 1.0F); + GameRegistry.addSmelting(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE), DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), 1.0F); + GameRegistry.addSmelting(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK), DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), 1.0F); + GameRegistry.addSmelting(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.COAL), DictFrame.fromOne(ModItems.coke, EnumCokeType.COAL), 1.0F); + GameRegistry.addSmelting(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WOOD), DictFrame.fromOne(ModItems.coke, EnumCokeType.COAL), 1.0F); + GameRegistry.addSmelting(ModItems.powder_lead, new ItemStack(ModItems.ingot_lead), 1.0F); GameRegistry.addSmelting(ModItems.powder_neptunium, new ItemStack(ModItems.ingot_neptunium), 1.0F); GameRegistry.addSmelting(ModItems.powder_polonium, new ItemStack(ModItems.ingot_polonium), 1.0F); diff --git a/src/main/java/com/hbm/entity/projectile/EntityMeteor.java b/src/main/java/com/hbm/entity/projectile/EntityMeteor.java index 980f8627a..9638ae585 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityMeteor.java +++ b/src/main/java/com/hbm/entity/projectile/EntityMeteor.java @@ -12,6 +12,8 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; public class EntityMeteor extends Entity { + + public boolean safe = false; public EntityMeteor(World p_i1582_1_) { super(p_i1582_1_); @@ -40,7 +42,7 @@ public class EntityMeteor extends Entity { if(!this.worldObj.isRemote && this.onGround && this.posY < 260) { - worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 5 + rand.nextFloat(), true); + worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 5 + rand.nextFloat(), !safe); if(WorldConfig.enableMeteorTails) { ExplosionLarge.spawnParticles(worldObj, posX, posY + 5, posZ, 75); ExplosionLarge.spawnParticles(worldObj, posX + 5, posY, posZ, 75); @@ -49,7 +51,7 @@ public class EntityMeteor extends Entity { ExplosionLarge.spawnParticles(worldObj, posX, posY, posZ - 5, 75); } - (new Meteorite()).generate(worldObj, rand, (int) Math.round(this.posX - 0.5D), (int) Math.round(this.posY - 0.5D), (int) Math.round(this.posZ - 0.5D)); + (new Meteorite()).generate(worldObj, rand, (int) Math.round(this.posX - 0.5D), (int) Math.round(this.posY - 0.5D), (int) Math.round(this.posZ - 0.5D), safe, true); this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "hbm:entity.oldExplosion", 10000.0F, 0.5F + this.rand.nextFloat() * 0.1F); this.setDead(); } @@ -90,8 +92,12 @@ public class EntityMeteor extends Entity { protected void entityInit() { } @Override - protected void readEntityFromNBT(NBTTagCompound p_70037_1_) { } + protected void readEntityFromNBT(NBTTagCompound nbt) { + this.safe = nbt.getBoolean("safe"); + } @Override - protected void writeEntityToNBT(NBTTagCompound p_70014_1_) { } + protected void writeEntityToNBT(NBTTagCompound nbt) { + nbt.setBoolean("safe", safe); + } } diff --git a/src/main/java/com/hbm/handler/BossSpawnHandler.java b/src/main/java/com/hbm/handler/BossSpawnHandler.java index 65b042a1d..193e22198 100644 --- a/src/main/java/com/hbm/handler/BossSpawnHandler.java +++ b/src/main/java/com/hbm/handler/BossSpawnHandler.java @@ -180,8 +180,7 @@ public class BossSpawnHandler { repell = true; } if(mod.getItem() == ModItems.meteor_charm) { - repell = true; - strike = meteorRand.nextInt(4) == 0; + strike = false; } } } @@ -216,6 +215,7 @@ public class BossSpawnHandler { vec = Vec3.createVectorHelper(meteor.posX - player.posX, 0, meteor.posZ - player.posZ).normalize(); vec.xCoord = vec.xCoord * meteorRand.nextDouble() - 0.5D; vec.zCoord = vec.zCoord * meteorRand.nextDouble() - 0.5D; + meteor.safe = true; } else { vec = Vec3.createVectorHelper(meteorRand.nextDouble() - 0.5D, 0, 0); vec.rotateAroundY((float) (Math.PI * meteorRand.nextDouble())); diff --git a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java index 8f45dd1d6..2403f5856 100644 --- a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java @@ -32,13 +32,16 @@ public class CombinationRecipes { recipes.put(new ComparableStack(ModItems.briquette_lignite), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), new FluidStack(Fluids.COALCREOSOTE, 100))); recipes.put(CINNABAR.crystal(), new Pair(new ItemStack(ModItems.sulfur), new FluidStack(Fluids.MERCURY, 100))); - - recipes.put(KEY_LOG, new Pair(new ItemStack(Items.coal, 1 ,1), new FluidStack(Fluids.WOODOIL, 250))); + + recipes.put(KEY_LOG, new Pair(new ItemStack(Items.coal, 1 ,1), new FluidStack(Fluids.WOODOIL, 250))); + recipes.put(KEY_SAPLING, new Pair(null, new FluidStack(Fluids.WOODOIL, 50))); recipes.put(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), null)); recipes.put(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), null)); recipes.put(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.COAL), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.COAL), null)); recipes.put(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WOOD), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.COAL), null)); + + recipes.put(new ComparableStack(Items.reeds), new Pair(new ItemStack(Items.sugar, 2), new FluidStack(Fluids.ETHANOL, 50))); } public static Pair getOutput(ItemStack stack) { 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 d652acaa9..eae8949c5 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -283,6 +283,15 @@ public class AnvilRecipes { new ComparableStack(ModBlocks.steel_grate, 16) }, new AnvilOutput(new ItemStack(ModBlocks.furnace_steel))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new AStack[] { + new ComparableStack(Blocks.stonebrick, 8), + new OreDictStack(KEY_LOG, 16), + new OreDictStack(CU.ingot(), 8), + new OreDictStack(KEY_BRICK, 16), + new ComparableStack(Items.blaze_powder, 4) + }, new AnvilOutput(new ItemStack(ModBlocks.furnace_combination))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new OreDictStack(KEY_PLANKS, 16), diff --git a/src/main/java/com/hbm/items/armor/ItemModCharm.java b/src/main/java/com/hbm/items/armor/ItemModCharm.java index 2c545e4f3..2d68ff328 100644 --- a/src/main/java/com/hbm/items/armor/ItemModCharm.java +++ b/src/main/java/com/hbm/items/armor/ItemModCharm.java @@ -21,13 +21,14 @@ public class ItemModCharm extends ItemArmorMod { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { list.add(EnumChatFormatting.AQUA + "You feel blessed."); - list.add(EnumChatFormatting.AQUA + "Diverts meteors away from the player."); if(this == ModItems.protection_charm) { + list.add(EnumChatFormatting.AQUA + "Diverts meteors away from the player."); + list.add(EnumChatFormatting.AQUA + "Meteors no longer destroy blocks."); list.add(EnumChatFormatting.AQUA + "Halves broadcaster damage"); } if(this == ModItems.meteor_charm) { - list.add(EnumChatFormatting.AQUA + "Reduces meteor spawning by 75%."); + list.add(EnumChatFormatting.AQUA + "Disables meteorite spawning."); list.add(EnumChatFormatting.AQUA + "Negates broadcaster damage"); } diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index a7621338c..24940f0fe 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -32,6 +32,7 @@ import com.hbm.world.feature.DepthDeposit; import com.hbm.world.feature.Dud; import com.hbm.world.feature.Geyser; import com.hbm.world.feature.GeyserLarge; +import com.hbm.world.feature.Meteorite; import com.hbm.world.feature.OilBubble; import com.hbm.world.feature.OilSandBubble; import com.hbm.world.feature.OilSpot; @@ -607,6 +608,13 @@ public class HbmWorldGen implements IWorldGenerator { OilSpot.generateOilSpot(world, randPosX, randPosZ, 5, 50); } + if(WorldConfig.meteoriteSpawn > 0 && rand.nextInt(WorldConfig.meteoriteSpawn) == 0) { + int x = i + rand.nextInt(16); + int z = j + rand.nextInt(16); + int y = world.getHeightValue(x, z) - rand.nextInt(10); + (new Meteorite()).generate(world, rand, x, y, z, false, true); + } + if (GeneralConfig.enableNITAN) { if (i <= 10000 && i + 16 >= 10000 && j <= 10000 && j + 16 >= 10000) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java index 96d67a6c8..3ca96f521 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java @@ -210,6 +210,18 @@ public class TileEntityFurnaceCombination extends TileEntityMachineBase implemen public boolean canExtractItem(int i, ItemStack itemStack, int j) { return i == 1; } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.tank.readFromNBT(nbt, "tank"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + this.tank.writeToNBT(nbt, "tank"); + } @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java index 55c54cb97..3d82aa216 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java @@ -60,7 +60,7 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen int power = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); this.processTime = processTimeBase - (processTimeBase / 4) * speed; - this.usage = usageBase - (usageBase / 4) * speed / (power + 1); + this.usage = (usageBase + (usageBase * speed)) / (power + 1); if(this.canProcess()) this.process(); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java index 44f0beece..18fa8698e 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java @@ -57,7 +57,7 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement int power = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); this.processTime = processTimeBase - (processTimeBase / 4) * speed; - this.usage = usageBase - (usageBase / 4) * speed; + this.usage = (usageBase + (usageBase * speed)) / (power + 1); if(this.canProcess()) this.process(); diff --git a/src/main/java/com/hbm/world/feature/Meteorite.java b/src/main/java/com/hbm/world/feature/Meteorite.java index 5fd973253..47c856c27 100644 --- a/src/main/java/com/hbm/world/feature/Meteorite.java +++ b/src/main/java/com/hbm/world/feature/Meteorite.java @@ -1,6 +1,7 @@ package com.hbm.world.feature; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Random; @@ -14,14 +15,20 @@ import com.hbm.lib.ModDamageSource; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; -import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; public class Meteorite { + + public static boolean safeMode = false; - public void generate(World world, Random rand, int x, int y, int z) { + public void generate(World world, Random rand, int x, int y, int z, boolean safe, boolean allowSpecials) { + safeMode = safe; + + if(replacables.isEmpty()) { + generateReplacables(); + } List list = (List) world.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(x - 7.5, y - 7.5, z - 7.5, x + 7.5, y + 7.5, z + 7.5)); @@ -29,7 +36,7 @@ public class Meteorite { e.attackEntityFrom(ModDamageSource.meteorite, 1000); } - if(WorldConfig.enableSpecialMeteors) + if(WorldConfig.enableSpecialMeteors && allowSpecials) switch(rand.nextInt(300)) { case 0: // Meteor-only tiny meteorite @@ -43,7 +50,7 @@ public class Meteorite { list1.addAll(this.getRandomOre(rand)); int i = list1.size(); for(int j = 0; j < i; j++) - list1.add(new ItemStack(Blocks.stone)); + list1.add(new ItemStack(ModBlocks.block_meteor_broken)); generateSphere7x7(world, rand, x, y, z, list1); return; case 2: @@ -52,7 +59,7 @@ public class Meteorite { list2.addAll(this.getRandomOre(rand)); int k = list2.size() / 2; for(int j = 0; j < k; j++) - list2.add(new ItemStack(Blocks.stone)); + list2.add(new ItemStack(ModBlocks.block_meteor_broken)); generateSphere5x5(world, rand, x, y, z, list2); return; case 3: @@ -63,7 +70,7 @@ public class Meteorite { return; case 4: // Bamboozle - world.createExplosion(null, x + 0.5, y + 0.5, z + 0.5, 15F, true); + world.createExplosion(null, x + 0.5, y + 0.5, z + 0.5, 15F, !safe); ExplosionLarge.spawnRubble(world, x, y, z, 25); return; case 5: @@ -113,11 +120,11 @@ public class Meteorite { case 11: // Atomic meteorite - ExplosionNukeSmall.explode(world, x + 0.5, y + 0.5, z + 0.5, ExplosionNukeSmall.medium); + ExplosionNukeSmall.explode(world, x + 0.5, y + 0.5, z + 0.5, safe ? ExplosionNukeSmall.safe : ExplosionNukeSmall.medium); return; case 12: // Star Blaster - world.createExplosion(null, x + 0.5, y + 0.5, z + 0.5, 10F, true); + world.createExplosion(null, x + 0.5, y + 0.5, z + 0.5, 10F, !safe); ItemStack stack = new ItemStack(ModItems.gun_b92); stack.setStackDisplayName("§9Star Blaster§r"); EntityItem blaster = new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, stack); @@ -711,8 +718,33 @@ public class Meteorite { private void setBlock(World world, int x, int y, int z, Block b, int meta, int flag) { Block target = world.getBlock(x, y, z); + + if(safeMode) { + if(!target.isReplaceable(world, x, y, z) && !replacables.contains(target)) return; + } + float hardness = target.getBlockHardness(world, x, y, z); if(hardness != -1 && hardness < 10_000) world.setBlock(x, y, z, b, meta, flag); } + + public static HashSet replacables = new HashSet(); + + public static void generateReplacables() { + replacables.add(ModBlocks.block_meteor); + replacables.add(ModBlocks.block_meteor_broken); + replacables.add(ModBlocks.block_meteor_cobble); + replacables.add(ModBlocks.block_meteor_molten); + replacables.add(ModBlocks.block_meteor_treasure); + replacables.add(ModBlocks.ore_meteor_uranium); + replacables.add(ModBlocks.ore_meteor_thorium); + replacables.add(ModBlocks.ore_meteor_titanium); + replacables.add(ModBlocks.ore_meteor_sulfur); + replacables.add(ModBlocks.ore_meteor_copper); + replacables.add(ModBlocks.ore_meteor_tungsten); + replacables.add(ModBlocks.ore_meteor_aluminium); + replacables.add(ModBlocks.ore_meteor_lead); + replacables.add(ModBlocks.ore_meteor_lithium); + replacables.add(ModBlocks.ore_meteor_starmetal); + } } diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_mining_drill.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_mining_drill.png new file mode 100644 index 0000000000000000000000000000000000000000..e0ba92e19baaddb5c90861ebb65a87c39d5dd5e4 GIT binary patch literal 3772 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 literal 0 HcmV?d00001