package net.minecraft.client.renderer; import java.util.Arrays; import net.minecraft.block.state.IBlockState; import net.minecraft.init.Blocks; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.BlockPos; import net.minecraft.util.Vec3i; import net.minecraft.world.ChunkCache; import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; public class RegionRenderCache extends ChunkCache { private static final IBlockState field_175632_f = Blocks.air.getDefaultState(); private final BlockPos field_175633_g; private int[] field_175634_h; private IBlockState[] field_175635_i; private static final String __OBFID = "CL_00002565"; public RegionRenderCache(World worldIn, BlockPos p_i46273_2_, BlockPos p_i46273_3_, int p_i46273_4_) { super(worldIn, p_i46273_2_, p_i46273_3_, p_i46273_4_); this.field_175633_g = p_i46273_2_.subtract(new Vec3i(p_i46273_4_, p_i46273_4_, p_i46273_4_)); boolean var5 = true; this.field_175634_h = new int[8000]; Arrays.fill(this.field_175634_h, -1); this.field_175635_i = new IBlockState[8000]; } public TileEntity getTileEntity(BlockPos pos) { int var2 = (pos.getX() >> 4) - this.chunkX; int var3 = (pos.getZ() >> 4) - this.chunkZ; return this.chunkArray[var2][var3].func_177424_a(pos, Chunk.EnumCreateEntityType.QUEUED); } public int getCombinedLight(BlockPos p_175626_1_, int p_175626_2_) { int var3 = this.func_175630_e(p_175626_1_); int var4 = this.field_175634_h[var3]; if (var4 == -1) { var4 = super.getCombinedLight(p_175626_1_, p_175626_2_); this.field_175634_h[var3] = var4; } return var4; } public IBlockState getBlockState(BlockPos pos) { int var2 = this.func_175630_e(pos); IBlockState var3 = this.field_175635_i[var2]; if (var3 == null) { var3 = this.func_175631_c(pos); this.field_175635_i[var2] = var3; } return var3; } private IBlockState func_175631_c(BlockPos p_175631_1_) { if (p_175631_1_.getY() >= 0 && p_175631_1_.getY() < 256) { int var2 = (p_175631_1_.getX() >> 4) - this.chunkX; int var3 = (p_175631_1_.getZ() >> 4) - this.chunkZ; return this.chunkArray[var2][var3].getBlockState(p_175631_1_); } else { return field_175632_f; } } private int func_175630_e(BlockPos p_175630_1_) { int var2 = p_175630_1_.getX() - this.field_175633_g.getX(); int var3 = p_175630_1_.getY() - this.field_175633_g.getY(); int var4 = p_175630_1_.getZ() - this.field_175633_g.getZ(); return var2 * 400 + var4 * 20 + var3; } }