Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- MOD_ FILE CONTENTS:
- package net.minecraft.src;
- import java.util.Random;
- public class mod_tutorial extends BaseMod
- {
- //Textures
- public static int BloodLogTop = ModLoader.addOverride("/terrain.png","/Blocks/bloodlogtop.png");
- public static int BloodLogSide = ModLoader.addOverride("/terrain.png","/Blocks/bloodlogside.png");
- public static int LeavesBlood = ModLoader.addOverride("/terrain.png","/Blocks/bloodleaves.png");
- //Blocks
- //Tree Blocks
- public static final Block BloodLog = (new BlockBloodLog(212)).setHardness(2.0F).setStepSound(Block.soundWoodFootstep).setBlockName("BloodLog").setRequiresSelfNotify();
- public static final Block BloodLeaves = (new BlockBloodLeaves(213,ModLoader.addOverride("/terrain.png","/Blocks/bloodleaves.png"))).setHardness(0.2F).setLightOpacity(1).setStepSound(Block.soundGrassFootstep).setRequiresSelfNotify().setBlockName("BloodLeaves");
- //Very Complex Blocks
- //Items
- public void load()
- {
- //Registering
- ModLoader.registerBlock(BloodLeaves);
- ModLoader.registerBlock(BloodLog);
- //Adding names
- ModLoader.addName(BloodLog, "Blood Log");
- ModLoader.addName(BloodLeaves, "Leaves");
- //Tile Entity
- //Biomes
- ModLoader.addBiome(BiomeGenBase.souldesert);
- //Crafting Recipes
- //Smelting Recipes
- //Shapeless Recipes
- }
- public String getVersion()
- {
- return "1.2.5";
- }
- }
- WORLDGENBLOODTREES FILE:
- package net.minecraft.src;
- import java.util.Random;
- public class WorldGenBloodTrees extends WorldGenerator
- {
- private final int field_48202_a;
- private final boolean field_48200_b;
- private final int field_48201_c;
- private final int field_48199_d;
- public WorldGenBloodTrees(boolean par1)
- {
- this(par1, 4, 0, 0, false);
- }
- public WorldGenBloodTrees(boolean par1, int par2, int par3, int par4, boolean par5)
- {
- super(par1);
- field_48202_a = par2;
- field_48201_c = par3;
- field_48199_d = par4;
- field_48200_b = par5;
- }
- public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5)
- {
- int i = par2Random.nextInt(3) + field_48202_a;
- boolean flag = true;
- if (par4 < 1 || par4 + i + 1 > 256)
- {
- return false;
- }
- for (int j = par4; j <= par4 + 1 + i; j++)
- {
- byte byte0 = 1;
- if (j == par4)
- {
- byte0 = 0;
- }
- if (j >= (par4 + 1 + i) - 2)
- {
- byte0 = 2;
- }
- for (int l = par3 - byte0; l <= par3 + byte0 && flag; l++)
- {
- for (int j1 = par5 - byte0; j1 <= par5 + byte0 && flag; j1++)
- {
- if (j >= 0 && j < 256)
- {
- int j2 = par1World.getBlockId(l, j, j1);
- if (j2 != 0 && j2 != mod_tutorial.BloodLeaves.blockID && j2 != Block.grass.blockID && j2 != Block.dirt.blockID && j2 != mod_tutorial.BloodLog.blockID)
- {
- flag = false;
- }
- }
- else
- {
- flag = false;
- }
- }
- }
- }
- if (!flag)
- {
- return false;
- }
- int k = par1World.getBlockId(par3, par4 - 1, par5);
- if (k != Block.slowSand.blockID)
- {
- return false;
- }
- func_50073_a(par1World, par3, par4 - 1, par5, Block.slowSand.blockID);
- byte byte1 = 3;
- int i1 = 0;
- for (int k1 = (par4 - byte1) + i; k1 <= par4 + i; k1++)
- {
- int k2 = k1 - (par4 + i);
- int j3 = (i1 + 1) - k2 / 2;
- for (int l3 = par3 - j3; l3 <= par3 + j3; l3++)
- {
- int j4 = l3 - par3;
- for (int l4 = par5 - j3; l4 <= par5 + j3; l4++)
- {
- int i5 = l4 - par5;
- if ((Math.abs(j4) != j3 || Math.abs(i5) != j3 || par2Random.nextInt(2) != 0 && k2 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(l3, k1, l4)])
- {
- setBlockAndMetadata(par1World, l3, k1, l4, mod_tutorial.BloodLeaves.blockID, field_48199_d);
- }
- }
- }
- }
- for (int l1 = 0; l1 < i; l1++)
- {
- int l2 = par1World.getBlockId(par3, par4 + l1, par5);
- if (l2 != 0 && l2 != mod_tutorial.BloodLeaves.blockID)
- {
- continue;
- }
- setBlockAndMetadata(par1World, par3, par4 + l1, par5, mod_tutorial.BloodLog.blockID, field_48201_c);
- if (!field_48200_b || l1 <= 0)
- {
- continue;
- }
- if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 - 1, par4 + l1, par5))
- {
- setBlockAndMetadata(par1World, par3 - 1, par4 + l1, par5, Block.vine.blockID, 8);
- }
- if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 + 1, par4 + l1, par5))
- {
- setBlockAndMetadata(par1World, par3 + 1, par4 + l1, par5, Block.vine.blockID, 2);
- }
- if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + l1, par5 - 1))
- {
- setBlockAndMetadata(par1World, par3, par4 + l1, par5 - 1, Block.vine.blockID, 1);
- }
- if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + l1, par5 + 1))
- {
- setBlockAndMetadata(par1World, par3, par4 + l1, par5 + 1, Block.vine.blockID, 4);
- }
- }
- if (field_48200_b)
- {
- for (int i2 = (par4 - 3) + i; i2 <= par4 + i; i2++)
- {
- int i3 = i2 - (par4 + i);
- int k3 = 2 - i3 / 2;
- for (int i4 = par3 - k3; i4 <= par3 + k3; i4++)
- {
- for (int k4 = par5 - k3; k4 <= par5 + k3; k4++)
- {
- if (par1World.getBlockId(i4, i2, k4) != mod_tutorial.BloodLeaves.blockID)
- {
- continue;
- }
- if (par2Random.nextInt(4) == 0 && par1World.getBlockId(i4 - 1, i2, k4) == 0)
- {
- func_48198_a(par1World, i4 - 1, i2, k4, 8);
- }
- if (par2Random.nextInt(4) == 0 && par1World.getBlockId(i4 + 1, i2, k4) == 0)
- {
- func_48198_a(par1World, i4 + 1, i2, k4, 2);
- }
- if (par2Random.nextInt(4) == 0 && par1World.getBlockId(i4, i2, k4 - 1) == 0)
- {
- func_48198_a(par1World, i4, i2, k4 - 1, 1);
- }
- if (par2Random.nextInt(4) == 0 && par1World.getBlockId(i4, i2, k4 + 1) == 0)
- {
- func_48198_a(par1World, i4, i2, k4 + 1, 4);
- }
- }
- }
- }
- }
- return true;
- }
- private void func_48198_a(World par1World, int par2, int par3, int par4, int par5)
- {
- setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5);
- for (int i = 4; par1World.getBlockId(par2, --par3, par4) == 0 && i > 0; i--)
- {
- setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5);
- }
- }
- }
- BLOCKLEAVES (***** WITH BUG FIX *****)
- package net.minecraft.src;
- import java.util.Random;
- public class BlockBloodLeaves extends BlockBreakable
- {
- public BlockBloodLeaves(int par1, int par2)
- {
- super(par1,par2,Material.leaves,true);
- }
- public int getRenderBlockPass()
- {
- return 1;
- }
- public boolean renderAsNormalBlock()
- {
- return false;
- }
- protected boolean func_50074_q()
- {
- return true;
- }
- }
- BIOMEDECORATOR STUFF:
- // ADD THIS OUTSIDE OF PUBLIC BIOMEDECORATOR(BiomeGenBasepar1BiomeGenBase)
- protected int bloodtreeperchunk;
- protected WorldGenerator bloodTreeGen;
- // ADD THIS INSIDE OF PUBLIC BIOMEDECORATOR(BiomeGenBasepar1BiomeGenBase)
- bloodTreeGen = new WorldGenBloodTrees(true);
- bloodtreeperchunk = 0;
- ADD THIS TO THE DECORATE METHOD:
- for(int g1 = 0; g1 < bloodtreeperchunk; g1++)
- {
- int g2 = chunk_X + randomGenerator.nextInt(16) + 8;
- int g3 = chunk_Z + randomGenerator.nextInt(16) + 8;
- bloodTreeGen.generate(currentWorld, randomGenerator, g2, currentWorld.getHeightValue(g2, g3), g3);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement