diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockGeneric.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockGeneric.java index 1aa04970c..43582bdd6 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockGeneric.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockGeneric.java @@ -19,11 +19,15 @@ import net.minecraft.item.ItemStack; public class BlockGeneric extends BlockBase{ public BlockGeneric(String name){ - super(Material.ROCK, name); - this.setHarvestLevel("pickaxe", 0); - this.setHardness(1.5F); - this.setResistance(10.0F); - this.setSoundType(SoundType.STONE); + this(name, Material.ROCK, SoundType.STONE, 1.5F, 10.0F, "pickaxe", 0); + } + + public BlockGeneric(String name, Material material, SoundType sound, float hardness, float resistance, String harvestTool, int harvestLevel){ + super(material, name); + this.setHarvestLevel(harvestTool, harvestLevel); + this.setHardness(hardness); + this.setResistance(resistance); + this.setSoundType(sound); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/InitBlocks.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/InitBlocks.java index d6c3c553e..a5e0080ee 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/InitBlocks.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/InitBlocks.java @@ -13,9 +13,12 @@ package de.ellpeck.actuallyadditions.mod.blocks; import de.ellpeck.actuallyadditions.mod.blocks.base.BlockPlant; import de.ellpeck.actuallyadditions.mod.blocks.base.BlockStair; import de.ellpeck.actuallyadditions.mod.blocks.metalists.TheMiscBlocks; +import de.ellpeck.actuallyadditions.mod.config.ConfigValues; import de.ellpeck.actuallyadditions.mod.util.CompatUtil; import de.ellpeck.actuallyadditions.mod.util.ModUtil; import net.minecraft.block.Block; +import net.minecraft.block.SoundType; +import net.minecraft.block.material.Material; public class InitBlocks{ @@ -114,9 +117,15 @@ public class InitBlocks{ public static Block blockPillarQuartzStair; public static Block blockPillarQuartzSlab; + public static Block blockImpureIron; + public static void init(){ ModUtil.LOGGER.info("Initializing Blocks..."); + if(ConfigValues.caveWorld){ + blockImpureIron = new BlockGeneric("blockImpureIron", Material.ROCK, SoundType.STONE, 3.5F, 12.5F, "pickaxe", 1); + } + blockItemViewer = new BlockItemViewer("blockItemViewer"); blockFireworkBox = new BlockFireworkBox("blockFireworkBox"); blockMiner = new BlockMiner("blockMiner"); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/creative/CreativeTab.java b/src/main/java/de/ellpeck/actuallyadditions/mod/creative/CreativeTab.java index 8e67c02e4..ef0387a22 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/creative/CreativeTab.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/creative/CreativeTab.java @@ -11,6 +11,7 @@ package de.ellpeck.actuallyadditions.mod.creative; import de.ellpeck.actuallyadditions.mod.blocks.InitBlocks; +import de.ellpeck.actuallyadditions.mod.config.ConfigValues; import de.ellpeck.actuallyadditions.mod.fluids.InitFluids; import de.ellpeck.actuallyadditions.mod.items.InitForeignPaxels; import de.ellpeck.actuallyadditions.mod.items.InitItems; @@ -303,6 +304,10 @@ public class CreativeTab extends CreativeTabs{ this.add(InitItems.itemChestCrystalWhite); this.add(InitItems.itemPantsCrystalWhite); this.add(InitItems.itemBootsCrystalWhite); + + if(ConfigValues.caveWorld){ + this.add(InitBlocks.blockImpureIron); + } } public void add(Item item){ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/OreGen.java b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/OreGen.java index 2f9fd0925..8ab5361e1 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/OreGen.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/OreGen.java @@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.mod.blocks.InitBlocks; import de.ellpeck.actuallyadditions.mod.blocks.metalists.TheMiscBlocks; import de.ellpeck.actuallyadditions.mod.config.ConfigValues; import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues; +import de.ellpeck.actuallyadditions.mod.gen.cave.CaveWorldType; import de.ellpeck.actuallyadditions.mod.util.ModUtil; import de.ellpeck.actuallyadditions.mod.util.Util; import net.minecraft.block.Block; @@ -43,31 +44,22 @@ public class OreGen implements IWorldGenerator{ @Override public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider){ - if(world.getWorldType() != WorldType.FLAT && Util.arrayContains(ConfigValues.oreGenDimensionBlacklist, world.provider.getDimension()) < 0){ - switch(world.provider.getDimension()){ - case -1: - this.generateNether(world, random, chunkX*16, chunkZ*16); - //case 0: - // generateSurface(world, random, chunkX*16, chunkZ*16); - case 1: - this.generateEnd(world, random, chunkX*16, chunkZ*16); - default: - this.generateSurface(world, random, chunkX*16, chunkZ*16); + int dimension = world.provider.getDimension(); + if(dimension != -1 && dimension != 1){ + if(CaveWorldType.isCave(world)){ + this.generateCave(world, random, chunkX*16, chunkZ*16); + } + else if(world.getWorldType() != WorldType.FLAT && Util.arrayContains(ConfigValues.oreGenDimensionBlacklist, world.provider.getDimension()) < 0){ + this.generateDefault(world, random, chunkX*16, chunkZ*16); } } } - @SuppressWarnings("unused") - private void generateNether(World world, Random random, int x, int z){ - + private void generateCave(World world, Random random, int x, int z){ + this.addOreSpawn(InitBlocks.blockImpureIron, 0, Blocks.STONE, world, random, x, z, MathHelper.getRandomIntegerInRange(random, 5, 10), 60, 0, world.getHeight()); } - @SuppressWarnings("unused") - private void generateEnd(World world, Random random, int x, int z){ - - } - - private void generateSurface(World world, Random random, int x, int z){ + private void generateDefault(World world, Random random, int x, int z){ if(ConfigBoolValues.GENERATE_QUARTZ.isEnabled()){ this.addOreSpawn(InitBlocks.blockMisc, TheMiscBlocks.ORE_QUARTZ.ordinal(), Blocks.STONE, world, random, x, z, MathHelper.getRandomIntegerInRange(random, 5, 8), 10, QUARTZ_MIN, QUARTZ_MAX); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/cave/ChunkProviderCave.java b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/cave/ChunkProviderCave.java index 3d9ca0e8c..d0a987917 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/cave/ChunkProviderCave.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/cave/ChunkProviderCave.java @@ -10,7 +10,6 @@ package de.ellpeck.actuallyadditions.mod.gen.cave; -import de.ellpeck.actuallyadditions.mod.util.Util; import net.minecraft.entity.EnumCreatureType; import net.minecraft.init.Blocks; import net.minecraft.util.math.BlockPos; @@ -19,21 +18,23 @@ import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.ChunkPrimer; import net.minecraft.world.chunk.IChunkGenerator; -import net.minecraft.world.gen.MapGenBase; -import net.minecraft.world.gen.MapGenCaves; import net.minecraft.world.gen.feature.WorldGenerator; import java.util.List; +import java.util.Random; public class ChunkProviderCave implements IChunkGenerator{ private boolean generatedSpawn; private World world; + private Random rand; - private WorldGenerator spawnGenerator = new WorldGenCaveSpawn(); + private WorldGenerator spawnGenerator; public ChunkProviderCave(World world){ this.world = world; + this.rand = new Random(world.getSeed()); + this.spawnGenerator = new WorldGenCaveSpawn(this.rand); } @Override @@ -47,9 +48,9 @@ public class ChunkProviderCave implements IChunkGenerator{ primer.setBlockState(x, y, z, Blocks.BEDROCK.getDefaultState()); } else{ - if(Util.RANDOM.nextInt(5) <= 0){ - if(Util.RANDOM.nextFloat() <= 0.95F){ - primer.setBlockState(x, y, z, (Util.RANDOM.nextFloat() >= 0.85F ? Blocks.MOSSY_COBBLESTONE : Blocks.COBBLESTONE).getDefaultState()); + if(this.rand.nextInt(5) <= 0){ + if(this.rand.nextFloat() <= 0.95F){ + primer.setBlockState(x, y, z, (this.rand.nextFloat() >= 0.85F ? Blocks.MOSSY_COBBLESTONE : Blocks.COBBLESTONE).getDefaultState()); } else{ primer.setBlockState(x, y, z, Blocks.GLOWSTONE.getDefaultState()); @@ -74,7 +75,7 @@ public class ChunkProviderCave implements IChunkGenerator{ BlockPos spawn = this.world.getSpawnPoint(); Chunk chunk = this.world.getChunkFromBlockCoords(spawn); if(chunk.xPosition == x && chunk.zPosition == z){ - this.generatedSpawn = this.spawnGenerator.generate(this.world, this.world.rand, spawn); + this.generatedSpawn = this.spawnGenerator.generate(this.world, this.rand, spawn); } } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/cave/WorldGenCaveSpawn.java b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/cave/WorldGenCaveSpawn.java index ea48ae893..e1b242560 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/cave/WorldGenCaveSpawn.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/cave/WorldGenCaveSpawn.java @@ -29,6 +29,12 @@ import java.util.Random; public class WorldGenCaveSpawn extends WorldGenerator{ + private Random rand; + + public WorldGenCaveSpawn(Random rand){ + this.rand = rand; + } + @Override public boolean generate(World world, Random rand, BlockPos position){ this.generateCave(world, position); @@ -49,9 +55,9 @@ public class WorldGenCaveSpawn extends WorldGenerator{ world.setBlockState(center.add(-1, -5, -8), Blocks.DIRT.getStateFromMeta(1)); WorldGenTrees trees = new WorldGenTrees(true); - trees.generate(world, Util.RANDOM, center.add(-1, -4, -8)); + trees.generate(world, this.rand, center.add(-1, -4, -8)); - int length = Util.RANDOM.nextInt(20)+20; + int length = this.rand.nextInt(20)+20; for(int z = 0; z <= length; z++){ for(int x = 0; x < 5; x++){ for(int y = 0; y < 4; y++){ @@ -63,7 +69,7 @@ public class WorldGenCaveSpawn extends WorldGenerator{ else if((z%4 == 0 || x == 0 || x == 4) && y == 3){ world.setBlockState(pos, Blocks.PLANKS.getStateFromMeta(1)); } - else if(!((y == 0 || y == 3) && Util.RANDOM.nextInt(5) <= 0)){ + else if(!((y == 0 || y == 3) && this.rand.nextInt(5) <= 0)){ world.setBlockToAir(pos); } } @@ -74,7 +80,7 @@ public class WorldGenCaveSpawn extends WorldGenerator{ TileEntity tile = world.getTileEntity(chestPos); if(tile instanceof TileEntityChest){ TileEntityChest chest = (TileEntityChest)tile; - chest.setInventorySlotContents(12, new ItemStack(InitItems.itemFoods, MathHelper.getRandomIntegerInRange(Util.RANDOM, 5, 15), Util.RANDOM.nextInt(TheFoods.values().length))); + chest.setInventorySlotContents(12, new ItemStack(InitItems.itemFoods, MathHelper.getRandomIntegerInRange(this.rand, 5, 15), this.rand.nextInt(TheFoods.values().length))); chest.setInventorySlotContents(14, new ItemStack(InitItems.itemAxeCrystalBlack)); } diff --git a/src/main/resources/assets/actuallyadditions/blockstates/blockImpureIron.json b/src/main/resources/assets/actuallyadditions/blockstates/blockImpureIron.json new file mode 100644 index 000000000..836a5fdcf --- /dev/null +++ b/src/main/resources/assets/actuallyadditions/blockstates/blockImpureIron.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "minecraft:cube_all", + "textures": { + "all": "actuallyadditions:blocks/blockImpureIron" + }, + "transform": "forge:default-block" + }, + "variants": { + "normal": [{}], + "inventory": [{}] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/actuallyadditions/lang/en_US.lang b/src/main/resources/assets/actuallyadditions/lang/en_US.lang index 05116f591..49d002769 100644 --- a/src/main/resources/assets/actuallyadditions/lang/en_US.lang +++ b/src/main/resources/assets/actuallyadditions/lang/en_US.lang @@ -206,6 +206,7 @@ tile.actuallyadditions.blockPillarQuartzSlab.name=Black Quartz Pillar Slab tile.actuallyadditions.blockLaserRelayItem.name=Item Laser Relay tile.actuallyadditions.blockLaserRelayItemWhitelist.name=Advanced Item Laser Relay tile.actuallyadditions.blockItemViewer.name=Item Interface +tile.actuallyadditions.blockImpureIron.name=Impure Iron #ESD tile.actuallyadditions.blockInputter.name=ESD diff --git a/src/main/resources/assets/actuallyadditions/textures/blocks/blockImpureIron.png b/src/main/resources/assets/actuallyadditions/textures/blocks/blockImpureIron.png new file mode 100644 index 000000000..727ff786e Binary files /dev/null and b/src/main/resources/assets/actuallyadditions/textures/blocks/blockImpureIron.png differ