diff options
Diffstat (limited to 'src/main/java/net/minecraft/server/BlockGrass.java')
-rw-r--r-- | src/main/java/net/minecraft/server/BlockGrass.java | 78 |
1 files changed, 67 insertions, 11 deletions
diff --git a/src/main/java/net/minecraft/server/BlockGrass.java b/src/main/java/net/minecraft/server/BlockGrass.java index 6f9301de..7b785792 100644 --- a/src/main/java/net/minecraft/server/BlockGrass.java +++ b/src/main/java/net/minecraft/server/BlockGrass.java @@ -2,27 +2,32 @@ package net.minecraft.server; import java.util.Random; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + // CraftBukkit start import org.bukkit.block.BlockState; import org.bukkit.event.block.BlockSpreadEvent; import org.bukkit.event.block.BlockFadeEvent; // CraftBukkit end -public class BlockGrass extends Block { +public class BlockGrass extends Block implements IBlockFragilePlantElement { + + private static final Logger a = LogManager.getLogger(); - protected BlockGrass(int i) { - super(i, Material.GRASS); - this.b(true); + protected BlockGrass() { + super(Material.GRASS); + this.a(true); this.a(CreativeModeTab.b); } public void a(World world, int i, int j, int k, Random random) { if (!world.isStatic) { - if (world.getLightLevel(i, j + 1, k) < 4 && Block.lightBlock[world.getTypeId(i, j + 1, k)] > 2) { + if (world.getLightLevel(i, j + 1, k) < 4 && world.getType(i, j + 1, k).k() > 2) { // CraftBukkit start org.bukkit.World bworld = world.getWorld(); BlockState blockState = bworld.getBlockAt(i, j, k).getState(); - blockState.setTypeId(Block.DIRT.id); + blockState.setTypeId(Block.b(Blocks.DIRT)); BlockFadeEvent event = new BlockFadeEvent(blockState.getBlock(), blockState); world.getServer().getPluginManager().callEvent(event); @@ -36,13 +41,13 @@ public class BlockGrass extends Block { int i1 = i + random.nextInt(3) - 1; int j1 = j + random.nextInt(5) - 3; int k1 = k + random.nextInt(3) - 1; - int l1 = world.getTypeId(i1, j1 + 1, k1); + Block block = world.getType(i1, j1 + 1, k1); - if (world.getTypeId(i1, j1, k1) == Block.DIRT.id && world.getLightLevel(i1, j1 + 1, k1) >= 4 && Block.lightBlock[l1] <= 2) { + if (world.getType(i1, j1, k1) == Blocks.DIRT && world.getData(i1, j1, k1) == 0 && world.getLightLevel(i1, j1 + 1, k1) >= 4 && block.k() <= 2) { // CraftBukkit start org.bukkit.World bworld = world.getWorld(); BlockState blockState = bworld.getBlockAt(i1, j1, k1).getState(); - blockState.setTypeId(Block.GRASS.id); + blockState.setTypeId(Block.b(Blocks.GRASS)); BlockSpreadEvent event = new BlockSpreadEvent(blockState.getBlock(), bworld.getBlockAt(i, j, k), blockState); world.getServer().getPluginManager().callEvent(event); @@ -57,7 +62,58 @@ public class BlockGrass extends Block { } } - public int getDropType(int i, Random random, int j) { - return Block.DIRT.getDropType(0, random, j); + public Item getDropType(int i, Random random, int j) { + return Blocks.DIRT.getDropType(0, random, j); + } + + public boolean a(World world, int i, int j, int k, boolean flag) { + return true; + } + + public boolean a(World world, Random random, int i, int j, int k) { + return true; + } + + public void b(World world, Random random, int i, int j, int k) { + int l = 0; + + while (l < 128) { + int i1 = i; + int j1 = j + 1; + int k1 = k; + int l1 = 0; + + while (true) { + if (l1 < l / 16) { + i1 += random.nextInt(3) - 1; + j1 += (random.nextInt(3) - 1) * random.nextInt(3) / 2; + k1 += random.nextInt(3) - 1; + if (world.getType(i1, j1 - 1, k1) == Blocks.GRASS && !world.getType(i1, j1, k1).r()) { + ++l1; + continue; + } + } else if (world.getType(i1, j1, k1).material == Material.AIR) { + if (random.nextInt(8) != 0) { + if (Blocks.LONG_GRASS.j(world, i1, j1, k1)) { + world.setTypeAndData(i1, j1, k1, Blocks.LONG_GRASS, 1, 3); + } + } else { + String s = world.getBiome(i1, k1).a(random, i1, j1, k1); + + a.debug("Flower in " + world.getBiome(i1, k1).af + ": " + s); + BlockFlowers blockflowers = BlockFlowers.e(s); + + if (blockflowers != null && blockflowers.j(world, i1, j1, k1)) { + int i2 = BlockFlowers.f(s); + + world.setTypeAndData(i1, j1, k1, blockflowers, i2, 3); + } + } + } + + ++l; + break; + } + } } } |