From 975cfdef99937afb38e4358e141528fe0403affd Mon Sep 17 00:00:00 2001 From: Mike Primm Date: Sat, 22 Oct 2011 11:31:20 +0800 Subject: [PATCH] Add command-line for adding/updating/deleting/listing area markers --- .../java/org/dynmap/markers/MarkerSet.java | 4 +- .../dynmap/markers/impl/AreaMarkerImpl.java | 14 +- .../dynmap/markers/impl/MarkerAPIImpl.java | 307 +++++++++++++++++- .../dynmap/markers/impl/MarkerSetImpl.java | 6 +- src/main/resources/plugin.yml | 28 +- 5 files changed, 327 insertions(+), 32 deletions(-) diff --git a/src/main/java/org/dynmap/markers/MarkerSet.java b/src/main/java/org/dynmap/markers/MarkerSet.java index e5667fac..6aadd6a6 100644 --- a/src/main/java/org/dynmap/markers/MarkerSet.java +++ b/src/main/java/org/dynmap/markers/MarkerSet.java @@ -69,11 +69,9 @@ public interface MarkerSet { * @param world - world id * @param x - x coord list * @param z - z coord list - * @param ytop - top y coordinate - * @param ybottom - bottom y coordinate * @param persistent - true if persistent */ - public AreaMarker createAreaMarker(String id, String lbl, boolean markup, String world, double x[], double z[], double ytop, double ybottom, boolean persistent); + public AreaMarker createAreaMarker(String id, String lbl, boolean markup, String world, double x[], double z[], boolean persistent); /** * Get area marker by ID * @param id - ID of the area marker diff --git a/src/main/java/org/dynmap/markers/impl/AreaMarkerImpl.java b/src/main/java/org/dynmap/markers/impl/AreaMarkerImpl.java index 73ec0db3..4cd7d0a9 100644 --- a/src/main/java/org/dynmap/markers/impl/AreaMarkerImpl.java +++ b/src/main/java/org/dynmap/markers/impl/AreaMarkerImpl.java @@ -45,12 +45,10 @@ class AreaMarkerImpl implements AreaMarker { * @param world - world id * @param x - x coord list * @param z - z coord list - * @param ytop - top y coordinate - * @param ybottom - bottom y coordinate * @param persistent - true if persistent * @param set - marker set */ - AreaMarkerImpl(String id, String lbl, boolean markup, String world, double x[], double z[], double ytop, double ybottom, boolean persistent, MarkerSetImpl set) { + AreaMarkerImpl(String id, String lbl, boolean markup, String world, double x[], double z[], boolean persistent, MarkerSetImpl set) { markerid = id; if(lbl != null) label = lbl; @@ -165,11 +163,11 @@ class AreaMarkerImpl implements AreaMarker { HashMap node = new HashMap(); node.put("label", label); node.put("markup", markup); - double[] xx = new double[corners.size()]; - double[] zz = new double[corners.size()]; - for(int i = 0; i < xx.length; i++) { - xx[i] = corners.get(i).x; - zz[i] = corners.get(i).z; + List xx = new ArrayList(); + List zz = new ArrayList(); + for(int i = 0; i < corners.size(); i++) { + xx.add(corners.get(i).x); + zz.add(corners.get(i).z); } node.put("x", xx); node.put("ytop", Double.valueOf(ytop)); diff --git a/src/main/java/org/dynmap/markers/impl/MarkerAPIImpl.java b/src/main/java/org/dynmap/markers/impl/MarkerAPIImpl.java index e7983355..733e839d 100644 --- a/src/main/java/org/dynmap/markers/impl/MarkerAPIImpl.java +++ b/src/main/java/org/dynmap/markers/impl/MarkerAPIImpl.java @@ -7,9 +7,11 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeMap; @@ -48,7 +50,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener { private File markertiledir; /* Marker directory for web server (under tiles) */ private HashMap markericons = new HashMap(); private HashMap markersets = new HashMap(); - + private HashMap> pointaccum = new HashMap>(); private Server server; static MarkerAPIImpl api; @@ -469,7 +471,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener { private static final Set commands = new HashSet(Arrays.asList(new String[] { "add", "movehere", "update", "delete", "list", "icons", "addset", "updateset", "deleteset", "listsets", "addicon", "updateicon", - "deleteicon" + "deleteicon", "addcorner", "clearcorners", "addarea", "listareas", "deletearea", "updatearea" })); private static final String ARG_LABEL = "label"; private static final String ARG_ID = "id"; @@ -479,7 +481,12 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener { private static final String ARG_ICON = "icon"; private static final String ARG_SET = "set"; private static final String ARG_PRIO = "prio"; - + private static final String ARG_STROKEWEIGHT = "weight"; + private static final String ARG_STROKECOLOR = "color"; + private static final String ARG_STROKEOPACITY = "opacity"; + private static final String ARG_FILLCOLOR = "fillcolor"; + private static final String ARG_FILLOPACITY = "fillopacity"; + /* Parse argument strings : handle 'attrib:value' and quoted strings */ private static Map parseArgs(String[] args, CommandSender snd) { HashMap rslt = new HashMap(); @@ -543,6 +550,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener { public static boolean onCommand(DynmapPlugin plugin, CommandSender sender, Command cmd, String commandLabel, String[] args) { String id, setid, file, label, newlabel, iconid, prio; + String val; if(api == null) { sender.sendMessage("Markers component is not enabled."); @@ -583,7 +591,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener { /* Add new marker */ MarkerSet set = api.getMarkerSet(setid); if(set == null) { - sender.sendMessage("Error: invalid marker set - " + setid); + sender.sendMessage("Error: invalid set - " + setid); return true; } MarkerIcon ico = api.getMarkerIcon(iconid); @@ -625,7 +633,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener { } MarkerSet set = api.getMarkerSet(setid); if(set == null) { - sender.sendMessage("Error: invalid marker set - " + setid); + sender.sendMessage("Error: invalid set - " + setid); return true; } Marker marker; @@ -669,7 +677,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener { } MarkerSet set = api.getMarkerSet(setid); if(set == null) { - sender.sendMessage("Error: invalid marker set - " + setid); + sender.sendMessage("Error: invalid set - " + setid); return true; } Marker marker; @@ -724,7 +732,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener { } MarkerSet set = api.getMarkerSet(setid); if(set == null) { - sender.sendMessage("Error: invalid marker set - " + setid); + sender.sendMessage("Error: invalid set - " + setid); return true; } Marker marker; @@ -760,7 +768,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener { } MarkerSet set = api.getMarkerSet(setid); if(set == null) { - sender.sendMessage("Error: invalid marker set - " + setid); + sender.sendMessage("Error: invalid set - " + setid); return true; } Set markers = set.getMarkers(); @@ -807,7 +815,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener { /* Create new set */ set = api.createMarkerSet(id, label, null, true); if(set == null) { - sender.sendMessage("Error creating marker set"); + sender.sendMessage("Error creating set"); } else { String h = parms.get(ARG_HIDE); @@ -820,7 +828,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener { sender.sendMessage("Invalid priority: " + prio); } } - sender.sendMessage("Added marker set id:'" + set.getMarkerSetID() + "' (" + set.getMarkerSetLabel() + ")"); + sender.sendMessage("Added set id:'" + set.getMarkerSetID() + "' (" + set.getMarkerSetLabel() + ")"); } } else { @@ -836,7 +844,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener { label = parms.get(ARG_LABEL); prio = parms.get(ARG_PRIO); if((id == null) && (label == null)) { - sender.sendMessage("