From 6011e9df988403f81377c288628cc1c2061340f0 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 14 Aug 2024 15:45:58 +0200 Subject: [PATCH] bedrock sellafite --- changelog | 5 +++ gradle.properties | 2 +- src/main/java/com/hbm/blocks/BlockBase.java | 12 ++++++ src/main/java/com/hbm/blocks/ModBlocks.java | 5 ++- .../hbm/blocks/generic/BlockBedrockOreTE.java | 6 +++ .../blocks/generic/BlockSellafieldSlaked.java | 7 ++++ .../com/hbm/config/FalloutConfigJSON.java | 34 +++++++--------- .../hbm/entity/effect/EntityFalloutRain.java | 5 +-- src/main/java/com/hbm/items/ModItems.java | 1 + src/main/java/com/hbm/lib/Library.java | 40 ++----------------- src/main/java/com/hbm/lib/RefStrings.java | 2 +- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + 13 files changed, 59 insertions(+), 62 deletions(-) diff --git a/changelog b/changelog index a81d1211a..4ac87786a 100644 --- a/changelog +++ b/changelog @@ -1,5 +1,9 @@ ## Added * Plushies +* Bedrock sellafite + * Replaces bedrock in the bottom of craters + * Looks exactly like slaked sellafite while inheriting all other traits from bedrock (unbreakable, high blast resistance, no mob spawning) + * Overall large craters no longer have the unsightly weird bedrock layer at the bottom ## Changed * Updated chinese localization @@ -45,3 +49,4 @@ * Fixed issues with the spotlight crafting recipes * Fixed various issues with opencomputers integration * Fixed incorrect armor mod descriptions being shown for cards +* Fixed mobs being able to spawn on bedrock ore and bedrock oil diff --git a/gradle.properties b/gradle.properties index 05ee52d24..59cc2040e 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=5036 +mod_build_number=5057 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ diff --git a/src/main/java/com/hbm/blocks/BlockBase.java b/src/main/java/com/hbm/blocks/BlockBase.java index 5487a1731..d2e1b01ed 100644 --- a/src/main/java/com/hbm/blocks/BlockBase.java +++ b/src/main/java/com/hbm/blocks/BlockBase.java @@ -4,6 +4,7 @@ import com.hbm.lib.RefStrings; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.item.EntityItem; import net.minecraft.item.ItemStack; import net.minecraft.world.IBlockAccess; @@ -12,6 +13,7 @@ import net.minecraft.world.World; public class BlockBase extends Block { private boolean beaconable = false; + private boolean canSpawn = true; public BlockBase() { super(Material.rock); @@ -36,6 +38,16 @@ public class BlockBase extends Block { this.beaconable = true; return this; } + + public BlockBase noMobSpawn() { + this.canSpawn = false; + return this; + } + + @Override + public boolean canCreatureSpawn(EnumCreatureType type, IBlockAccess world, int x, int y, int z) { + return this.canSpawn ? super.canCreatureSpawn(type, world, x, y, z) : false; + } @Override public boolean isBeaconBase(IBlockAccess worldObj, int x, int y, int z, int beaconX, int beaconY, int beaconZ) { diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 6736f4aa9..8af544758 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -494,6 +494,7 @@ public class ModBlocks { public static Block oil_spill; public static Block sellafield_slaked; + public static Block sellafield_bedrock; public static Block sellafield; public static Block ore_sellafield_diamond; public static Block ore_sellafield_emerald; @@ -1319,7 +1320,7 @@ public class ModBlocks { ore_oil = new BlockOre(Material.rock).setBlockName("ore_oil").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_oil"); ore_oil_empty = new BlockGeneric(Material.rock).setBlockName("ore_oil_empty").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_oil_empty"); ore_oil_sand = new BlockFalling(Material.sand).setBlockName("ore_oil_sand").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeSand).setHardness(0.5F).setResistance(1.0F).setBlockTextureName(RefStrings.MODID + ":ore_oil_sand_alt"); - ore_bedrock_oil = new BlockGeneric(Material.rock).setBlockName("ore_bedrock_oil").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(1_000_000).setBlockTextureName(RefStrings.MODID + ":ore_bedrock_oil"); + ore_bedrock_oil = new BlockGeneric(Material.rock).noMobSpawn().setBlockName("ore_bedrock_oil").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(1_000_000).setBlockTextureName(RefStrings.MODID + ":ore_bedrock_oil"); ore_tikite = new BlockDragonProof(Material.rock).setBlockName("ore_tikite").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_tikite_alt"); @@ -1665,6 +1666,7 @@ public class ModBlocks { stone_cracked = new BlockFalling(Material.rock).setBlockName("stone_cracked").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":stone_cracked"); sellafield_slaked = new BlockSellafieldSlaked(Material.rock).setBlockName("sellafield_slaked").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_slaked"); + sellafield_bedrock = new BlockSellafieldSlaked(Material.rock).setBlockName("sellafield_bedrock").setBlockUnbreakable().setResistance(6000000.0F).setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":sellafield_slaked"); sellafield = new BlockSellafield(Material.rock).setBlockName("sellafield").setStepSound(Block.soundTypeStone).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_0"); ore_sellafield_diamond = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_diamond").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_diamond"); ore_sellafield_emerald = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_emerald").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_emerald"); @@ -2798,6 +2800,7 @@ public class ModBlocks { //RAD register(sellafield_slaked); + register(sellafield_bedrock); register(ore_sellafield_diamond); register(ore_sellafield_emerald); register(ore_sellafield_uranium_scorched); diff --git a/src/main/java/com/hbm/blocks/generic/BlockBedrockOreTE.java b/src/main/java/com/hbm/blocks/generic/BlockBedrockOreTE.java index 04341d2a2..b48ee9954 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockBedrockOreTE.java +++ b/src/main/java/com/hbm/blocks/generic/BlockBedrockOreTE.java @@ -25,6 +25,7 @@ import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; @@ -48,6 +49,11 @@ public class BlockBedrockOreTE extends BlockContainer implements ILookOverlay, I this.setResistance(1_000_000); } + @Override + public boolean canCreatureSpawn(EnumCreatureType type, IBlockAccess world, int x, int y, int z) { + return false; + } + @Override public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityBedrockOre(); diff --git a/src/main/java/com/hbm/blocks/generic/BlockSellafieldSlaked.java b/src/main/java/com/hbm/blocks/generic/BlockSellafieldSlaked.java index 6812249a4..be264d979 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockSellafieldSlaked.java +++ b/src/main/java/com/hbm/blocks/generic/BlockSellafieldSlaked.java @@ -2,6 +2,7 @@ package com.hbm.blocks.generic; import java.awt.Color; +import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; import cpw.mods.fml.relauncher.Side; @@ -9,6 +10,7 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; @@ -50,4 +52,9 @@ public class BlockSellafieldSlaked extends Block { int meta = world.getBlockMetadata(x, y, z); return Color.HSBtoRGB(0F, 0F, 1F - meta / 15F); } + + @Override + public boolean canCreatureSpawn(EnumCreatureType type, IBlockAccess world, int x, int y, int z) { + return this == ModBlocks.sellafield_bedrock ? false : super.canCreatureSpawn(type, world, x, y, z); + } } diff --git a/src/main/java/com/hbm/config/FalloutConfigJSON.java b/src/main/java/com/hbm/config/FalloutConfigJSON.java index 583865950..d267048b1 100644 --- a/src/main/java/com/hbm/config/FalloutConfigJSON.java +++ b/src/main/java/com/hbm/config/FalloutConfigJSON.java @@ -87,6 +87,10 @@ public class FalloutConfigJSON { if(m > 4) entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_schrabidium, m, 1), new Triplet(ModBlocks.ore_sellafield_uranium_scorched, m, 9)) .max(i * 5).sol(true).mB(ModBlocks.ore_uranium)); if(m > 4) entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_schrabidium, m, 1), new Triplet(ModBlocks.ore_sellafield_uranium_scorched, m, 9)) .max(i * 5).sol(true).mB(ModBlocks.ore_gneiss_uranium)); entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_radgem, m, 1)) .max(i * 5).sol(true).mB(Blocks.diamond_ore)); + entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_bedrock, m, 1)).max(i * 5).sol(true).mB(Blocks.bedrock)); + entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_bedrock, m, 1)).max(i * 5).sol(true).mB(ModBlocks.ore_bedrock)); + entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_bedrock, m, 1)).max(i * 5).sol(true).mB(ModBlocks.ore_bedrock_oil)); + entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_bedrock, m, 1)).max(i * 5).sol(true).mB(ModBlocks.sellafield_bedrock)); entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, m, 1)).max(i * 5).sol(true).mMa(Material.iron)); entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, m, 1)).max(i * 5).sol(true).mMa(Material.rock)); entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, m, 1)).max(i * 5).sol(true).mMa(Material.sand)); @@ -96,7 +100,6 @@ public class FalloutConfigJSON { if(stone != null) entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, m, 1)).max(i * 5).sol(true).mB(stone)); } - //entries.add(new FalloutEntry().mB(Blocks.grass).prim(new Triplet(ModBlocks.waste_earth, 0, 1))); entries.add(new FalloutEntry() .mB(Blocks.mycelium) .prim(new Triplet(ModBlocks.waste_mycelium, 0, 1))); @@ -209,28 +212,19 @@ public class FalloutConfigJSON { if(matchesOpaque && !b.isOpaqueCube()) return false; if(dist > maxDist * falloffStart && Math.abs(world.rand.nextGaussian()) < Math.pow((dist - maxDist * falloffStart) / (maxDist - maxDist * falloffStart), 2D) * 3D) return false; - if(primaryChance == 1D || rand.nextDouble() < primaryChance) { + MetaBlock conversion = chooseRandomOutcome((primaryChance == 1D || rand.nextDouble() < primaryChance) ? primaryBlocks : secondaryBlocks); + + if(conversion != null) { + if(conversion.block == ModBlocks.sellafield_slaked && originalBlock == ModBlocks.sellafield_slaked && conversion.meta <= originalMeta) return false; + if(conversion.block == ModBlocks.sellafield_bedrock && originalBlock == ModBlocks.sellafield_bedrock && conversion.meta <= originalMeta) return false; + if(originalBlock == ModBlocks.sellafield_bedrock && conversion.block != ModBlocks.sellafield_bedrock) return false; + if(y == 0 && conversion.block != ModBlocks.sellafield_bedrock) return false; - if(primaryBlocks == null) return false; - - MetaBlock block = chooseRandomOutcome(primaryBlocks); - if(block.block == ModBlocks.sellafield_slaked && originalBlock == ModBlocks.sellafield_slaked) { - if(block.meta <= originalMeta) return false; - } - world.setBlock(x, y, z, block.block, block.meta, 3); - return true; - - } else { - - if(secondaryBlocks == null) return false; - - MetaBlock block = chooseRandomOutcome(secondaryBlocks); - if(block.block == ModBlocks.sellafield_slaked && originalBlock == ModBlocks.sellafield_slaked) { - if(block.meta <= originalMeta) return false; - } - world.setBlock(x, y, z, block.block, block.meta, 3); + world.setBlock(x, y, z, conversion.block, conversion.meta, 3); return true; } + + return false; } private MetaBlock chooseRandomOutcome(Triplet[] blocks) { diff --git a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java index 519e21fa1..f71c9df54 100644 --- a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java +++ b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java @@ -165,14 +165,13 @@ public class EntityFalloutRain extends EntityExplosionChunkloading { int depth = 0; - for(int y = 255; y >= 1; y--) { + for(int y = 255; y >= 0; y--) { if(depth >= 3) return; Block b = worldObj.getBlock(x, y, z); if(b.getMaterial() == Material.air || b == ModBlocks.fallout) continue; - if(b == Blocks.bedrock) return; if(b == ModBlocks.volcano_core) { worldObj.setBlock(x, y, z, ModBlocks.volcano_rad_core, worldObj.getBlockMetadata(x, y, z), 3); @@ -211,7 +210,7 @@ public class EntityFalloutRain extends EntityExplosionChunkloading { } float hardness = b.getBlockHardness(worldObj, x, y, z); - if(dist < 65 && hardness <= Blocks.stonebrick.getExplosionResistance(null) && hardness >= 0/* && !b.hasTileEntity(worldObj.getBlockMetadata(x, y, z))*/) { + if(y > 0 && dist < 65 && hardness <= Blocks.stonebrick.getExplosionResistance(null) && hardness >= 0/* && !b.hasTileEntity(worldObj.getBlockMetadata(x, y, z))*/) { if(worldObj.getBlock(x, y - 1, z) == Blocks.air) { for(int i = 0; i <= depth; i++) { diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index be8235033..b484b92c4 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -6289,6 +6289,7 @@ public class ModItems { GameRegistry.registerItem(pipette_laboratory, pipette_laboratory.getUnlocalizedName()); //Siphon + GameRegistry.registerItem(siphon, siphon.getUnlocalizedName()); //Batteries GameRegistry.registerItem(battery_generic, battery_generic.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index 8df03c941..6da55124b 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -36,10 +36,7 @@ public class Library { static Random rand = new Random(); public static boolean checkForHeld(EntityPlayer player, Item item) { - - if(player.getHeldItem() == null) - return false; - + if(player.getHeldItem() == null) return false; return player.getHeldItem().getItem() == item; } @@ -294,22 +291,6 @@ public class Library { * You won't be missed. */ } - - public static boolean isArrayEmpty(Object[] array) { - if(array == null) - return true; - if(array.length == 0) - return true; - - boolean flag = true; - - for(int i = 0; i < array.length; i++) { - if(array[i] != null) - flag = false; - } - - return flag; - } // Added for sake of doors // Original: Drillgon200: https://thebookofshaders.com/glossary/?search=smoothstep @@ -332,24 +313,11 @@ public class Library { return pos != null; } - public static int getFirstNullIndex(int start, Object[] array) { - for(int i = start; i < array.length; i++) { - if(array[i] == null) - return i; - } - return -1; - } - public static Block getRandomConcrete() { int i = rand.nextInt(20); - - if(i <= 1) - return ModBlocks.brick_concrete_broken; - if(i <= 4) - return ModBlocks.brick_concrete_cracked; - if(i <= 10) - return ModBlocks.brick_concrete_mossy; - + if(i <= 1) return ModBlocks.brick_concrete_broken; + if(i <= 4) return ModBlocks.brick_concrete_cracked; + if(i <= 10) return ModBlocks.brick_concrete_mossy; return ModBlocks.brick_concrete; } } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index d71f37cbf..465d595bd 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 (5036)"; + public static final String VERSION = "1.0.27 BETA (5057)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 788962d18..f14a5d786 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -4683,6 +4683,7 @@ tile.sellafield_2.name=Kochendes Sellafit tile.sellafield_3.name=Flammendes Sellafit tile.sellafield_4.name=Infernales Sellafit tile.sellafield_core.name=Sellafit-Corium +tile.sellafield_bedrock.name=Bedrock-Sellafit tile.sellafield_slaked.name=Gelöschtes Sellafit tile.semtex.name=Semtex tile.silo_hatch.name=Siloluke diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index ffab06692..c9f28f764 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -5770,6 +5770,7 @@ tile.sellafield.2.name=Boiling Sellafite tile.sellafield.3.name=Blazing Sellafite tile.sellafield.4.name=Infernal Sellafite tile.sellafield.5.name=Sellafite-Corium +tile.sellafield_bedrock.name=Bedrock Sellafite tile.sellafield_slaked.name=Slaked Sellafite tile.semtex.name=Semtex tile.silo_hatch.name=Silo Hatch