Compare commits

..

10 Commits

Author SHA1 Message Date
Luke Street c5899d6234 CraftBukkit 1.9 compatibility 2016-02-29 22:03:34 -05:00
mikeprimm 20320c578f Merge pull request #1851 from starlis/dupeRemoveEntities
Remove duplicate removeEntities - Fixes #1838
2016-01-21 18:30:39 -06:00
mikeprimm 829a02b636 Merge pull request #1839 from Black-Hole/clear-cache
clear the affected cache if triggerRender...() is called
2016-01-21 18:29:39 -06:00
Aikar 0253a644bf Remove duplicate removeEntities - Fixes #1838
This is handled by unloadChunk
2015-11-03 21:22:19 -05:00
BlackHole 96a11c4711 clear the affected cache if triggerRender...() is called 2015-09-21 15:53:00 +02:00
mikeprimm 9d2755cab1 Merge pull request #1821 from mg-1999/patch-1
Minor Grammar Fix in the config
2015-09-04 22:33:06 -05:00
Mike Primm e69fc065cd Remove javadoc build - not needed here 2015-09-04 22:23:06 -05:00
Matthijs f440e3948f Whoop 2015-08-08 20:31:38 +02:00
Matthijs ffc950d33a Minor grammer fix 2015-08-08 20:29:54 +02:00
Mike Primm d579879fbc Bump to 2.3-SNAPSHOT 2015-07-12 22:55:06 -05:00
7 changed files with 46 additions and 49 deletions
+1 -14
View File
@@ -79,19 +79,6 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
@@ -154,5 +141,5 @@
<version>2.10.1</version>
</dependency>
</dependencies>
<version>2.2</version>
<version>2.3-SNAPSHOT</version>
</project>
@@ -88,10 +88,6 @@ public abstract class BukkitVersionHelper {
* Test if normal chunk snapshot
*/
// public abstract boolean isCraftChunkSnapshot(ChunkSnapshot css);
/**
* Remove entities from given chunk
*/
public abstract void removeEntitiesFromChunk(Chunk c);
/**
* Get inhabited ticks count from chunk
*/
@@ -5,6 +5,7 @@ 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;
@@ -62,17 +63,23 @@ public class BukkitVersionHelperCB extends BukkitVersionHelperGeneric {
/* Set up biomebase fields */
biomebase = getNMSClass("net.minecraft.server.BiomeBase");
biomebasearray = getNMSClass("[Lnet.minecraft.server.BiomeBase;");
biomebaselist = getPrivateField(biomebase, new String[] { "biomes" }, biomebasearray);
biomebasetemp = getField(biomebase, new String[] { "temperature", "F" }, float.class);
biomebasehumi = getField(biomebase, new String[] { "humidity", "G" }, float.class);
biomebaseidstring = getField(biomebase, new String[] { "y", "af", "ah" }, String.class);
biomebaseid = getField(biomebase, new String[] { "id" }, int.class);
biomebasearray = getNMSClass("[Lnet.minecraft.server.BiomeBase;");
biomebaselist = getPrivateFieldNoFail(biomebase, new String[] { "biomes" }, biomebasearray);
if (biomebaselist == null) {
biomebaseset = getPrivateField(biomebase, new String[] { "i" }, Set.class); // 1.9
}
biomebasetemp = getPrivateField(biomebase, new String[] { "temperature", "C", "F" }, float.class);
biomebasehumi = getPrivateField(biomebase, new String[] { "humidity", "D", "G" }, float.class);
biomebaseidstring = getPrivateField(biomebase, new String[] { "z", "y", "af", "ah" }, String.class);
biomebaseid = getPrivateField(biomebase, new String[] { "id", "E" }, int.class);
/* n.m.s.World */
nmsworld = getNMSClass("net.minecraft.server.WorldServer");
chunkprovserver = getNMSClass("net.minecraft.server.ChunkProviderServer");
nmsw_chunkproviderserver = getField(nmsworld, new String[] { "chunkProviderServer" }, chunkprovserver);
getworldborder = getMethodNoFail(nmsworld, new String[] { "af" }, nulltypes);
nmsw_chunkproviderserver = getFieldNoFail(nmsworld, new String[] { "chunkProviderServer" }, chunkprovserver);
if (nmsw_chunkproviderserver == null) {
nmsw_getchunkproviderserver = getMethod(nmsworld, new String[] { "getChunkProviderServer" }, nulltypes); // 1.9
}
getworldborder = getMethodNoFail(nmsworld, new String[] { "getWorldBorder", "af" }, nulltypes);
longhashset = getOBCClassNoFail("org.bukkit.craftbukkit.util.LongHashSet");
if(longhashset != null) {
@@ -89,9 +96,8 @@ public class BukkitVersionHelperCB extends BukkitVersionHelperGeneric {
}
/** n.m.s.Chunk */
nmschunk = getNMSClass("net.minecraft.server.Chunk");
nmsc_removeentities = getMethod(nmschunk, new String[] { "removeEntities" }, nulltypes);
nmsc_tileentities = getField(nmschunk, new String[] { "tileEntities" }, Map.class);
nmsc_inhabitedticks = getFieldNoFail(nmschunk, new String[] { "s", "q", "u" }, long.class);
nmsc_inhabitedticks = getPrivateFieldNoFail(nmschunk, new String[] { "v", "s", "q", "u" }, long.class);
if (nmsc_inhabitedticks == null) {
Log.info("inhabitedTicks field not found - inhabited shader not functional");
}
@@ -128,7 +134,7 @@ public class BukkitVersionHelperCB extends BukkitVersionHelperGeneric {
/** Tile entity */
nms_tileentity = getNMSClass("net.minecraft.server.TileEntity");
nmst_readnbt = getMethod(nms_tileentity, new String[] { "b" }, new Class[] { nbttagcompound });
nmst_readnbt = getMethod(nms_tileentity, new String[] { "a", "b" }, new Class[] { nbttagcompound });
nmst_getposition = getMethodNoFail(nms_tileentity, new String[] { "getPosition" }, new Class[0]); // Try 1.8 method
if (nmst_getposition == null) {
nmst_x = getField(nms_tileentity, new String[] { "x" }, int.class);
@@ -144,7 +150,6 @@ public class BukkitVersionHelperCB extends BukkitVersionHelperGeneric {
}
@Override
public void unloadChunkNoSave(World w, Chunk c, int cx, int cz) {
this.removeEntitiesFromChunk(c);
w.unloadChunk(cx, cz, false, false);
}
/**
@@ -7,6 +7,7 @@ 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;
@@ -41,6 +42,7 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
protected Class<?> biomebase;
protected Class<?> biomebasearray;
protected Field biomebaselist;
protected Field biomebaseset;
protected Field biomebasetemp;
protected Field biomebasehumi;
protected Field biomebaseidstring;
@@ -50,11 +52,11 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
protected Class<?> chunkprovserver;
protected Class<?> longhashset;
protected Field nmsw_chunkproviderserver;
protected Method nmsw_getchunkproviderserver;
protected Field cps_unloadqueue;
protected Method lhs_containskey;
/** n.m.s.Chunk */
protected Class<?> nmschunk;
protected Method nmsc_removeentities;
protected Field nmsc_tileentities;
protected Field nmsc_inhabitedticks;
/** nbt classes */
@@ -202,6 +204,12 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
* Get private field
*/
protected Field getPrivateField(Class<?> cls, String[] ids, Class<?> type) {
return getPrivateField(cls, ids, type, false);
}
protected Field getPrivateFieldNoFail(Class<?> cls, String[] ids, Class<?> type) {
return getPrivateField(cls, ids, type, true);
}
private Field getPrivateField(Class<?> cls, String[] ids, Class<?> type, boolean nofail) {
if((cls == null) || (type == null)) return null;
for(String id : ids) {
try {
@@ -213,8 +221,10 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
} catch (NoSuchFieldException nsfx) {
}
}
Log.severe("Unable to find field " + ids[0] + " for " + cls.getName());
failed = true;
if(!nofail) {
Log.severe("Unable to find field " + ids[0] + " for " + cls.getName());
failed = true;
}
return null;
}
protected Object getFieldValue(Object obj, Field field, Object def) {
@@ -272,7 +282,11 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
* Get list of defined biomebase objects
*/
public Object[] getBiomeBaseList() {
return (Object[]) getFieldValue(biomebase, biomebaselist, new Object[0]);
if (biomebaselist != null) {
return (Object[]) getFieldValue(biomebase, biomebaselist, new Object[0]);
} else {
return ((Set) getFieldValue(biomebase, biomebaselist, Collections.emptySet())).toArray();
}
}
/** Get temperature from biomebase */
public float getBiomeBaseTemperature(Object bb) {
@@ -298,7 +312,12 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
/* Get unload queue for given NMS world */
public Object getUnloadQueue(World world) {
Object cps = getFieldValue(getNMSWorld(world), nmsw_chunkproviderserver, null); // Get chunkproviderserver
Object cps = null;
if (nmsw_chunkproviderserver != null) {
cps = getFieldValue(getNMSWorld(world), nmsw_chunkproviderserver, null);
} else {
cps = callMethod(getNMSWorld(world), nmsw_getchunkproviderserver, nullargs, null);
}
if(cps != null) {
return getFieldValue(cps, cps_unloadqueue, null);
}
@@ -322,13 +341,7 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
// }
// return false;
// }
/** Remove entities from given chunk */
public void removeEntitiesFromChunk(Chunk c) {
Object omsc = callMethod(c, cc_gethandle, nullargs, null);
if(omsc != null) {
callMethod(omsc, nmsc_removeentities, nullargs, null);
}
}
/**
* Get inhabited ticks count from chunk
*/
@@ -91,12 +91,6 @@ public class BukkitVersionHelperGlowstone extends BukkitVersionHelper {
return b;
}
@Override
public void removeEntitiesFromChunk(Chunk c) {
// TODO Auto-generated method stub
}
@Override
public long getInhabitedTicks(Chunk c) {
// TODO Auto-generated method stub
@@ -956,11 +956,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);
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);
return core.triggerRenderOfBlock(wid, x, y, z);
}
+1 -1
View File
@@ -15,7 +15,7 @@
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
deftemplatesuffix: hires
# Map storage scheme: only uncommoent one 'type' value
# Map storage scheme: only uncomment one 'type' value
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)
# mysql: MySQL database, at hostname:port in database, accessed via userid with password