Very Awesome tutorials you cover alot of things Great Job
this guy can tell you a little more in depth of what the code does for tree gen and he also takes any request for a tutorial you want unless its rediculous http://www.youtube.c...ym?feature=mhee
The Instituitions,
You can make a tutorial of how to create a new explosion.class and customize then(algorithns,% of drops)
and how to use the new explosion.class in your TNT?
Sorry for bad inglish.
The Instituitions,
You can make a tutorial of how to create a new explosion.class and customize then(algorithns,% of drops)
and how to use the new explosion.class in your TNT?
Sorry for bad inglish.
o problem, Im sure I could just whip up a written tutorial. Staring a new program..written tutorials by myself and some of my subscribers. That im sure will come up soon.
o problem, Im sure I could just whip up a written tutorial. Staring a new program..written tutorials by myself and some of my subscribers. That im sure will come up soon.
Ok,
thank you the insitutions.
Your tutorials are awesomes and helped me so much...
I think that there is an error on your forum page. Where it says "Make an Item", the description says "Learn how to make an item and make it drop from a block" (I'm paraphrasing, by the way) but in the video, it only shows how to make the item and its texture. I really want to know how to make the item drop from a block so could you please help?
I think that there is an error on your forum page. Where it says "Make an Item", the description says "Learn how to make an item and make it drop from a block" (I'm paraphrasing, by the way) but in the video, it only shows how to make the item and its texture. I really want to know how to make the item drop from a block so could you please help?
Also, I think you're tutorials are awesome.
Sorry, made a mistake. Well to do this is really easy. There should be a method in the block file called "idDropped", this will handle what block/item it drops
It occurred to me just now when I was sorting my browser bookmarks that I haven't posted here in ages (since I took a break from Minecraft.)
I decided to stop by just to say thank you for having these tutorials available when I needed them most (when I was taking my first steps into programming). Your videos were always of decent quality, and relatively understandable. Thanks to you and a few other people I'm now attempting to write my own game from scratch using Java and Qt Jambi (A library for writing Windows, Mac, and Linux Qt GUIs from java). While I will be basing it on something I already made using GameMaker in a Dual Enrollment class I had in high school, I'll still have to create the game engine from the ground up, implement my own AI, etc.. Fortunately it will be good experience, and I'll be able to produce it more easily than GameMaker allowed, while moving beyond previous limitations, thanks to Java being a functional high-level language.
I just thought I'd stop by and say that, because I know that any educator worth their salt likes to know that they've helped someone.
(I'm no exception to that rule myself.)
It occurred to me just now when I was sorting my browser bookmarks that I haven't posted here in ages (since I took a break from Minecraft.)
I decided to stop by just to say thank you for having these tutorials available when I needed them most (when I was taking my first steps into programming). Your videos were always of decent quality, and relatively understandable. Thanks to you and a few other people I'm now attempting to write my own game from scratch using Java and Qt Jambi (A library for writing Windows, Mac, and Linux Qt GUIs from java). While I will be basing it on something I already made using GameMaker in a Dual Enrollment class I had in high school, I'll still have to create the game engine from the ground up, implement my own AI, etc.. Fortunately it will be good experience, and I'll be able to produce it more easily than GameMaker allowed, while moving beyond previous limitations, thanks to Java being a functional high-level language.
I just thought I'd stop by and say that, because I know that any educator worth their salt likes to know that they've helped someone.
(I'm no exception to that rule myself.)
Well holy , thanks! I do really enjoy hearing I have helped someone. Thank you for moderating and helping peoples with their problems..because I am lazy and did not have time for that.
Okay. The tutorials are really awesome but I'm having a problem finding a way to increase the smelt time for an individual block. I want to make it so that a block takes longer than 200 ticks to smelt. Got any ideas? Thanks.
I need some help with your Dimension tut...
I installed all needed files and did everything right...
but everytime i run decompile.bat it gives me this error
src\minecraft\net\minecraft\src\WorldProviderSkeledim.java:5: error: WorldProvid
erSkeledim is not abstract and does not override abstract method func_80007_l()
in WorldProvider
public class WorldProviderSkeledim extends WorldProviderBase
here is the WorldProviderSkeledim.class thats causing my problem
package net.minecraft.src;
import java.util.Random;
public class WorldProviderSkeledim extends WorldProviderBase
{
//The WorldProvider covers all the basics of the dimension. Look in WorldProviderBase.java and
//WorldProvider.java for all the potential qualities you can assign to your dimension.
public WorldProviderSkeledim()
{
}
//The save file will be called DIM65 (DIM + id number).
public int getDimensionID()
{
return 65;
}
public boolean renderClouds()
{
return true;
}
public boolean renderEndSky()
{
return true;
}
public boolean renderVoidFog()
{
return true;
}
public float setMoonSize()
{
return 2.1F;
}
public float setSunSize()
{
return 1.0F;
}
public String getSunTexture()
{
return null;
}
public String getMoonTexture()
{
return "/Blocks/moon.png";
}
public boolean renderStars()
{
return true;
}
public boolean darkenSkyDuringRain()
{
return true;
}
public String getRespawnMessage()
{
return " Leaving The Skeleton Dimension ";
}
//You can use an existing WorldChunkManager, or create your own. You must create your own to
//add multiple unique biomes to a dimension.
public void registerWorldChunkManager()
{
worldChunkMgr = new WorldChunkManagerHell(BiomeGenBase.Skeletonrealm, 1.0F, 0.0F);
}
//This is where you define your terrain generator.
public IChunkProvider getChunkProvider()
{
return new ChunkProviderSkeletonDimension(worldObj, worldObj.getSeed(), false);
}
//Note that, if you respawn in the dimension, you will end up at the coordinates of your
//overworld spawn point, not at the location of your first entrance to the dimension or
//something like that. Note also that beds don't work if you cannot respawn in the dimension.
public boolean canRespawnHere()
{
return false;
}
public float calculateCelestialAngle(long par1, float par3)
{
return 0.5F;
}
}
Thank you so much. I have followed you since 1.2.5 and i finally have a question again. (not the follow button , but i bookmarked you and check in often.) Anyways, i created a dimension back in 1.2.5 and finally got around to updating it, but now i get a new error once i enter the dimension. Please help me.
Minecraft has crashed!
----------------------
Minecraft has stopped running because it encountered a problem; Unexpected error
This error has been saved to C:\Users\coding\Desktop\mcp\jars\.\crash-reports\crash-2012-10-18_14.48.33-client.txt for your convenience. Please include a copy of this file if you report this crash to anyone.
--- BEGIN ERROR REPORT f3da6b6b --------
Generated 10/18/12 2:48 PM
- Minecraft Version: 1.3.2
- Operating System: Windows 7 (amd64) version 6.1
- Java Version: 1.6.0_35, Sun Microsystems Inc.
- Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Sun Microsystems Inc.
- Memory: 770813760 bytes (735 MB) / 1071579136 bytes (1021 MB) up to 1071579136 bytes (1021 MB)
- JVM Flags: 3 total; -Xincgc -Xms1024M -Xmx1024M
- ModLoader: Mods loaded: 3
ModLoader 1.3.2
mod_ModLoaderMp 1.3.2v1
mod_timescape Timescape 1.0.0
- LWJGL: 2.4.2
- OpenGL: GeForce 6150SE nForce 430/PCI/SSE2 GL version 2.1.2, NVIDIA Corporation
- Is Modded: Very likely
- Type: Client
- Texture Pack: Default
- Profiler Position: N/A (disabled)
- World MpServer Entities: 1 total; [EntityClientPlayerMP['Player32'/171, l='MpServer', x=-129.00, y=-1522.42, z=14.50]]
- World MpServer Players: 1 total; [EntityClientPlayerMP['Player32'/171, l='MpServer', x=-129.00, y=-1522.42, z=14.50]]
- World MpServer Chunk Stats: MultiplayerChunkCache: 5
- Forced Entities: 1 total; [EntityClientPlayerMP['Player32'/171, l='MpServer', x=-129.00, y=-1522.42, z=14.50]]
- Retry Entities: 0 total; []
java.lang.NullPointerException
at net.minecraft.src.NetClientHandler.handleMobSpawn(NetClientHandler.java:787)
at net.minecraft.src.Packet24MobSpawn.processPacket(Packet24MobSpawn.java:137)
at net.minecraft.src.MemoryConnection.processReadPackets(MemoryConnection.java:70)
at net.minecraft.src.NetClientHandler.processReadPackets(NetClientHandler.java:91)
at net.minecraft.src.WorldClient.tick(WorldClient.java:63)
at net.minecraft.client.Minecraft.runTick(Minecraft.java:1760)
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:821)
at net.minecraft.client.Minecraft.run(Minecraft.java:751)
at java.lang.Thread.run(Thread.java:662)
--- END ERROR REPORT 4f72022 ----------
Plz help me. BTW, if you need any of the code for my dimension look below.
chunk provider
package net.minecraft.src;
import java.util.List;
import java.util.Random;
public class ChunkProviderChess implements IChunkProvider
{
/** RNG. */
private Random rand;
/** A NoiseGeneratorOctaves used in generating terrain */
private NoiseGeneratorOctaves noiseGen1;
/** A NoiseGeneratorOctaves used in generating terrain */
private NoiseGeneratorOctaves noiseGen2;
/** A NoiseGeneratorOctaves used in generating terrain */
private NoiseGeneratorOctaves noiseGen3;
/** A NoiseGeneratorOctaves used in generating terrain */
private NoiseGeneratorOctaves noiseGen4;
/** A NoiseGeneratorOctaves used in generating terrain */
public NoiseGeneratorOctaves noiseGen5;
/** A NoiseGeneratorOctaves used in generating terrain */
public NoiseGeneratorOctaves noiseGen6;
public NoiseGeneratorOctaves mobSpawnerNoise;
/** Reference to the World object. */
private World worldObj;
/** are map structures going to be generated (e.g. strongholds) */
private final boolean mapFeaturesEnabled;
/** Holds the overall noise array used in chunk generation */
private double[] noiseArray;
private double[] stoneNoise = new double[256];
private MapGenBase caveGenerator = new MapGenCaves();
/** Holds StronghoFld Generator */
private MapGenStronghold strongholdGenerator = new MapGenStronghold();
/** Holds Village Generator */
private MapGenVillage villageGenerator = new MapGenVillage(0);
/** Holds Mineshaft Generator */
private MapGenMineshaft mineshaftGenerator = new MapGenMineshaft();
private MapGenScatteredFeature scatteredFeatureGenerator = new MapGenScatteredFeature();
/** Holds ravine generator */
private MapGenBase ravineGenerator = new MapGenRavine();
/** The biomes that are used to generate the chunk */
private BiomeGenBase[] biomesForGeneration;
/** A double array that hold terrain noise from noiseGen3 */
double[] noise3;
/** A double array that hold terrain noise */
double[] noise1;
/** A double array that hold terrain noise from noiseGen2 */
double[] noise2;
/** A double array that hold terrain noise from noiseGen5 */
double[] noise5;
/** A double array that holds terrain noise from noiseGen6 */
double[] noise6;
/**
* Used to store the 5x5 parabolic field that is used during terrain generation.
*/
float[] parabolicField;
int[][] field_73219_j = new int[32][32];
public ChunkProviderChess(World par1World, long par2, boolean par4)
{
this.worldObj = par1World;
this.mapFeaturesEnabled = par4;
this.rand = new Random(par2);
this.noiseGen1 = new NoiseGeneratorOctaves(this.rand, 16);
this.noiseGen2 = new NoiseGeneratorOctaves(this.rand, 16);
this.noiseGen3 = new NoiseGeneratorOctaves(this.rand, 8);
this.noiseGen4 = new NoiseGeneratorOctaves(this.rand, 4);
this.noiseGen5 = new NoiseGeneratorOctaves(this.rand, 10);
this.noiseGen6 = new NoiseGeneratorOctaves(this.rand, 16);
this.mobSpawnerNoise = new NoiseGeneratorOctaves(this.rand, 8);
}
/**
* Generates the shape of the terrain for the chunk though its all stone though the water is frozen if the
* temperature is low enough
*/
public void generateTerrain(int par1, int par2, byte[] par3ArrayOfByte)
{
byte var4 = 4;
byte var5 = 16;
byte var6 = 63;
int var7 = var4 + 1;
byte var8 = 17;
int var9 = var4 + 1;
this.biomesForGeneration = this.worldObj.getWorldChunkManager().getBiomesForGeneration(this.biomesForGeneration, par1 * 4 - 2, par2 * 4 - 2, var7 + 5, var9 + 5);
this.noiseArray = this.initializeNoiseField(this.noiseArray, par1 * var4, 0, par2 * var4, var7, var8, var9);
for (int var10 = 0; var10 < var4; ++var10)
{
for (int var11 = 0; var11 < var4; ++var11)
{
for (int var12 = 0; var12 < var5; ++var12)
{
double var13 = 0.125D;
double var15 = this.noiseArray[((var10 + 0) * var9 + var11 + 0) * var8 + var12 + 0];
double var17 = this.noiseArray[((var10 + 0) * var9 + var11 + 1) * var8 + var12 + 0];
double var19 = this.noiseArray[((var10 + 1) * var9 + var11 + 0) * var8 + var12 + 0];
double var21 = this.noiseArray[((var10 + 1) * var9 + var11 + 1) * var8 + var12 + 0];
double var23 = (this.noiseArray[((var10 + 0) * var9 + var11 + 0) * var8 + var12 + 1] - var15) * var13;
double var25 = (this.noiseArray[((var10 + 0) * var9 + var11 + 1) * var8 + var12 + 1] - var17) * var13;
double var27 = (this.noiseArray[((var10 + 1) * var9 + var11 + 0) * var8 + var12 + 1] - var19) * var13;
double var29 = (this.noiseArray[((var10 + 1) * var9 + var11 + 1) * var8 + var12 + 1] - var21) * var13;
for (int var31 = 0; var31 < 8; ++var31)
{
double var32 = 0.25D;
double var34 = var15;
double var36 = var17;
double var38 = (var19 - var15) * var32;
double var40 = (var21 - var17) * var32;
for (int var42 = 0; var42 < 4; ++var42)
{
int var43 = var42 + var10 * 4 << 11 | 0 + var11 * 4 << 7 | var12 * 8 + var31;
short var44 = 128;
var43 -= var44;
double var45 = 0.25D;
double var49 = (var36 - var34) * var45;
double var47 = var34 - var49;
for (int var51 = 0; var51 < 4; ++var51)
{
if ((var47 += var49) > 0.0D)
{
par3ArrayOfByte[var43 += var44] = (byte)mod_timescape.ChessStone.blockID;
}
else if (var12 * 8 + var31 < var6)
{
par3ArrayOfByte[var43 += var44] = (byte)Block.waterStill.blockID;
}
else
{
par3ArrayOfByte[var43 += var44] = 0;
}
}
var34 += var38;
var36 += var40;
}
var15 += var23;
var17 += var25;
var19 += var27;
var21 += var29;
}
}
}
}
}
/**
* Replaces the stone that was placed in with blocks that match the biome
*/
public void replaceBlocksForBiome(int par1, int par2, byte[] par3ArrayOfByte, BiomeGenBase[] par4ArrayOfBiomeGenBase)
{
byte var5 = 63;
double var6 = 0.03125D;
this.stoneNoise = this.noiseGen4.generateNoiseOctaves(this.stoneNoise, par1 * 16, par2 * 16, 0, 16, 16, 1, var6 * 2.0D, var6 * 2.0D, var6 * 2.0D);
for (int var8 = 0; var8 < 16; ++var8)
{
for (int var9 = 0; var9 < 16; ++var9)
{
BiomeGenBase var10 = par4ArrayOfBiomeGenBase[var9 + var8 * 16];
float var11 = var10.getFloatTemperature();
int var12 = (int)(this.stoneNoise[var8 + var9 * 16] / 3.0D + 3.0D + this.rand.nextDouble() * 0.25D);
int var13 = -1;
byte var14 = var10.topBlock;
byte var15 = var10.fillerBlock;
for (int var16 = 127; var16 >= 0; --var16)
{
int var17 = (var9 * 16 + var8) * 128 + var16;
if (var16 <= 0 + this.rand.nextInt(5))
{
par3ArrayOfByte[var17] = (byte)Block.bedrock.blockID;
}
else
{
byte var18 = par3ArrayOfByte[var17];
if (var18 == 0)
{
var13 = -1;
}
else if (var18 != mod_timescape.ChessStone.blockID)
{
if (var13 == -1)
{
if (var12 == 0)
{
var14 = 0;
var15 = (byte)mod_timescape.ChessStone.blockID;
}
else if (var16 >= var5 - 4 && var16 <= var5 + 1)
{
var14 = var10.topBlock;
var15 = var10.fillerBlock;
}
if (var16 < var5 && var14 == 0)
{
if (var11 < 0.15F)
{
var14 = (byte)Block.ice.blockID;
}
else
{
var14 = (byte)Block.waterStill.blockID;
}
}
var13 = var12;
if (var16 >= var5 - 1)
{
par3ArrayOfByte[var17] = var14;
}
else
{
par3ArrayOfByte[var17] = var15;
}
}
else if (var13 > 0)
{
--var13;
par3ArrayOfByte[var17] = var15;
if (var13 == 0 && var15 == Block.sand.blockID)
{
var13 = this.rand.nextInt(4);
var15 = (byte)Block.sand.blockID;
}
}
}
}
}
}
}
}
/**
* 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.rand.setSeed((long)par1 * 341873128712L + (long)par2 * 132897987541L);
byte[] var3 = new byte[32768];
this.generateTerrain(par1, par2, var3);
this.biomesForGeneration = this.worldObj.getWorldChunkManager().loadBlockGeneratorData(this.biomesForGeneration, par1 * 16, par2 * 16, 16, 16);
this.replaceBlocksForBiome(par1, par2, var3, this.biomesForGeneration);
this.caveGenerator.generate(this, this.worldObj, par1, par2, var3);
this.ravineGenerator.generate(this, this.worldObj, par1, par2, var3);
if (this.mapFeaturesEnabled)
{
this.mineshaftGenerator.generate(this, this.worldObj, par1, par2, var3);
this.villageGenerator.generate(this, this.worldObj, par1, par2, var3);
this.strongholdGenerator.generate(this, this.worldObj, par1, par2, var3);
this.scatteredFeatureGenerator.generate(this, this.worldObj, par1, par2, var3);
}
Chunk var4 = new Chunk(this.worldObj, var3, par1, par2);
byte[] var5 = var4.getBiomeArray();
for (int var6 = 0; var6 < var5.length; ++var6)
{
var5[var6] = (byte)this.biomesForGeneration[var6].biomeID;
}
var4.generateSkylightMap();
return var4;
}
/**
* 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)
{
if (par1ArrayOfDouble == null)
{
par1ArrayOfDouble = new double[par5 * par6 * par7];
}
if (this.parabolicField == null)
{
this.parabolicField = new float[25];
for (int var8 = -2; var8 <= 2; ++var8)
{
for (int var9 = -2; var9 <= 2; ++var9)
{
float var10 = 10.0F / MathHelper.sqrt_float((float)(var8 * var8 + var9 * var9) + 0.2F);
this.parabolicField[var8 + 2 + (var9 + 2) * 5] = var10;
}
}
}
double var44 = 684.412D;
double var45 = 684.412D;
this.noise5 = this.noiseGen5.generateNoiseOctaves(this.noise5, par2, par4, par5, par7, 1.121D, 1.121D, 0.5D);
this.noise6 = this.noiseGen6.generateNoiseOctaves(this.noise6, par2, par4, par5, par7, 200.0D, 200.0D, 0.5D);
this.noise3 = this.noiseGen3.generateNoiseOctaves(this.noise3, par2, par3, par4, par5, par6, par7, var44 / 80.0D, var45 / 160.0D, var44 / 80.0D);
this.noise1 = this.noiseGen1.generateNoiseOctaves(this.noise1, par2, par3, par4, par5, par6, par7, var44, var45, var44);
this.noise2 = this.noiseGen2.generateNoiseOctaves(this.noise2, par2, par3, par4, par5, par6, par7, var44, var45, var44);
boolean var43 = false;
boolean var42 = false;
int var12 = 0;
int var13 = 0;
for (int var14 = 0; var14 < par5; ++var14)
{
for (int var15 = 0; var15 < par7; ++var15)
{
float var16 = 0.0F;
float var17 = 0.0F;
float var18 = 0.0F;
byte var19 = 2;
BiomeGenBase var20 = this.biomesForGeneration[var14 + 2 + (var15 + 2) * (par5 + 5)];
for (int var21 = -var19; var21 <= var19; ++var21)
{
for (int var22 = -var19; var22 <= var19; ++var22)
{
BiomeGenBase var23 = this.biomesForGeneration[var14 + var21 + 2 + (var15 + var22 + 2) * (par5 + 5)];
float var24 = this.parabolicField[var21 + 2 + (var22 + 2) * 5] / (var23.minHeight + 2.0F);
if (var23.minHeight > var20.minHeight)
{
var24 /= 2.0F;
}
var16 += var23.maxHeight * var24;
var17 += var23.minHeight * var24;
var18 += var24;
}
}
var16 /= var18;
var17 /= var18;
var16 = var16 * 0.9F + 0.1F;
var17 = (var17 * 4.0F - 1.0F) / 8.0F;
double var47 = this.noise6[var13] / 8000.0D;
if (var47 < 0.0D)
{
var47 = -var47 * 0.3D;
}
var47 = var47 * 3.0D - 2.0D;
if (var47 < 0.0D)
{
var47 /= 2.0D;
if (var47 < -1.0D)
{
var47 = -1.0D;
}
var47 /= 1.4D;
var47 /= 2.0D;
}
else
{
if (var47 > 1.0D)
{
var47 = 1.0D;
}
var47 /= 8.0D;
}
++var13;
for (int var46 = 0; var46 < par6; ++var46)
{
double var48 = (double)var17;
double var26 = (double)var16;
var48 += var47 * 0.2D;
var48 = var48 * (double)par6 / 16.0D;
double var28 = (double)par6 / 2.0D + var48 * 4.0D;
double var30 = 0.0D;
double var32 = ((double)var46 - var28) * 12.0D * 128.0D / 128.0D / var26;
if (var32 < 0.0D)
{
var32 *= 4.0D;
}
double var34 = this.noise1[var12] / 512.0D;
double var36 = this.noise2[var12] / 512.0D;
double var38 = (this.noise3[var12] / 10.0D + 1.0D) / 2.0D;
if (var38 < 0.0D)
{
var30 = var34;
}
else if (var38 > 1.0D)
{
var30 = var36;
}
else
{
var30 = var34 + (var36 - var34) * var38;
}
var30 -= var32;
if (var46 > par6 - 4)
{
double var40 = (double)((float)(var46 - (par6 - 4)) / 3.0F);
var30 = var30 * (1.0D - var40) + -10.0D * var40;
}
par1ArrayOfDouble[var12] = var30;
++var12;
}
}
}
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;
int var4 = par2 * 16;
int var5 = par3 * 16;
BiomeGenBase var6 = this.worldObj.getBiomeGenForCoords(var4 + 16, var5 + 16);
this.rand.setSeed(this.worldObj.getSeed());
long var7 = this.rand.nextLong() / 2L * 2L + 1L;
long var9 = this.rand.nextLong() / 2L * 2L + 1L;
this.rand.setSeed((long)par2 * var7 + (long)par3 * var9 ^ this.worldObj.getSeed());
boolean var11 = false;
if (this.mapFeaturesEnabled)
{
this.mineshaftGenerator.generateStructuresInChunk(this.worldObj, this.rand, par2, par3);
var11 = this.villageGenerator.generateStructuresInChunk(this.worldObj, this.rand, par2, par3);
this.strongholdGenerator.generateStructuresInChunk(this.worldObj, this.rand, par2, par3);
this.scatteredFeatureGenerator.generateStructuresInChunk(this.worldObj, this.rand, par2, par3);
}
int var12;
int var13;
int var14;
if (!var11 && this.rand.nextInt(4) == 0)
{
var12 = var4 + this.rand.nextInt(16) + 8;
var13 = this.rand.nextInt(128);
var14 = var5 + this.rand.nextInt(16) + 8;
(new WorldGenLakes(Block.waterStill.blockID)).generate(this.worldObj, this.rand, var12, var13, var14);
}
if (!var11 && this.rand.nextInt(8) == 0)
{
var12 = var4 + this.rand.nextInt(16) + 8;
var13 = this.rand.nextInt(this.rand.nextInt(120) + 8);
var14 = var5 + this.rand.nextInt(16) + 8;
if (var13 < 63 || this.rand.nextInt(10) == 0)
{
(new WorldGenLakes(Block.waterStill.blockID)).generate(this.worldObj, this.rand, var12, var13, var14);
}
}
for (var12 = 0; var12 < 8; ++var12)
{
var13 = var4 + this.rand.nextInt(16) + 8;
var14 = this.rand.nextInt(128);
int var15 = var5 + this.rand.nextInt(16) + 8;
if ((new WorldGenDungeons()).generate(this.worldObj, this.rand, var13, var14, var15))
{
;
}
}
var6.decorate(this.worldObj, this.rand, var4, var5);
SpawnerAnimals.performWorldGenSpawning(this.worldObj, var6, var4 + 8, var5 + 8, 16, 16, this.rand);
var4 += 8;
var5 += 8;
for (var12 = 0; var12 < 16; ++var12)
{
for (var13 = 0; var13 < 16; ++var13)
{
var14 = this.worldObj.getPrecipitationHeight(var4 + var12, var5 + var13);
if (this.worldObj.isBlockFreezable(var12 + var4, var14 - 1, var13 + var5))
{
this.worldObj.setBlockWithNotify(var12 + var4, var14 - 1, var13 + var5, Block.ice.blockID);
}
if (this.worldObj.canSnowAt(var12 + var4, var14, var13 + var5))
{
this.worldObj.setBlockWithNotify(var12 + var4, var14, var13 + var5, Block.snow.blockID);
}
}
}
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 the 100 oldest chunks from memory, due to a bug with chunkSet.add() never being called it thinks the list
* is always empty and will not remove any chunks.
*/
public boolean unload100OldestChunks()
{
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 var5 = this.worldObj.getBiomeGenForCoords(par2, par4);
return var5 == null ? null : var5.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 "Stronghold".equals(par2Str) && this.strongholdGenerator != null ? this.strongholdGenerator.getNearestInstance(par1World, par3, par4, par5) : null;
}
public int getLoadedChunkCount()
{
return 0;
}
}
world provider
package net.minecraft.src;
import java.util.Random;
public class WorldProviderChess extends WorldProviderBase
{
public WorldProviderChess()
{
}
public int getDimensionID()
{
return 65;
}
public boolean renderClouds()
{
return true;
}
public boolean renderVoidFog()
{
return true;
}
public String getSaveFolderName()
{
return (new StringBuilder()).append("ChessWorld").toString();
}
public float setSunSize()
{
return 5.0F;
}
public float getCloudHeight()
{
return 128F;
}
public float setMoonSize()
{
return 5.0F;
}
public String getSunTexture()
{
return "/terrain/sun.png";
}
public String getMoonTextre()
{
return "/terrain/moon_phases.png";
}
public boolean renderStars()
{
return true;
}
public boolean darkenSkyDuringRain()
{
return true;
}
public String getRespawnMessage()
{
return "(GrandMaster)'Hang on, I'm Giving you Another Chance'";
}
public void registerWorldChunkManager()
{
worldChunkMgr = new WorldChunkManagerHell(BiomeGenBase.chess, 1.0F, 0.0F);
hasNoSky = true;
}
public IChunkProvider getChunkProvider()
{
return new ChunkProviderGenerate(worldObj, worldObj.getSeed(), false);
}
public int respawnInDimension()
{
return 65;
}
public float calculateCelestialAngle(long par1, float par3)
{
return 0.5F;
}
@Override
public String func_80007_l() {
// TODO Auto-generated method stub
return null;
}
}
biome gen
package net.minecraft.src;
import java.util.List;
import java.util.Random;
public class BiomeGenChess extends BiomeGenBase
{
public BiomeGenChess(int par1)
{
super(par1);
topBlock = (byte)mod_timescape.ChessStone.blockID;
fillerBlock = (byte)mod_timescape.ChessStone.blockID;
this.spawnableMonsterList.clear();
this.spawnableCreatureList.clear();
this.spawnableCreatureList.add(new SpawnListEntry(EntityFireFly.class, 5, 4, 4));
this.spawnableCreatureList.add(new SpawnListEntry(EntityDeadSteve.class, 5, 4, 4));
}
public void decorate(World par1World, Random par2Random, int par3, int par4)
{
super.decorate(par1World, par2Random, par3, par4);
if (par2Random.nextInt(20) == 0)
{
int i = par3 + par2Random.nextInt(16) + 8;
int j = par4 + par2Random.nextInt(16) + 8;
WorldGenChessBoard worldgenchessboard = new WorldGenChessBoard();
worldgenchessboard.generate(par1World, par2Random, i, par1World.getHeightValue(i, j) + 1, j);
}
}
}
Is it possible to override base files without editing them? Example, I want to create a new torch that will replace the old torch and it will have a different crafting recipe, but i don't want the player to be able to craft the old torch.
Selfless Promotion
You can make a tutorial of how to create a new explosion.class and customize then(algorithns,% of drops)
and how to use the new explosion.class in your TNT?
Sorry for bad inglish.
o problem, Im sure I could just whip up a written tutorial. Staring a new program..written tutorials by myself and some of my subscribers. That im sure will come up soon.
How Do I Add Potion Effect For Weapons And Bows?
Ok,
thank you the insitutions.
Your tutorials are awesomes and helped me so much...
Also, I think you're tutorials are awesome.
Sorry, made a mistake. Well to do this is really easy. There should be a method in the block file called "idDropped", this will handle what block/item it drops
My code
mod_sf.java
BlockOreTi.java
How can I do?
I decided to stop by just to say thank you for having these tutorials available when I needed them most (when I was taking my first steps into programming). Your videos were always of decent quality, and relatively understandable. Thanks to you and a few other people I'm now attempting to write my own game from scratch using Java and Qt Jambi (A library for writing Windows, Mac, and Linux Qt GUIs from java). While I will be basing it on something I already made using GameMaker in a Dual Enrollment class I had in high school, I'll still have to create the game engine from the ground up, implement my own AI, etc.. Fortunately it will be good experience, and I'll be able to produce it more easily than GameMaker allowed, while moving beyond previous limitations, thanks to Java being a functional high-level language.
I just thought I'd stop by and say that, because I know that any educator worth their salt likes to know that they've helped someone.
(I'm no exception to that rule myself.)
Well holy , thanks! I do really enjoy hearing I have helped someone. Thank you for moderating and helping peoples with their problems..because I am lazy and did not have time for that.
I installed all needed files and did everything right...
but everytime i run decompile.bat it gives me this error
-Epical
Plz help me. BTW, if you need any of the code for my dimension look below.
world provider
biome gen