All users will need to merge their Minecraft Forum account with a new or existing Twitch account starting October 23rd. You can merge your accounts by clicking here. Have questions? Learn more here.
Dismiss
  • 0

    posted a message on [1.8] [Forge] Portal block not rendering correctly?

    "Altering existing content and distribution of it is not allowed unless permission is given by the original content creator. This includes Mojang assets, mods, and resource packs." And anyway, I don't think the problem has anything to do with the code. As you can see in the error, it says "Model definition for location not found", and does not reference any line in the code. The problem is in the JSON files.

    Posted in: Modification Development
  • 0

    posted a message on [1.8] [Forge] Portal block not rendering correctly?

    Hello, I'm trying to make a dimension mod for myself, and I'm having problems getting the portal block to render properly. It should look just like a normal minecraft nether portal block, but green instead of purple. Now I'm having some trouble with the assets folder, as it doesn't work when it's in the java or resources folder, but has to be in both. I'm sure I'm making some stupid mistake, but for now I'll just keep it in both. Here's some screenshots of what the looks like now:



    This is it in the inventory.


    This is it when it's placed. Notice that the block bounds are correct, but the texture isn't. Plus that it's the "no texture found" texture.


    The error is this:

    [17:00:33] [Client thread/ERROR] [FML]: Model definition for location treeland:treePortal#axis=x not found

    [17:00:33] [Client thread/ERROR] [FML]: Model definition for location treeland:treePortal#axis=z not found


    Here's some code, and JSON files:


    Edit: Removed BlockTreePortal, doesn't look like it's allowed here by forum rules.







    assets\treeland\blockstates\treePortal.json



    {
    "variants": {
    "axis=z": { "model": "treeland:treePortal_ew" },
    "axis=x": { "model": "treeland:treePortal_ns" }
    }
    }


    assets\treeland\models\item\treePortal.json



    {
    "parent": "treeland:block/treePortal",
    "display": {
    "thirdperson": {
    "rotation": [ 10, -45, 170 ],
    "translation": [ 0, 1.5, -2.75 ],
    "scale": [ 0.375, 0.375, 0.375 ]
    }
    }
    }


    assets\treeland\models\block (all the 3 treePortal files. not sure if all of them are neccesary)



    treePortal.json:

    {
    "parent": "block/cube_all",
    "textures": {
    "all": "treeland:block/treeportal"
    }
    }


    treePortal_ew.json:

    {
    "parent": "block/cube_all",
    "textures": {
    "portal": "treeland:block/treeportal"
    },
    "elements": [
    { "from": [ 6, 0, 0 ],
    "to": [ 10, 16, 16 ],
    "faces": {
    "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#portal" },
    "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#portal" }
    }
    }
    ]
    }


    treePortal_ns.json:

    {
    "parent": "block/cube_all",
    "textures": {
    "portal": "treeland:block/treeportal"
    },
    "elements": [
    { "from": [ 0, 0, 6 ],
    "to": [ 16, 16, 10 ],
    "faces": {
    "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#portal" },
    "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#portal" }
    }
    }
    ]
    }


    The png and the mcmeta file are located in assets/treeland/textures/block.


    Like I said, I probably did a bunch of things wrong.

    Thanks for the help

    -Clust

    Posted in: Modification Development
  • 0

    posted a message on {Closed}
    It's a great server, I hope we get more active players.
    Posted in: PC Servers
  • 0

    posted a message on New Dimension - Blocks of water still generate at sea level (but not below it) despite lowering the sea level? [Unsolved]
    Okay here's an update on something I've discovered:

    I just started making another dimension for the mod. It's the starter dimension, so it only has one biome, and uses the exact same chunk provider as the overworld. When changing water to air in this chunk provider, I don't get the same problem. This confirms that the cause of some water generating is in the Wasteland's ChunkProvider.

    EDIT: Well I thought it was in the chunk provider... I replaced it with the starter dimension's chunk provider, and the problem still exists. So I guess it's in the world chunk manager or one of the genlayers?

    WorldChunkManager code

     package xtracraft.world;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import java.util.Random;
    
    import xtracraft.Xtracraft;
    import xtracraft.genlayer.GenLayerWasteland;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    
    import net.minecraft.world.ChunkPosition;
    import net.minecraft.world.World;
    import net.minecraft.world.WorldType;
    import net.minecraft.world.biome.BiomeCache;
    import net.minecraft.world.biome.BiomeGenBase;
    import net.minecraft.world.biome.WorldChunkManager;
    import net.minecraft.world.gen.layer.GenLayer;
    import net.minecraft.world.gen.layer.IntCache;
    
    public class WorldChunkManagerWasteland extends WorldChunkManager
    {
     private GenLayer myGenBiomes;
     private GenLayer myBiomeIndexLayer;
     private BiomeCache myBiomeCache;
     private List myBiomesToSpawnIn;
    
     protected WorldChunkManagerWasteland()
     {
     this.myBiomeCache = new BiomeCache(this);
     this.myBiomesToSpawnIn = new ArrayList();
     this.myBiomesToSpawnIn.add(Xtracraft.wasteDesert);
     this.myBiomesToSpawnIn.add(Xtracraft.wasteHills);
     this.myBiomesToSpawnIn.add(Xtracraft.wastePlains);
     this.myBiomesToSpawnIn.add(Xtracraft.deadForest);
     }
    
     public WorldChunkManagerWasteland(long seed, WorldType worldtype)
     {
     this();
     // i changed this to my GenLayerTutorial
     GenLayer[] agenlayer = GenLayerWasteland.makeTheWorld(seed);
     this.myGenBiomes = agenlayer[0];
     this.myBiomeIndexLayer = agenlayer[1];
     }
    
     public WorldChunkManagerWasteland(World world)
     {
     this(world.getSeed(), world.provider.terrainType);
     }
    
     /**
     * Gets the list of valid biomes for the player to spawn in.
     */
     public List getBiomesToSpawnIn()
     {
     return this.myBiomesToSpawnIn;
     }
    
     /**
     * Returns the BiomeGenBase related to the x, z position on the world.
     */
     public BiomeGenBase getBiomeGenAt(int x, int z)
     {
     BiomeGenBase biome = this.myBiomeCache.getBiomeGenAt(x, z);
     if (biome == null)
     {
     return Xtracraft.wastePlains;
     }
    
     return biome;
     }
    
     /**
     * Returns a list of rainfall values for the specified blocks. Args:
     * listToReuse, x, z, width, length.
     */
     @Override
     public float[] getRainfall(float[] par1ArrayOfFloat, int par2, int par3, int par4, int par5)
     {
     IntCache.resetIntCache();
    
     if (par1ArrayOfFloat == null || par1ArrayOfFloat.length < par4 * par5)
     {
     par1ArrayOfFloat = new float[par4 * par5];
     }
    
     int[] aint = this.myBiomeIndexLayer.getInts(par2, par3, par4, par5);
    
     for (int i1 = 0; i1 < par4 * par5; ++i1)
     {
     float f = (float) BiomeGenBase.getBiome(aint[i1]).getIntRainfall() / 65536.0F;
    
     if (f > 1.0F) {
     f = 1.0F;
     }
     par1ArrayOfFloat[i1] = f;
     }
     return par1ArrayOfFloat;
     }
    
     /**
     * Return an adjusted version of a given temperature based on the y height
     */
     @Override
     @SideOnly(Side.CLIENT)
     public float getTemperatureAtHeight(float par1, int par2)
     {
     return par1;
     }
    
     /**
     * Returns an array of biomes for the location input.
     */
     @Override
     public BiomeGenBase[] getBiomesForGeneration(BiomeGenBase[] par1ArrayOfBiomeGenBase, int par2, int par3, int par4, int par5) {
     IntCache.resetIntCache();
    
     if (par1ArrayOfBiomeGenBase == null || par1ArrayOfBiomeGenBase.length < par4 * par5) {
     par1ArrayOfBiomeGenBase = new BiomeGenBase[par4 * par5];
     }
    
     int[] aint = this.myGenBiomes.getInts(par2, par3, par4, par5);
    
     for (int i = 0; i < par4 * par5; ++i) {
     if (aint[i] >= 0) {
     par1ArrayOfBiomeGenBase[i] = BiomeGenBase.getBiome(aint[i]);
     } else {
     //Change this to a biome
     par1ArrayOfBiomeGenBase[i] = Xtracraft.wastePlains;
     }
     }
    
     return par1ArrayOfBiomeGenBase;
     }
    
     /**
     * Returns biomes to use for the blocks and loads the other data like
     * temperature and humidity onto the WorldChunkManager Args: oldBiomeList,
     * x, z, width, depth
     */
     @Override
     public BiomeGenBase[] loadBlockGeneratorData(BiomeGenBase[] par1ArrayOfBiomeGenBase, int par2, int par3, int par4, int par5) {
     return this.getBiomeGenAt(par1ArrayOfBiomeGenBase, par2, par3, par4, par5, true);
     }
    
     /**
     * Return a list of biomes for the specified blocks. Args: listToReuse, x,
     * y, width, length, cacheFlag (if false, don't check biomeCache to avoid
     * infinite loop in BiomeCacheBlock)
     */
     @Override
     public BiomeGenBase[] getBiomeGenAt(BiomeGenBase[] par1ArrayOfBiomeGenBase, int x, int y, int width, int length, boolean cacheFlag) {
     IntCache.resetIntCache();
    
     if (par1ArrayOfBiomeGenBase == null || par1ArrayOfBiomeGenBase.length < width * length) {
     par1ArrayOfBiomeGenBase = new BiomeGenBase[width * length];
     }
    
     if (cacheFlag && width == 16 && length == 16 && (x & 15) == 0 && (y & 15) == 0) {
     BiomeGenBase[] abiomegenbase1 = this.myBiomeCache.getCachedBiomes(x, y);
     System.arraycopy(abiomegenbase1, 0, par1ArrayOfBiomeGenBase, 0, width * length);
     return par1ArrayOfBiomeGenBase;
     } else {
     int[] aint = this.myBiomeIndexLayer.getInts(x, y, width, length);
    
     for (int i = 0; i < width * length; ++i) {
     if (aint[i] >= 0) {
     par1ArrayOfBiomeGenBase[i] = BiomeGenBase.getBiome(aint[i]);
     } else {
     //Change this to a biome
     par1ArrayOfBiomeGenBase[i] = Xtracraft.wastePlains;
     }
     }
    
     return par1ArrayOfBiomeGenBase;
     }
     }
    
     /**
     * checks given Chunk's Biomes against List of allowed ones
     */
     @Override
     public boolean areBiomesViable(int par1, int par2, int par3, List par4List) {
     IntCache.resetIntCache();
     int l = par1 - par3 >> 2;
     int i1 = par2 - par3 >> 2;
     int j1 = par1 + par3 >> 2;
     int k1 = par2 + par3 >> 2;
     int l1 = j1 - l + 1;
     int i2 = k1 - i1 + 1;
     int[] aint = this.myGenBiomes.getInts(l, i1, l1, i2);
    
     for (int j2 = 0; j2 < l1 * i2; ++j2) {
     BiomeGenBase biomegenbase = BiomeGenBase.getBiome(aint[j2]);
    
     if (!par4List.contains(biomegenbase)) {
     return false;
     }
     }
    
     return true;
     }
    
     /**
     * Finds a valid position within a range, that is in one of the listed
     * biomes. Searches {par1,par2} +-par3 blocks. Strongly favors positive y
     * positions.
     */
     @Override
     public ChunkPosition findBiomePosition(int par1, int par2, int par3, List par4List, Random par5Random) {
     IntCache.resetIntCache();
     int l = par1 - par3 >> 2;
     int i1 = par2 - par3 >> 2;
     int j1 = par1 + par3 >> 2;
     int k1 = par2 + par3 >> 2;
     int l1 = j1 - l + 1;
     int i2 = k1 - i1 + 1;
     int[] aint = this.myGenBiomes.getInts(l, i1, l1, i2);
     ChunkPosition chunkposition = null;
     int j2 = 0;
    
     for (int k2 = 0; k2 < l1 * i2; ++k2) {
     int l2 = l + k2 % l1 << 2;
     int i3 = i1 + k2 / l1 << 2;
     BiomeGenBase biomegenbase = BiomeGenBase.getBiome(aint[k2]);
    
     if (par4List.contains(biomegenbase) && (chunkposition == null || par5Random.nextInt(j2 + 1) == 0)) {
     chunkposition = new ChunkPosition(l2, 0, i3);
     ++j2;
     }
     }
    
     return chunkposition;
     }
    
     /**
     * Calls the WorldChunkManager's biomeCache.cleanupCache()
     */
     @Override
     public void cleanupCache()
     {
     this.myBiomeCache.cleanupCache();
     }
    }
    [/i][/i][/i][/i][/i][/i][/i][/i]
    Posted in: Modification Development
  • 0

    posted a message on New Dimension - Blocks of water still generate at sea level (but not below it) despite lowering the sea level? [Unsolved]
    The lines are removed, and the water is still there! :( This doesn't seem like it will have an easy fix.

    Posted in: Modification Development
  • 0

    posted a message on New Dimension - Blocks of water still generate at sea level (but not below it) despite lowering the sea level? [Unsolved]
    So in my new dimension, I don't want any water in oceans to generate. I lowered the sea level, which mostly works. However, some blocks of water still generate at the height of the default sea level.

    Like this:

    I don't know what code to post, and if you need to check any other classes just ask, but I'll start with my ChunkProvider:

    package xtracraft.world;
    import static net.minecraftforge.event.terraingen.InitMapGenEvent.EventType.CAVE;
    import static net.minecraftforge.event.terraingen.InitMapGenEvent.EventType.MINESHAFT;
    import static net.minecraftforge.event.terraingen.InitMapGenEvent.EventType.RAVINE;
    import static net.minecraftforge.event.terraingen.InitMapGenEvent.EventType.SCATTERED_FEATURE;
    import static net.minecraftforge.event.terraingen.InitMapGenEvent.EventType.STRONGHOLD;
    import static net.minecraftforge.event.terraingen.InitMapGenEvent.EventType.VILLAGE;
    import static net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType.ANIMALS;
    import static net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType.DUNGEON;
    import static net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType.ICE;
    import static net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType.LAKE;
    import static net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType.LAVA;

    import java.util.List;
    import java.util.Random;

    import xtracraft.Xtracraft;

    import net.minecraft.block.Block;
    import net.minecraft.block.BlockFalling;
    import net.minecraft.entity.EnumCreatureType;
    import net.minecraft.init.Blocks;
    import net.minecraft.util.IProgressUpdate;
    import net.minecraft.util.MathHelper;
    import net.minecraft.world.ChunkPosition;
    import net.minecraft.world.SpawnerAnimals;
    import net.minecraft.world.World;
    import net.minecraft.world.WorldType;
    import net.minecraft.world.biome.BiomeGenBase;
    import net.minecraft.world.chunk.Chunk;
    import net.minecraft.world.chunk.IChunkProvider;
    import net.minecraft.world.gen.MapGenBase;
    import net.minecraft.world.gen.MapGenCaves;
    import net.minecraft.world.gen.MapGenRavine;
    import net.minecraft.world.gen.NoiseGenerator;
    import net.minecraft.world.gen.NoiseGeneratorOctaves;
    import net.minecraft.world.gen.NoiseGeneratorPerlin;
    import net.minecraft.world.gen.feature.WorldGenDungeons;
    import net.minecraft.world.gen.feature.WorldGenLakes;
    import net.minecraft.world.gen.structure.MapGenMineshaft;
    import net.minecraft.world.gen.structure.MapGenScatteredFeature;
    import net.minecraft.world.gen.structure.MapGenStronghold;
    import net.minecraft.world.gen.structure.MapGenVillage;
    import net.minecraftforge.common.MinecraftForge;
    import net.minecraftforge.event.terraingen.ChunkProviderEvent;
    import net.minecraftforge.event.terraingen.PopulateChunkEvent;
    import net.minecraftforge.event.terraingen.TerrainGen;
    import cpw.mods.fml.common.eventhandler.Event.Result;

    public class ChunkProviderWasteland implements IChunkProvider
    {
    /** RNG. */
    private Random rand;
    private NoiseGeneratorOctaves field_147431_j;
    private NoiseGeneratorOctaves field_147432_k;
    private NoiseGeneratorOctaves field_147429_l;
    private NoiseGeneratorPerlin field_147430_m;
    public NoiseGeneratorOctaves noiseGen5;
    public NoiseGeneratorOctaves noiseGen6;
    public NoiseGeneratorOctaves mobSpawnerNoise;
    private World worldObj;
    private final boolean mapFeaturesEnabled;
    private WorldType field_147435_p;
    private final double[] field_147434_q;
    private final float[] parabolicField;
    private double[] stoneNoise = new double[256];
    private MapGenBase caveGenerator = new MapGenCaves();
    //private MapGenStronghold strongholdGenerator = new MapGenStronghold();
    private MapGenVillage villageGenerator = new MapGenVillage();
    //private MapGenMineshaft mineshaftGenerator = new MapGenMineshaft();
    private MapGenScatteredFeature scatteredFeatureGenerator = new MapGenScatteredFeature();
    private MapGenBase ravineGenerator = new MapGenRavine();
    private BiomeGenBase[] biomesForGeneration;
    double[] field_147427_d;
    double[] field_147428_e;
    double[] field_147425_f;
    double[] field_147426_g;
    int[][] field_73219_j = new int[32][32];
    private static final String __OBFID = "CL_00000396";

    {
    caveGenerator = TerrainGen.getModdedMapGen(caveGenerator, CAVE);
    //strongholdGenerator = (MapGenStronghold) TerrainGen.getModdedMapGen(strongholdGenerator, STRONGHOLD);
    villageGenerator = (MapGenVillage) TerrainGen.getModdedMapGen(villageGenerator, VILLAGE);
    //mineshaftGenerator = (MapGenMineshaft) TerrainGen.getModdedMapGen(mineshaftGenerator, MINESHAFT);
    scatteredFeatureGenerator = (MapGenScatteredFeature) TerrainGen.getModdedMapGen(scatteredFeatureGenerator, SCATTERED_FEATURE);
    ravineGenerator = TerrainGen.getModdedMapGen(ravineGenerator, RAVINE);
    }

    public ChunkProviderWasteland(World p_i2006_1_, long p_i2006_2_, boolean p_i2006_4_)
    {
    this.worldObj = p_i2006_1_;
    this.mapFeaturesEnabled = p_i2006_4_;
    this.field_147435_p = p_i2006_1_.getWorldInfo().getTerrainType();
    this.rand = new Random(p_i2006_2_);
    this.field_147431_j = new NoiseGeneratorOctaves(this.rand, 16);
    this.field_147432_k = new NoiseGeneratorOctaves(this.rand, 16);
    this.field_147429_l = new NoiseGeneratorOctaves(this.rand, 8);
    this.field_147430_m = new NoiseGeneratorPerlin(this.rand, 4);
    this.noiseGen5 = new NoiseGeneratorOctaves(this.rand, 10);
    this.noiseGen6 = new NoiseGeneratorOctaves(this.rand, 16);
    this.mobSpawnerNoise = new NoiseGeneratorOctaves(this.rand, 8);
    this.field_147434_q = new double[825];
    this.parabolicField = new float[25];

    for (int j = -2; j <= 2; ++j)
    {
    for (int k = -2; k <= 2; ++k)
    {
    float f = 10.0F / MathHelper.sqrt_float((float)(j * j + k * k) + 0.2F);
    this.parabolicField[j + 2 + (k + 2) * 5] = f;
    }
    }

    NoiseGenerator[] noiseGens = {field_147431_j, field_147432_k, field_147429_l, field_147430_m, noiseGen5, noiseGen6, mobSpawnerNoise};
    noiseGens = TerrainGen.getModdedNoiseGenerators(p_i2006_1_, this.rand, noiseGens);
    this.field_147431_j = (NoiseGeneratorOctaves)noiseGens[0];
    this.field_147432_k = (NoiseGeneratorOctaves)noiseGens[1];
    this.field_147429_l = (NoiseGeneratorOctaves)noiseGens[2];
    this.field_147430_m = (NoiseGeneratorPerlin)noiseGens[3];
    this.noiseGen5 = (NoiseGeneratorOctaves)noiseGens[4];
    this.noiseGen6 = (NoiseGeneratorOctaves)noiseGens[5];
    this.mobSpawnerNoise = (NoiseGeneratorOctaves)noiseGens[6];
    }

    public void func_147424_a(int p_147424_1_, int p_147424_2_, Block[] p_147424_3_)
    {
    byte b0 = 0; //Was 63 (ocean height)
    this.biomesForGeneration = this.worldObj.getWorldChunkManager().getBiomesForGeneration(this.biomesForGeneration, p_147424_1_ * 4 - 2, p_147424_2_ * 4 - 2, 10, 10);
    this.func_147423_a(p_147424_1_ * 4, 0, p_147424_2_ * 4);

    for (int k = 0; k < 4; ++k)
    {
    int l = k * 5;
    int i1 = (k + 1) * 5;

    for (int j1 = 0; j1 < 4; ++j1)
    {
    int k1 = (l + j1) * 33;
    int l1 = (l + j1 + 1) * 33;
    int i2 = (i1 + j1) * 33;
    int j2 = (i1 + j1 + 1) * 33;

    for (int k2 = 0; k2 < 32; ++k2)
    {
    double d0 = 0.125D;
    double d1 = this.field_147434_q[k1 + k2];
    double d2 = this.field_147434_q[l1 + k2];
    double d3 = this.field_147434_q[i2 + k2];
    double d4 = this.field_147434_q[j2 + k2];
    double d5 = (this.field_147434_q[k1 + k2 + 1] - d1) * d0;
    double d6 = (this.field_147434_q[l1 + k2 + 1] - d2) * d0;
    double d7 = (this.field_147434_q[i2 + k2 + 1] - d3) * d0;
    double d8 = (this.field_147434_q[j2 + k2 + 1] - d4) * d0;

    for (int l2 = 0; l2 < 8; ++l2)
    {
    double d9 = 0.25D;
    double d10 = d1;
    double d11 = d2;
    double d12 = (d3 - d1) * d9;
    double d13 = (d4 - d2) * d9;

    for (int i3 = 0; i3 < 4; ++i3)
    {
    int j3 = i3 + k * 4 << 12 | 0 + j1 * 4 << 8 | k2 * 8 + l2;
    short short1 = 256;
    j3 -= short1;
    double d14 = 0.25D;
    double d16 = (d11 - d10) * d14;
    double d15 = d10 - d16;

    for (int k3 = 0; k3 < 4; ++k3)
    {
    if ((d15 += d16) > 0.0D)
    {
    p_147424_3_[j3 += short1] = Blocks.stone;
    }
    else if (k2 * 8 + l2 < b0)
    {
    p_147424_3_[j3 += short1] = Blocks.water;
    }
    else
    {
    p_147424_3_[j3 += short1] = null;
    }
    }

    d10 += d12;
    d11 += d13;
    }

    d1 += d5;
    d2 += d6;
    d3 += d7;
    d4 += d8;
    }
    }
    }
    }
    }
    public void replaceBlocksForBiome(int p_147422_1_, int p_147422_2_, Block[] p_147422_3_, byte[] p_147422_4_, BiomeGenBase[] p_147422_5_)
    {
    ChunkProviderEvent.ReplaceBiomeBlocks event = new ChunkProviderEvent.ReplaceBiomeBlocks(this, p_147422_1_, p_147422_2_, p_147422_3_, p_147422_4_, p_147422_5_); //this.worldObj was last arg
    MinecraftForge.EVENT_BUS.post(event);
    if (event.getResult() == Result.DENY) return;

    double d0 = 0.03125D;
    this.stoneNoise = this.field_147430_m.func_151599_a(this.stoneNoise, (double)(p_147422_1_ * 16), (double)(p_147422_2_ * 16), 16, 16, d0 * 2.0D, d0 * 2.0D, 1.0D);

    for (int k = 0; k < 16; ++k)
    {
    for (int l = 0; l < 16; ++l)
    {
    BiomeGenBase biomegenbase = p_147422_5_[l + k * 16];
    biomegenbase.genTerrainBlocks(this.worldObj, this.rand, p_147422_3_, p_147422_4_, p_147422_1_ * 16 + k, p_147422_2_ * 16 + l, this.stoneNoise[l + k * 16]);
    }
    }
    }

    public Chunk loadChunk(int p_73158_1_, int p_73158_2_)
    {
    return this.provideChunk(p_73158_1_, p_73158_2_);
    }

    public Chunk provideChunk(int p_73154_1_, int p_73154_2_)
    {
    this.rand.setSeed((long)p_73154_1_ * 341873128712L + (long)p_73154_2_ * 132897987541L);
    Block[] ablock = new Block[65536];
    byte[] abyte = new byte[65536];
    this.func_147424_a(p_73154_1_, p_73154_2_, ablock);
    this.biomesForGeneration = this.worldObj.getWorldChunkManager().loadBlockGeneratorData(this.biomesForGeneration, p_73154_1_ * 16, p_73154_2_ * 16, 16, 16);
    this.replaceBlocksForBiome(p_73154_1_, p_73154_2_, ablock, abyte, this.biomesForGeneration);
    this.caveGenerator.func_151539_a(this, this.worldObj, p_73154_1_, p_73154_2_, ablock);
    this.ravineGenerator.func_151539_a(this, this.worldObj, p_73154_1_, p_73154_2_, ablock);

    if (this.mapFeaturesEnabled)
    {
    //this.mineshaftGenerator.func_151539_a(this, this.worldObj, p_73154_1_, p_73154_2_, ablock);
    this.villageGenerator.func_151539_a(this, this.worldObj, p_73154_1_, p_73154_2_, ablock);
    //this.strongholdGenerator.func_151539_a(this, this.worldObj, p_73154_1_, p_73154_2_, ablock);
    this.scatteredFeatureGenerator.func_151539_a(this, this.worldObj, p_73154_1_, p_73154_2_, ablock);
    }

    Chunk chunk = new Chunk(this.worldObj, ablock, abyte, p_73154_1_, p_73154_2_);
    byte[] abyte1 = chunk.getBiomeArray();

    for (int k = 0; k < abyte1.length; ++k)
    {
    abyte1[k] = (byte)this.biomesForGeneration[k].biomeID;
    }

    chunk.generateSkylightMap();
    return chunk;
    }

    private void func_147423_a(int p_147423_1_, int p_147423_2_, int p_147423_3_)
    {
    double d0 = 684.412D;
    double d1 = 684.412D;
    double d2 = 512.0D;
    double d3 = 512.0D;
    this.field_147426_g = this.noiseGen6.generateNoiseOctaves(this.field_147426_g, p_147423_1_, p_147423_3_, 5, 5, 200.0D, 200.0D, 0.5D);
    this.field_147427_d = this.field_147429_l.generateNoiseOctaves(this.field_147427_d, p_147423_1_, p_147423_2_, p_147423_3_, 5, 33, 5, 8.555150000000001D, 4.277575000000001D, 8.555150000000001D);
    this.field_147428_e = this.field_147431_j.generateNoiseOctaves(this.field_147428_e, p_147423_1_, p_147423_2_, p_147423_3_, 5, 33, 5, 684.412D, 684.412D, 684.412D);
    this.field_147425_f = this.field_147432_k.generateNoiseOctaves(this.field_147425_f, p_147423_1_, p_147423_2_, p_147423_3_, 5, 33, 5, 684.412D, 684.412D, 684.412D);
    boolean flag1 = false;
    boolean flag = false;
    int l = 0;
    int i1 = 0;
    double d4 = 8.5D;

    for (int j1 = 0; j1 < 5; ++j1)
    {
    for (int k1 = 0; k1 < 5; ++k1)
    {
    float f = 0.0F;
    float f1 = 0.0F;
    float f2 = 0.0F;
    byte b0 = 2;
    BiomeGenBase biomegenbase = this.biomesForGeneration[j1 + 2 + (k1 + 2) * 10];

    for (int l1 = -b0; l1 <= b0; ++l1)
    {
    for (int i2 = -b0; i2 <= b0; ++i2)
    {
    BiomeGenBase biomegenbase1 = this.biomesForGeneration[j1 + l1 + 2 + (k1 + i2 + 2) * 10];
    float f3 = biomegenbase1.rootHeight;
    float f4 = biomegenbase1.heightVariation;

    if (this.field_147435_p == WorldType.AMPLIFIED && f3 > 0.0F)
    {
    f3 = 1.0F + f3 * 2.0F;
    f4 = 1.0F + f4 * 4.0F;
    }

    float f5 = this.parabolicField[l1 + 2 + (i2 + 2) * 5] / (f3 + 2.0F);

    if (biomegenbase1.rootHeight > biomegenbase.rootHeight)
    {
    f5 /= 2.0F;
    }

    f += f4 * f5;
    f1 += f3 * f5;
    f2 += f5;
    }
    }

    f /= f2;
    f1 /= f2;
    f = f * 0.9F + 0.1F;
    f1 = (f1 * 4.0F - 1.0F) / 8.0F;
    double d12 = this.field_147426_g[i1] / 8000.0D;

    if (d12 < 0.0D)
    {
    d12 = -d12 * 0.3D;
    }

    d12 = d12 * 3.0D - 2.0D;

    if (d12 < 0.0D)
    {
    d12 /= 2.0D;

    if (d12 < -1.0D)
    {
    d12 = -1.0D;
    }

    d12 /= 1.4D;
    d12 /= 2.0D;
    }
    else
    {
    if (d12 > 1.0D)
    {
    d12 = 1.0D;
    }

    d12 /= 8.0D;
    }

    ++i1;
    double d13 = (double)f1;
    double d14 = (double)f;
    d13 += d12 * 0.2D;
    d13 = d13 * 8.5D / 8.0D;
    double d5 = 8.5D + d13 * 4.0D;

    for (int j2 = 0; j2 < 33; ++j2)
    {
    double d6 = ((double)j2 - d5) * 12.0D * 128.0D / 256.0D / d14;

    if (d6 < 0.0D)
    {
    d6 *= 4.0D;
    }

    double d7 = this.field_147428_e[l] / 512.0D;
    double d8 = this.field_147425_f[l] / 512.0D;
    double d9 = (this.field_147427_d[l] / 10.0D + 1.0D) / 2.0D;
    double d10 = MathHelper.denormalizeClamp(d7, d8, d9) - d6;

    if (j2 > 29)
    {
    double d11 = (double)((float)(j2 - 29) / 3.0F);
    d10 = d10 * (1.0D - d11) + -10.0D * d11;
    }

    this.field_147434_q[l] = d10;
    ++l;
    }
    }
    }
    }

    public boolean chunkExists(int p_73149_1_, int p_73149_2_)
    {
    return true;
    }

    public void populate(IChunkProvider p_73153_1_, int p_73153_2_, int p_73153_3_)
    {
    BlockFalling.fallInstantly = true;
    int k = p_73153_2_ * 16;
    int l = p_73153_3_ * 16;
    BiomeGenBase biomegenbase = this.worldObj.getBiomeGenForCoords(k + 16, l + 16);
    this.rand.setSeed(this.worldObj.getSeed());
    long i1 = this.rand.nextLong() / 2L * 2L + 1L;
    long j1 = this.rand.nextLong() / 2L * 2L + 1L;
    this.rand.setSeed((long)p_73153_2_ * i1 + (long)p_73153_3_ * j1 ^ this.worldObj.getSeed());
    boolean flag = false;

    MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Pre(p_73153_1_, worldObj, rand, p_73153_2_, p_73153_3_, flag));

    if (this.mapFeaturesEnabled)
    {
    //this.mineshaftGenerator.generateStructuresInChunk(this.worldObj, this.rand, p_73153_2_, p_73153_3_);
    flag = this.villageGenerator.generateStructuresInChunk(this.worldObj, this.rand, p_73153_2_, p_73153_3_);
    //this.strongholdGenerator.generateStructuresInChunk(this.worldObj, this.rand, p_73153_2_, p_73153_3_);
    this.scatteredFeatureGenerator.generateStructuresInChunk(this.worldObj, this.rand, p_73153_2_, p_73153_3_);
    }

    int k1;
    int l1;
    int i2;

    if (biomegenbase != Xtracraft.wasteDesert && biomegenbase != BiomeGenBase.desertHills && !flag && this.rand.nextInt(4) == 0
    && TerrainGen.populate(p_73153_1_, worldObj, rand, p_73153_2_, p_73153_3_, flag, LAKE))
    {
    k1 = k + this.rand.nextInt(16) + 8;
    l1 = this.rand.nextInt(256);
    i2 = l + this.rand.nextInt(16) + 8;
    (new WorldGenLakes(Blocks.water)).generate(this.worldObj, this.rand, k1, l1, i2);
    }

    if (TerrainGen.populate(p_73153_1_, worldObj, rand, p_73153_2_, p_73153_3_, flag, LAVA) && !flag && this.rand.nextInt(8) == 0)
    {
    k1 = k + this.rand.nextInt(16) + 8;
    l1 = this.rand.nextInt(this.rand.nextInt(248) + 8);
    i2 = l + this.rand.nextInt(16) + 8;

    if (l1 < 63 || this.rand.nextInt(10) == 0)
    {
    (new WorldGenLakes(Blocks.lava)).generate(this.worldObj, this.rand, k1, l1, i2);
    }
    }

    boolean doGen = TerrainGen.populate(p_73153_1_, worldObj, rand, p_73153_2_, p_73153_3_, flag, DUNGEON);
    for (k1 = 0; doGen && k1 < 8; ++k1)
    {
    l1 = k + this.rand.nextInt(16) + 8;
    i2 = this.rand.nextInt(256);
    int j2 = l + this.rand.nextInt(16) + 8;
    (new WorldGenDungeons()).generate(this.worldObj, this.rand, l1, i2, j2);
    }

    biomegenbase.decorate(this.worldObj, this.rand, k, l);
    if (TerrainGen.populate(p_73153_1_, worldObj, rand, p_73153_2_, p_73153_3_, flag, ANIMALS))
    {
    SpawnerAnimals.performWorldGenSpawning(this.worldObj, biomegenbase, k + 8, l + 8, 16, 16, this.rand);
    }
    k += 8;
    l += 8;

    doGen = TerrainGen.populate(p_73153_1_, worldObj, rand, p_73153_2_, p_73153_3_, flag, ICE);
    for (k1 = 0; doGen && k1 < 16; ++k1)
    {
    for (l1 = 0; l1 < 16; ++l1)
    {
    i2 = this.worldObj.getPrecipitationHeight(k + k1, l + l1);

    if (this.worldObj.isBlockFreezable(k1 + k, i2 - 1, l1 + l))
    {
    this.worldObj.setBlock(k1 + k, i2 - 1, l1 + l, Blocks.ice, 0, 2);
    }

    if (this.worldObj.func_147478_e(k1 + k, i2, l1 + l, true))
    {
    this.worldObj.setBlock(k1 + k, i2, l1 + l, Blocks.snow_layer, 0, 2);
    }
    }
    }

    MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Post(p_73153_1_, worldObj, rand, p_73153_2_, p_73153_3_, flag));

    BlockFalling.fallInstantly = false;
    }

    public boolean saveChunks(boolean p_73151_1_, IProgressUpdate p_73151_2_)
    {
    return true;
    }

    public void saveExtraData() {}

    public boolean unloadQueuedChunks()
    {
    return false;
    }

    public boolean canSave()
    {
    return true;
    }

    public String makeString()
    {
    return "RandomLevelSource";
    }

    public List getPossibleCreatures(EnumCreatureType p_73155_1_, int p_73155_2_, int p_73155_3_, int p_73155_4_)
    {
    BiomeGenBase biomegenbase = this.worldObj.getBiomeGenForCoords(p_73155_2_, p_73155_4_);
    return p_73155_1_ == EnumCreatureType.monster && this.scatteredFeatureGenerator.func_143030_a(p_73155_2_, p_73155_3_, p_73155_4_) ? this.scatteredFeatureGenerator.getScatteredFeatureSpawnList() : biomegenbase.getSpawnableList(p_73155_1_);
    }

    public ChunkPosition func_147416_a(World p_147416_1_, String p_147416_2_, int p_147416_3_, int p_147416_4_, int p_147416_5_)
    {
    return null;//"Stronghold".equals(p_147416_2_) && this.strongholdGenerator != null ? this.strongholdGenerator.func_151545_a(p_147416_1_, p_147416_3_, p_147416_4_, p_147416_5_) : null;
    }

    public int getLoadedChunkCount()
    {
    return 0;
    }

    public void recreateStructures(int p_82695_1_, int p_82695_2_)
    {
    if (this.mapFeaturesEnabled)
    {
    //this.mineshaftGenerator.func_151539_a(this, this.worldObj, p_82695_1_, p_82695_2_, (Block[])null);
    this.villageGenerator.func_151539_a(this, this.worldObj, p_82695_1_, p_82695_2_, (Block[])null);
    //this.strongholdGenerator.func_151539_a(this, this.worldObj, p_82695_1_, p_82695_2_, (Block[])null);
    this.scatteredFeatureGenerator.func_151539_a(this, this.worldObj, p_82695_1_, p_82695_2_, (Block[])null);
    }
    }
    }



    Posted in: Modification Development
  • 0

    posted a message on ▶ 1.7.2 Modding Tutorials! ◀ Total 5 Episodes! ▶ Latest: Blocks! ◀
    I really need dimensions with world chunk manager D: 1.7 made huge changes to it.
    Posted in: Mapping and Modding Tutorials
  • 0

    posted a message on Minecraft Surrrvival [Vanilla] [Whitelisted] [Snapshots] New Server
    Name: Chris
    IGN: Clustafer
    Age: 13 (I'm not in highschool, but will be graduating in a few days)
    Youtube: N/A
    Minecraft style: Farming
    Why I should be accepted: Well first, I want to be able to play SMP again. It's much more fun than singleplayer, and public servers just aren't real survival. I applied to a few servers before this, but couldn't get in, probably because of my age. However, I'm friendly and mature, and love to play Minecraft with other people.

    Also, my skype is clustafer123.

    Thanks for reading my app :)
    Posted in: PC Servers
  • 0

    posted a message on Whitelisted [SMP] Vanilla Server Looking For Players
    IGN: Clustafer

    Age: 13

    Skype: Yep

    Tell us about yourself: So my real name is Chris, I'm just finishing grade 8 in school, and like everyone here, I love Minecraft. Some non-computer things I do are skiing, hockey, and rock climbing. I started playing Minecraft back in Beta 1.4_01, before the 1.3 update which merged multiplayer and singleplayer messed up the gameplay. I still love the game, and have never really taken any long breaks from it.

    Why do I want to join?: SMP is much more fun than SP in my opinion, and it's been a long time since public servers have been able to just use vanilla Minecraft without getting wrecked in the first day. I've played on private whitelisted servers before, but like all servers do, they eventually shut down. I had applied for a few servers before this, but both apps were denied, probably because of my age. I'd love to be able to play on a server with mature people where I won't get griefed and killed, and be able to enjoy playing with other people. I have enough free time to be able to stay active, with the exception of vacations/overnight camp. I will let you know when I will be away before I leave. That's really all, and if I get accepted it will be great to start a base, make some new friends, and have a good time.

    Skills in game: This isn't too much of a skill, but I love farming and will try to farm as much as I can. After playing the game for over 3 years I know everything in it well, and I can easily get a base started. I can also easily make an efficient mob grinder with a spawner, but also a grinder without a spawner if I have enough resources. I also have experience with modding, and can create simple things like blocks, items, and biomes. I used to be able to make dimensions, but 1.7 changed that. :|

    Anything else?: Here's a few pictures of some things I made

    Blocks from a mod, the crying obsidian set your spawn point like it was originally supposed to.

    Picture of a DTC map I made.

    A WIP wasteland dimension that was ruined when 1.7 came out.

    Biome I made.

    Ancient WIP dimension (literally, not a name).


    That's all I'm posting, it's already a lot and I don't want to post too many mod pictures.
    Posted in: PC Servers
  • 0

    posted a message on Vanilla, whitelisted survival server
    IGN: Clustafer
    Age: 13
    How long have I played Minecraft?: I first started playing when it was Beta 1.4_01, which in April 2011.
    What do I like doing in Minecraft?: I love farming, and always try to make as many types as farms as possible. I also like making natural themed bases, but that doesn't always happen.

    Anyway, it looks like a very cool server and I hope you accept my app. Also, my skype is clustafer123


    EDIT: Has the whitelist been removed?
    Posted in: PC Servers
  • 1

    posted a message on 1.7.9 Vanilla. Recruting friendly player and mature.
    IGN: Clustafer
    Age: 13
    Location: Canada
    Have you ever been banned?: No, I can't stand hackers/griefers.
    Do you have a specialty?: I'm okay at redstone, but I love farming, and will try to have every kind of farm possible on the server if I can.
    Anything else you want to mention?: Yes, thanks for reading my app, and skype is clustafer123 if you need it.
    Posted in: PC Servers
  • 0

    posted a message on ⋐ PufferPvP 1.7.4✚Faction✚No Lag✚floAuction✚⋑
    Great server!
    Posted in: PC Servers
  • 0

    posted a message on How many Dimension Ids? Entity Ids? World Gen Block Ids? Block Ids? Item Ids? etc... are there?
    Dimension ID's go into the negative. They go up to 256 pretty sure, and Idk how far into the negatives. I would guess there are at least 500 dimension ids. Why don't you try some higher ones (or lower) and see if they work?
    Posted in: Mods Discussion
  • 0

    posted a message on [1.7.2] Localization for pretty much everything
    Bookmarked, thanks for this!
    Posted in: Mapping and Modding Tutorials
  • To post a comment, please or register a new account.