diff --git a/paper-server/pom.xml b/paper-server/pom.xml
index b56b26cb4f..2afdff4e47 100644
--- a/paper-server/pom.xml
+++ b/paper-server/pom.xml
@@ -4,7 +4,7 @@
org.bukkit
craftbukkit
jar
- 1.6.4-R2.1-SNAPSHOT
+ 1.7.2-R0.1-SNAPSHOT
CraftBukkit
http://www.bukkit.org
@@ -12,8 +12,8 @@
UTF-8
unknown
4.11
- 1.6.4
- 1_6_R3
+ 1.7.2
+ 1_7_R1
git-Bukkit-
diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftAchievement.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftAchievement.java
new file mode 100644
index 0000000000..f5897e5835
--- /dev/null
+++ b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftAchievement.java
@@ -0,0 +1,44 @@
+package org.bukkit.craftbukkit;
+
+import org.bukkit.Achievement;
+
+import com.google.common.base.CaseFormat;
+import com.google.common.collect.BiMap;
+import com.google.common.collect.ImmutableBiMap;
+import com.google.common.collect.ImmutableMap;
+
+public class CraftAchievement {
+ private static final BiMap achievements;
+ static {
+ ImmutableMap specialCases = ImmutableMap.builder()
+ .put("achievement.buildWorkBench", Achievement.BUILD_WORKBENCH)
+ .put("achievement.diamonds", Achievement.GET_DIAMONDS)
+ .put("achievement.portal", Achievement.NETHER_PORTAL)
+ .put("achievement.ghast", Achievement.GHAST_RETURN)
+ .put("achievement.theEnd", Achievement.END_PORTAL)
+ .put("achievement.theEnd2", Achievement.THE_END)
+ .put("achievement.blazeRod", Achievement.GET_BLAZE_ROD)
+ .put("achievement.potion", Achievement.BREW_POTION)
+ .build();
+
+ ImmutableBiMap.Builder builder = ImmutableBiMap.builder();
+ for (Achievement achievement : Achievement.values()) {
+ if (specialCases.values().contains(achievement)) {
+ continue;
+ }
+ builder.put("achievement."+CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, achievement.name()), achievement);
+ }
+
+ builder.putAll(specialCases);
+
+ achievements = builder.build();
+ }
+
+ public static String getAchievementName(Achievement material) {
+ return achievements.inverse().get(material);
+ }
+
+ public static Achievement getAchievement(String name) {
+ return achievements.get(name);
+ }
+}
diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftBlockChangeDelegate.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftBlockChangeDelegate.java
new file mode 100644
index 0000000000..470828a222
--- /dev/null
+++ b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftBlockChangeDelegate.java
@@ -0,0 +1,29 @@
+package org.bukkit.craftbukkit;
+
+import net.minecraft.server.Block;
+
+import org.bukkit.BlockChangeDelegate;
+
+public class CraftBlockChangeDelegate {
+ private final BlockChangeDelegate delegate;
+
+ public CraftBlockChangeDelegate(BlockChangeDelegate delegate) {
+ this.delegate = delegate;
+ }
+
+ public BlockChangeDelegate getDelegate() {
+ return delegate;
+ }
+
+ public Block getType(int x, int y, int z) {
+ return Block.e(this.delegate.getTypeId(x, y, z));
+ }
+
+ public void setTypeAndData(int x, int y, int z, Block block, int data, int light) {
+ delegate.setRawTypeIdAndData(x, y, z, Block.b(block), data);
+ }
+
+ public boolean isEmpty(int x, int y, int z) {
+ return delegate.isEmpty(x, y, z);
+ }
+}
diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
index 1a2151604a..b2c6ef4578 100644
--- a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
+++ b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
@@ -33,8 +33,8 @@ public class CraftChunk implements Chunk {
}
worldServer = (WorldServer) getHandle().world;
- x = getHandle().x;
- z = getHandle().z;
+ x = getHandle().locX;
+ z = getHandle().locZ;
}
public World getWorld() {
@@ -114,7 +114,7 @@ public class CraftChunk implements Chunk {
}
ChunkPosition position = (ChunkPosition) obj;
- entities[index++] = worldServer.getWorld().getBlockAt(position.x + (chunk.x << 4), position.y, position.z + (chunk.z << 4)).getState();
+ entities[index++] = worldServer.getWorld().getBlockAt(position.x + (chunk.locX << 4), position.y, position.z + (chunk.locZ << 4)).getState();
}
return entities;
}
@@ -228,7 +228,7 @@ public class CraftChunk implements Chunk {
if (includeBiomeTempRain) {
biomeTemp = new double[256];
biomeRain = new double[256];
- float[] dat = wcm.getTemperatures(null, getX() << 4, getZ() << 4, 16, 16);
+ float[] dat = getTemperatures(wcm, getX() << 4, getZ() << 4);
for (int i = 0; i < 256; i++) {
biomeTemp[i] = dat[i];
@@ -264,7 +264,7 @@ public class CraftChunk implements Chunk {
if (includeBiomeTempRain) {
biomeTemp = new double[256];
biomeRain = new double[256];
- float[] dat = wcm.getTemperatures(null, x << 4, z << 4, 16, 16);
+ float[] dat = getTemperatures(wcm, x << 4, z << 4);
for (int i = 0; i < 256; i++) {
biomeTemp[i] = dat[i];
@@ -297,6 +297,23 @@ public class CraftChunk implements Chunk {
return new CraftChunkSnapshot(x, z, world.getName(), world.getFullTime(), blockIDs, blockData, skyLight, emitLight, empty, new int[256], biome, biomeTemp, biomeRain);
}
+ private static float[] getTemperatures(WorldChunkManager chunkmanager, int chunkX, int chunkZ) {
+ BiomeBase[] biomes = chunkmanager.getBiomes(null, chunkX, chunkZ, 16, 16);
+ float[] temps = new float[biomes.length];
+
+ for (int i = 0; i < biomes.length; i++) {
+ float temp = biomes[i].temperature; // Vanilla of olde: ((int) biomes[i].temperature * 65536.0F) / 65536.0F
+
+ if (temp > 1F) {
+ temp = 1F;
+ }
+
+ temps[i] = temp;
+ }
+
+ return temps;
+ }
+
static {
Arrays.fill(emptySkyLight, (byte) 0xFF);
}
diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftCrashReport.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftCrashReport.java
index cb6dc22969..e08afce57b 100644
--- a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftCrashReport.java
+++ b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftCrashReport.java
@@ -12,7 +12,7 @@ import org.bukkit.plugin.PluginDescriptionFile;
import net.minecraft.server.MinecraftServer;
-public class CraftCrashReport implements Callable {
+public class CraftCrashReport implements Callable