Fork of Poseidon providing Bukkit #1060 to older Beta versions (b1.0-b1.7.3)
at develop 69 lines 1.9 kB view raw
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}