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();
+}