From 551f35f3f90038612393b387f26efb1cafd0373f Mon Sep 17 00:00:00 2001 From: Mike Primm Date: Sat, 6 Sep 2014 19:19:20 -0500 Subject: [PATCH] Add initial support for Glowstone server --- .../dynmap/bukkit/BukkitVersionHelper.java | 13 +- .../bukkit/BukkitVersionHelperGeneric.java | 18 +- .../bukkit/BukkitVersionHelperGlowstone.java | 404 ++++++++++++++++++ .../org/dynmap/bukkit/NewMapChunkCache.java | 2 +- 4 files changed, 421 insertions(+), 16 deletions(-) create mode 100644 src/main/java/org/dynmap/bukkit/BukkitVersionHelperGlowstone.java diff --git a/src/main/java/org/dynmap/bukkit/BukkitVersionHelper.java b/src/main/java/org/dynmap/bukkit/BukkitVersionHelper.java index 49281b1c..65206bc0 100644 --- a/src/main/java/org/dynmap/bukkit/BukkitVersionHelper.java +++ b/src/main/java/org/dynmap/bukkit/BukkitVersionHelper.java @@ -23,6 +23,7 @@ public abstract class BukkitVersionHelper { 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. *"); @@ -37,6 +38,10 @@ public abstract class BukkitVersionHelper { 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(); } @@ -66,14 +71,10 @@ public abstract class BukkitVersionHelper { * Get ID from biomebase */ public abstract int getBiomeBaseID(Object bb); - /** - * Get net.minecraft.server.world for given world - */ - public abstract Object getNMSWorld(World w); /** * Get unload queue for given NMS world */ - public abstract Object getUnloadQueue(Object nmsworld); + public abstract Object getUnloadQueue(World world); /** * For testing unload queue for presence of givne chunk */ @@ -85,7 +86,7 @@ public abstract class BukkitVersionHelper { /** * Test if normal chunk snapshot */ - public abstract boolean isCraftChunkSnapshot(ChunkSnapshot css); +// public abstract boolean isCraftChunkSnapshot(ChunkSnapshot css); /** * Remove entities from given chunk */ diff --git a/src/main/java/org/dynmap/bukkit/BukkitVersionHelperGeneric.java b/src/main/java/org/dynmap/bukkit/BukkitVersionHelperGeneric.java index e1ad7147..93782a51 100644 --- a/src/main/java/org/dynmap/bukkit/BukkitVersionHelperGeneric.java +++ b/src/main/java/org/dynmap/bukkit/BukkitVersionHelperGeneric.java @@ -269,13 +269,13 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper { } /* Get net.minecraft.server.world for given world */ - public Object getNMSWorld(World w) { + protected Object getNMSWorld(World w) { return callMethod(w, cw_gethandle, nullargs, null); } /* Get unload queue for given NMS world */ - public Object getUnloadQueue(Object nmsworld) { - Object cps = getFieldValue(nmsworld, nmsw_chunkproviderserver, null); // Get chunkproviderserver + public Object getUnloadQueue(World world) { + Object cps = getFieldValue(getNMSWorld(world), nmsw_chunkproviderserver, null); // Get chunkproviderserver if(cps != null) { return getFieldValue(cps, cps_unloadqueue, null); } @@ -293,12 +293,12 @@ public abstract class BukkitVersionHelperGeneric extends BukkitVersionHelper { public Object[] getBiomeBaseFromSnapshot(ChunkSnapshot css) { return (Object[])getFieldValue(css, ccss_biome, null); } - public boolean isCraftChunkSnapshot(ChunkSnapshot css) { - if(craftchunksnapshot != null) { - return craftchunksnapshot.isAssignableFrom(css.getClass()); - } - return false; - } +// public boolean isCraftChunkSnapshot(ChunkSnapshot css) { +// if(craftchunksnapshot != null) { +// return craftchunksnapshot.isAssignableFrom(css.getClass()); +// } +// return false; +// } /** Remove entities from given chunk */ public void removeEntitiesFromChunk(Chunk c) { Object omsc = callMethod(c, cc_gethandle, nullargs, null); diff --git a/src/main/java/org/dynmap/bukkit/BukkitVersionHelperGlowstone.java b/src/main/java/org/dynmap/bukkit/BukkitVersionHelperGlowstone.java new file mode 100644 index 00000000..8debed54 --- /dev/null +++ b/src/main/java/org/dynmap/bukkit/BukkitVersionHelperGlowstone.java @@ -0,0 +1,404 @@ +package org.dynmap.bukkit; + +import java.util.Collections; +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; + +public class BukkitVersionHelperGlowstone extends BukkitVersionHelper { + + @Override + public Object[] getBiomeBaseList() { + // TODO Auto-generated method stub + return new Object[0]; + } + + @Override + public float getBiomeBaseTemperature(Object bb) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public float getBiomeBaseHumidity(Object bb) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public String getBiomeBaseIDString(Object bb) { + // TODO Auto-generated method stub + return ""; + } + + @Override + public int getBiomeBaseID(Object bb) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public Object getUnloadQueue(World world) { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean isInUnloadQueue(Object unloadqueue, int x, int z) { + // TODO Auto-generated method stub + return false; + } + + @Override + public Object[] getBiomeBaseFromSnapshot(ChunkSnapshot css) { + // TODO Auto-generated method stub + return new Integer[256]; + } + + @Override + public void removeEntitiesFromChunk(Chunk c) { + // TODO Auto-generated method stub + + } + + @Override + public long getInhabitedTicks(Chunk c) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public Map getTileEntitiesForChunk(Chunk c) { + // TODO Auto-generated method stub + return Collections.emptyMap(); + } + + @Override + public int getTileEntityX(Object te) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getTileEntityY(Object te) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getTileEntityZ(Object te) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public Object readTileEntityNBT(Object te) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Object getFieldValue(Object nbt, String field) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void unloadChunkNoSave(World w, Chunk c, int cx, int cz) { + // TODO Auto-generated method stub + + } + + @Override + public String[] getBlockShortNames() { + // TODO Auto-generated method stub + return null; + } + + private static final String[] bnames = { + "Ocean", + "Plains", + "Desert", + "Extreme Hills", + "Forest", + "Taiga", + "Swampland", + "River", + "Hell", + "Sky", + "FrozenOcean", + "FrozenRiver", + "Ice Plains", + "Ice Mountains", + "MushroomIsland", + "MushroomIslandShore", + "Beach", + "DesertHills", + "ForestHills", + "TaigaHills", + "Extreme Hills Edge", + "Jungle", + "JungleHills", + "JungleEdge", + "Deep Ocean", + "Stone Beach", + "Cold Beach", + "Birch Forest", + "Birch Forest Hills", + "Roofed Forest", + "Cold Taiga", + "Cold Taiga Hills", + "Mega Taiga", + "Mega Taiga Hills", + "Extreme Hills+", + "Savanna", + "Savanna Plateau", + "Mesa", + "Mesa Plateau F", + "Mesa Plateau", + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + "Sunflower Plains", + "Desert M", + "Extreme Hills M", + "Flower Forest", + "Taiga M", + "Swampland M", + null, + null, + null, + null, + null, + "Ice Plains Spikes", + null, + null, + null, + null, + null, + null, + null, + null, + "Jungle M", + null, + "JungleEdge M", + null, + null, + null, + "Birch Forest M", + "Birch Forest Hills M", + "Roofed Forest M", + "Cold Taiga M", + null, + "Mega Spruce Taiga", + "Mega Spruce Taiga", + "Extreme Hills+ M", + "Savanna M", + "Savanna Plateau M", + "Mesa (Bryce)", + "Mesa Plateau F M", + "Mesa Plateau M", + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + }; + + @Override + public String[] getBiomeNames() { + return bnames; + } + + @Override + public int[] getBlockMaterialMap() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Player[] getOnlinePlayers() { + // TODO Auto-generated method stub + return Bukkit.getServer().getOnlinePlayers(); + } + + @Override + public int getHealth(Player p) { + // TODO Auto-generated method stub + return 0; + } + +} diff --git a/src/main/java/org/dynmap/bukkit/NewMapChunkCache.java b/src/main/java/org/dynmap/bukkit/NewMapChunkCache.java index 08abce9c..9ef2fbc3 100644 --- a/src/main/java/org/dynmap/bukkit/NewMapChunkCache.java +++ b/src/main/java/org/dynmap/bukkit/NewMapChunkCache.java @@ -795,7 +795,7 @@ public class NewMapChunkCache extends MapChunkCache { public int loadChunks(int max_to_load) { if(dw.isLoaded() == false) return 0; - Object queue = helper.getUnloadQueue(helper.getNMSWorld(w)); + Object queue = helper.getUnloadQueue(w); int cnt = 0; if(iterator == null)