summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Primm <mike@primmhome.com>2011-12-10 20:06:33 -0600
committerErik Broes <erikbroes@grum.nl>2012-01-17 19:51:33 +0100
commitb22e727cda3e8a7a4a5953636243fe02f7d1f325 (patch)
tree2181171c37936ee57fb684250cd38e3b44a5df82
parentbcf6440bc42fcc80c0ec3b08c79f8d501f464749 (diff)
downloadcraftbukkit-b22e727cda3e8a7a4a5953636243fe02f7d1f325.tar
craftbukkit-b22e727cda3e8a7a4a5953636243fe02f7d1f325.tar.gz
craftbukkit-b22e727cda3e8a7a4a5953636243fe02f7d1f325.tar.lz
craftbukkit-b22e727cda3e8a7a4a5953636243fe02f7d1f325.tar.xz
craftbukkit-b22e727cda3e8a7a4a5953636243fe02f7d1f325.zip
[Bleeding] Make BaseBiome to Biome mapping faster, detect missing mapping in future updates
-rw-r--r--src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java82
1 files changed, 39 insertions, 43 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
index a9030a5d..5e53c811 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
@@ -13,11 +13,13 @@ import org.bukkit.block.PistonMoveReaction;
import net.minecraft.server.BiomeBase;
import net.minecraft.server.BlockRedstoneWire;
import net.minecraft.server.EnumSkyBlock;
+import net.minecraft.server.MinecraftServer;
import org.bukkit.*;
import org.bukkit.block.BlockState;
import org.bukkit.craftbukkit.CraftChunk;
import org.bukkit.inventory.ItemStack;
+import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.util.BlockVector;
public class CraftBlock implements Block {
@@ -25,6 +27,7 @@ public class CraftBlock implements Block {
private final int x;
private final int y;
private final int z;
+ private static final Biome BIOME_MAPPING[];
public CraftBlock(CraftChunk chunk, int x, int y, int z) {
this.x = x;
@@ -243,51 +246,11 @@ public class CraftBlock implements Block {
}
public static Biome biomeBaseToBiome(BiomeBase base) {
- if (base == BiomeBase.SWAMPLAND) {
- return Biome.SWAMPLAND;
- } else if (base == BiomeBase.FOREST) {
- return Biome.FOREST;
- } else if (base == BiomeBase.TAIGA) {
- return Biome.TAIGA;
- } else if (base == BiomeBase.DESERT) {
- return Biome.DESERT;
- } else if (base == BiomeBase.PLAINS) {
- return Biome.PLAINS;
- } else if (base == BiomeBase.HELL) {
- return Biome.HELL;
- } else if (base == BiomeBase.SKY) {
- return Biome.SKY;
- } else if (base == BiomeBase.RIVER) {
- return Biome.RIVER;
- } else if (base == BiomeBase.EXTREME_HILLS) {
- return Biome.EXTREME_HILLS;
- } else if (base == BiomeBase.OCEAN) {
- return Biome.OCEAN;
- } else if (base == BiomeBase.FROZEN_OCEAN) {
- return Biome.FROZEN_OCEAN;
- } else if (base == BiomeBase.FROZEN_RIVER) {
- return Biome.FROZEN_RIVER;
- } else if (base == BiomeBase.ICE_PLAINS) {
- return Biome.ICE_PLAINS;
- } else if (base == BiomeBase.ICE_MOUNTAINS) {
- return Biome.ICE_MOUNTAINS;
- } else if (base == BiomeBase.MUSHROOM_ISLAND) {
- return Biome.MUSHROOM_ISLAND;
- } else if (base == BiomeBase.MUSHROOM_SHORE) {
- return Biome.MUSHROOM_SHORE;
- } else if (base == BiomeBase.BEACH) {
- return Biome.BEACH;
- } else if (base == BiomeBase.DESERT_HILLS) {
- return Biome.DESERT_HILLS;
- } else if (base == BiomeBase.FOREST_HILLS) {
- return Biome.FOREST_HILLS;
- } else if (base == BiomeBase.TAIGA_HILLS) {
- return Biome.TAIGA_HILLS;
- } else if (base == BiomeBase.SMALL_MOUNTAINS) {
- return Biome.SMALL_MOUNTAINS;
+ if (base == null) {
+ return null;
}
- return null;
+ return BIOME_MAPPING[base.K];
}
public double getTemperature() {
@@ -408,4 +371,37 @@ public class CraftBlock implements Block {
return Collections.emptyList();
}
}
+
+ /* Build biome index based lookup table for BiomeBase to Biome mapping */
+ static {
+ BIOME_MAPPING = new Biome[BiomeBase.a.length];
+ BIOME_MAPPING[BiomeBase.SWAMPLAND.K] = Biome.SWAMPLAND;
+ BIOME_MAPPING[BiomeBase.FOREST.K] = Biome.FOREST;
+ BIOME_MAPPING[BiomeBase.TAIGA.K] = Biome.TAIGA;
+ BIOME_MAPPING[BiomeBase.DESERT.K] = Biome.DESERT;
+ BIOME_MAPPING[BiomeBase.PLAINS.K] = Biome.PLAINS;
+ BIOME_MAPPING[BiomeBase.HELL.K] = Biome.HELL;
+ BIOME_MAPPING[BiomeBase.SKY.K] = Biome.SKY;
+ BIOME_MAPPING[BiomeBase.RIVER.K] = Biome.RIVER;
+ BIOME_MAPPING[BiomeBase.EXTREME_HILLS.K] = Biome.EXTREME_HILLS;
+ BIOME_MAPPING[BiomeBase.OCEAN.K] = Biome.OCEAN;
+ BIOME_MAPPING[BiomeBase.FROZEN_OCEAN.K] = Biome.FROZEN_OCEAN;
+ BIOME_MAPPING[BiomeBase.FROZEN_RIVER.K] = Biome.FROZEN_RIVER;
+ BIOME_MAPPING[BiomeBase.ICE_PLAINS.K] = Biome.ICE_PLAINS;
+ BIOME_MAPPING[BiomeBase.ICE_MOUNTAINS.K] = Biome.ICE_MOUNTAINS;
+ BIOME_MAPPING[BiomeBase.MUSHROOM_ISLAND.K] = Biome.MUSHROOM_ISLAND;
+ BIOME_MAPPING[BiomeBase.MUSHROOM_SHORE.K] = Biome.MUSHROOM_SHORE;
+ BIOME_MAPPING[BiomeBase.BEACH.K] = Biome.BEACH;
+ BIOME_MAPPING[BiomeBase.DESERT_HILLS.K] = Biome.DESERT_HILLS;
+ BIOME_MAPPING[BiomeBase.FOREST_HILLS.K] = Biome.FOREST_HILLS;
+ BIOME_MAPPING[BiomeBase.TAIGA_HILLS.K] = Biome.TAIGA_HILLS;
+ BIOME_MAPPING[BiomeBase.SMALL_MOUNTAINS.K] = Biome.SMALL_MOUNTAINS;
+ /* Sanity check - we should have a record for each record in the BiomeBase.a table */
+ /* Helps avoid missed biomes when we upgrade bukkit to new code with new biomes */
+ for (int i = 0; i < BIOME_MAPPING.length; i++) {
+ if ((BiomeBase.a[i] != null) && (BIOME_MAPPING[i] == null)) {
+ throw new IllegalArgumentException("Missing Biome mapping for BiomeBase[" + i + "]");
+ }
+ }
+ }
}