diff --git a/src/main/java/org/dynmap/markers/impl/MarkerAPIImpl.java b/src/main/java/org/dynmap/markers/impl/MarkerAPIImpl.java index f2764884..80266849 100644 --- a/src/main/java/org/dynmap/markers/impl/MarkerAPIImpl.java +++ b/src/main/java/org/dynmap/markers/impl/MarkerAPIImpl.java @@ -404,7 +404,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", "deleteset", "listsets" + "add", "movehere", "update", "delete", "list", "icons", "addset", "deleteset", "listsets", "addicon" })); /* Parse argument strings : handle 'attrib:value' and quoted strings */ @@ -760,6 +760,51 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener { sender.sendMessage(set.getMarkerSetID() + ": label:\"" + set.getMarkerSetLabel() + "\""); } } + /* Add new icon */ + else if(c.equals("addicon") && plugin.checkPlayerPermission(sender, "marker.addicon")) { + if(args.length > 1) { + /* Parse arguements */ + Map parms = parseArgs(args, sender); + if(parms == null) return true; + if(parms.get("id") == null) { + sender.sendMessage("id: required"); + return true; + } + if(parms.get("file") == null) { + sender.sendMessage("file:\"filename\" required"); + return true; + } + String id = parms.get("id"); + if(parms.get("label") == null) + parms.put("label", id); + MarkerIcon ico = api.getMarkerIcon(id); + if(ico != null) { + sender.sendMessage("Icon '" + id + "' already defined."); + return true; + } + /* Open stream to filename */ + File iconf = new File(parms.get("file")); + FileInputStream fis = null; + try { + fis = new FileInputStream(iconf); + /* Create new icon */ + MarkerIcon mi = api.createMarkerIcon(parms.get("id"), parms.get("label"), fis); + if(mi == null) { + sender.sendMessage("Error creating icon"); + return true; + } + } catch (IOException iox) { + sender.sendMessage("Error loading icon file - " + iox); + } finally { + if(fis != null) { + try { fis.close(); } catch (IOException iox) {} + } + } + } + else { + sender.sendMessage("id: and file:\"filename\" required"); + } + } else { return false; } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index c00f9972..b81dc7b8 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -40,6 +40,7 @@ commands: / deleteset