Add support for 1.7.10
This commit is contained in:
parent
9cdec182f9
commit
fcf16b3b3f
5 changed files with 60 additions and 5 deletions
|
|
@ -5,11 +5,13 @@ import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
import org.bukkit.ChunkSnapshot;
|
import org.bukkit.ChunkSnapshot;
|
||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.dynmap.Log;
|
import org.dynmap.Log;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -132,4 +134,12 @@ public abstract class BukkitVersionHelper {
|
||||||
* Get block material index list
|
* Get block material index list
|
||||||
*/
|
*/
|
||||||
public abstract int[] getBlockMaterialMap();
|
public abstract int[] getBlockMaterialMap();
|
||||||
|
/**
|
||||||
|
* Get list of online players
|
||||||
|
*/
|
||||||
|
public abstract Player[] getOnlinePlayers();
|
||||||
|
/**
|
||||||
|
* Get player health
|
||||||
|
*/
|
||||||
|
public abstract int getHealth(Player p);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ public class BukkitVersionHelperCB extends BukkitVersionHelperGeneric {
|
||||||
nmsmaterial = getNMSClass("net.minecraft.server.Material");
|
nmsmaterial = getNMSClass("net.minecraft.server.Material");
|
||||||
blockbyid = getFieldNoFail(nmsblock, new String[] { "byId" }, nmsblockarray);
|
blockbyid = getFieldNoFail(nmsblock, new String[] { "byId" }, nmsblockarray);
|
||||||
if (blockbyid == null) {
|
if (blockbyid == null) {
|
||||||
blockbyidfunc = getMethod(nmsblock, new String[] { "e" }, new Class[] { int.class });
|
blockbyidfunc = getMethod(nmsblock, new String[] { "getById", "e" }, new Class[] { int.class });
|
||||||
}
|
}
|
||||||
blockname = getPrivateField(nmsblock, new String[] { "name", "b" }, String.class);
|
blockname = getPrivateField(nmsblock, new String[] { "name", "b" }, String.class);
|
||||||
material = getPrivateField(nmsblock, new String[] { "material" }, nmsmaterial);
|
material = getPrivateField(nmsblock, new String[] { "material" }, nmsmaterial);
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,17 @@ package org.dynmap.bukkit;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
import org.bukkit.ChunkSnapshot;
|
import org.bukkit.ChunkSnapshot;
|
||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.dynmap.Log;
|
import org.dynmap.Log;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -79,6 +83,10 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
|
||||||
protected Field nmst_x;
|
protected Field nmst_x;
|
||||||
protected Field nmst_y;
|
protected Field nmst_y;
|
||||||
protected Field nmst_z;
|
protected Field nmst_z;
|
||||||
|
/** Server */
|
||||||
|
protected Method server_getonlineplayers;
|
||||||
|
/** Player */
|
||||||
|
protected Method player_gethealth;
|
||||||
|
|
||||||
BukkitVersionHelperGeneric() {
|
BukkitVersionHelperGeneric() {
|
||||||
failed = false;
|
failed = false;
|
||||||
|
|
@ -99,6 +107,12 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
|
||||||
/* CraftChunk */
|
/* CraftChunk */
|
||||||
craftchunk = getOBCClass("org.bukkit.craftbukkit.CraftChunk");
|
craftchunk = getOBCClass("org.bukkit.craftbukkit.CraftChunk");
|
||||||
cc_gethandle = getMethod(craftchunk, new String[] { "getHandle" }, new Class[0]);
|
cc_gethandle = getMethod(craftchunk, new String[] { "getHandle" }, new Class[0]);
|
||||||
|
|
||||||
|
/** Server */
|
||||||
|
server_getonlineplayers = getMethod(Server.class, new String[] { "getOnlinePlayers" }, new Class[0]);
|
||||||
|
/** Player */
|
||||||
|
player_gethealth = getMethod(Player.class, new String[] { "getHealth" }, new Class[0]);
|
||||||
|
|
||||||
/* Get NMS classes and fields */
|
/* Get NMS classes and fields */
|
||||||
if(!failed)
|
if(!failed)
|
||||||
loadNMS();
|
loadNMS();
|
||||||
|
|
@ -385,4 +399,31 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper {
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Get list of online players
|
||||||
|
*/
|
||||||
|
public Player[] getOnlinePlayers() {
|
||||||
|
Object players = callMethod(Bukkit.getServer(), server_getonlineplayers, nullargs, null);
|
||||||
|
if (players instanceof Player[]) { /* Pre 1.7.10 */
|
||||||
|
return (Player[]) players;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
Collection<? extends Player> p = (Collection<? extends Player>) players;
|
||||||
|
return p.toArray(new Player[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Get player health
|
||||||
|
*/
|
||||||
|
public int getHealth(Player p) {
|
||||||
|
Object health = callMethod(p, player_gethealth, nullargs, null);
|
||||||
|
if (health instanceof Integer) {
|
||||||
|
return (Integer) health;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return ((Double) health).intValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -234,7 +234,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public DynmapPlayer[] getOnlinePlayers() {
|
public DynmapPlayer[] getOnlinePlayers() {
|
||||||
Player[] players = getServer().getOnlinePlayers();
|
Player[] players = helper.getOnlinePlayers();
|
||||||
DynmapPlayer[] dplay = new DynmapPlayer[players.length];
|
DynmapPlayer[] dplay = new DynmapPlayer[players.length];
|
||||||
for(int i = 0; i < players.length; i++)
|
for(int i = 0; i < players.length; i++)
|
||||||
dplay[i] = new BukkitPlayer(players[i]);
|
dplay[i] = new BukkitPlayer(players[i]);
|
||||||
|
|
@ -507,7 +507,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public int getCurrentPlayers() {
|
public int getCurrentPlayers() {
|
||||||
return getServer().getOnlinePlayers().length;
|
return helper.getOnlinePlayers().length;
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public boolean isModLoaded(String name) {
|
public boolean isModLoaded(String name) {
|
||||||
|
|
@ -636,7 +636,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
|
||||||
@Override
|
@Override
|
||||||
public int getHealth() {
|
public int getHealth() {
|
||||||
if(player != null)
|
if(player != null)
|
||||||
return player.getHealth();
|
return helper.getHealth(player);
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -121,6 +121,8 @@ public class Metrics {
|
||||||
*/
|
*/
|
||||||
private volatile BukkitTask task = null;
|
private volatile BukkitTask task = null;
|
||||||
|
|
||||||
|
private BukkitVersionHelper helper;
|
||||||
|
|
||||||
public Metrics(final Plugin plugin) throws IOException {
|
public Metrics(final Plugin plugin) throws IOException {
|
||||||
if (plugin == null) {
|
if (plugin == null) {
|
||||||
throw new IllegalArgumentException("Plugin cannot be null");
|
throw new IllegalArgumentException("Plugin cannot be null");
|
||||||
|
|
@ -146,6 +148,8 @@ public class Metrics {
|
||||||
// Load the guid then
|
// Load the guid then
|
||||||
guid = configuration.getString("guid");
|
guid = configuration.getString("guid");
|
||||||
debug = configuration.getBoolean("debug", false);
|
debug = configuration.getBoolean("debug", false);
|
||||||
|
|
||||||
|
helper = BukkitVersionHelper.getHelper();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -359,7 +363,7 @@ public class Metrics {
|
||||||
boolean onlineMode = Bukkit.getServer().getOnlineMode(); // TRUE if online mode is enabled
|
boolean onlineMode = Bukkit.getServer().getOnlineMode(); // TRUE if online mode is enabled
|
||||||
String pluginVersion = description.getVersion();
|
String pluginVersion = description.getVersion();
|
||||||
String serverVersion = Bukkit.getVersion();
|
String serverVersion = Bukkit.getVersion();
|
||||||
int playersOnline = Bukkit.getServer().getOnlinePlayers().length;
|
int playersOnline = helper.getOnlinePlayers().length;
|
||||||
|
|
||||||
// END server software specific section -- all code below does not use any code outside of this class / Java
|
// END server software specific section -- all code below does not use any code outside of this class / Java
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue