Jump to content

NathanHam89

Members
  • Posts

    18
  • Joined

  • Last visited

Converted

  • Gender
    Undisclosed
  • Personal Text
    Getting into Minecraft Modding :D

NathanHam89's Achievements

Tree Puncher

Tree Puncher (2/8)

0

Reputation

  1. However it does seem to appear that it generates less frequently than normal clay but generates in a larger cluster You have to play with the number 15, as this is the number of blocks, the larger it is, the more generates, I guess (new FireClayGen(SteelworksBlocks.fire_clayblock, 15)).generate(world, random, new BlockPos(x1, y, z1));
  2. [move]And I have it working!!! [/move] And for those who wish to accomplish the same thing, here is the working code: http://pastebin.com/X1AqqL4d-Fire Clay Generation http://pastebin.com/TBPgFJ8c-World Generator
  3. Oops, I forgot to put new new BlockPos(x1, y, z1)
  4. Okay I think this is it, sorry about that (new FireClayGen(SteelworksBlocks.fire_clayblock, 15)).generate(world, random, BlockPos(x1, y, z1)); It just doesn't recognise the BlockPos, this is what I have for the generate: public boolean generate(World world, Random random, BlockPos pos)
  5. Actually I tried moving this to here and this looks better: package com.penumbral.steelworks.world; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; import net.minecraft.util.BlockPos; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import com.penumbral.steelworks.init.SteelworksBlocks; public class FireClayGen extends WorldGenerator{ public final Block blockToGen; public final int numberOfBlocks; FireClayGen clayGen = new FireClayGen(blockToGen, numberOfBlocks); public FireClayGen(Block block, int p_i2011_1_) { this.blockToGen = SteelworksBlocks.fire_clayblock; this.numberOfBlocks = p_i2011_1_; } public boolean generate(World world, Random random, BlockPos pos) { if (world.getBlockState(pos).getBlock().getMaterial() != Material.water) { return false; } else { int i = random.nextInt(this.numberOfBlocks - 2) + 2; byte b0 = 1; for (int j = pos.getX() - i; j <= pos.getX() + i; ++j) { for (int k = pos.getZ() - i; k <= pos.getZ() + i; ++k) { int l = j - pos.getX(); int i1 = k - pos.getZ(); if (l * l + i1 * i1 <= i * i) { for (int j1 = pos.getY() - b0; j1 <= pos.getY() + b0; ++j1) { BlockPos blockpos1 = new BlockPos(j, j1, k); Block block = world.getBlockState(blockpos1).getBlock(); if (block == Blocks.dirt || block == blockToGen) { world.setBlockState(blockpos1, this.blockToGen.getDefaultState(), 2); } } } } } return false; } } }
  6. Yeah I don't know what to put for Block and int
  7. Hmm, okay tried some changes: boolean generate = new FireClayGen().generate(world, random, new BlockPos(x1, y, z1)); If I do it like that it has no problem apart from that I need FireClayGen(Block, int) However I am not sure what to put under these
  8. It's probably because FireClayGen isn't a method I'm trying to use the generate method in the FireClayGen class, but there is another generate method in the ore class I'm using
  9. Unfortunately, through (new FireClayGen()) I get the same message "the constructor FireClayGen() is undefined"
  10. Maybe something like this then? public void generateOverworld(World world, Random random, int x, int z) { int x1 = x + random.nextInt(16); int y = 0 + random.nextInt(64-0); int z1 = z + random.nextInt(16); generateOre(SteelworksBlocks.fire_clayblock, world, random, x, z, 4, 8, 100, 10, 64); new FireClayGen().generate(world, random, new BlockPos(x1, y, z1)); } However, I have an error under new FireClayGen()
  11. Sorry, I'm still trying to do it: package com.penumbral.steelworks.world; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.BlockStone; import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.pattern.BlockHelper; import net.minecraft.init.Blocks; import net.minecraft.util.BlockPos; import net.minecraft.world.World; import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.feature.WorldGenMinable; import net.minecraftforge.fml.common.IWorldGenerator; import com.penumbral.steelworks.init.SteelworksBlocks; public class OreGeneration implements IWorldGenerator{ @Override public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { switch(world.provider.getDimensionId()) { case 1: generateEnd(world, random, chunkX * 16, chunkZ * 16); break; case 0: generateOverworld(world, random, chunkX * 16, chunkZ * 16); break; case -1: generateNether(world, random, chunkX * 16, chunkZ * 16); break; } } private void generateEnd(World world, Random random, int x, int z) { } public void generateOverworld(World world, Random random, int x, int z) { generateOre(SteelworksBlocks.fire_clayblock, world, random, x, z, 4, 8, 100, 10, 64); new FireClayGen().generate(world, random, pos); } private void generateNether(World world, Random random, int x, int z) { } public void generateOre(Block block, World world, Random random, int posX, int posZ, int minVein, int maxVein, int spawnChance, int minY, int maxY) { WorldGenMinable gen = new WorldGenMinable(block.getDefaultState(), (minVein + random.nextInt(maxVein - minVein)), BlockHelper.forBlock(Blocks.stone)); for (int i = 0; i < spawnChance; i++) { int xPos = posX + random.nextInt(16); int yPos = minY + random.nextInt(maxY - minY); int zPos = posZ + random.nextInt(16); gen.generate(world, random, new BlockPos(xPos, yPos, zPos)); } } } package com.penumbral.steelworks.world; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; import net.minecraft.util.BlockPos; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import com.penumbral.steelworks.init.SteelworksBlocks; public class FireClayGen extends WorldGenerator{ private final Block blockToGen; private final int numberOfBlocks; public FireClayGen(Block block, int p_i2011_1_) { this.blockToGen = SteelworksBlocks.fire_clayblock; this.numberOfBlocks = p_i2011_1_; } public boolean generate(World world, Random random, BlockPos pos) { if (world.getBlockState(pos).getBlock().getMaterial() != Material.water) { return false; } else { int i = random.nextInt(this.numberOfBlocks - 2) + 2; byte b0 = 1; for (int j = pos.getX() - i; j <= pos.getX() + i; ++j) { for (int k = pos.getZ() - i; k <= pos.getZ() + i; ++k) { int l = j - pos.getX(); int i1 = k - pos.getZ(); if (l * l + i1 * i1 <= i * i) { for (int j1 = pos.getY() - b0; j1 <= pos.getY() + b0; ++j1) { BlockPos blockpos1 = new BlockPos(j, j1, k); Block block = world.getBlockState(blockpos1).getBlock(); if (block == Blocks.dirt || block == blockToGen) { world.setBlockState(blockpos1, this.blockToGen.getDefaultState(), 2); } } } } } return false; } } } Just unsure about what to put for new FireClayGen().generate(world, random, pos); I understand I most probably need to do something with the BlockPos
  12. On the actual ore generator class do I need to put something in the generateOverworld method?
  13. I think I still need to do something else as this won't run by itself
  14. Okay it's good now package com.penumbral.steelworks.world; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; import net.minecraft.util.BlockPos; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import com.penumbral.steelworks.init.SteelworksBlocks; public class FireClayGen extends WorldGenerator{ private final Block blockToGen; private final int numberOfBlocks; public FireClayGen(Block block, int p_i2011_1_) { this.blockToGen = SteelworksBlocks.fire_clayblock; this.numberOfBlocks = p_i2011_1_; } public boolean generate(World world1, Random rand, BlockPos pos) { if (world1.getBlockState(pos).getBlock().getMaterial() != Material.water) { return false; } else { int i = rand.nextInt(this.numberOfBlocks - 2) + 2; byte b0 = 1; for (int j = pos.getX() - i; j <= pos.getX() + i; ++j) { for (int k = pos.getZ() - i; k <= pos.getZ() + i; ++k) { int l = j - pos.getX(); int i1 = k - pos.getZ(); if (l * l + i1 * i1 <= i * i) { for (int j1 = pos.getY() - b0; j1 <= pos.getY() + b0; ++j1) { BlockPos blockpos1 = new BlockPos(j, j1, k); Block block = world1.getBlockState(blockpos1).getBlock(); if (block == Blocks.dirt || block == blockToGen) { world1.setBlockState(blockpos1, this.blockToGen.getDefaultState(), 2); } } } } } return false; } } } Now I just need to get it to generate
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.