001 package org.bukkit;
002
003 import org.bukkit.block.Biome;
004
005 /**
006 * Represents a static, thread-safe snapshot of chunk of blocks.
007 * <p>
008 * Purpose is to allow clean, efficient copy of a chunk data to be made, and
009 * then handed off for processing in another thread (e.g. map rendering)
010 */
011 public interface ChunkSnapshot {
012
013 /**
014 * Gets the X-coordinate of this chunk
015 *
016 * @return X-coordinate
017 */
018 int getX();
019
020 /**
021 * Gets the Z-coordinate of this chunk
022 *
023 * @return Z-coordinate
024 */
025 int getZ();
026
027 /**
028 * Gets name of the world containing this chunk
029 *
030 * @return Parent World Name
031 */
032 String getWorldName();
033
034 /**
035 * Get block type for block at corresponding coordinate in the chunk
036 *
037 * @param x 0-15
038 * @param y 0-127
039 * @param z 0-15
040 * @return 0-255
041 * @deprecated Magic value
042 */
043 @Deprecated
044 int getBlockTypeId(int x, int y, int z);
045
046 /**
047 * Get block data for block at corresponding coordinate in the chunk
048 *
049 * @param x 0-15
050 * @param y 0-127
051 * @param z 0-15
052 * @return 0-15
053 * @deprecated Magic value
054 */
055 @Deprecated
056 int getBlockData(int x, int y, int z);
057
058 /**
059 * Get sky light level for block at corresponding coordinate in the chunk
060 *
061 * @param x 0-15
062 * @param y 0-127
063 * @param z 0-15
064 * @return 0-15
065 */
066 int getBlockSkyLight(int x, int y, int z);
067
068 /**
069 * Get light level emitted by block at corresponding coordinate in the
070 * chunk
071 *
072 * @param x 0-15
073 * @param y 0-127
074 * @param z 0-15
075 * @return 0-15
076 */
077 int getBlockEmittedLight(int x, int y, int z);
078
079 /**
080 * Gets the highest non-air coordinate at the given coordinates
081 *
082 * @param x X-coordinate of the blocks
083 * @param z Z-coordinate of the blocks
084 * @return Y-coordinate of the highest non-air block
085 */
086 int getHighestBlockYAt(int x, int z);
087
088 /**
089 * Get biome at given coordinates
090 *
091 * @param x X-coordinate
092 * @param z Z-coordinate
093 * @return Biome at given coordinate
094 */
095 Biome getBiome(int x, int z);
096
097 /**
098 * Get raw biome temperature (0.0-1.0) at given coordinate
099 *
100 * @param x X-coordinate
101 * @param z Z-coordinate
102 * @return temperature at given coordinate
103 */
104 double getRawBiomeTemperature(int x, int z);
105
106 /**
107 * Get raw biome rainfall (0.0-1.0) at given coordinate
108 *
109 * @param x X-coordinate
110 * @param z Z-coordinate
111 * @return rainfall at given coordinate
112 */
113 double getRawBiomeRainfall(int x, int z);
114
115 /**
116 * Get world full time when chunk snapshot was captured
117 *
118 * @return time in ticks
119 */
120 long getCaptureFullTime();
121
122 /**
123 * Test if section is empty
124 *
125 * @param sy - section Y coordinate (block Y / 16)
126 * @return true if empty, false if not
127 */
128 boolean isSectionEmpty(int sy);
129 }