diff --git a/perspectives.txt b/perspectives.txt new file mode 100644 index 00000000..22c4c82c --- /dev/null +++ b/perspectives.txt @@ -0,0 +1 @@ +perspectives: diff --git a/shaders.txt b/shaders.txt new file mode 100644 index 00000000..3e75bb75 --- /dev/null +++ b/shaders.txt @@ -0,0 +1,18 @@ +shaders: + - class: org.dynmap.hdmap.DefaultHDShader + name: classic + colorscheme: default + + - class: org.dynmap.hdmap.DefaultHDShader + name: night + colorscheme: default + ambientlight: 4 + shadowstrength: 1.0 + + - class: org.dynmap.hdmap.DefaultHDShader + name: daynight + colorscheme: default + ambientlight: 4 + shadowstrength: 1.0 + night-and-day: true + \ No newline at end of file diff --git a/src/main/assembly/package.xml b/src/main/assembly/package.xml index aa50719f..91a9506a 100644 --- a/src/main/assembly/package.xml +++ b/src/main/assembly/package.xml @@ -27,7 +27,9 @@ ${project.basedir} /dynmap/ - configuration.txt + configuration.txt + shaders.txt + perspectives.txt diff --git a/src/main/java/org/dynmap/DynmapPlugin.java b/src/main/java/org/dynmap/DynmapPlugin.java index d769b975..0bf23209 100644 --- a/src/main/java/org/dynmap/DynmapPlugin.java +++ b/src/main/java/org/dynmap/DynmapPlugin.java @@ -46,6 +46,8 @@ public class DynmapPlugin extends JavaPlugin { public MapManager mapManager = null; public PlayerList playerList; public ConfigurationNode configuration; + public ConfigurationNode shaderconfig; + public ConfigurationNode perspectiveconfig; public HashSet enabledTriggers = new HashSet(); public PermissionProvider permissions; public ComponentManager componentManager = new ComponentManager(); @@ -77,6 +79,13 @@ public class DynmapPlugin extends JavaPlugin { org.bukkit.util.config.Configuration bukkitConfiguration = new org.bukkit.util.config.Configuration(new File(this.getDataFolder(), "configuration.txt")); bukkitConfiguration.load(); configuration = new ConfigurationNode(bukkitConfiguration); + /* Load shaders and perspectives */ + org.bukkit.util.config.Configuration bukkitShaderConfig = new org.bukkit.util.config.Configuration(new File(this.getDataFolder(), "shaders.txt")); + bukkitShaderConfig.load(); + shaderconfig = new ConfigurationNode(bukkitShaderConfig); + org.bukkit.util.config.Configuration bukkitPerspectiveConfig = new org.bukkit.util.config.Configuration(new File(this.getDataFolder(), "perspectives.txt")); + bukkitPerspectiveConfig.load(); + perspectiveconfig = new ConfigurationNode(bukkitPerspectiveConfig); Log.verbose = configuration.getBoolean("verbose", true); @@ -90,7 +99,7 @@ public class DynmapPlugin extends JavaPlugin { playerList = new PlayerList(getServer(), getFile("hiddenplayers.txt"), configuration); playerList.load(); - mapManager = new MapManager(this, configuration); + mapManager = new MapManager(this, configuration, shaderconfig, perspectiveconfig); mapManager.startRendering(); loadWebserver(); diff --git a/src/main/java/org/dynmap/MapManager.java b/src/main/java/org/dynmap/MapManager.java index 7eadbed3..556a1b8a 100644 --- a/src/main/java/org/dynmap/MapManager.java +++ b/src/main/java/org/dynmap/MapManager.java @@ -21,6 +21,8 @@ import org.bukkit.scheduler.BukkitScheduler; import org.bukkit.command.CommandSender; import org.dynmap.DynmapWorld.AutoGenerateOption; import org.dynmap.debug.Debug; +import org.dynmap.hdmap.HDMapManager; +import org.dynmap.hdmap.HDShader; import org.dynmap.utils.LegacyMapChunkCache; import org.dynmap.utils.MapChunkCache; import org.dynmap.utils.NewMapChunkCache; @@ -48,7 +50,8 @@ public class MapManager { public static final Object lock = new Object(); public static MapManager mapman; /* Our singleton */ - + public HDMapManager hdmapman; + /* Thread pool for processing renders */ private DynmapScheduledThreadPoolExecutor renderpool; private static final int POOL_SIZE = 3; @@ -319,9 +322,13 @@ public class MapManager { } } - public MapManager(DynmapPlugin plugin, ConfigurationNode configuration) { + public MapManager(DynmapPlugin plugin, ConfigurationNode configuration, ConfigurationNode shadercfg, ConfigurationNode perspectivecfg) { plug_in = plugin; mapman = this; + /* Initialize HD map manager */ + hdmapman = new HDMapManager(); + hdmapman.loadHDShaders(shadercfg); + hdmapman.loadHDPerspectives(perspectivecfg); this.tileQueue = new AsynchronousQueue(new Handler() { @Override diff --git a/src/main/java/org/dynmap/hdmap/DefaultHDShader.java b/src/main/java/org/dynmap/hdmap/DefaultHDShader.java index a2b23af9..8b69da56 100644 --- a/src/main/java/org/dynmap/hdmap/DefaultHDShader.java +++ b/src/main/java/org/dynmap/hdmap/DefaultHDShader.java @@ -38,7 +38,7 @@ public class DefaultHDShader implements HDShader { public DefaultHDShader(ConfigurationNode configuration) { this.configuration = configuration; - name = (String) configuration.get("prefix"); + name = (String) configuration.get("name"); double shadowweight = configuration.getDouble("shadowstrength", 0.0); if(shadowweight > 0.0) { shadowscale = new int[16]; @@ -61,7 +61,7 @@ public class DefaultHDShader implements HDShader { lightscale[i] = i - (15-v); } } - colorScheme = ColorScheme.getScheme((String)configuration.get("colorscheme")); + colorScheme = ColorScheme.getScheme(configuration.getString("colorscheme", "default")); night_and_day = configuration.getBoolean("night-and-day", false); transparency = configuration.getBoolean("transparency", true); /* Default on */ String biomeopt = configuration.getString("biomecolored", "none"); diff --git a/src/main/java/org/dynmap/hdmap/HDMapManager.java b/src/main/java/org/dynmap/hdmap/HDMapManager.java new file mode 100644 index 00000000..1850f3ed --- /dev/null +++ b/src/main/java/org/dynmap/hdmap/HDMapManager.java @@ -0,0 +1,33 @@ +package org.dynmap.hdmap; + +import java.util.HashMap; + +import org.dynmap.ConfigurationNode; +import org.dynmap.Log; + +public class HDMapManager { + public HashMap shaders = new HashMap(); + public HashMap perspectives = new HashMap(); + + public void loadHDShaders(ConfigurationNode shadercfg) { + Log.verboseinfo("Loading shaders..."); + for(HDShader shader : shadercfg.createInstances("shaders", new Class[0], new Object[0])) { + if(shaders.containsKey(shader.getName())) { + Log.severe("Duplicate shader name '" + shader.getName() + "' - shader ignored"); + } + shaders.put(shader.getName(), shader); + } + Log.info("Loaded " + shaders.size() + " shaders."); + } + + public void loadHDPerspectives(ConfigurationNode perspectivecfg) { + Log.verboseinfo("Loading perspectives..."); + for(HDPerspective perspective : perspectivecfg.createInstances("perspectives", new Class[0], new Object[0])) { + if(perspectives.containsKey(perspective.getName())) { + Log.severe("Duplicate perspective name '" + perspective.getName() + "' - perspective ignored"); + } + perspectives.put(perspective.getName(), perspective); + } + Log.info("Loaded " + perspectives.size() + " perspectives."); + } +} diff --git a/src/main/java/org/dynmap/hdmap/HDPerspective.java b/src/main/java/org/dynmap/hdmap/HDPerspective.java new file mode 100644 index 00000000..deebe50b --- /dev/null +++ b/src/main/java/org/dynmap/hdmap/HDPerspective.java @@ -0,0 +1,6 @@ +package org.dynmap.hdmap; + +public interface HDPerspective { + /* Get name of perspective */ + String getName(); +}