Posted March 23, 201312 yr I am making a mod that has the same world generation as the end basically, but I changed it a bit. When I used blocks made in minecraft(Vanilla), it would generate properly. If I use a new block(that I added), it gives me an error and crashes the game. BlockPortalTutorial package net.minecraft.src; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.BlockPortal; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.server.MinecraftServer; import net.minecraft.world.World; public class BlockPortalTutorial extends BlockPortal{ public BlockPortalTutorial(int id, int texture) { super(id); setCreativeTab(CreativeTabs.tabBlock); } public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random) { super.updateTick(par1World, par2, par3, par4, par5Random); } public boolean tryToCreatePortal(World par1World, int par2, int par3, int par4) { byte b0 = 0; byte b1 = 0; if (par1World.getBlockId(par2 - 1, par3, par4) == Block.sandStone.blockID || par1World.getBlockId(par2 + 1, par3, par4) == Block.sandStone.blockID) { b0 = 1; } if (par1World.getBlockId(par2, par3, par4 - 1) == Block.sandStone.blockID || par1World.getBlockId(par2, par3, par4 + 1) == Block.sandStone.blockID) { b1 = 1; } if (b0 == b1) { return false; } else { if (par1World.getBlockId(par2 - b0, par3, par4 - b1) == 0) { par2 -= b0; par4 -= b1; } int l; int i1; for (l = -1; l <= 2; ++l) { for (i1 = -1; i1 <= 3; ++i1) { boolean flag = l == -1 || l == 2 || i1 == -1 || i1 == 3; if (l != -1 && l != 2 || i1 != -1 && i1 != 3) { int j1 = par1World.getBlockId(par2 + b0 * l, par3 + i1, par4 + b1 * l); if (flag) { if (j1 != Block.sandStone.blockID) { return false; } } else if (j1 != 0 && j1 != Block.fire.blockID) { return false; } } } } for (l = 0; l < 2; ++l) { for (i1 = 0; i1 < 3; ++i1) { par1World.setBlockAndMetadataWithNotify(par2 + b0 * l, par3 + i1, par4 + b1 * l, mod_Main.portalMod.blockID, 0, 2); } } return true; } } public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5) { byte b0 = 0; byte b1 = 1; if (par1World.getBlockId(par2 - 1, par3, par4) == this.blockID || par1World.getBlockId(par2 + 1, par3, par4) == this.blockID) { b0 = 1; b1 = 0; } int i1; for (i1 = par3; par1World.getBlockId(par2, i1 - 1, par4) == this.blockID; --i1) { ; } if (par1World.getBlockId(par2, i1 - 1, par4) != Block.sandStone.blockID) { par1World.func_94571_i(par2, par3, par4); } else { int j1; for (j1 = 1; j1 < 4 && par1World.getBlockId(par2, i1 + j1, par4) == this.blockID; ++j1) { ; } if (j1 == 3 && par1World.getBlockId(par2, i1 + j1, par4) == Block.sandStone.blockID) { boolean flag = par1World.getBlockId(par2 - 1, par3, par4) == this.blockID || par1World.getBlockId(par2 + 1, par3, par4) == this.blockID; boolean flag1 = par1World.getBlockId(par2, par3, par4 - 1) == this.blockID || par1World.getBlockId(par2, par3, par4 + 1) == this.blockID; if (flag && flag1) { par1World.func_94571_i(par2, par3, par4); } else { if ((par1World.getBlockId(par2 + b0, par3, par4 + b1) != Block.sandStone.blockID || par1World.getBlockId(par2 - b0, par3, par4 - b1) != this.blockID) && (par1World.getBlockId(par2 - b0, par3, par4 - b1) != Block.sandStone.blockID || par1World.getBlockId(par2 + b0, par3, par4 + b1) != this.blockID)) { par1World.func_94571_i(par2, par3, par4); } } } else { par1World.func_94571_i(par2, par3, par4); } } } public void onEntityCollidedWithBlock(World var1, int var2, int var3, int var4, Entity var5) { if ((var5.ridingEntity == null) && (var5.riddenByEntity == null) && ((var5 instanceof EntityPlayerMP))) { EntityPlayerMP var6 = (EntityPlayerMP)var5; ModLoader.getMinecraftServerInstance(); MinecraftServer mServer = MinecraftServer.getServer(); if (var6.timeUntilPortal > 0) { var6.timeUntilPortal = 10; } else if (var6.dimension != 20) { var6.timeUntilPortal = 10; var6.mcServer.getConfigurationManager().transferPlayerToDimension(var6, 20, new TeleporterMod(mServer.worldServerForDimension(mod_Main.dimension))); } else { var6.timeUntilPortal = 10; var6.mcServer.getConfigurationManager().transferPlayerToDimension(var6, 0, new TeleporterMod(mServer.worldServerForDimension(1))); } } } } mod_Main package net.minecraft.src; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.BlockStone; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.util.Icon; import net.minecraft.world.World; import net.minecraft.world.chunk.IChunkProvider; import net.minecraftforge.common.DimensionManager; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.Init; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @Mod(modid = "Nate_MOD", name = "Mod Name", version = "1.0") @NetworkMod(clientSideRequired = true, serverSideRequired = false) public class mod_Main { public static int dimension = 20; public static final Block portalMod = new BlockPortalTutorial(4000, 0).setUnlocalizedName("portal"); public static final Block skyDirt = new Block(4001, Material.ground).setUnlocalizedName("skyDirt").setHardness(0.5F).setStepSound(Block.soundGravelFootstep); public static final Block skyGrass = new BlockGrassMod(4002).setUnlocalizedName("skyGrass").setHardness(0.6F).setStepSound(Block.soundGrassFootstep); public static final Block granite = (new BlockGranite(4003)).setHardness(1.5F).setResistance(10.0F).setStepSound(Block.soundStoneFootstep).setUnlocalizedName("granite"); public static final Block graniteCobble = new Block(4004, Material.rock).setUnlocalizedName("graniteCobble").setHardness(2F).setResistance(5F); public static final Block invisible = new Block(4005, Material.rock).setUnlocalizedName("invisible").setHardness(2F).setResistance(5F); @SideOnly(Side.CLIENT) private Icon field_94385_a; @SideOnly(Side.CLIENT) private Icon field_94384_b; @Init public void load(FMLInitializationEvent event) { GameRegistry.registerBlock(invisible, "invisibleasdf"); LanguageRegistry.addName(invisible, "asd"); GameRegistry.registerBlock(graniteCobble, "granitesdf"); LanguageRegistry.addName(graniteCobble, "Granite Cobblestone"); GameRegistry.registerBlock(granite, "granitesasddfee"); LanguageRegistry.addName(granite, "Granite"); GameRegistry.registerBlock(skyDirt, "sky_dirt"); LanguageRegistry.addName(skyDirt, "Sky Dirt"); GameRegistry.registerBlock(skyGrass, "sky_grass"); LanguageRegistry.addName(skyGrass, "Sky Grass"); GameRegistry.registerBlock(portalMod, "Tutorial_Portal"); LanguageRegistry.addName(portalMod, "Portal"); DimensionManager.registerProviderType(dimension, WorldProviderMod.class, false); DimensionManager.registerDimension(dimension, dimension); int[] blockFireSpreadSpeed = new int[4096]; int[] blockFlammability = new int[4096]; } } /*public static void generateSkyWorld(World world, Random random, int i,int j) { for(int k = 0; k < 200; k++) { int randPosX = i + random.nextInt(20); int randPosY = random.nextInt(90); int randPosZ = j + random.nextInt(20); (new WorldGenMinableDirt(mod_Main.granite.blockID, 10)).generate(world, random, randPosX, randPosY, randPosZ); } } } */ If anyone would like to see any more of my code, please let me know, I could use as much help as possible. ERROR CODE Generated 3/23/13 12:16 AM -- Head -- Stacktrace: at net.minecraft.world.World.getBlockMaterial(World.java:589) at net.minecraft.world.SpawnerAnimals.canCreatureTypeSpawnAtLocation(SpawnerAnimals.java:235) at net.minecraft.world.SpawnerAnimals.findChunksForSpawning(SpawnerAnimals.java:142) at net.minecraft.world.WorldServer.tick(WorldServer.java:177) -- Affected level -- Details: Level name: New World All players: 1 total; [EntityPlayerMP['Player842'/558, l='New World', x=160.86, y=49.51, z=270.45]] Chunk stats: ServerChunkCache: 441 Drop: 0 Level seed: -7919778429701401543 Level generator: ID 00 - default, ver 1. Features enabled: false Level generator options: Level spawn location: World: (0,0,0), Chunk: (at 0,0,0 in 0,0; contains blocks 0,0,0 to 15,255,15), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511) Level time: 0 game time, 0 day time Level dimension: 0 Level storage version: 0x00000 - Unknown? Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false) Level game mode: ~~ERROR~~ NullPointerException: null Stacktrace: at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:640) at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:570) at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:127) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:468) at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16) -- System Details -- Details: Minecraft Version: 1.5 Operating System: Windows 7 (x86) version 6.1 Java Version: 1.7.0_09, Oracle Corporation Java VM Version: Java HotSpot™ Client VM (mixed mode), Oracle Corporation Memory: 787840440 bytes (751 MB) / 1046937600 bytes (998 MB) up to 1046937600 bytes (998 MB) JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M AABB Pool Size: 19903 (1114568 bytes; 1 MB) allocated, 0 (0 bytes; 0 MB) used Suspicious classes: FML and Forge are installed IntCache: cache: 0, tcache: 0, allocated: 3, tallocated: 63 FML: MCP v7.42 FML v5.0.24.582 Minecraft Forge 7.7.0.582 4 mods loaded, 4 mods active mcp [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available FML [Forge Mod Loader] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available Forge [Minecraft Forge] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available Nate_MOD [Mod Name] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available Profiler Position: N/A (disabled) Vec3 Pool Size: 1246 (69776 bytes; 0 MB) allocated, 998 (55888 bytes; 0 MB) used Player Count: 1 / 8; [EntityPlayerMP['Player842'/558, l='New World', x=160.86, y=49.51, z=270.45]] Type: Integrated Server (map_client.txt) Is Modded: Definitely; Client brand changed to 'forge,fml' java.lang.NullPointerException at net.minecraft.world.World.getBlockMaterial(World.java:589) at net.minecraft.world.SpawnerAnimals.canCreatureTypeSpawnAtLocation(SpawnerAnimals.java:235) at net.minecraft.world.SpawnerAnimals.findChunksForSpawning(SpawnerAnimals.java:142) at net.minecraft.world.WorldServer.tick(WorldServer.java:177) at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:640) at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:570) at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:127) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:468) at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16) --- END ERROR REPORT f6aff754 ---------- And I am using forge for minecraft 1.5
March 23, 201312 yr where's your worldprovider,chunkprovider,chunkmanger,genlayer and such Creator of Jobo's ModLoader If I helped you could you please click the thank you button and applaud my karma.
March 23, 201312 yr Author Oh here, sorry lol WorldProviderMod package net.minecraft.src; import net.minecraft.world.WorldProvider; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.biome.WorldChunkManagerHell; import net.minecraft.world.chunk.IChunkProvider; public class WorldProviderMod extends WorldProvider{ public String getDimensionName() { return "mod"; } public void registerWorldChunkManager() { this.worldChunkMgr = new WorldChunkManagerHell(BiomeGenBase.SkyWorld, 0.8F, 0.1F); this.dimensionId = mod_Main.dimension; } public boolean canRespawnHere() { return true; } public IChunkProvider createChunkGenerator() { return new ChunkProviderMod(worldObj, worldObj.getSeed()); } public float getCloudHeight() { return 8.0F; } } ChunkProviderMod package net.minecraft.src; import java.util.List; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.BlockSand; import net.minecraft.entity.EnumCreatureType; import net.minecraft.util.IProgressUpdate; import net.minecraft.util.MathHelper; import net.minecraft.world.ChunkPosition; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.NoiseGeneratorOctaves; import net.minecraftforge.common.*; import net.minecraftforge.event.Event.*; import net.minecraftforge.event.terraingen.*; public class ChunkProviderMod implements IChunkProvider { private Random endRNG; private NoiseGeneratorOctaves noiseGen1; private NoiseGeneratorOctaves noiseGen2; private NoiseGeneratorOctaves noiseGen3; public NoiseGeneratorOctaves noiseGen4; public NoiseGeneratorOctaves noiseGen5; private World endWorld; private double[] densities; /** The biomes that are used to generate the chunk */ private BiomeGenBase[] biomesForGeneration; double[] noiseData1; double[] noiseData2; double[] noiseData3; double[] noiseData4; double[] noiseData5; int[][] field_73203_h = new int[32][32]; public ChunkProviderMod(World par1World, long par2) { this.endWorld = par1World; this.endRNG = new Random(par2); this.noiseGen1 = new NoiseGeneratorOctaves(this.endRNG, 16); this.noiseGen2 = new NoiseGeneratorOctaves(this.endRNG, 16); this.noiseGen3 = new NoiseGeneratorOctaves(this.endRNG, ; this.noiseGen4 = new NoiseGeneratorOctaves(this.endRNG, 10); this.noiseGen5 = new NoiseGeneratorOctaves(this.endRNG, 16); NoiseGeneratorOctaves[] noiseGens = {noiseGen1, noiseGen2, noiseGen3, noiseGen4, noiseGen5}; noiseGens = TerrainGen.getModdedNoiseGenerators(par1World, this.endRNG, noiseGens); this.noiseGen1 = noiseGens[0]; this.noiseGen2 = noiseGens[1]; this.noiseGen3 = noiseGens[2]; this.noiseGen4 = noiseGens[3]; this.noiseGen5 = noiseGens[4]; } public void generateTerrain(int par1, int par2, byte[] par3ArrayOfByte, BiomeGenBase[] par4ArrayOfBiomeGenBase) { byte b0 = 2; int k = b0 + 1; byte b1 = 33; int l = b0 + 1; this.densities = this.initializeNoiseField(this.densities, par1 * b0, 0, par2 * b0, k, b1, l); for (int i1 = 0; i1 < b0; ++i1) { for (int j1 = 0; j1 < b0; ++j1) { for (int k1 = 0; k1 < 32; ++k1) { double d0 = 0.25D; double d1 = this.densities[((i1 + 0) * l + j1 + 0) * b1 + k1 + 0]; double d2 = this.densities[((i1 + 0) * l + j1 + 1) * b1 + k1 + 0]; double d3 = this.densities[((i1 + 1) * l + j1 + 0) * b1 + k1 + 0]; double d4 = this.densities[((i1 + 1) * l + j1 + 1) * b1 + k1 + 0]; double d5 = (this.densities[((i1 + 0) * l + j1 + 0) * b1 + k1 + 1] - d1) * d0; double d6 = (this.densities[((i1 + 0) * l + j1 + 1) * b1 + k1 + 1] - d2) * d0; double d7 = (this.densities[((i1 + 1) * l + j1 + 0) * b1 + k1 + 1] - d3) * d0; double d8 = (this.densities[((i1 + 1) * l + j1 + 1) * b1 + k1 + 1] - d4) * d0; for (int l1 = 0; l1 < 4; ++l1) { double d9 = 0.125D; double d10 = d1; double d11 = d2; double d12 = (d3 - d1) * d9; double d13 = (d4 - d2) * d9; for (int i2 = 0; i2 < 8; ++i2) { int j2 = i2 + i1 * 8 << 11 | 0 + j1 * 8 << 7 | k1 * 4 + l1; short short1 = 128; double d14 = 0.125D; double d15 = d10; double d16 = (d11 - d10) * d14; for (int k2 = 0; k2 < 8; ++k2) { int l2 = 0; if (d15 > 0.0D) { l2 = Block.stone.blockID; } par3ArrayOfByte[j2] = (byte)l2; j2 += short1; d15 += d16; } d10 += d12; d11 += d13; } d1 += d5; d2 += d6; d3 += d7; d4 += d8; } } } } } public void replaceBlocksForBiome(int par1, int par2, byte[] par3ArrayOfByte, BiomeGenBase[] par4ArrayOfBiomeGenBase) { ChunkProviderEvent.ReplaceBiomeBlocks event = new ChunkProviderEvent.ReplaceBiomeBlocks(this, par1, par2, par3ArrayOfByte, par4ArrayOfBiomeGenBase); MinecraftForge.EVENT_BUS.post(event); if (event.getResult() == Result.DENY) return; for (int k = 0; k < 16; ++k) { for (int l = 0; l < 16; ++l) { byte b0 = 1; int i1 = -1; byte b1 = (byte)Block.grass.blockID; byte b2 = (byte)Block.stone.blockID; for (int j1 = 127; j1 >= 0; --j1) { int k1 = (l * 16 + k) * 128 + j1; byte b3 = par3ArrayOfByte[k1]; if (b3 == 0) { i1 = -1; } else if (b3 == Block.stone.blockID) { if (i1 == -1) { if (b0 <= 0) { b1 = 0; b2 = (byte)Block.dirt.blockID; } i1 = b0; if (j1 >= 0) { par3ArrayOfByte[k1] = b1; } else { par3ArrayOfByte[k1] = b2; } } else if (i1 > 0) { --i1; par3ArrayOfByte[k1] = b2; } } } } } } /** * loads or generates the chunk at the chunk location specified */ public Chunk loadChunk(int par1, int par2) { return this.provideChunk(par1, par2); } /** * Will return back a chunk, if it doesn't exist and its not a MP client it will generates all the blocks for the * specified chunk from the map seed and chunk seed */ public Chunk provideChunk(int par1, int par2) { this.endRNG.setSeed((long)par1 * 341873128712L + (long)par2 * 132897987541L); byte[] abyte = new byte[32768]; this.biomesForGeneration = this.endWorld.getWorldChunkManager().loadBlockGeneratorData(this.biomesForGeneration, par1 * 16, par2 * 16, 16, 16); this.generateTerrain(par1, par2, abyte, this.biomesForGeneration); this.replaceBlocksForBiome(par1, par2, abyte, this.biomesForGeneration); Chunk chunk = new Chunk(this.endWorld, abyte, par1, par2); byte[] abyte1 = chunk.getBiomeArray(); for (int k = 0; k < abyte1.length; ++k) { abyte1[k] = (byte)this.biomesForGeneration[k].biomeID; } chunk.generateSkylightMap(); return chunk; } /** * generates a subset of the level's terrain data. Takes 7 arguments: the [empty] noise array, the position, and the * size. */ private double[] initializeNoiseField(double[] par1ArrayOfDouble, int par2, int par3, int par4, int par5, int par6, int par7) { ChunkProviderEvent.InitNoiseField event = new ChunkProviderEvent.InitNoiseField(this, par1ArrayOfDouble, par2, par3, par4, par5, par6, par7); MinecraftForge.EVENT_BUS.post(event); if (event.getResult() == Result.DENY) return event.noisefield; if (par1ArrayOfDouble == null) { par1ArrayOfDouble = new double[par5 * par6 * par7]; } double d0 = 684.412D; double d1 = 684.412D; this.noiseData4 = this.noiseGen4.generateNoiseOctaves(this.noiseData4, par2, par4, par5, par7, 1.121D, 1.121D, 0.5D); this.noiseData5 = this.noiseGen5.generateNoiseOctaves(this.noiseData5, par2, par4, par5, par7, 200.0D, 200.0D, 0.5D); d0 *= 2.0D; this.noiseData1 = this.noiseGen3.generateNoiseOctaves(this.noiseData1, par2, par3, par4, par5, par6, par7, d0 / 80.0D, d1 / 160.0D, d0 / 80.0D); this.noiseData2 = this.noiseGen1.generateNoiseOctaves(this.noiseData2, par2, par3, par4, par5, par6, par7, d0, d1, d0); this.noiseData3 = this.noiseGen2.generateNoiseOctaves(this.noiseData3, par2, par3, par4, par5, par6, par7, d0, d1, d0); int k1 = 0; int l1 = 0; for (int i2 = 0; i2 < par5; ++i2) { for (int j2 = 0; j2 < par7; ++j2) { double d2 = (this.noiseData4[l1] + 256.0D) / 512.0D; if (d2 > 1.0D) { d2 = 1.0D; } double d3 = this.noiseData5[l1] / 8000.0D; if (d3 < 0.0D) { d3 = -d3 * 0.3D; } d3 = d3 * 3.0D - 2.0D; float f = (float)(i2 + par2 - 0) / 1.0F; float f1 = (float)(j2 + par4 - 0) / 1.0F; float f2 = 1F; if (f2 > 80.0F) { f2 = 80.0F; } if (f2 < -100.0F) { f2 = -100.0F; } if (d3 > 1.0D) { d3 = 1.0D; } d3 /= 8.0D; d3 = 0.0D; if (d2 < 0.0D) { d2 = 0.0D; } d2 += 0.5D; d3 = d3 * (double)par6 / 16.0D; ++l1; double d4 = (double)par6 / 2.0D; for (int k2 = 0; k2 < par6; ++k2) { double d5 = 0.0D; double d6 = ((double)k2 - d4) * 8.0D / d2; if (d6 < 0.0D) { d6 *= -1.0D; } double d7 = this.noiseData2[k1] / 512.0D; double d8 = this.noiseData3[k1] / 512.0D; double d9 = (this.noiseData1[k1] / 10.0D + 1.0D) / 2.0D; if (d9 < 0.0D) { d5 = d7; } else if (d9 > 1.0D) { d5 = d8; } else { d5 = d7 + (d8 - d7) * d9; } d5 -= 8.0D; d5 += (double)f2; byte b0 = 2; double d10; if (k2 > par6 / 2 - b0) { d10 = (double)((float)(k2 - (par6 / 2 - b0)) / 64.0F); if (d10 < 0.0D) { d10 = 0.0D; } if (d10 > 1.0D) { d10 = 1.0D; } d5 = d5 * (1.0D - d10) + -3000.0D * d10; } b0 = 8; if (k2 < b0) { d10 = (double)((float)(b0 - k2) / ((float)b0 - 1.0F)); d5 = d5 * (1.0D - d10) + -30.0D * d10; } par1ArrayOfDouble[k1] = d5; ++k1; } } } return par1ArrayOfDouble; } /** * Checks to see if a chunk exists at x, y */ public boolean chunkExists(int par1, int par2) { return true; } /** * Populates chunk with ores etc etc */ public void populate(IChunkProvider par1IChunkProvider, int par2, int par3) { BlockSand.fallInstantly = true; MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Pre(par1IChunkProvider, endWorld, endWorld.rand, par2, par3, false)); MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Post(par1IChunkProvider, endWorld, endWorld.rand, par2, par3, false)); BlockSand.fallInstantly = false; } /** * Two modes of operation: if passed true, save all Chunks in one go. If passed false, save up to two chunks. * Return true if all chunks have been saved. */ public boolean saveChunks(boolean par1, IProgressUpdate par2IProgressUpdate) { return true; } /** * Unloads chunks that are marked to be unloaded. This is not guaranteed to unload every such chunk. */ public boolean unloadQueuedChunks() { return false; } /** * Returns if the IChunkProvider supports saving. */ public boolean canSave() { return true; } /** * Converts the instance data to a readable string. */ public String makeString() { return "RandomLevelSource"; } /** * Returns a list of creatures of the specified type that can spawn at the given location. */ public List getPossibleCreatures(EnumCreatureType par1EnumCreatureType, int par2, int par3, int par4) { BiomeGenBase biomegenbase = this.endWorld.getBiomeGenForCoords(par2, par4); return biomegenbase == null ? null : biomegenbase.getSpawnableList(par1EnumCreatureType); } /** * Returns the location of the closest structure of the specified type. If not found returns null. */ public ChunkPosition findClosestStructure(World par1World, String par2Str, int par3, int par4, int par5) { return null; } public int getLoadedChunkCount() { return 0; } public void recreateStructures(int par1, int par2) {} } And I don't think I have the chunkmanager and the genlayer. And this is what it looks like s far, but I want to replace the grass and dirt and stone with my own version of them.
March 23, 201312 yr the grass and dirt are the top and filler blocks in the biome and the stone is in the chunk provider under replaceblocksforbiomes Creator of Jobo's ModLoader If I helped you could you please click the thank you button and applaud my karma.
March 23, 201312 yr Author When I tried that, this is what it gave me, WorldGenMod package net.minecraft.world.biome; import net.minecraft.block.Block; import net.minecraft.entity.monster.EntityEnderman; import net.minecraft.entity.passive.EntityChicken; import net.minecraft.entity.passive.EntityCow; import net.minecraft.entity.passive.EntityPig; import net.minecraft.entity.passive.EntitySheep; import net.minecraft.entity.passive.EntityVillager; import net.minecraft.src.BiomeDecoratorMod; public class BiomeGenMod extends BiomeGenBase { protected BiomeGenMod(int par1) { super(par1); this.spawnableMonsterList.clear(); this.spawnableCreatureList.clear(); this.spawnableWaterCreatureList.clear(); this.spawnableCaveCreatureList.clear(); this.topBlock = (byte)Block.skyGrass.blockID; this.fillerBlock = (byte)Block.skyDirt.blockID; this.theBiomeDecorator.treesPerChunk = 1; this.theBiomeDecorator.flowersPerChunk = 4; this.theBiomeDecorator.grassPerChunk = 4; this.theBiomeDecorator = new BiomeDecoratorMod(this); } }
March 24, 201312 yr How did you get a custom biome in your dimension? Just wondering, because whenever I put my custom biome in my World Provider file, it throws an error.
March 24, 201312 yr It isn't a good idea, to change your ChunkProvider class. One reason is that SpawnerAnimals is being used. I have encountered this error before, so you might not want to remove that specific line of code. I think it is public void decorate() { } Don't edit ANYTHING in it.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.