Fork of Poseidon providing Bukkit #1060 to older Beta versions (b1.0-b1.7.3)
at develop 87 lines 2.4 kB view raw
1package net.minecraft.server; 2 3import uk.betacraft.uberbukkit.UberbukkitConfig; 4 5public class ChunkCache implements IBlockAccess { 6 7 private int a; 8 private int b; 9 private Chunk[][] c; 10 private World d; 11 12 public ChunkCache(World world, int i, int j, int k, int l, int i1, int j1) { 13 this.d = world; 14 this.a = i >> 4; 15 this.b = k >> 4; 16 int k1 = l >> 4; 17 int l1 = j1 >> 4; 18 19 this.c = new Chunk[k1 - this.a + 1][l1 - this.b + 1]; 20 21 for (int i2 = this.a; i2 <= k1; ++i2) { 22 for (int j2 = this.b; j2 <= l1; ++j2) { 23 this.c[i2 - this.a][j2 - this.b] = world.getChunkAt(i2, j2); 24 } 25 } 26 } 27 28 public int getTypeId(int i, int j, int k) { 29 if (j < 0) { 30 return 0; 31 } else if (j >= 128) { 32 return 0; 33 } else { 34 int l = (i >> 4) - this.a; 35 int i1 = (k >> 4) - this.b; 36 37 if (l >= 0 && l < this.c.length && i1 >= 0 && i1 < this.c[l].length) { 38 Chunk chunk = this.c[l][i1]; 39 40 return chunk == null ? 0 : chunk.getTypeId(i & 15, j, k & 15); 41 } else { 42 return 0; 43 } 44 } 45 } 46 47 public TileEntity getTileEntity(int i, int j, int k) { 48 int l = (i >> 4) - this.a; 49 int i1 = (k >> 4) - this.b; 50 51 return this.c[l][i1].d(i & 15, j, k & 15); 52 } 53 54 public int getData(int i, int j, int k) { 55 if (j < 0) { 56 return 0; 57 } else if (j >= 128) { 58 return 0; 59 } else { 60 int l = (i >> 4) - this.a; 61 int i1 = (k >> 4) - this.b; 62 63 return this.c[l][i1].getData(i & 15, j, k & 15); 64 } 65 } 66 67 public Material getMaterial(int i, int j, int k) { 68 int l = this.getTypeId(i, j, k); 69 70 return l == 0 ? Material.AIR : Block.byId[l].material; 71 } 72 73 public boolean p(int i, int j, int k) { 74 Block block = Block.byId[this.getTypeId(i, j, k)]; 75 76 return block == null ? false : block.a(); 77 } 78 79 public boolean e(int i, int j, int k) { 80 if (UberbukkitConfig.getInstance().getBoolean("mechanics.pre_b1_6_block_opacity", false)) { 81 return this.p(i, j, k); 82 } 83 Block block = Block.byId[this.getTypeId(i, j, k)]; 84 85 return block == null ? false : block.material.isSolid() && block.b(); 86 } 87}