Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

xcoopergangx

Members
  • Posts

    106
  • Joined

  • Last visited

Converted

  • Gender
    Male
  • Location
    Ohio
  • Personal Text
    Interested in aerodynamics, physics, and Deadpool

xcoopergangx's Achievements

Creeper Killer

Creeper Killer (4/8)

1

Reputation

  1. I tried fixing it with a tutorial but I get this error when creating a new world. World provider class package minecraftmod; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.util.ChunkCoordinates; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.util.Vec3Pool; import net.minecraft.world.World; import net.minecraft.world.WorldProvider; import net.minecraft.world.biome.WorldChunkManagerHell; import net.minecraft.world.chunk.IChunkProvider; public class WorldProviderTutorial extends WorldProvider { private float[] colorsSunriseSunset = new float[4]; public void registerWorldChunkManager() { this.worldChunkMgr = new WorldChunkManagerHell(TitaniumMod.CorruptBiome, this.dimensionId, this.dimensionId); this.hasNoSky = false; } public IChunkProvider createChunkGenerator() { return new ChunkProviderTutorial(this.worldObj, this.worldObj.getSeed(), false); } public int getAverageGroundLevel() { return 0; } @SideOnly(Side.CLIENT) public boolean doesXZShowFog(int par1, int par2) { return false; } public String getDimensionName() { return "UnDead"; } public boolean renderStars() { return true; } public float getStarBrightness(World world, float f) { return 10.0F; } public boolean renderClouds() { return true; } public boolean renderVoidFog() { return false; } public boolean renderEndSky() { return false; } public float setSunSize() { return 10.0F; } public float setMoonSize() { return 8.0F; } @SideOnly(Side.CLIENT) public boolean isSkyColored() { return true; } public boolean canRespawnHere() { return false; } public boolean isSurfaceWorld() { return true; } @SideOnly(Side.CLIENT) public float getCloudHeight() { return 128.0F; } @SideOnly(Side.CLIENT) public String getSunTexture() { return "/Main:TwinSuns.png"; } public boolean canCoordinateBeSpawn(int par1, int par2) { return false; } public ChunkCoordinates getEntrancePortalLocation() { return new ChunkCoordinates(50, 5, 0); } protected void generateLightBrightnessTable() { float f = 12.0F; for (int i = 0; i <= 15; i++) { float f1 = 12.0F - i / 15.0F; this.lightBrightnessTable[i] = ((1.0F - f1) / (f1 * 3.0F + 1.0F) * (1.0F - f) + f); } } @SideOnly(Side.CLIENT) public String getWelcomeMessage() { if ((this instanceof WorldProviderTutorial)) { return "Entering Tut Dimension"; } return null; } @SideOnly(Side.CLIENT) public float[] calcSunriseSunsetColors(float par1, float par2) { float f2 = 0.4F; float f3 = MathHelper.cos(par1 * 3.141593F * 2.0F) - 0.0F; float f4 = -0.0F; if ((f3 >= f4 - f2) && (f3 <= f4 + f2)) { float f5 = (f3 - f4) / f2 * 0.5F + 0.5F; float f6 = 1.0F - (1.0F - MathHelper.sin(f5 * 3.141593F)) * 0.99F; f6 *= f6; this.colorsSunriseSunset[0] = (f5 * 0.3F + 0.7F); this.colorsSunriseSunset[1] = (f5 * f5 * 0.7F + 0.2F); this.colorsSunriseSunset[2] = (f5 * f5 * 0.0F + 0.2F); this.colorsSunriseSunset[3] = f6; return this.colorsSunriseSunset; } return null; } public float calculateCelestialAngle(long par1, float par3) { int j = (int)(par1 % 24000L); float f1 = (j + par3) / 24000.0F - 0.25F; if (f1 < 0.0F) { f1 += 1.0F; } if (f1 > 1.0F) { f1 -= 1.0F; } float f2 = f1; f1 = 1.0F - (float)((Math.cos(f1 * 3.141592653589793D) + 1.0D) / 2.0D); f1 = f2 + (f1 - f2) / 3.0F; return f1; } @SideOnly(Side.CLIENT) public Vec3 getFogColor(float par1, float par2) { int i = 10518688; float f2 = MathHelper.cos(par1 * 3.141593F * 2.0F) * 2.0F + 0.5F; if (f2 < 0.0F) { f2 = 0.0F; } if (f2 > 1.0F) { f2 = 1.0F; } float f3 = (i >> 16 & 0xFF) / 255.0F; float f4 = (i >> 8 & 0xFF) / 255.0F; float f5 = (i & 0xFF) / 255.0F; f3 *= (f2 * 0.0F + 0.15F); f4 *= (f2 * 0.0F + 0.15F); f5 *= (f2 * 0.0F + 0.15F); return this.worldObj.getWorldVec3Pool().getVecFromPool(f3, f4, f5); } } biome class package minecraftmod; import java.util.Random; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.gen.feature.WorldGenerator; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.world.IBlockAccess; public class CorruptBiome extends BiomeGenBase { public CorruptBiome(int par1) { super(par1); this.topBlock = (byte)TitaniumMod.CorruptGrass.blockID; this.fillerBlock = (byte)TitaniumMod.CorruptDirt.blockID; this.minHeight = 0.1F; this.maxHeight = 0.6F; this.spawnableMonsterList.clear(); this.spawnableCreatureList.clear(); this.setBiomeName("Corrupt"); } public WorldGenerator getRandomWorldGenForTrees(Random par1Random) { return (WorldGenerator)(par1Random.nextInt(5) == 0 ? this.worldGeneratorForest : (par1Random.nextInt(10) == 0 ? this.worldGeneratorBigTree : this.worldGeneratorTrees)); } } chunk provider class package minecraftmod; import java.util.List; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.entity.EnumCreatureType; 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.biome.BiomeGenBase; import net.minecraft.world.biome.WorldChunkManager; 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.NoiseGeneratorOctaves; import net.minecraft.world.gen.feature.MapGenScatteredFeature; import net.minecraft.world.gen.feature.WorldGenLakes; import net.minecraft.world.gen.structure.MapGenMineshaft; import net.minecraft.world.gen.structure.MapGenStronghold; import net.minecraft.world.gen.structure.MapGenVillage; public class ChunkProviderTutorial implements IChunkProvider { private Random rand; private NoiseGeneratorOctaves noiseGen1; private NoiseGeneratorOctaves noiseGen2; private NoiseGeneratorOctaves noiseGen3; private NoiseGeneratorOctaves noiseGen4; public NoiseGeneratorOctaves noiseGen5; public NoiseGeneratorOctaves noiseGen6; public NoiseGeneratorOctaves mobSpawnerNoise; private World worldObj; private final boolean mapFeaturesEnabled; private double[] noiseArray; 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[] noise3; double[] noise1; double[] noise2; double[] noise5; double[] noise6; float[] parabolicField; int[][] field_73219_j = new int[32][32]; public ChunkProviderTutorial(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, ; 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, ; } /** * 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 b0 = 4; byte b1 = 16; byte b2 = 63; int k = b0 + 1; byte b3 = 17; int l = b0 + 1; this.biomesForGeneration = this.worldObj.getWorldChunkManager().getBiomesForGeneration(this.biomesForGeneration, par1 * 4 - 2, par2 * 4 - 2, k + 5, l + 5); this.noiseArray = this.initializeNoiseField(this.noiseArray, par1 * b0, 0, par2 * b0, k, b3, l); for (int i1 = 0; i1 < b0; ++i1) { for (int j1 = 0; j1 < b0; ++j1) { for (int k1 = 0; k1 < b1; ++k1) { double d0 = 0.125D; double d1 = this.noiseArray[((i1 + 0) * l + j1 + 0) * b3 + k1 + 0]; double d2 = this.noiseArray[((i1 + 0) * l + j1 + 1) * b3 + k1 + 0]; double d3 = this.noiseArray[((i1 + 1) * l + j1 + 0) * b3 + k1 + 0]; double d4 = this.noiseArray[((i1 + 1) * l + j1 + 1) * b3 + k1 + 0]; double d5 = (this.noiseArray[((i1 + 0) * l + j1 + 0) * b3 + k1 + 1] - d1) * d0; double d6 = (this.noiseArray[((i1 + 0) * l + j1 + 1) * b3 + k1 + 1] - d2) * d0; double d7 = (this.noiseArray[((i1 + 1) * l + j1 + 0) * b3 + k1 + 1] - d3) * d0; double d8 = (this.noiseArray[((i1 + 1) * l + j1 + 1) * b3 + k1 + 1] - d4) * d0; for (int l1 = 0; l1 < 8; ++l1) { double d9 = 0.25D; double d10 = d1; double d11 = d2; double d12 = (d3 - d1) * d9; double d13 = (d4 - d2) * d9; for (int i2 = 0; i2 < 4; ++i2) { int j2 = i2 + i1 * 4 << 11 | 0 + j1 * 4 << 7 | k1 * 8 + l1; short short1 = 128; j2 -= short1; double d14 = 0.25D; double d15 = (d11 - d10) * d14; double d16 = d10 - d15; for (int k2 = 0; k2 < 4; ++k2) { if ((d16 += d15) > 0.0D) { /** Main filler block fill's all the underground, replaces block stone **/ par3ArrayOfByte[j2 += short1] = (byte)TitaniumMod.CorruptDirt.blockID;// } else if (k1 * 8 + l1 < b2) { par3ArrayOfByte[j2 += short1] = (byte)Block.waterStill.blockID; } else { par3ArrayOfByte[j2 += short1] = 0; } } d10 += d12; d11 += d13; } d1 += d5; d2 += d6; d3 += d7; d4 += d8; } } } } } 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; } /** Main filler block fill's all the underground, replaces block stone **/ else if (var18 != TitaniumMod.CorruptDirt.blockID) { if (var13 == -1) { if (var12 == 0) { var14 = 0; /** change to custom dirt **/ var15 = (byte)TitaniumMod.CorruptGrass.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.sandStone.blockID; } } } } } } } } public Chunk loadChunk(int par1, int par2) { return provideChunk(par1, par2); } public Chunk provideChunk(int par1, int par2) { this.rand.setSeed(par1 * 341873128712L + par2 * 132897987541L); byte[] var3 = new byte[32768]; generateTerrain(par1, par2, var3); this.biomesForGeneration = this.worldObj.getWorldChunkManager().loadBlockGeneratorData(this.biomesForGeneration, par1 * 16, par2 * 16, 16, 16); 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; } 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(var8 * var8 + var9 * var9 + 0.2F); this.parabolicField[(var8 + 2 + (var9 + 2) * 5)] = var10; } } } double var44 = 684.41200000000003D; double var45 = 684.41200000000003D; 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 = var17; double var26 = var16; var48 += var47 * 0.2D; var48 = var48 * par6 / 16.0D; double var28 = par6 / 2.0D + var48 * 4.0D; double var30 = 0.0D; double var32 = (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 = (var46 - (par6 - 4)) / 3.0F; var30 = var30 * (1.0D - var40) + -10.0D * var40; } par1ArrayOfDouble[var12] = var30; var12++; } } } return par1ArrayOfDouble; } public boolean chunkExists(int par1, int par2) { return true; } public void populate(IChunkProvider par1IChunkProvider, int par2, int par3) { net.minecraft.block.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(par2 * var7 + 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); } if ((!var11) && (this.rand.nextInt(4) == 0)) { int var12 = var4 + this.rand.nextInt(16) + 8; int var13 = this.rand.nextInt(128); int var14 = var5 + this.rand.nextInt(16) + 8; new WorldGenLakes(Block.waterStill.blockID).generate(this.worldObj, this.rand, var12, var13, var14); } 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 (int var12 = 0; var12 < 16; var12++) { for (int var13 = 0; var13 < 16; var13++) { int var14 = this.worldObj.getPrecipitationHeight(var4 + var12, var5 + var13); if (this.worldObj.isBlockFreezable(var12 + var4, var14 - 1, var13 + var5)) { this.worldObj.setBlock(var12 + var4, var14 - 1, var13 + var5, Block.ice.blockID); } if (this.worldObj.canSnowAt(var12 + var4, var14, var13 + var5)) { this.worldObj.setBlock(var12 + var4, var14, var13 + var5, Block.snow.blockID); } } } net.minecraft.block.BlockSand.fallInstantly = false; } public boolean saveChunks(boolean par1, IProgressUpdate par2IProgressUpdate) { return true; } public boolean unload100OldestChunks() { return false; } public boolean canSave() { return true; } public String makeString() { return "RandomLevelSource"; } 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); } 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; } public boolean unloadQueuedChunks() { return false; } public void recreateStructures(int i, int j) { } @Override public void func_104112_b() { // TODO Auto-generated method stub } }
  2. I have been trying to add my custom block to my biome but it keeps crashing. Now before you say "go look at other topics, this is a common question", let me tell you I have already looked at endless tutorials, and topics about this and I still couldn't get it to work. I have made sure I registered my custom blocks before my biome, and made the ids below 256. ERROR BiomeGen class package minecraftmod; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.gen.feature.WorldGenDesertWells; public class CorruptBiome extends BiomeGenBase { public CorruptBiome(int par1) { super(par1); this.spawnableCreatureList.clear(); this.topBlock = (byte)TitaniumMod.CorruptGrass.blockID; this.fillerBlock = (byte)TitaniumMod.CorruptDirt.blockID; this.theBiomeDecorator.treesPerChunk = -999; this.theBiomeDecorator.deadBushPerChunk = 2; this.theBiomeDecorator.reedsPerChunk = 50; this.theBiomeDecorator.cactiPerChunk = 10; } public void decorate(World par1World, Random par2Random, int par3, int par4) { super.decorate(par1World, par2Random, par3, par4); if (par2Random.nextInt(1000) == 0) { int k = par3 + par2Random.nextInt(16) + 8; int l = par4 + par2Random.nextInt(16) + 8; WorldGenDesertWells worldgendesertwells = new WorldGenDesertWells(); worldgendesertwells.generate(par1World, par2Random, k, par1World.getHeightValue(k, l) + 1, l); } } } I know the error points to this line this.topBlock = (byte)TitaniumMod.CorruptGrass.blockID; Main Mod class //Biomes CorruptBiome = new CorruptBiome(24).setBiomeName("Tutorial Biome").setTemperatureRainfall(2.0F, 2.0F); GameRegistry.addBiome(CorruptBiome); //biomes public static BiomeGenBase CorruptBiome; CorruptGrass = new CorruptGrass(202, "CorruptGrass").setUnlocalizedName("corruptgrass").setHardness(2.0F).setStepSound(Block.soundGrassFootstep).setResistance(20.0F); CorruptDirt = new CorruptDirt(203, "CorruptDirt").setUnlocalizedName("corruptdirt").setHardness(2.0F).setStepSound(Block.soundGrassFootstep).setResistance(20.0F); GameRegistry.registerBlock(CorruptGrass, "CorruptGrass"); GameRegistry.registerBlock(CorruptDirt, "CorruptDirt"); (not in actual order)
  3. Okay I tryed that way it still just loads in the eclispe minecraft
  4. I know what variables are and I learned from thenewboston im not stupid, I know java all I need help with is some fucking texture loading. I am so sorry I cant learn new methods in 10 seconds because mojang changes them every update.
  5. Item asd; would be telling forge what you are creating, it is like making something new (if we are talking forge here) int i; is an integer (correct me if im wrong) asd is the item your creating, now can we get back to helping me
  6. yes, unless it's impossible for me to ask questions on a help forum without people making fools out of beginners. Im asking why is the housegen there is that where i should put my class name?
  7. I know I saw that yesterday but what is this? public static ResourceLocation houseGen_Img = new ResourceLocation("mschouses", "gui/BlockBase.png"); is that the class name?
  8. Nope that didnt work, as I said the code works perfectly fine in the Eclipse copy of Minecraft. As earth said I did look and found nothing that actually related to and/or fixed my error. The problem is that it wont load in the actual version of minecraft. Instead of you guys giving answers that you assume will work, how about you look at your own code and see whats happening in my situation to see if that code applies here. I do appreciate your answers but its annoying when you guys just paste a line of code expecting it to work. What just happened!? this is with your code. (in eclipse environment)
  9. I made a custom furnace that the GUI texture works fine in the eclispe minecraft, but when I open the furnace in regular minecraft it shows black and purple squares. Custom GUI code. package minecraftmod; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import org.lwjgl.opengl.GL11; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class TutGuiFurnace extends GuiContainer { private TileEntityDarkFurnace furnaceInventory; public TutGuiFurnace(InventoryPlayer par1InventoryPlayer, TileEntityDarkFurnace par2TileEntityFurnace) { super(new ContainerTutFurnace(par1InventoryPlayer, par2TileEntityFurnace)); this.furnaceInventory = par2TileEntityFurnace; } /** * Draw the foreground layer for the GuiContainer (everything in front of the items) */ protected void drawGuiContainerForegroundLayer(int par1, int par2) { String s = this.furnaceInventory.isInvNameLocalized() ? this.furnaceInventory.getInvName() : StatCollector.translateToLocal(this.furnaceInventory.getInvName()); this.fontRenderer.drawString(s, this.xSize / 2 - this.fontRenderer.getStringWidth(s) / 2, 6, 4210752); this.fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, this.ySize - 96 + 2, 4210752); } /** * Draw the background layer for the GuiContainer (everything behind the items) */ protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.mc.func_110434_K().func_110577_a(new ResourceLocation("titaniummod:/textures/gui/furnace.png")); int k = (this.width - this.xSize) / 2; int l = (this.height - this.ySize) / 2; this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize); int i1; if (this.furnaceInventory.isBurning()) { i1 = this.furnaceInventory.getBurnTimeRemainingScaled(12); this.drawTexturedModalRect(k + 56, l + 36 + 12 - i1, 176, 12 - i1, 14, i1 + 2); } i1 = this.furnaceInventory.getCookProgressScaled(24); this.drawTexturedModalRect(k + 79, l + 34, 176, 14, i1 + 1, 16); } }
  10. I made a custom furnace which works perfectly fine in the eclipse minecraft, but when I recompile and reobf, package, and add to mods folder it gets this error. Tileentity Code package minecraftmod; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemHoe; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemSword; import net.minecraft.item.ItemTool; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDummyContainer; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class TileEntityDarkFurnace extends TileEntity implements ISidedInventory { private static final int[] slots_top = new int[] {0}; private static final int[] slots_bottom = new int[] {2, 1}; private static final int[] slots_sides = new int[] {1}; /** * The ItemStacks that hold the items currently being used in the furnace */ private ItemStack[] furnaceItemStacks = new ItemStack[3]; /** The number of ticks that the furnace will keep burning */ public int furnaceBurnTime = 0; /** * The number of ticks that a fresh copy of the currently-burning item would keep the furnace burning for */ public int currentItemBurnTime = 0; /** The number of ticks that the current item has been cooking for */ public int furnaceCookTime = 0; private String field_94130_e; /** * Returns the number of slots in the inventory. */ public int getSizeInventory() { return this.furnaceItemStacks.length; } /** * Returns the stack in slot i */ public ItemStack getStackInSlot(int par1) { return this.furnaceItemStacks[par1]; } /** * Removes from an inventory slot (first arg) up to a specified number (second arg) of items and returns them in a * new stack. */ public ItemStack decrStackSize(int par1, int par2) { if (this.furnaceItemStacks[par1] != null) { ItemStack itemstack; if (this.furnaceItemStacks[par1].stackSize <= par2) { itemstack = this.furnaceItemStacks[par1]; this.furnaceItemStacks[par1] = null; return itemstack; } else { itemstack = this.furnaceItemStacks[par1].splitStack(par2); if (this.furnaceItemStacks[par1].stackSize == 0) { this.furnaceItemStacks[par1] = null; } return itemstack; } } else { return null; } } /** * When some containers are closed they call this on each slot, then drop whatever it returns as an EntityItem - * like when you close a workbench GUI. */ public ItemStack getStackInSlotOnClosing(int par1) { if (this.furnaceItemStacks[par1] != null) { ItemStack itemstack = this.furnaceItemStacks[par1]; this.furnaceItemStacks[par1] = null; return itemstack; } else { return null; } } /** * Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections). */ public void setInventorySlotContents(int par1, ItemStack par2ItemStack) { this.furnaceItemStacks[par1] = par2ItemStack; if (par2ItemStack != null && par2ItemStack.stackSize > this.getInventoryStackLimit()) { par2ItemStack.stackSize = this.getInventoryStackLimit(); } } /** * Returns the name of the inventory. */ public String getInvName() { return this.isInvNameLocalized() ? this.field_94130_e : "Dark Furnace"; } /** * If this returns false, the inventory name will be used as an unlocalized name, and translated into the player's * language. Otherwise it will be used directly. */ public boolean isInvNameLocalized() { return this.field_94130_e != null && this.field_94130_e.length() > 0; } public void func_94129_a(String par1Str) { this.field_94130_e = par1Str; } /** * Reads a tile entity from NBT. */ public void readFromNBT(NBTTagCompound par1NBTTagCompound) { super.readFromNBT(par1NBTTagCompound); NBTTagList nbttaglist = par1NBTTagCompound.getTagList("Items"); this.furnaceItemStacks = new ItemStack[this.getSizeInventory()]; for (int i = 0; i < nbttaglist.tagCount(); ++i) { NBTTagCompound nbttagcompound1 = (NBTTagCompound)nbttaglist.tagAt(i); byte b0 = nbttagcompound1.getByte("Slot"); if (b0 >= 0 && b0 < this.furnaceItemStacks.length) { this.furnaceItemStacks[b0] = ItemStack.loadItemStackFromNBT(nbttagcompound1); } } this.furnaceBurnTime = par1NBTTagCompound.getShort("BurnTime"); this.furnaceCookTime = par1NBTTagCompound.getShort("CookTime"); this.currentItemBurnTime = getItemBurnTime(this.furnaceItemStacks[1]); if (par1NBTTagCompound.hasKey("Dark Furnace")) { this.field_94130_e = par1NBTTagCompound.getString("Dark Furnace"); } } /** * Writes a tile entity to NBT. */ public void writeToNBT(NBTTagCompound par1NBTTagCompound) { super.writeToNBT(par1NBTTagCompound); par1NBTTagCompound.setShort("BurnTime", (short)this.furnaceBurnTime); par1NBTTagCompound.setShort("CookTime", (short)this.furnaceCookTime); NBTTagList nbttaglist = new NBTTagList(); for (int i = 0; i < this.furnaceItemStacks.length; ++i) { if (this.furnaceItemStacks[i] != null) { NBTTagCompound nbttagcompound1 = new NBTTagCompound(); nbttagcompound1.setByte("Slot", (byte)i); this.furnaceItemStacks[i].writeToNBT(nbttagcompound1); nbttaglist.appendTag(nbttagcompound1); } } par1NBTTagCompound.setTag("Items", nbttaglist); if (this.isInvNameLocalized()) { par1NBTTagCompound.setString("Dark Furnace", this.field_94130_e); } } /** * Returns the maximum stack size for a inventory slot. Seems to always be 64, possibly will be extended. *Isn't * this more of a set than a get?* */ public int getInventoryStackLimit() { return 64; } @SideOnly(Side.CLIENT) /** * Returns an integer between 0 and the passed value representing how close the current item is to being completely * cooked */ public int getCookProgressScaled(int par1) { return this.furnaceCookTime * par1 / 200; } @SideOnly(Side.CLIENT) /** * Returns an integer between 0 and the passed value representing how much burn time is left on the current fuel * item, where 0 means that the item is exhausted and the passed value means that the item is fresh */ public int getBurnTimeRemainingScaled(int par1) { if (this.currentItemBurnTime == 0) { this.currentItemBurnTime = 200; } return this.furnaceBurnTime * par1 / this.currentItemBurnTime; } /** * Returns true if the furnace is currently burning */ public boolean isBurning() { return this.furnaceBurnTime > 0; } /** * Allows the entity to update its state. Overridden in most subclasses, e.g. the mob spawner uses this to count * ticks and creates a new spawn inside its implementation. */ public void updateEntity() { boolean flag = this.furnaceBurnTime > 0; boolean flag1 = false; if (this.furnaceBurnTime > 0) { --this.furnaceBurnTime; } if (!this.worldObj.isRemote) { if (this.furnaceBurnTime == 0 && this.canSmelt()) { this.currentItemBurnTime = this.furnaceBurnTime = getItemBurnTime(this.furnaceItemStacks[1]); if (this.furnaceBurnTime > 0) { flag1 = true; if (this.furnaceItemStacks[1] != null) { --this.furnaceItemStacks[1].stackSize; if (this.furnaceItemStacks[1].stackSize == 0) { this.furnaceItemStacks[1] = this.furnaceItemStacks[1].getItem().getContainerItemStack(furnaceItemStacks[1]); } } } } if (this.isBurning() && this.canSmelt()) { ++this.furnaceCookTime; if (this.furnaceCookTime == 200) { this.furnaceCookTime = 0; this.smeltItem(); flag1 = true; } } else { this.furnaceCookTime = 0; } if (flag != this.furnaceBurnTime > 0) { flag1 = true; TutFurnace.updateFurnaceBlockState(this.furnaceBurnTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); } } if (flag1) { this.onInventoryChanged(); } } /** * Returns true if the furnace can smelt an item, i.e. has a source item, destination stack isn't full, etc. */ private boolean canSmelt() { if (this.furnaceItemStacks[0] == null) { return false; } else { ItemStack itemstack = TutFurnaceRecipes.smelting().getSmeltingResult(this.furnaceItemStacks[0]); if (itemstack == null) return false; if (this.furnaceItemStacks[2] == null) return true; if (!this.furnaceItemStacks[2].isItemEqual(itemstack)) return false; int result = furnaceItemStacks[2].stackSize + itemstack.stackSize; return (result <= getInventoryStackLimit() && result <= itemstack.getMaxStackSize()); } } /** * Turn one item from the furnace source stack into the appropriate smelted item in the furnace result stack */ public void smeltItem() { if (this.canSmelt()) { ItemStack itemstack = TutFurnaceRecipes.smelting().getSmeltingResult(this.furnaceItemStacks[0]); if (this.furnaceItemStacks[2] == null) { this.furnaceItemStacks[2] = itemstack.copy(); } else if (this.furnaceItemStacks[2].isItemEqual(itemstack)) { furnaceItemStacks[2].stackSize += itemstack.stackSize; } --this.furnaceItemStacks[0].stackSize; if (this.furnaceItemStacks[0].stackSize <= 0) { this.furnaceItemStacks[0] = null; } } } /** * Returns the number of ticks that the supplied fuel item will keep the furnace burning, or 0 if the item isn't * fuel */ public static int getItemBurnTime(ItemStack par0ItemStack) { if (par0ItemStack == null) { return 0; } else { int i = par0ItemStack.getItem().itemID; Item item = par0ItemStack.getItem(); if (par0ItemStack.getItem() instanceof ItemBlock && Block.blocksList[i] != null) { Block block = Block.blocksList[i]; if (block == Block.woodSingleSlab) { return 150; } if (block.blockMaterial == Material.wood) { return 300; } } if (i == TitaniumMod.FuelCell.itemID) return 4500; if (i == Item.coal.itemID) return 50; return GameRegistry.getFuelValue(par0ItemStack); } } /** * Return true if item is a fuel source (getItemBurnTime() > 0). */ public static boolean isItemFuel(ItemStack par0ItemStack) { return getItemBurnTime(par0ItemStack) > 0; } /** * Do not make give this method the name canInteractWith because it clashes with Container */ public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer) { return this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : par1EntityPlayer.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D; } public void openChest() {} public void closeChest() {} /** * Returns true if automation is allowed to insert the given stack (ignoring stack size) into the given slot. */ public boolean isStackValidForSlot(int par1, ItemStack par2ItemStack) { return par1 == 2 ? false : (par1 == 1 ? isItemFuel(par2ItemStack) : true); } /** * Get the size of the side inventory. */ public int[] getSizeInventorySide(int par1) { return par1 == 0 ? slots_top : (par1 == 1 ? slots_bottom : slots_sides); } public boolean func_102007_a(int par1, ItemStack par2ItemStack, int par3) { return this.isStackValidForSlot(par1, par2ItemStack); } public boolean func_102008_b(int par1, ItemStack par2ItemStack, int par3) { return par3 != 0 || par1 != 1 || par2ItemStack.itemID == Item.bucketEmpty.itemID; } /** * Returns true if automation is allowed to insert the given stack (ignoring stack size) into the given slot. */ public boolean isItemValidForSlot(int par1, ItemStack par2ItemStack) { return par1 == 2 ? false : (par1 == 1 ? isItemFuel(par2ItemStack) : true); } /** * Returns an array containing the indices of the slots that can be accessed by automation on the given side of this * block. */ public int[] getAccessibleSlotsFromSide(int par1) { return par1 == 0 ? slots_bottom : (par1 == 1 ? slots_top : slots_sides); } /** * Returns true if automation can insert the given item in the given slot from the given side. Args: Slot, item, * side */ public boolean canInsertItem(int par1, ItemStack par2ItemStack, int par3) { return this.isItemValidForSlot(par1, par2ItemStack); } /** * Returns true if automation can extract the given item in the given slot from the given side. Args: Slot, item, * side */ public boolean canExtractItem(int par1, ItemStack par2ItemStack, int par3) { return par3 != 0 || par1 != 1 || par2ItemStack.itemID == Item.bucketEmpty.itemID; } public void setGuiDisplayName(String par1Str) { this.field_94130_e = par1Str; } { } }
  11. I added a potion effect on armor and it works fine, the thing is I dont like the constant particle getting in my players view is there a way to disable the particles without editing any vanilla classes?
  12. No errors now but look this is what happens... It only renders the side of the funace texture I created. package minecraftmod; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemHoe; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemSword; import net.minecraft.item.ItemTool; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDummyContainer; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class TileEntityTutFurnace extends TileEntity implements ISidedInventory { private static final int[] field_102010_d = new int[] {0}; private static final int[] field_102011_e = new int[] {2, 1}; private static final int[] field_102009_f = new int[] {1}; /** * The ItemStacks that hold the items currently being used in the furnace */ private ItemStack[] furnaceItemStacks = new ItemStack[3]; /** The number of ticks that the furnace will keep burning */ public int furnaceBurnTime = 0; /** * The number of ticks that a fresh copy of the currently-burning item would keep the furnace burning for */ public int currentItemBurnTime = 0; /** The number of ticks that the current item has been cooking for */ public int furnaceCookTime = 0; private String field_94130_e; /** * Returns the number of slots in the inventory. */ public int getSizeInventory() { return this.furnaceItemStacks.length; } /** * Returns the stack in slot i */ public ItemStack getStackInSlot(int par1) { return this.furnaceItemStacks[par1]; } /** * Removes from an inventory slot (first arg) up to a specified number (second arg) of items and returns them in a * new stack. */ public ItemStack decrStackSize(int par1, int par2) { if (this.furnaceItemStacks[par1] != null) { ItemStack itemstack; if (this.furnaceItemStacks[par1].stackSize <= par2) { itemstack = this.furnaceItemStacks[par1]; this.furnaceItemStacks[par1] = null; return itemstack; } else { itemstack = this.furnaceItemStacks[par1].splitStack(par2); if (this.furnaceItemStacks[par1].stackSize == 0) { this.furnaceItemStacks[par1] = null; } return itemstack; } } else { return null; } } /** * When some containers are closed they call this on each slot, then drop whatever it returns as an EntityItem - * like when you close a workbench GUI. */ public ItemStack getStackInSlotOnClosing(int par1) { if (this.furnaceItemStacks[par1] != null) { ItemStack itemstack = this.furnaceItemStacks[par1]; this.furnaceItemStacks[par1] = null; return itemstack; } else { return null; } } /** * Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections). */ public void setInventorySlotContents(int par1, ItemStack par2ItemStack) { this.furnaceItemStacks[par1] = par2ItemStack; if (par2ItemStack != null && par2ItemStack.stackSize > this.getInventoryStackLimit()) { par2ItemStack.stackSize = this.getInventoryStackLimit(); } } /** * Returns the name of the inventory. */ public String getInvName() { return this.isInvNameLocalized() ? this.field_94130_e : "Dark Furnace"; } /** * If this returns false, the inventory name will be used as an unlocalized name, and translated into the player's * language. Otherwise it will be used directly. */ public boolean isInvNameLocalized() { return this.field_94130_e != null && this.field_94130_e.length() > 0; } public void func_94129_a(String par1Str) { this.field_94130_e = par1Str; } /** * Reads a tile entity from NBT. */ public void readFromNBT(NBTTagCompound par1NBTTagCompound) { super.readFromNBT(par1NBTTagCompound); NBTTagList nbttaglist = par1NBTTagCompound.getTagList("Items"); this.furnaceItemStacks = new ItemStack[this.getSizeInventory()]; for (int i = 0; i < nbttaglist.tagCount(); ++i) { NBTTagCompound nbttagcompound1 = (NBTTagCompound)nbttaglist.tagAt(i); byte b0 = nbttagcompound1.getByte("Slot"); if (b0 >= 0 && b0 < this.furnaceItemStacks.length) { this.furnaceItemStacks[b0] = ItemStack.loadItemStackFromNBT(nbttagcompound1); } } this.furnaceBurnTime = par1NBTTagCompound.getShort("BurnTime"); this.furnaceCookTime = par1NBTTagCompound.getShort("CookTime"); this.currentItemBurnTime = getItemBurnTime(this.furnaceItemStacks[1]); if (par1NBTTagCompound.hasKey("Dark Furnace")) { this.field_94130_e = par1NBTTagCompound.getString("Dark Furnace"); } } /** * Writes a tile entity to NBT. */ public void writeToNBT(NBTTagCompound par1NBTTagCompound) { super.writeToNBT(par1NBTTagCompound); par1NBTTagCompound.setShort("BurnTime", (short)this.furnaceBurnTime); par1NBTTagCompound.setShort("CookTime", (short)this.furnaceCookTime); NBTTagList nbttaglist = new NBTTagList(); for (int i = 0; i < this.furnaceItemStacks.length; ++i) { if (this.furnaceItemStacks[i] != null) { NBTTagCompound nbttagcompound1 = new NBTTagCompound(); nbttagcompound1.setByte("Slot", (byte)i); this.furnaceItemStacks[i].writeToNBT(nbttagcompound1); nbttaglist.appendTag(nbttagcompound1); } } par1NBTTagCompound.setTag("Items", nbttaglist); if (this.isInvNameLocalized()) { par1NBTTagCompound.setString("Dark Furnace", this.field_94130_e); } } /** * Returns the maximum stack size for a inventory slot. Seems to always be 64, possibly will be extended. *Isn't * this more of a set than a get?* */ public int getInventoryStackLimit() { return 64; } @SideOnly(Side.CLIENT) /** * Returns an integer between 0 and the passed value representing how close the current item is to being completely * cooked */ public int getCookProgressScaled(int par1) { return this.furnaceCookTime * par1 / 200; } @SideOnly(Side.CLIENT) /** * Returns an integer between 0 and the passed value representing how much burn time is left on the current fuel * item, where 0 means that the item is exhausted and the passed value means that the item is fresh */ public int getBurnTimeRemainingScaled(int par1) { if (this.currentItemBurnTime == 0) { this.currentItemBurnTime = 200; } return this.furnaceBurnTime * par1 / this.currentItemBurnTime; } /** * Returns true if the furnace is currently burning */ public boolean isBurning() { return this.furnaceBurnTime > 0; } /** * Allows the entity to update its state. Overridden in most subclasses, e.g. the mob spawner uses this to count * ticks and creates a new spawn inside its implementation. */ public void updateEntity() { boolean flag = this.furnaceBurnTime > 0; boolean flag1 = false; if (this.furnaceBurnTime > 0) { --this.furnaceBurnTime; } if (!this.worldObj.isRemote) { if (this.furnaceBurnTime == 0 && this.canSmelt()) { this.currentItemBurnTime = this.furnaceBurnTime = getItemBurnTime(this.furnaceItemStacks[1]); if (this.furnaceBurnTime > 0) { flag1 = true; if (this.furnaceItemStacks[1] != null) { --this.furnaceItemStacks[1].stackSize; if (this.furnaceItemStacks[1].stackSize == 0) { this.furnaceItemStacks[1] = this.furnaceItemStacks[1].getItem().getContainerItemStack(furnaceItemStacks[1]); } } } } if (this.isBurning() && this.canSmelt()) { ++this.furnaceCookTime; if (this.furnaceCookTime == 200) { this.furnaceCookTime = 0; this.smeltItem(); flag1 = true; } } else { this.furnaceCookTime = 0; } if (flag != this.furnaceBurnTime > 0) { flag1 = true; TutFurnace.updateFurnaceBlockState(this.furnaceBurnTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); } } if (flag1) { this.onInventoryChanged(); } } /** * Returns true if the furnace can smelt an item, i.e. has a source item, destination stack isn't full, etc. */ private boolean canSmelt() { if (this.furnaceItemStacks[0] == null) { return false; } else { ItemStack itemstack = TutFurnaceRecipes.smelting().getSmeltingResult(this.furnaceItemStacks[0]); if (itemstack == null) return false; if (this.furnaceItemStacks[2] == null) return true; if (!this.furnaceItemStacks[2].isItemEqual(itemstack)) return false; int result = furnaceItemStacks[2].stackSize + itemstack.stackSize; return (result <= getInventoryStackLimit() && result <= itemstack.getMaxStackSize()); } } /** * Turn one item from the furnace source stack into the appropriate smelted item in the furnace result stack */ public void smeltItem() { if (this.canSmelt()) { ItemStack itemstack = TutFurnaceRecipes.smelting().getSmeltingResult(this.furnaceItemStacks[0]); if (this.furnaceItemStacks[2] == null) { this.furnaceItemStacks[2] = itemstack.copy(); } else if (this.furnaceItemStacks[2].isItemEqual(itemstack)) { furnaceItemStacks[2].stackSize += itemstack.stackSize; } --this.furnaceItemStacks[0].stackSize; if (this.furnaceItemStacks[0].stackSize <= 0) { this.furnaceItemStacks[0] = null; } } } /** * Returns the number of ticks that the supplied fuel item will keep the furnace burning, or 0 if the item isn't * fuel */ public static int getItemBurnTime(ItemStack par0ItemStack) { if (par0ItemStack == null) { return 0; } else { int i = par0ItemStack.getItem().itemID; Item item = par0ItemStack.getItem(); if (par0ItemStack.getItem() instanceof ItemBlock && Block.blocksList[i] != null) { Block block = Block.blocksList[i]; if (block == Block.woodSingleSlab) { return 150; } if (block.blockMaterial == Material.wood) { return 300; } } if (i == TitaniumMod.FuelCell.itemID) return 2600; if (i == Item.coal.itemID) return 50; return GameRegistry.getFuelValue(par0ItemStack); } } /** * Return true if item is a fuel source (getItemBurnTime() > 0). */ public static boolean isItemFuel(ItemStack par0ItemStack) { return getItemBurnTime(par0ItemStack) > 0; } /** * Do not make give this method the name canInteractWith because it clashes with Container */ public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer) { return this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : par1EntityPlayer.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D; } public void openChest() {} public void closeChest() {} /** * Returns true if automation is allowed to insert the given stack (ignoring stack size) into the given slot. */ public boolean isStackValidForSlot(int par1, ItemStack par2ItemStack) { return par1 == 2 ? false : (par1 == 1 ? isItemFuel(par2ItemStack) : true); } /** * Get the size of the side inventory. */ public int[] getSizeInventorySide(int par1) { return par1 == 0 ? field_102011_e : (par1 == 1 ? field_102010_d : field_102009_f); } public boolean func_102007_a(int par1, ItemStack par2ItemStack, int par3) { return this.isStackValidForSlot(par1, par2ItemStack); } public boolean func_102008_b(int par1, ItemStack par2ItemStack, int par3) { return par3 != 0 || par1 != 1 || par2ItemStack.itemID == Item.bucketEmpty.itemID; } public int getStartInventorySide(ForgeDirection side) { { if (side == ForgeDirection.DOWN) return 1; if (side == ForgeDirection.UP) return 0; return 2;}} public int getSizeInventorySide(ForgeDirection side) { return 1; } @Override public boolean isItemValidForSlot(int i, ItemStack itemstack) { // TODO Auto-generated method stub return false; } @Override public int[] getAccessibleSlotsFromSide(int var1) { // TODO Auto-generated method stub return null; } @Override public boolean canInsertItem(int i, ItemStack itemstack, int j) { // TODO Auto-generated method stub return false; } @Override public boolean canExtractItem(int i, ItemStack itemstack, int j) { // TODO Auto-generated method stub return false;} { } }
×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.