diff --git a/pom.xml b/pom.xml
index be0c3e3a..006822fe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,8 +40,8 @@
maven-compiler-plugin
2.0.2
- 1.6
- 1.6
+ 1.7
+ 1.7
@@ -114,12 +114,6 @@
DynmapCore
${project.version}
-
- org.getspout
- spoutpluginapi
- dev-SNAPSHOT
- compile
-
ru.tehkode
PermissionsEx
@@ -141,5 +135,5 @@
2.10.1
- 2.3-SNAPSHOT
+ 2.5-SNAPSHOT
diff --git a/src/main/java/org/dynmap/bukkit/BukkitVersionHelper.java b/src/main/java/org/dynmap/bukkit/BukkitVersionHelper.java
index 90b1faa8..3c65ffc9 100644
--- a/src/main/java/org/dynmap/bukkit/BukkitVersionHelper.java
+++ b/src/main/java/org/dynmap/bukkit/BukkitVersionHelper.java
@@ -1,15 +1,10 @@
package org.dynmap.bukkit;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Collections;
import java.util.Map;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.ChunkSnapshot;
-import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.dynmap.Log;
@@ -95,7 +90,7 @@ public abstract class BukkitVersionHelper {
/**
* Get tile entities map from chunk
*/
- public abstract Map getTileEntitiesForChunk(Chunk c);
+ public abstract Map, ?> getTileEntitiesForChunk(Chunk c);
/**
* Get X coordinate of tile entity
*/
diff --git a/src/main/java/org/dynmap/bukkit/BukkitVersionHelperCB.java b/src/main/java/org/dynmap/bukkit/BukkitVersionHelperCB.java
index 89a3d07c..30c29d8d 100644
--- a/src/main/java/org/dynmap/bukkit/BukkitVersionHelperCB.java
+++ b/src/main/java/org/dynmap/bukkit/BukkitVersionHelperCB.java
@@ -5,13 +5,14 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Map;
+import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.Server;
import org.bukkit.World;
import org.dynmap.Log;
-import org.dynmap.common.BiomeMap;
+import org.dynmap.hdmap.HDBlockModels;
import org.dynmap.utils.Polygon;
/**
@@ -36,7 +37,16 @@ public class BukkitVersionHelperCB extends BukkitVersionHelperGeneric {
private boolean isBadUnload = false;
BukkitVersionHelperCB() {
- isBadUnload = Bukkit.getServer().getBukkitVersion().contains("1.9");
+ String bukkitver = DynmapPlugin.plugin.getServer().getVersion();
+ String mcver = "1.0.0";
+ int idx = bukkitver.indexOf("(MC: ");
+ if(idx > 0) {
+ mcver = bukkitver.substring(idx+5);
+ idx = mcver.indexOf(")");
+ if(idx > 0) mcver = mcver.substring(0, idx);
+ }
+ isBadUnload = HDBlockModels.checkVersionRange(mcver, "1.9-");
+ Log.verboseinfo("MCVER=" + mcver + ", isBadUnload=" + isBadUnload);
}
@Override
protected String getNMSPackage() {
@@ -83,8 +93,8 @@ public class BukkitVersionHelperCB extends BukkitVersionHelperGeneric {
chunkprovserver = getNMSClass("net.minecraft.server.ChunkProviderServer");
nmsw_chunkproviderserver = getPrivateFieldNoFail(nmsworld, new String[] { "chunkProviderServer" }, chunkprovserver);
if (nmsw_chunkproviderserver == null) {
- Class nmsworldbase = getNMSClass("net.minecraft.server.World");
- Class nmsichunkprovider = getNMSClass("net.minecraft.server.IChunkProvider");
+ Class> nmsworldbase = getNMSClass("net.minecraft.server.World");
+ Class> nmsichunkprovider = getNMSClass("net.minecraft.server.IChunkProvider");
nmsw_chunkproviderserver = getPrivateField(nmsworldbase, new String[] { "chunkProvider" }, nmsichunkprovider);
}
getworldborder = getMethodNoFail(nmsworld, new String[] { "af" }, nulltypes);
@@ -94,18 +104,27 @@ public class BukkitVersionHelperCB extends BukkitVersionHelperGeneric {
lhs_containskey = getMethod(longhashset, new String[] { "contains" }, new Class[] { int.class, int.class });
}
else {
- longhashset = getOBCClass("org.bukkit.craftbukkit.util.LongHashset");
- lhs_containskey = getMethod(longhashset, new String[] { "containsKey" }, new Class[] { int.class, int.class });
+ longhashset = getOBCClassNoFail("org.bukkit.craftbukkit.util.LongHashset");
+ if (longhashset != null) {
+ lhs_containskey = getMethod(longhashset, new String[] { "containsKey" }, new Class[] { int.class, int.class });
+ }
}
- cps_unloadqueue = getFieldNoFail(chunkprovserver, new String[] { "unloadQueue" }, longhashset);
+ cps_unloadqueue_isSet = false;
+ if (longhashset != null) {
+ cps_unloadqueue = getFieldNoFail(chunkprovserver, new String[] { "unloadQueue" }, longhashset);
+ }
+ if(cps_unloadqueue == null) {
+ cps_unloadqueue = getFieldNoFail(chunkprovserver, new String[] { "unloadQueue" }, Set.class);
+ cps_unloadqueue_isSet = true;
+ }
if(cps_unloadqueue == null) {
Log.info("Unload queue not found - default to unload all chunks");
}
/** n.m.s.Chunk */
nmschunk = getNMSClass("net.minecraft.server.Chunk");
nmsc_tileentities = getField(nmschunk, new String[] { "tileEntities" }, Map.class);
- nmsc_inhabitedticks = getPrivateFieldNoFail(nmschunk, new String[] { "s", "q", "u", "v" }, long.class);
+ nmsc_inhabitedticks = getPrivateFieldNoFail(nmschunk, new String[] { "s", "q", "u", "v", "w" }, long.class);
if (nmsc_inhabitedticks == null) {
Log.info("inhabitedTicks field not found - inhabited shader not functional");
}
diff --git a/src/main/java/org/dynmap/bukkit/BukkitVersionHelperGeneric.java b/src/main/java/org/dynmap/bukkit/BukkitVersionHelperGeneric.java
index 2a4309ce..54d98c3b 100644
--- a/src/main/java/org/dynmap/bukkit/BukkitVersionHelperGeneric.java
+++ b/src/main/java/org/dynmap/bukkit/BukkitVersionHelperGeneric.java
@@ -3,10 +3,10 @@ package org.dynmap.bukkit;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
+import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
@@ -24,8 +24,8 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
protected String nms_package; // Package used for net.minecraft.server
private boolean failed;
protected static final Object[] nullargs = new Object[0];
- protected static final Class[] nulltypes = new Class[0];
- private static final Map nullmap = Collections.emptyMap();
+ protected static final Class>[] nulltypes = new Class[0];
+ private static final Map, ?> nullmap = Collections.emptyMap();
/** CraftChunkSnapshot */
private Class> craftchunksnapshot;
@@ -51,6 +51,7 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
protected Class> longhashset;
protected Field nmsw_chunkproviderserver;
protected Field cps_unloadqueue;
+ protected boolean cps_unloadqueue_isSet;
protected Method lhs_containskey;
/** n.m.s.Chunk */
protected Class> nmschunk;
@@ -97,7 +98,6 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
BukkitVersionHelperGeneric() {
failed = false;
- Server srv = Bukkit.getServer();
/* Look up base classname for bukkit server - tells us OBC package */
obc_package = Bukkit.getServer().getClass().getPackage().getName();
/* Get NMS package */
@@ -249,7 +249,7 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
/**
* Get method
*/
- protected Method getMethod(Class> cls, String[] ids, Class[] args) {
+ protected Method getMethod(Class> cls, String[] ids, Class>[] args) {
if(cls == null) return null;
for(String id : ids) {
try {
@@ -262,7 +262,7 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
failed = true;
return null;
}
- protected Method getMethodNoFail(Class> cls, String[] ids, Class[] args) {
+ protected Method getMethodNoFail(Class> cls, String[] ids, Class>[] args) {
if(cls == null) return null;
for(String id : ids) {
try {
@@ -327,6 +327,8 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
/* For testing unload queue for presence of givne chunk */
public boolean isInUnloadQueue(Object unloadqueue, int x, int z) {
if(unloadqueue != null) {
+ if (cps_unloadqueue_isSet)
+ return ((Set) unloadqueue).contains(Long.valueOf((long)x & 0xFFFFFFFF | ((long)z & 0xFFFFFFFF) << 32));
return (Boolean)callMethod(unloadqueue, lhs_containskey, new Object[] { x, z }, true);
}
return true;
@@ -358,10 +360,10 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
}
/** Get tile entities map from chunk */
- public Map getTileEntitiesForChunk(Chunk c) {
+ public Map, ?> getTileEntitiesForChunk(Chunk c) {
Object omsc = callMethod(c, cc_gethandle, nullargs, null);
if(omsc != null) {
- return (Map)getFieldValue(omsc, nmsc_tileentities, nullmap);
+ return (Map, ?>)getFieldValue(omsc, nmsc_tileentities, nullmap);
}
return nullmap;
}
diff --git a/src/main/java/org/dynmap/bukkit/BukkitVersionHelperGlowstone.java b/src/main/java/org/dynmap/bukkit/BukkitVersionHelperGlowstone.java
index d15574a7..a25e4fe9 100644
--- a/src/main/java/org/dynmap/bukkit/BukkitVersionHelperGlowstone.java
+++ b/src/main/java/org/dynmap/bukkit/BukkitVersionHelperGlowstone.java
@@ -98,7 +98,7 @@ public class BukkitVersionHelperGlowstone extends BukkitVersionHelper {
}
@Override
- public Map getTileEntitiesForChunk(Chunk c) {
+ public Map, ?> getTileEntitiesForChunk(Chunk c) {
// TODO Auto-generated method stub
return Collections.emptyMap();
}
diff --git a/src/main/java/org/dynmap/bukkit/BukkitWorld.java b/src/main/java/org/dynmap/bukkit/BukkitWorld.java
index 41b096e1..e608f392 100644
--- a/src/main/java/org/dynmap/bukkit/BukkitWorld.java
+++ b/src/main/java/org/dynmap/bukkit/BukkitWorld.java
@@ -11,7 +11,6 @@ import java.util.List;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.World;
-import org.bukkit.block.Block;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
import org.dynmap.DynmapChunk;