Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

NathanHam89

Members
  • Joined

  • Last visited

  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. Yeah changed it to generate
  15. 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

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.