Fork of Poseidon providing Bukkit #1060 to older Beta versions (b1.0-b1.7.3)
1package net.minecraft.server;
2
3import com.legacyminecraft.poseidon.PoseidonConfig;
4
5import java.util.Random;
6
7public class BlockSand extends Block {
8
9 public static boolean instaFall = false;
10
11 public BlockSand(int i, int j) {
12 super(i, j, Material.SAND);
13 }
14
15 public void c(World world, int i, int j, int k) {
16 world.c(i, j, k, this.id, this.c());
17 }
18
19 public void doPhysics(World world, int i, int j, int k, int l) {
20 world.c(i, j, k, this.id, this.c());
21 }
22
23 public void a(World world, int i, int j, int k, Random random) {
24 this.g(world, i, j, k);
25 }
26
27 private void g(World world, int i, int j, int k) {
28 if (c_(world, i, j - 1, k) && j >= 0) {
29 byte b0 = 32;
30
31 if (!instaFall && world.a(i - b0, j - b0, k - b0, i + b0, j + b0, k + b0)) {
32 if (PoseidonConfig.getInstance().getConfigBoolean("world.settings.pistons.sand-gravel-duping-fix.enabled", true)) {
33 world.setTypeId(i, j, k, 0);
34 }
35 EntityFallingSand entityfallingsand = new EntityFallingSand(world, i + 0.5D, j + 0.5D, k + 0.5D, this.id);
36
37 world.addEntity(entityfallingsand);
38 } else {
39 world.setTypeId(i, j, k, 0);
40
41 while (c_(world, i, j - 1, k) && j > 0) {
42 --j;
43 }
44
45 if (j > 0) {
46 world.setTypeId(i, j, k, this.id);
47 }
48 }
49 }
50 }
51
52 public int c() {
53 return 3;
54 }
55
56 public static boolean c_(World world, int i, int j, int k) {
57 int l = world.getTypeId(i, j, k);
58
59 if (l == 0) {
60 return true;
61 } else if (l == Block.FIRE.id) {
62 return true;
63 } else {
64 Material material = Block.byId[l].material;
65
66 return material == Material.WATER ? true : material == Material.LAVA;
67 }
68 }
69}