Fork of Poseidon providing Bukkit #1060 to older Beta versions (b1.0-b1.7.3)
1package net.minecraft.server;
2
3import java.util.ArrayList;
4import java.util.List;
5import java.util.Optional;
6import java.util.Random;
7
8public class BlockCrops extends BlockFlower {
9
10 protected BlockCrops(int i, int j) {
11 super(i, j);
12 this.textureId = j;
13 this.a(true);
14 float f = 0.5F;
15
16 this.a(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.25F, 0.5F + f);
17 }
18
19 protected boolean c(int i) {
20 return i == Block.SOIL.id;
21 }
22
23 public void a(World world, int i, int j, int k, Random random) {
24 super.a(world, i, j, k, random);
25 if (world.getLightLevel(i, j + 1, k) >= 9) {
26 int l = world.getData(i, j, k);
27
28 if (l < 7) {
29 float f = this.h(world, i, j, k);
30
31 if (random.nextInt((int) (100.0F / f)) == 0) {
32 ++l;
33 world.setData(i, j, k, l);
34 }
35 }
36 }
37 }
38
39 public void d_(World world, int i, int j, int k) {
40 world.setData(i, j, k, 7);
41 }
42
43 private float h(World world, int i, int j, int k) {
44 float f = 1.0F;
45 int l = world.getTypeId(i, j, k - 1);
46 int i1 = world.getTypeId(i, j, k + 1);
47 int j1 = world.getTypeId(i - 1, j, k);
48 int k1 = world.getTypeId(i + 1, j, k);
49 int l1 = world.getTypeId(i - 1, j, k - 1);
50 int i2 = world.getTypeId(i + 1, j, k - 1);
51 int j2 = world.getTypeId(i + 1, j, k + 1);
52 int k2 = world.getTypeId(i - 1, j, k + 1);
53 boolean flag = j1 == this.id || k1 == this.id;
54 boolean flag1 = l == this.id || i1 == this.id;
55 boolean flag2 = l1 == this.id || i2 == this.id || j2 == this.id || k2 == this.id;
56
57 for (int l2 = i - 1; l2 <= i + 1; ++l2) {
58 for (int i3 = k - 1; i3 <= k + 1; ++i3) {
59 int j3 = world.getTypeId(l2, j - 1, i3);
60 float f1 = 0.0F;
61
62 if (j3 == Block.SOIL.id) {
63 f1 = 1.0F;
64 if (world.getData(l2, j - 1, i3) > 0) {
65 f1 = 3.0F;
66 }
67 }
68
69 if (l2 != i || i3 != k) {
70 f1 /= 4.0F;
71 }
72
73 f += f1;
74 }
75 }
76
77 if (flag2 || flag && flag1) {
78 f /= 2.0F;
79 }
80
81 return f;
82 }
83
84 public int a(int i, int j) {
85 if (j < 0) {
86 j = 7;
87 }
88
89 return this.textureId + j;
90 }
91
92 public void dropNaturally(World world, int i, int j, int k, int l, float f) {
93 super.dropNaturally(world, i, j, k, l, f);
94 if (!world.isStatic) {
95 for (int i1 = 0; i1 < 3; ++i1) {
96 if (world.random.nextInt(15) <= l) {
97 float f1 = 0.7F;
98 float f2 = world.random.nextFloat() * f1 + (1.0F - f1) * 0.5F;
99 float f3 = world.random.nextFloat() * f1 + (1.0F - f1) * 0.5F;
100 float f4 = world.random.nextFloat() * f1 + (1.0F - f1) * 0.5F;
101 EntityItem entityitem = new EntityItem(world, (double) ((float) i + f2), (double) ((float) j + f3), (double) ((float) k + f4), new ItemStack(Item.SEEDS));
102 entityitem.pickupDelay = 10;
103 world.addEntity(entityitem);
104 }
105 }
106 }
107 }
108
109 public int a(int i, Random random) {
110 return i == 7 ? Item.WHEAT.id : -1;
111 }
112
113 public int a(Random random) {
114 return 1;
115 }
116}