Compare commits

...

8 Commits

Author SHA1 Message Date
Mike Primm 3126de8eec Bump to 2.2 GA 2015-07-12 20:29:37 -05:00
mikeprimm 4292d8540e Merge pull request #1736 from NotWoods/patch-2
Changed default "skin-url" value
2015-02-26 21:30:00 -06:00
Mike Primm 0a4b1fd14b Add showworldborder setting, 1.8 vanilla world border support 2015-02-15 12:40:30 -06:00
Tiger Oakes ac1d4a8af0 Changed default "skin-url" value
With the new skin system introduced in 1.7.10/1.8, Mojang now hosts skins under the minecraft.net domain instead of Amazon's. Since the Amazon link now only provides outdated skins, it would be better to use the new skins.minecraft.net URL as default.
2015-02-03 09:08:55 -10:00
Mike Primm 2e5d27d0d5 Bump to 2.2 2015-01-09 18:38:52 -06:00
Mike Primm f80b456b2c Shift marker persistence off of server thread (lag reduction) 2015-01-05 23:02:09 -06:00
Mike Primm 41d1de1fbb Fix biome temp/humidity on newer biomes 2015-01-03 17:23:40 -06:00
Mike Primm 274a363a97 Avoid trap in Spigot for light levels outside max height 2014-12-14 20:49:38 -06:00
7 changed files with 100 additions and 19 deletions
+1 -1
View File
@@ -154,5 +154,5 @@
<version>2.10.1</version>
</dependency>
</dependencies>
<version>2.1-SNAPSHOT</version>
<version>2.2</version>
</project>
@@ -13,6 +13,7 @@ import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.dynmap.Log;
import org.dynmap.utils.Polygon;
/**
* Helper for isolation of bukkit version specific issues
@@ -143,4 +144,8 @@ public abstract class BukkitVersionHelper {
* Get player health
*/
public abstract double getHealth(Player p);
/**
* Get world border
*/
public Polygon getWorldBorder(World world) { return null; }
}
@@ -12,6 +12,7 @@ import org.bukkit.Server;
import org.bukkit.World;
import org.dynmap.Log;
import org.dynmap.common.BiomeMap;
import org.dynmap.utils.Polygon;
/**
* Helper for isolation of bukkit version specific issues
@@ -24,6 +25,12 @@ public class BukkitVersionHelperCB extends BukkitVersionHelperGeneric {
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
private Class<?> nmsworldborder;
private Method worldborderminx;
private Method worldbordermaxx;
private Method worldborderminz;
private Method worldbordermaxz;
BukkitVersionHelperCB() {
}
@@ -65,6 +72,7 @@ public class BukkitVersionHelperCB extends BukkitVersionHelperGeneric {
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);
longhashset = getOBCClassNoFail("org.bukkit.craftbukkit.util.LongHashSet");
if(longhashset != null) {
@@ -81,12 +89,21 @@ public class BukkitVersionHelperCB extends BukkitVersionHelperGeneric {
}
/** n.m.s.Chunk */
nmschunk = getNMSClass("net.minecraft.server.Chunk");
nmsc_removeentities = getMethod(nmschunk, new String[] { "removeEntities" }, new Class[0]);
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);
if (nmsc_inhabitedticks == null) {
Log.info("inhabitedTicks field not found - inhabited shader not functional");
}
/** n.m.s.WorldBorder */
nmsworldborder = getNMSClassNoFail("net.minecraft.server.WorldBorder");
if (nmsworldborder != null) {
worldborderminx = getMethod(nmsworldborder, new String[] { "b" }, nulltypes);
worldborderminz = getMethod(nmsworldborder, new String[] { "c" }, nulltypes);
worldbordermaxx = getMethod(nmsworldborder, new String[] { "d" }, nulltypes);
worldbordermaxz = getMethod(nmsworldborder, new String[] { "e" }, nulltypes);
}
/** nbt classes */
nbttagcompound = getNMSClass("net.minecraft.server.NBTTagCompound");
nbttagbyte = getNMSClass("net.minecraft.server.NBTTagByte");
@@ -229,4 +246,28 @@ public class BukkitVersionHelperCB extends BukkitVersionHelperGeneric {
}
return new int[0];
}
@Override
public Polygon getWorldBorder(World world) {
Polygon p = null;
if ((getworldborder == null) || (world == null)) {
return null;
}
Object cw = getNMSWorld(world);
if (cw == null) return null;
Object wb = callMethod(cw, getworldborder, nullargs, null);
if (wb != null) {
double minx = (Double) callMethod(wb, worldborderminx, nullargs, Double.MIN_VALUE);
double minz = (Double) callMethod(wb, worldborderminz, nullargs, Double.MIN_VALUE);
double maxx = (Double) callMethod(wb, worldbordermaxx, nullargs, Double.MAX_VALUE);
double maxz = (Double) callMethod(wb, worldbordermaxz, nullargs, Double.MAX_VALUE);
if (maxx < 1E7) {
p = new Polygon();
p.addVertex(minx, minz);
p.addVertex(minx, maxz);
p.addVertex(maxx, maxz);
p.addVertex(maxx, minz);
}
}
return p;
}
}
@@ -23,7 +23,8 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
private String obc_package; // Package used for org.bukkit.craftbukkit
protected String nms_package; // Package used for net.minecraft.server
private boolean failed;
private static final Object[] nullargs = new Object[0];
protected static final Object[] nullargs = new Object[0];
protected static final Class[] nulltypes = new Class[0];
private static final Map nullmap = Collections.emptyMap();
/** CraftChunkSnapshot */
@@ -143,7 +144,11 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
protected Class<?> getNMSClass(String classname) {
return getClassByName(classname, "net.minecraft.server", nms_package, false);
}
protected Class<?> getNMSClassNoFail(String classname) {
return getClassByName(classname, "net.minecraft.server", nms_package, true);
}
protected Class<?> getClassByName(String classname, String base, String mapping, boolean nofail) {
String n = classname;
int idx = classname.indexOf(base);
@@ -249,7 +254,7 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
}
return null;
}
private Object callMethod(Object obj, Method meth, Object[] args, Object def) {
protected Object callMethod(Object obj, Method meth, Object[] args, Object def) {
if((obj == null) || (meth == null)) {
return def;
}
@@ -11,12 +11,14 @@ 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;
import org.dynmap.DynmapLocation;
import org.dynmap.DynmapWorld;
import org.dynmap.utils.MapChunkCache;
import org.dynmap.utils.Polygon;
import org.dynmap.utils.TileFlags;
public class BukkitWorld extends DynmapWorld {
@@ -124,7 +126,10 @@ public class BukkitWorld extends DynmapWorld {
@Override
public int getLightLevel(int x, int y, int z) {
if(world != null) {
return world.getBlockAt(x, y, z).getLightLevel();
if ((y >= 0) && (y < this.worldheight)) {
return world.getBlockAt(x, y, z).getLightLevel();
}
return 0;
}
else {
return -1;
@@ -149,7 +154,12 @@ public class BukkitWorld extends DynmapWorld {
@Override
public int getSkyLightLevel(int x, int y, int z) {
if(world != null) {
return world.getBlockAt(x, y, z).getLightFromSky();
if ((y >= 0) && (y < this.worldheight)) {
return world.getBlockAt(x, y, z).getLightFromSky();
}
else {
return 15;
}
}
else {
return -1;
@@ -233,5 +243,8 @@ public class BukkitWorld extends DynmapWorld {
}
return cnt;
}
@Override
public Polygon getWorldBorder() {
return DynmapPlugin.plugin.getWorldBorder(world);
}
}
@@ -94,6 +94,7 @@ import org.dynmap.hdmap.HDMap;
import org.dynmap.markers.MarkerAPI;
import org.dynmap.modsupport.ModSupportImpl;
import org.dynmap.utils.MapChunkCache;
import org.dynmap.utils.Polygon;
import org.dynmap.utils.VisibilityLimit;
public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
@@ -256,6 +257,11 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
return true;
return false;
}
@Override
public boolean isServerThread() {
return Bukkit.getServer().isPrimaryThread();
}
@Override
public String stripChatColor(String s) {
return ChatColor.stripColor(s);
@@ -718,19 +724,24 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
Object[] biomelist = helper.getBiomeBaseList();
/* Loop through list, skipping well known biomes */
for(int i = 0; i < biomelist.length; i++) {
if (!BiomeMap.byBiomeID(i).isDefault()) continue;
Object bb = biomelist[i];
if(bb != null) {
String id = helper.getBiomeBaseIDString(bb);
if(id == null) {
id = "BIOME_" + i;
}
float tmp = helper.getBiomeBaseTemperature(bb);
float hum = helper.getBiomeBaseHumidity(bb);
BiomeMap m = new BiomeMap(i, id, tmp, hum);
Log.verboseinfo("Add custom biome [" + m.toString() + "] (" + i + ")");
cnt++;
BiomeMap bmap = BiomeMap.byBiomeID(i);
if (bmap.isDefault()) {
String id = helper.getBiomeBaseIDString(bb);
if(id == null) {
id = "BIOME_" + i;
}
BiomeMap m = new BiomeMap(i, id, tmp, hum);
Log.verboseinfo("Add custom biome [" + m.toString() + "] (" + i + ")");
cnt++;
}
else {
bmap.setTemperature(tmp);
bmap.setRainfall(hum);
}
}
}
if(cnt > 0) {
@@ -1609,4 +1620,8 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
String[] lines, String playerid) {
core.processSignChange(blkid, world, x, y, z, lines, playerid);
}
Polygon getWorldBorder(World w) {
return helper.getWorldBorder(w);
}
}
+4 -2
View File
@@ -125,6 +125,8 @@ components:
spawnbedhidebydefault: true
spawnbedminzoom: 0
spawnbedformat: "%name%'s bed"
# (optional) show world border (vanilla 1.8+)
showworldborder: true
- class: org.dynmap.ClientComponent
type: chat
@@ -274,7 +276,7 @@ custom-colors-support: true
#refreshskins: false
# Customize URL used for fetching player skins (%player% is macro for name)
skin-url: "http://s3.amazonaws.com/MinecraftSkins/%player%.png"
skin-url: "http://skins.minecraft.net/MinecraftSkins/%player%.png"
# Control behavior for new (1.0+) compass orientation (sunrise moved 90 degrees: east is now what used to be south)
# default is 'newrose' (preserve pre-1.0 maps, rotate rose)
@@ -473,4 +475,4 @@ verbose: false
#debuggers:
# - class: org.dynmap.debug.LogDebugger
# Debug: dump blocks missing render data
dump-missing-blocks: false
dump-missing-blocks: false