diff --git a/core/.gitignore b/core/.gitignore
new file mode 100644
index 00000000..c8ee1df6
--- /dev/null
+++ b/core/.gitignore
@@ -0,0 +1,2 @@
+/target/
+/dependency-reduced-pom.xml
diff --git a/core/pom.xml b/core/pom.xml
new file mode 100644
index 00000000..b2b4c5ec
--- /dev/null
+++ b/core/pom.xml
@@ -0,0 +1,177 @@
+
+ 4.0.0
+ us.dynmap
+ dynmap
+ dynmap
+ http://github.com/webbukkit/dynmap/
+
+ GitHub
+ https://github.com/webbukkit/dynmap/issues
+
+
+
+
+ src/main/resources
+ true
+
+ *.yml
+ *.txt
+
+
+
+ src/main/resources
+ false
+
+ *.yml
+ *.txt
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 2.0.2
+
+ 1.8
+ 1.8
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.0.0
+
+
+
+ org.bstats:*
+ us.dynmap:dynmap-api:jar:*
+ us.dynmap:DynmapCore:jar:*
+ us.dynmap:dynmap-helper:jar:*
+ us.dynmap:dynmap-helper-113:jar:*
+
+
+
+
+ org.bstats
+ org.dynmap
+
+
+
+
+
+ package
+
+ shade
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 2.2.1
+
+
+ attach-sources
+
+ jar
+
+
+
+
+
+
+
+
+
+ dynmap-repo
+ http://repo.mikeprimm.com/
+
+
+ spigot-repo
+ https://hub.spigotmc.org/nexus/content/repositories/snapshots/
+
+
+ bstats-repo
+ http://repo.bstats.org/content/repositories/releases/
+
+
+
+
+ com.nijikokun.bukkit
+ Permissions
+ 3.1.6
+
+
+ org.bukkit
+ bukkit
+ 1.7.10-R0.1-SNAPSHOT
+
+
+ us.dynmap
+ dynmap-api
+ 3.0-SNAPSHOT
+
+
+ us.dynmap
+ DynmapCore
+ 3.0-SNAPSHOT
+
+
+ ru.tehkode
+ PermissionsEx
+ 1.19.1
+
+
+ de.bananaco
+ bPermissions
+ 2.9.1
+
+
+ com.platymuus.bukkit.permissions
+ PermissionsBukkit
+ 1.6
+
+
+ org.anjocaido
+ EssentialsGroupManager
+ 2.10.1
+
+
+ org.bstats
+ bstats-bukkit
+ 1.1
+
+
+ com.googlecode.json-simple
+ json-simple
+ 1.1.1
+
+
+
+ com.google.code.gson
+ gson
+ 2.8.2
+
+
+ us.dynmap
+ dynmap-helper
+ 3.0-SNAPSHOT
+
+
+ us.dynmap
+ dynmap-helper-113
+ 3.0-SNAPSHOT
+
+
+ 3.0-SNAPSHOT
+
+ us.dynmap
+ dynmap-bukkit
+ 3.0-SNAPSHOT
+ ..
+
+
diff --git a/src/main/assembly/package.xml b/core/src/main/assembly/package.xml
similarity index 100%
rename from src/main/assembly/package.xml
rename to core/src/main/assembly/package.xml
diff --git a/src/main/java/org/dynmap/bukkit/Armor.java b/core/src/main/java/org/dynmap/bukkit/Armor.java
similarity index 100%
rename from src/main/java/org/dynmap/bukkit/Armor.java
rename to core/src/main/java/org/dynmap/bukkit/Armor.java
diff --git a/src/main/java/org/dynmap/bukkit/DynmapPlugin.java b/core/src/main/java/org/dynmap/bukkit/DynmapPlugin.java
similarity index 96%
rename from src/main/java/org/dynmap/bukkit/DynmapPlugin.java
rename to core/src/main/java/org/dynmap/bukkit/DynmapPlugin.java
index c542fa31..ab8b2749 100644
--- a/src/main/java/org/dynmap/bukkit/DynmapPlugin.java
+++ b/core/src/main/java/org/dynmap/bukkit/DynmapPlugin.java
@@ -78,6 +78,9 @@ import org.dynmap.Log;
import org.dynmap.MapManager;
import org.dynmap.MapType;
import org.dynmap.PlayerList;
+import org.dynmap.bukkit.helper.BukkitVersionHelper;
+import org.dynmap.bukkit.helper.BukkitWorld;
+import org.dynmap.bukkit.helper.SnapshotCache;
import org.dynmap.bukkit.permissions.BukkitPermissions;
import org.dynmap.bukkit.permissions.NijikokunPermissions;
import org.dynmap.bukkit.permissions.OpPermissions;
@@ -102,7 +105,6 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
private DynmapCore core;
private PermissionProvider permissions;
private String version;
- public SnapshotCache sscache;
public PlayerList playerList;
private MapManager mapManager;
public static DynmapPlugin plugin;
@@ -370,11 +372,11 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
}
@Override
public double getCacheHitRate() {
- return sscache.getHitRate();
+ return SnapshotCache.sscache.getHitRate();
}
@Override
public void resetCacheStats() {
- sscache.resetStats();
+ SnapshotCache.sscache.resetStats();
}
@Override
public DynmapWorld getWorldByName(String wname) {
@@ -769,7 +771,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
public void onLoad() {
Log.setLogger(this.getLogger(), "");
- helper = BukkitVersionHelper.getHelper();
+ helper = Helper.getHelper();
pm = this.getServer().getPluginManager();
ModSupportImpl.init();
@@ -885,7 +887,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
return;
}
playerList = core.playerList;
- sscache = new SnapshotCache(core.getSnapShotCacheSize(), core.useSoftRefInSnapShotCache());
+ SnapshotCache.sscache = new SnapshotCache(core.getSnapShotCacheSize(), core.useSoftRefInSnapShotCache());
/* Get map manager from core */
mapManager = core.getMapManager();
@@ -919,9 +921,9 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
/* Disable core */
core.disableCore();
- if(sscache != null) {
- sscache.cleanup();
- sscache = null;
+ if(SnapshotCache.sscache != null) {
+ SnapshotCache.sscache.cleanup();
+ SnapshotCache.sscache = null;
}
Log.info("Disabled");
}
@@ -974,13 +976,13 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
@Override
public final int triggerRenderOfVolume(String wid, int minx, int miny, int minz,
int maxx, int maxy, int maxz) {
- sscache.invalidateSnapshot(wid, minx, miny, minz, maxx, maxy, maxz);
+ SnapshotCache.sscache.invalidateSnapshot(wid, minx, miny, minz, maxx, maxy, maxz);
return core.triggerRenderOfVolume(wid, minx, miny, minz, maxx, maxy, maxz);
}
@Override
public final int triggerRenderOfBlock(String wid, int x, int y, int z) {
- sscache.invalidateSnapshot(wid, x, y, z);
+ SnapshotCache.sscache.invalidateSnapshot(wid, x, y, z);
return core.triggerRenderOfBlock(wid, x, y, z);
}
@@ -1106,7 +1108,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
if(btt.typeid == 9) btt.typeid = 8;
if((bt != btt.typeid) || (btt.data != w.getBlockAt(loc).getData())) {
String wn = getWorld(w).getName();
- sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
+ SnapshotCache.sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), btt.trigger);
}
}
@@ -1174,7 +1176,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
public void onBlockPlace(BlockPlaceEvent event) {
Location loc = event.getBlock().getLocation();
String wn = getWorld(loc.getWorld()).getName();
- sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
+ SnapshotCache.sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockplace");
}
};
@@ -1189,7 +1191,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
if(b == null) return; /* Stupid mod workaround */
Location loc = b.getLocation();
String wn = getWorld(loc.getWorld()).getName();
- sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
+ SnapshotCache.sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockbreak");
}
};
@@ -1202,7 +1204,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
public void onLeavesDecay(LeavesDecayEvent event) {
Location loc = event.getBlock().getLocation();
String wn = getWorld(loc.getWorld()).getName();
- sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
+ SnapshotCache.sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
if(onleaves) {
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "leavesdecay");
}
@@ -1217,7 +1219,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
public void onBlockBurn(BlockBurnEvent event) {
Location loc = event.getBlock().getLocation();
String wn = getWorld(loc.getWorld()).getName();
- sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
+ SnapshotCache.sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
if(onburn) {
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockburn");
}
@@ -1281,14 +1283,14 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
}
String wn = getWorld(loc.getWorld()).getName();
int x = loc.getBlockX(), y = loc.getBlockY(), z = loc.getBlockZ();
- sscache.invalidateSnapshot(wn, x, y, z);
+ SnapshotCache.sscache.invalidateSnapshot(wn, x, y, z);
if(onpiston)
mapManager.touch(wn, x, y, z, "pistonretract");
for(int i = 0; i < 2; i++) {
x += dir.getModX();
y += dir.getModY();
z += dir.getModZ();
- sscache.invalidateSnapshot(wn, x, y, z);
+ SnapshotCache.sscache.invalidateSnapshot(wn, x, y, z);
mapManager.touch(wn, x, y, z, "pistonretract");
}
}
@@ -1305,14 +1307,14 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
}
String wn = getWorld(loc.getWorld()).getName();
int x = loc.getBlockX(), y = loc.getBlockY(), z = loc.getBlockZ();
- sscache.invalidateSnapshot(wn, x, y, z);
+ SnapshotCache.sscache.invalidateSnapshot(wn, x, y, z);
if(onpiston)
mapManager.touch(wn, x, y, z, "pistonretract");
for(int i = 0; i < 1+event.getLength(); i++) {
x += dir.getModX();
y += dir.getModY();
z += dir.getModZ();
- sscache.invalidateSnapshot(wn, x, y, z);
+ SnapshotCache.sscache.invalidateSnapshot(wn, x, y, z);
mapManager.touch(wn, x, y, z, "pistonretract");
}
}
@@ -1326,7 +1328,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
public void onBlockSpread(BlockSpreadEvent event) {
Location loc = event.getBlock().getLocation();
String wn = getWorld(loc.getWorld()).getName();
- sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
+ SnapshotCache.sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockspread");
}
};
@@ -1339,7 +1341,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
public void onBlockForm(BlockFormEvent event) {
Location loc = event.getBlock().getLocation();
String wn = getWorld(loc.getWorld()).getName();
- sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
+ SnapshotCache.sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockform");
}
};
@@ -1352,7 +1354,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
public void onBlockFade(BlockFadeEvent event) {
Location loc = event.getBlock().getLocation();
String wn = getWorld(loc.getWorld()).getName();
- sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
+ SnapshotCache.sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockfade");
}
};
@@ -1367,7 +1369,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
public void onBlockGrow(BlockGrowEvent event) {
Location loc = event.getBlock().getLocation();
String wn = getWorld(loc.getWorld()).getName();
- sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
+ SnapshotCache.sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockgrow");
}
};
@@ -1380,7 +1382,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
public void onBlockRedstone(BlockRedstoneEvent event) {
Location loc = event.getBlock().getLocation();
String wn = getWorld(loc.getWorld()).getName();
- sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
+ SnapshotCache.sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockredstone");
}
};
@@ -1437,7 +1439,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
if(z < minz) minz = z;
if(z > maxz) maxz = z;
}
- sscache.invalidateSnapshot(wname, minx, miny, minz, maxx, maxy, maxz);
+ SnapshotCache.sscache.invalidateSnapshot(wname, minx, miny, minz, maxx, maxy, maxz);
if(onexplosion) {
mapManager.touchVolume(wname, minx, miny, minz, maxx, maxy, maxz, "entityexplode");
}
@@ -1484,7 +1486,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
if(z < minz) minz = z;
if(z > maxz) maxz = z;
}
- sscache.invalidateSnapshot(wname, minx, miny, minz, maxx, maxy, maxz);
+ SnapshotCache.sscache.invalidateSnapshot(wname, minx, miny, minz, maxx, maxy, maxz);
if(onstructuregrow) {
mapManager.touchVolume(wname, minx, miny, minz, maxx, maxy, maxz, "structuregrow");
}
diff --git a/core/src/main/java/org/dynmap/bukkit/Helper.java b/core/src/main/java/org/dynmap/bukkit/Helper.java
new file mode 100644
index 00000000..558b4005
--- /dev/null
+++ b/core/src/main/java/org/dynmap/bukkit/Helper.java
@@ -0,0 +1,44 @@
+package org.dynmap.bukkit;
+
+import org.bukkit.Bukkit;
+import org.dynmap.Log;
+import org.dynmap.bukkit.helper.BukkitVersionHelper;
+import org.dynmap.bukkit.helper.BukkitVersionHelperCB;
+import org.dynmap.bukkit.helper.BukkitVersionHelperGlowstone;
+import org.dynmap.bukkit.helper.v113.BukkitVersionHelperSpigot113;
+
+public class Helper {
+
+ public static final BukkitVersionHelper getHelper() {
+ if (BukkitVersionHelper.helper == null) {
+ String v = Bukkit.getServer().getVersion();
+ Log.info("version=" + v);
+ if (v.contains("MCPC")) {
+ Log.severe("*********************************************************************************");
+ Log.severe("* MCPC-Plus is no longer supported via the Bukkit version of Dynmap. *");
+ Log.severe("* Install the appropriate Forge version of Dynmap. *");
+ Log.severe("* Add the DynmapCBBridge plugin to enable support for Dynmap-compatible plugins *");
+ Log.severe("*********************************************************************************");
+ }
+ else if(v.contains("BukkitForge")) {
+ Log.severe("*********************************************************************************");
+ Log.severe("* BukkitForge is not supported via the Bukkit version of Dynmap. *");
+ Log.severe("* Install the appropriate Forge version of Dynmap. *");
+ Log.severe("* Add the DynmapCBBridge plugin to enable support for Dynmap-compatible plugins *");
+ Log.severe("*********************************************************************************");
+ }
+ else if(Bukkit.getServer().getClass().getName().contains("GlowServer")) {
+ Log.info("Loading Glowstone support");
+ BukkitVersionHelper.helper = new BukkitVersionHelperGlowstone();
+ }
+ else if (v.contains("(MC: 1.13)")) {
+ BukkitVersionHelper.helper = new BukkitVersionHelperSpigot113();
+ }
+ else {
+ BukkitVersionHelper.helper = new BukkitVersionHelperCB();
+ }
+ }
+ return BukkitVersionHelper.helper;
+ }
+
+}
diff --git a/src/main/java/org/dynmap/bukkit/permissions/BukkitPermissions.java b/core/src/main/java/org/dynmap/bukkit/permissions/BukkitPermissions.java
similarity index 100%
rename from src/main/java/org/dynmap/bukkit/permissions/BukkitPermissions.java
rename to core/src/main/java/org/dynmap/bukkit/permissions/BukkitPermissions.java
diff --git a/src/main/java/org/dynmap/bukkit/permissions/GroupManagerPermissions.java b/core/src/main/java/org/dynmap/bukkit/permissions/GroupManagerPermissions.java
similarity index 100%
rename from src/main/java/org/dynmap/bukkit/permissions/GroupManagerPermissions.java
rename to core/src/main/java/org/dynmap/bukkit/permissions/GroupManagerPermissions.java
diff --git a/src/main/java/org/dynmap/bukkit/permissions/NijikokunPermissions.java b/core/src/main/java/org/dynmap/bukkit/permissions/NijikokunPermissions.java
similarity index 100%
rename from src/main/java/org/dynmap/bukkit/permissions/NijikokunPermissions.java
rename to core/src/main/java/org/dynmap/bukkit/permissions/NijikokunPermissions.java
diff --git a/src/main/java/org/dynmap/bukkit/permissions/OpPermissions.java b/core/src/main/java/org/dynmap/bukkit/permissions/OpPermissions.java
similarity index 100%
rename from src/main/java/org/dynmap/bukkit/permissions/OpPermissions.java
rename to core/src/main/java/org/dynmap/bukkit/permissions/OpPermissions.java
diff --git a/src/main/java/org/dynmap/bukkit/permissions/PEXPermissions.java b/core/src/main/java/org/dynmap/bukkit/permissions/PEXPermissions.java
similarity index 100%
rename from src/main/java/org/dynmap/bukkit/permissions/PEXPermissions.java
rename to core/src/main/java/org/dynmap/bukkit/permissions/PEXPermissions.java
diff --git a/src/main/java/org/dynmap/bukkit/permissions/PermBukkitPermissions.java b/core/src/main/java/org/dynmap/bukkit/permissions/PermBukkitPermissions.java
similarity index 100%
rename from src/main/java/org/dynmap/bukkit/permissions/PermBukkitPermissions.java
rename to core/src/main/java/org/dynmap/bukkit/permissions/PermBukkitPermissions.java
diff --git a/src/main/java/org/dynmap/bukkit/permissions/PermissionProvider.java b/core/src/main/java/org/dynmap/bukkit/permissions/PermissionProvider.java
similarity index 100%
rename from src/main/java/org/dynmap/bukkit/permissions/PermissionProvider.java
rename to core/src/main/java/org/dynmap/bukkit/permissions/PermissionProvider.java
diff --git a/src/main/java/org/dynmap/bukkit/permissions/bPermPermissions.java b/core/src/main/java/org/dynmap/bukkit/permissions/bPermPermissions.java
similarity index 100%
rename from src/main/java/org/dynmap/bukkit/permissions/bPermPermissions.java
rename to core/src/main/java/org/dynmap/bukkit/permissions/bPermPermissions.java
diff --git a/src/main/resources/configuration.txt b/core/src/main/resources/configuration.txt
similarity index 100%
rename from src/main/resources/configuration.txt
rename to core/src/main/resources/configuration.txt
diff --git a/src/main/resources/plugin.yml b/core/src/main/resources/plugin.yml
similarity index 100%
rename from src/main/resources/plugin.yml
rename to core/src/main/resources/plugin.yml
diff --git a/tools/Biomes.ods b/core/tools/Biomes.ods
similarity index 100%
rename from tools/Biomes.ods
rename to core/tools/Biomes.ods
diff --git a/tools/bukkit_formatting_profile.xml b/core/tools/bukkit_formatting_profile.xml
similarity index 100%
rename from tools/bukkit_formatting_profile.xml
rename to core/tools/bukkit_formatting_profile.xml
diff --git a/helper/.classpath b/helper/.classpath
new file mode 100644
index 00000000..d58ab93b
--- /dev/null
+++ b/helper/.classpath
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/helper/.gitignore b/helper/.gitignore
new file mode 100644
index 00000000..b83d2226
--- /dev/null
+++ b/helper/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/helper/.project b/helper/.project
new file mode 100644
index 00000000..34ea69da
--- /dev/null
+++ b/helper/.project
@@ -0,0 +1,23 @@
+
+
+ helper
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.m2e.core.maven2Builder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.m2e.core.maven2Nature
+
+
diff --git a/helper/.settings/org.eclipse.core.resources.prefs b/helper/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000..04cfa2c1
--- /dev/null
+++ b/helper/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/main/resources=UTF-8
+encoding//src/test/java=UTF-8
+encoding//src/test/resources=UTF-8
+encoding/=UTF-8
diff --git a/helper/.settings/org.eclipse.jdt.core.prefs b/helper/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..86260262
--- /dev/null
+++ b/helper/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/helper/.settings/org.eclipse.m2e.core.prefs b/helper/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 00000000..14b697b7
--- /dev/null
+++ b/helper/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/helper/pom.xml b/helper/pom.xml
new file mode 100644
index 00000000..7501d231
--- /dev/null
+++ b/helper/pom.xml
@@ -0,0 +1,47 @@
+
+ 4.0.0
+
+ us.dynmap
+ dynmap-bukkit
+ 3.0-SNAPSHOT
+ ..
+
+ dynmap-helper
+ us.dynmap
+ 3.0-SNAPSHOT
+
+
+
+ org.bukkit
+ bukkit
+ 1.7.10-R0.1-SNAPSHOT
+
+
+ us.dynmap
+ dynmap-api
+ 3.0-SNAPSHOT
+
+
+ us.dynmap
+ DynmapCore
+ 3.0-SNAPSHOT
+
+
+ com.google.code.gson
+ gson
+ 2.8.2
+
+
+
+
+ dynmap-repo
+ http://repo.mikeprimm.com/
+
+
+ spigot-repo
+ https://hub.spigotmc.org/nexus/content/repositories/snapshots/
+
+
+
+ dynmap-helper
+
\ No newline at end of file
diff --git a/src/main/java/org/dynmap/bukkit/BukkitVersionHelper.java b/helper/src/main/java/org/dynmap/bukkit/helper/BukkitVersionHelper.java
similarity index 68%
rename from src/main/java/org/dynmap/bukkit/BukkitVersionHelper.java
rename to helper/src/main/java/org/dynmap/bukkit/helper/BukkitVersionHelper.java
index 6c9d13db..ce3b828f 100644
--- a/src/main/java/org/dynmap/bukkit/BukkitVersionHelper.java
+++ b/helper/src/main/java/org/dynmap/bukkit/helper/BukkitVersionHelper.java
@@ -1,54 +1,26 @@
-package org.dynmap.bukkit;
+package org.dynmap.bukkit.helper;
import java.util.Arrays;
+import java.util.List;
import java.util.Map;
-import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.ChunkSnapshot;
import org.bukkit.World;
import org.bukkit.entity.Player;
+import org.dynmap.DynmapChunk;
import org.dynmap.Log;
import org.dynmap.renderer.DynmapBlockState;
-import org.dynmap.utils.DynIntHashMap;
+import org.dynmap.utils.MapChunkCache;
import org.dynmap.utils.Polygon;
/**
* Helper for isolation of bukkit version specific issues
*/
public abstract class BukkitVersionHelper {
-
- private static BukkitVersionHelper helper = null;
+ public static BukkitVersionHelper helper = null;
- public static final BukkitVersionHelper getHelper() {
- if(helper == null) {
- Log.info("version=" + Bukkit.getServer().getVersion());
- if(Bukkit.getServer().getVersion().contains("MCPC")) {
- Log.severe("*********************************************************************************");
- Log.severe("* MCPC-Plus is no longer supported via the Bukkit version of Dynmap. *");
- Log.severe("* Install the appropriate Forge version of Dynmap. *");
- Log.severe("* Add the DynmapCBBridge plugin to enable support for Dynmap-compatible plugins *");
- Log.severe("*********************************************************************************");
- }
- else if(Bukkit.getServer().getVersion().contains("BukkitForge")) {
- Log.severe("*********************************************************************************");
- Log.severe("* BukkitForge is not supported via the Bukkit version of Dynmap. *");
- Log.severe("* Install the appropriate Forge version of Dynmap. *");
- Log.severe("* Add the DynmapCBBridge plugin to enable support for Dynmap-compatible plugins *");
- Log.severe("*********************************************************************************");
- }
- else if(Bukkit.getServer().getClass().getName().contains("GlowServer")) {
- Log.info("Loading Glowstone support");
- helper = new BukkitVersionHelperGlowstone();
- }
- else {
- helper = new BukkitVersionHelperCB();
- }
- }
- return helper;
- }
-
- public static DynmapBlockState[] stateByID = new DynmapBlockState[65536];
+ public static DynmapBlockState[] stateByID;
protected BukkitVersionHelper() {
@@ -160,6 +132,7 @@ public abstract class BukkitVersionHelper {
public void initializeBlockStates() {
String[] blkname = getBlockNames();
// Keep it simple for now - just assume 16 meta states for each
+ stateByID = new DynmapBlockState[16*blkname.length];
Arrays.fill(stateByID, DynmapBlockState.AIR);
for (int i = 0; i < blkname.length; i++) {
if (blkname[i] == null) continue;
@@ -182,4 +155,18 @@ public abstract class BukkitVersionHelper {
Log.info(gidx + ":" + bs.toString() + ", gidx=" + bs.globalStateIndex + ", sidx=" + bs.stateIndex);
}
}
+ /**
+ * Create chunk cache for given chunks of given world
+ * @param dw - world
+ * @param chunks - chunk list
+ * @return cache
+ */
+ public MapChunkCache getChunkCache(BukkitWorld dw, List chunks) {
+ NewMapChunkCache c = new NewMapChunkCache();
+ c.setChunks(dw, chunks);
+ return c;
+ }
+ public Object[] getBlockIDFieldFromSnapshot(ChunkSnapshot css) {
+ return null;
+ }
}
diff --git a/src/main/java/org/dynmap/bukkit/BukkitVersionHelperCB.java b/helper/src/main/java/org/dynmap/bukkit/helper/BukkitVersionHelperCB.java
similarity index 95%
rename from src/main/java/org/dynmap/bukkit/BukkitVersionHelperCB.java
rename to helper/src/main/java/org/dynmap/bukkit/helper/BukkitVersionHelperCB.java
index c486ad5f..cb9a6b94 100644
--- a/src/main/java/org/dynmap/bukkit/BukkitVersionHelperCB.java
+++ b/helper/src/main/java/org/dynmap/bukkit/helper/BukkitVersionHelperCB.java
@@ -1,4 +1,4 @@
-package org.dynmap.bukkit;
+package org.dynmap.bukkit.helper;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
@@ -13,7 +13,6 @@ import org.bukkit.Server;
import org.bukkit.World;
import org.dynmap.Log;
import org.dynmap.hdmap.HDBlockModels;
-import org.dynmap.renderer.DynmapBlockState;
import org.dynmap.utils.Polygon;
/**
@@ -24,7 +23,6 @@ public class BukkitVersionHelperCB extends BukkitVersionHelperGeneric {
private Class> nmsblockarray;
private Class> nmsmaterial;
private Field blockbyid;
- private Field blockname;
private Field material;
private Method blockbyidfunc; // 1.7+ method for getting block by id
private Method getworldborder; // 1.8+ method for getting world border
@@ -37,8 +35,9 @@ public class BukkitVersionHelperCB extends BukkitVersionHelperGeneric {
private Method getidbybiome;
private boolean isBadUnload = false;
- BukkitVersionHelperCB() {
- String bukkitver = DynmapPlugin.plugin.getServer().getVersion();
+ public BukkitVersionHelperCB() {
+
+ String bukkitver = Bukkit.getServer().getVersion();
String mcver = "1.0.0";
int idx = bukkitver.indexOf("(MC: ");
if(idx > 0) {
@@ -72,7 +71,6 @@ public class BukkitVersionHelperCB extends BukkitVersionHelperGeneric {
if (blockbyid == null) {
blockbyidfunc = getMethod(nmsblock, new String[] { "getById", "e" }, new Class[] { int.class });
}
- blockname = getPrivateField(nmsblock, new String[] { "name", "b" }, String.class);
material = getPrivateField(nmsblock, new String[] { "material" }, nmsmaterial);
/* Set up biomebase fields */
@@ -87,10 +85,10 @@ public class BukkitVersionHelperCB extends BukkitVersionHelperGeneric {
biomebasehumi = getPrivateField(biomebase, new String[] { "C" }, float.class);
}
else {
- biomebasetemp = getPrivateField(biomebase, new String[] { "temperature", "F", "C" }, float.class);
- biomebasehumi = getPrivateField(biomebase, new String[] { "humidity", "G", "D" }, float.class);
+ biomebasetemp = getPrivateField(biomebase, new String[] { "temperature", "F", "C", "aO" }, float.class);
+ biomebasehumi = getPrivateField(biomebase, new String[] { "humidity", "G", "D", "aP" }, float.class);
}
- biomebaseidstring = getPrivateField(biomebase, new String[] { "y", "af", "ah", "z" }, String.class);
+ biomebaseidstring = getPrivateField(biomebase, new String[] { "y", "af", "ah", "z", "aS" }, String.class);
biomebaseid = getFieldNoFail(biomebase, new String[] { "id" }, int.class);
if (biomebaseid == null) {
getidbybiome = getMethod(biomebase, new String[] { "a" }, new Class[] { biomebase } );
@@ -115,6 +113,13 @@ public class BukkitVersionHelperCB extends BukkitVersionHelperGeneric {
if (longhashset != null) {
lhs_containskey = getMethod(longhashset, new String[] { "containsKey" }, new Class[] { int.class, int.class });
}
+ else {
+ longhashset = getOBCClassNoFail("org.bukkit.craftbukkit.libs.it.unimi.dsi.fastutil.longs.LongSet");
+ if (longhashset != null) {
+ lhs_containskey = getMethod(longhashset, new String[] { "contains" }, new Class[] { long.class });
+ cps_unloadqueue_isSet = true;
+ }
+ }
}
cps_unloadqueue_isSet = false;
@@ -131,7 +136,7 @@ public class BukkitVersionHelperCB extends BukkitVersionHelperGeneric {
/** 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", "w" }, long.class);
+ nmsc_inhabitedticks = getPrivateFieldNoFail(nmschunk, new String[] { "s", "q", "u", "v", "w", "A" }, 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/helper/src/main/java/org/dynmap/bukkit/helper/BukkitVersionHelperGeneric.java
similarity index 99%
rename from src/main/java/org/dynmap/bukkit/BukkitVersionHelperGeneric.java
rename to helper/src/main/java/org/dynmap/bukkit/helper/BukkitVersionHelperGeneric.java
index 363002c6..9ceca8b0 100644
--- a/src/main/java/org/dynmap/bukkit/BukkitVersionHelperGeneric.java
+++ b/helper/src/main/java/org/dynmap/bukkit/helper/BukkitVersionHelperGeneric.java
@@ -1,4 +1,4 @@
-package org.dynmap.bukkit;
+package org.dynmap.bukkit.helper;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
@@ -37,7 +37,7 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
private static final Map, ?> nullmap = Collections.emptyMap();
/** CraftChunkSnapshot */
- private Class> craftchunksnapshot;
+ protected Class> craftchunksnapshot;
private Field ccss_biome;
/** CraftChunk */
private Class> craftchunk;
@@ -114,7 +114,7 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
private Class> cma_property;
private Method cmaproperty_getvalue;
- BukkitVersionHelperGeneric() {
+ protected BukkitVersionHelperGeneric() {
failed = false;
/* Look up base classname for bukkit server - tells us OBC package */
obc_package = Bukkit.getServer().getClass().getPackage().getName();
diff --git a/src/main/java/org/dynmap/bukkit/BukkitVersionHelperGlowstone.java b/helper/src/main/java/org/dynmap/bukkit/helper/BukkitVersionHelperGlowstone.java
similarity index 99%
rename from src/main/java/org/dynmap/bukkit/BukkitVersionHelperGlowstone.java
rename to helper/src/main/java/org/dynmap/bukkit/helper/BukkitVersionHelperGlowstone.java
index a546bad1..eac48097 100644
--- a/src/main/java/org/dynmap/bukkit/BukkitVersionHelperGlowstone.java
+++ b/helper/src/main/java/org/dynmap/bukkit/helper/BukkitVersionHelperGlowstone.java
@@ -1,4 +1,4 @@
-package org.dynmap.bukkit;
+package org.dynmap.bukkit.helper;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
diff --git a/src/main/java/org/dynmap/bukkit/BukkitWorld.java b/helper/src/main/java/org/dynmap/bukkit/helper/BukkitWorld.java
similarity index 97%
rename from src/main/java/org/dynmap/bukkit/BukkitWorld.java
rename to helper/src/main/java/org/dynmap/bukkit/helper/BukkitWorld.java
index e608f392..ddccd7ae 100644
--- a/src/main/java/org/dynmap/bukkit/BukkitWorld.java
+++ b/helper/src/main/java/org/dynmap/bukkit/helper/BukkitWorld.java
@@ -1,4 +1,4 @@
-package org.dynmap.bukkit;
+package org.dynmap.bukkit.helper;
/**
* Bukkit specific implementation of DynmapWorld
*/
@@ -177,9 +177,7 @@ public class BukkitWorld extends DynmapWorld {
@Override
public MapChunkCache getChunkCache(List chunks) {
if(isLoaded()) {
- NewMapChunkCache c = new NewMapChunkCache();
- c.setChunks(this, chunks);
- return c;
+ return BukkitVersionHelper.helper.getChunkCache(this, chunks);
}
else {
return null;
@@ -244,6 +242,6 @@ public class BukkitWorld extends DynmapWorld {
}
@Override
public Polygon getWorldBorder() {
- return DynmapPlugin.plugin.getWorldBorder(world);
+ return BukkitVersionHelper.helper.getWorldBorder(world);
}
}
diff --git a/src/main/java/org/dynmap/bukkit/NewMapChunkCache.java b/helper/src/main/java/org/dynmap/bukkit/helper/NewMapChunkCache.java
similarity index 95%
rename from src/main/java/org/dynmap/bukkit/NewMapChunkCache.java
rename to helper/src/main/java/org/dynmap/bukkit/helper/NewMapChunkCache.java
index 48970b4c..56a1a103 100644
--- a/src/main/java/org/dynmap/bukkit/NewMapChunkCache.java
+++ b/helper/src/main/java/org/dynmap/bukkit/helper/NewMapChunkCache.java
@@ -1,4 +1,4 @@
-package org.dynmap.bukkit;
+package org.dynmap.bukkit.helper;
import java.util.ArrayList;
import java.util.List;
@@ -13,7 +13,7 @@ import org.dynmap.DynmapChunk;
import org.dynmap.DynmapCore;
import org.dynmap.DynmapWorld;
import org.dynmap.Log;
-import org.dynmap.bukkit.SnapshotCache.SnapshotRec;
+import org.dynmap.bukkit.helper.SnapshotCache.SnapshotRec;
import org.dynmap.common.BiomeMap;
import org.dynmap.hdmap.HDBlockModels;
import org.dynmap.renderer.DynmapBlockState;
@@ -50,9 +50,7 @@ public class NewMapChunkCache extends MapChunkCache {
private boolean[][] isSectionNotEmpty; /* Indexed by snapshot index, then by section index */
private long[] inhabitedTicks; /* Index = (x-x_min) + ((z-z_min)*x_dim) */
private static final BiomeMap[] nullBiomeMap = { BiomeMap.NULL };
-
- private static BukkitVersionHelper helper = BukkitVersionHelper.getHelper();
-
+
private static final BlockStep unstep[] = { BlockStep.X_MINUS, BlockStep.Y_MINUS, BlockStep.Z_MINUS,
BlockStep.X_PLUS, BlockStep.Y_PLUS, BlockStep.Z_PLUS };
@@ -160,7 +158,7 @@ public class NewMapChunkCache extends MapChunkCache {
biomebase = nullBiomeMap;
}
else {
- biomebase = helper.getBiomeBaseFromSnapshot(snap);
+ biomebase = BukkitVersionHelper.helper.getBiomeBaseFromSnapshot(snap);
}
last_css = snap;
}
@@ -168,7 +166,7 @@ public class NewMapChunkCache extends MapChunkCache {
bm = BiomeMap.NULL;
}
else if(biomebase != null) {
- bm = BiomeMap.byBiomeID(helper.getBiomeBaseID(biomebase[bz << 4 | bx]));
+ bm = BiomeMap.byBiomeID(BukkitVersionHelper.helper.getBiomeBaseID(biomebase[bz << 4 | bx]));
}
else {
Biome bb = snap.getBiome(bx, bz);
@@ -745,7 +743,7 @@ public class NewMapChunkCache extends MapChunkCache {
public int loadChunks(int max_to_load) {
if(dw.isLoaded() == false)
return 0;
- Object queue = helper.getUnloadQueue(w);
+ Object queue = BukkitVersionHelper.helper.getUnloadQueue(w);
int cnt = 0;
if(iterator == null)
@@ -779,7 +777,7 @@ public class NewMapChunkCache extends MapChunkCache {
ChunkSnapshot ss = null;
long inhabited_ticks = 0;
DynIntHashMap tileData = null;
- SnapshotRec ssr = DynmapPlugin.plugin.sscache.getSnapshot(dw.getName(), chunk.x, chunk.z, blockdata, biome, biomeraw, highesty);
+ SnapshotRec ssr = SnapshotCache.sscache.getSnapshot(dw.getName(), chunk.x, chunk.z, blockdata, biome, biomeraw, highesty);
if(ssr != null) {
ss = ssr.ss;
inhabited_ticks = ssr.inhabitedTicks;
@@ -803,7 +801,7 @@ public class NewMapChunkCache extends MapChunkCache {
boolean didload = false;
boolean isunloadpending = false;
if (queue != null) {
- isunloadpending = helper.isInUnloadQueue(queue, chunk.x, chunk.z);
+ isunloadpending = BukkitVersionHelper.helper.isInUnloadQueue(queue, chunk.x, chunk.z);
}
if (isunloadpending) { /* Workaround: can't be pending if not loaded */
wasLoaded = true;
@@ -822,7 +820,7 @@ public class NewMapChunkCache extends MapChunkCache {
Chunk c = w.getChunkAt(chunk.x, chunk.z); /* Get the chunk */
/* Get inhabited ticks count */
- inhabited_ticks = helper.getInhabitedTicks(c);
+ inhabited_ticks = BukkitVersionHelper.helper.getInhabitedTicks(c);
if(!vis) {
if(hidestyle == HiddenChunkStyle.FILL_STONE_PLAIN)
ss = STONE;
@@ -836,20 +834,20 @@ public class NewMapChunkCache extends MapChunkCache {
ss = c.getChunkSnapshot(highesty, biome, biomeraw);
/* Get tile entity data */
List