Search in sources :

Example 1 with MarkerIcon

use of org.dynmap.markers.MarkerIcon in project MyMaid2 by jaoafa.

the class Cmd_DT method onCommand.

public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    Plugin dynmap = plugin.getServer().getPluginManager().getPlugin("dynmap");
    if (dynmap == null || !dynmap.isEnabled()) {
        SendMessage(sender, cmd, "Dynmapプラグインが停止中、もしくは存在しないため、このコマンドを利用できません。");
        return true;
    }
    DynmapAPI dynmapapi = (DynmapAPI) dynmap;
    MarkerAPI markerapi = dynmapapi.getMarkerAPI();
    if (args.length >= 1 && args[0].equalsIgnoreCase("help")) {
        SendUsageMessage(sender, cmd);
        return true;
    }
    if (args.length == 1) {
        if (args[0].equalsIgnoreCase("add")) {
            // 一つではaddは使えない
            SendMessage(sender, cmd, "マーカーの追加には/dt add <MarkerName> <MarkerType>を使用します。");
            return true;
        } else if (args[0].equalsIgnoreCase("del")) {
            // 一つではdelは使えない
            SendMessage(sender, cmd, "マーカーの削除には/dt del <MarkerName>を使用します。");
            return true;
        } else if (args[0].equalsIgnoreCase("list")) {
            Set<Marker> Markers = new HashSet<Marker>();
            for (MarkerSet markerset : markerapi.getMarkerSets()) {
                for (Marker marker : markerset.getMarkers()) {
                    Markers.add(marker);
                }
            }
            int count = 0;
            int page = 1;
            int startcount = (page - 1) * 10;
            int endcount = page * 10;
            int maxpage = Markers.size() / 10;
            SendMessage(sender, cmd, "Marker List: " + page + "page / " + maxpage + "page");
            SendMessage(sender, cmd, "-------------------------");
            for (Marker marker : Markers) {
                if (count <= startcount) {
                    count++;
                    continue;
                }
                if (count > endcount) {
                    break;
                }
                SendMessage(sender, cmd, "[" + count + "|" + marker.getWorld() + "/" + marker.getMarkerSet().getMarkerSetLabel() + "]" + marker.getLabel() + " X:" + marker.getX() + " Y:" + marker.getY() + " Z:" + marker.getY());
                count++;
            }
            SendMessage(sender, cmd, "-------------------------");
            SendMessage(sender, cmd, startcount + " - " + endcount + " / " + Markers.size());
            if (page != maxpage) {
                SendMessage(sender, cmd, "次のページを見るには「/dt list " + (page + 1) + "」を実行します。");
            }
            return true;
        } else if (args[0].equalsIgnoreCase("near")) {
            if (!(sender instanceof Player)) {
                SendMessage(sender, cmd, "このコマンドはサーバ内から実行可能です。");
                return true;
            }
            Player player = (Player) sender;
            Location loc = player.getLocation();
            Marker SelectMarker = null;
            double distance = Double.MAX_VALUE;
            for (MarkerSet markerset : markerapi.getMarkerSets()) {
                for (Marker marker : markerset.getMarkers()) {
                    if (!marker.getWorld().equalsIgnoreCase(player.getWorld().getName())) {
                        continue;
                    }
                    World world = Bukkit.getWorld(marker.getWorld());
                    double nowdistance = loc.distance(new Location(world, marker.getX(), marker.getY(), marker.getZ()));
                    if (distance > nowdistance) {
                        SelectMarker = marker;
                        distance = nowdistance;
                    }
                }
            }
            if (SelectMarker == null) {
                SendMessage(sender, cmd, "マーカーが見つかりませんでした。");
                return true;
            }
            SendMessage(sender, cmd, "あなたから一番近い場所にあるマーカーは「" + SelectMarker.getLabel() + "」というマーカーです。");
            SendMessage(sender, cmd, "約" + (int) distance + "ブロック程度のところにあり、「/dt " + SelectMarker.getLabel() + "」というコマンドでテレポートできます!");
            return true;
        } else {
            // /dt <MarkerName>
            if (!(sender instanceof Player)) {
                SendMessage(sender, cmd, "このコマンドはサーバ内から実行可能です。");
                return true;
            }
            Player player = (Player) sender;
            String markerlabel = args[0];
            Map<String, Marker> Markers = new HashMap<>();
            for (MarkerSet markerset : markerapi.getMarkerSets()) {
                for (Marker marker : markerset.getMarkers()) {
                    Markers.put(marker.getLabel(), marker);
                }
            }
            if (Markers.containsKey(markerlabel)) {
                Marker marker = Markers.get(markerlabel);
                World world = Bukkit.getWorld(marker.getWorld());
                double x = marker.getX();
                double y = marker.getY();
                double z = marker.getZ();
                Location loc = new Location(world, x, y, z);
                loc.add(0.5f, 0f, 0.5f);
                player.teleport(loc);
                TitleAPI.sendTitle(player, 2, 5, 2, "", ChatColor.AQUA + "You have been teleported to " + markerlabel + "!");
                DiscordSend("*[" + player.getName() + ": " + player.getName() + " to " + markerlabel + "]*");
                Bukkit.broadcastMessage(ChatColor.GRAY + "[" + ChatColor.ITALIC + player.getName() + ChatColor.GRAY + ": " + ChatColor.ITALIC + player.getName() + ChatColor.GRAY + " は " + ChatColor.ITALIC + markerlabel + ChatColor.GRAY + " にワープしました]");
                return true;
            } else {
                // 見つからなかった
                SendMessage(sender, cmd, "指定されたマーカー「" + markerlabel + "」は見つかりませんでした。");
                SendMessage(sender, cmd, "マーカー名は大文字小文字を区別します。もう一度間違っていないか確認してください。");
                return true;
            }
        }
    } else if (args.length == 2) {
        if (args[0].equalsIgnoreCase("add")) {
            // 二つではaddは使えない
            SendMessage(sender, cmd, "マーカーの追加には/dt add <MarkerName> <MarkerType>を使用します。");
            return true;
        } else if (args[0].equalsIgnoreCase("del")) {
            // マーカーの削除
            // /dt del <MarkerName>
            String markerlabel = args[1];
            Map<String, Marker> Markers = new HashMap<>();
            for (MarkerSet markerset : markerapi.getMarkerSets()) {
                for (Marker marker : markerset.getMarkers()) {
                    Markers.put(marker.getLabel(), marker);
                }
            }
            if (Markers.containsKey(markerlabel)) {
                Marker marker = Markers.get(markerlabel);
                String world = marker.getWorld();
                double x = marker.getX();
                double y = marker.getY();
                double z = marker.getZ();
                marker.deleteMarker();
                SendMessage(sender, cmd, "マーカー「" + markerlabel + "(" + world + ", " + x + ", " + y + ", " + z + ")」を削除しました。");
                return true;
            } else {
                // 見つからなかった
                SendMessage(sender, cmd, "指定されたマーカー「" + markerlabel + "」は見つかりませんでした。");
                SendMessage(sender, cmd, "マーカー名は大文字小文字を区別します。もう一度間違っていないか確認してください。");
                return true;
            }
        } else if (args[0].equalsIgnoreCase("list")) {
            Set<Marker> Markers = new HashSet<Marker>();
            for (MarkerSet markerset : markerapi.getMarkerSets()) {
                for (Marker marker : markerset.getMarkers()) {
                    Markers.add(marker);
                }
            }
            if (!isNumber(args[1])) {
                SendMessage(sender, cmd, "指定されたページは数値ではありません。");
                return true;
            }
            int count = 0;
            int page = Integer.parseInt(args[1]);
            int startcount = (page - 1) * 10;
            int endcount = page * 10;
            int maxpage = (Markers.size() / 10) + 1;
            if (page < 0) {
                SendMessage(sender, cmd, "表示できるマーカーがありません。");
                return true;
            } else if (startcount >= Markers.size()) {
                SendMessage(sender, cmd, "表示できるマーカーがありません。");
                return true;
            }
            SendMessage(sender, cmd, "Marker List: " + page + "page / " + maxpage + "page");
            SendMessage(sender, cmd, "-------------------------");
            for (Marker marker : Markers) {
                if (count <= startcount) {
                    count++;
                    continue;
                }
                if (count > endcount) {
                    break;
                }
                SendMessage(sender, cmd, "[" + count + "|" + marker.getWorld() + "/" + marker.getMarkerSet().getMarkerSetLabel() + "]" + marker.getLabel() + " X:" + marker.getX() + " Y:" + marker.getY() + " Z:" + marker.getY());
                count++;
            }
            SendMessage(sender, cmd, "-------------------------");
            SendMessage(sender, cmd, startcount + " - " + endcount + " / " + Markers.size());
            if (page != maxpage) {
                SendMessage(sender, cmd, "次のページを見るには「/dt list " + (page + 1) + "」を実行します。");
            }
            return true;
        } else {
            // addとかdelとか以外 => プレイヤー名?
            // /dt <Player> <MarkerName>
            String playername = args[0];
            Player player = Bukkit.getPlayerExact(playername);
            if (player == null) {
                SendMessage(sender, cmd, "指定されたプレイヤー「" + playername + "」は見つかりませんでした。");
                Player any_chance_player = Bukkit.getPlayer(playername);
                if (any_chance_player != null) {
                    SendMessage(sender, cmd, "もしかして: " + any_chance_player.getName());
                }
                return true;
            }
            String markerlabel = args[1];
            Map<String, Marker> Markers = new HashMap<>();
            for (MarkerSet markerset : markerapi.getMarkerSets()) {
                for (Marker marker : markerset.getMarkers()) {
                    Markers.put(marker.getLabel(), marker);
                }
            }
            if (Markers.containsKey(markerlabel)) {
                Marker marker = Markers.get(markerlabel);
                World world = Bukkit.getWorld(marker.getWorld());
                double x = marker.getX();
                double y = marker.getY();
                double z = marker.getZ();
                Location loc = new Location(world, x, y, z);
                loc.add(0.5f, 0f, 0.5f);
                player.teleport(loc);
                TitleAPI.sendTitle(player, 2, 5, 2, "", ChatColor.AQUA + "You have been teleported to " + markerlabel + "!");
                DiscordSend("*[" + sender.getName() + ": " + player.getName() + " to " + markerlabel + "]*");
                Bukkit.broadcastMessage(ChatColor.GRAY + "[" + ChatColor.ITALIC + sender.getName() + ChatColor.GRAY + ": " + ChatColor.ITALIC + player.getName() + ChatColor.GRAY + " は " + ChatColor.ITALIC + markerlabel + ChatColor.GRAY + " にワープしました]");
                return true;
            } else {
                // 見つからなかった
                SendMessage(sender, cmd, "指定されたマーカー「" + markerlabel + "」は見つかりませんでした。");
                SendMessage(sender, cmd, "マーカー名は大文字小文字を区別します。もう一度間違っていないか確認してください。");
                return true;
            }
        }
    } else if (args.length >= 3) {
        if (args[0].equalsIgnoreCase("add")) {
            // マーカーの追加
            if (!(sender instanceof Player)) {
                SendMessage(sender, cmd, "このコマンドはサーバ内から実行可能です。");
                return true;
            }
            Player player = (Player) sender;
            Location loc = player.getLocation();
            String markerlabel = args[1];
            String markertype = args[2];
            Map<String, MarkerSet> MarkersTypes = new HashMap<>();
            for (MarkerSet markerset : markerapi.getMarkerSets()) {
                MarkersTypes.put(markerset.getMarkerSetLabel(), markerset);
            }
            if (!MarkersTypes.containsKey(markertype)) {
                // マーカータイプが見つからなかった
                SendMessage(sender, cmd, "指定されたマーカータイプ「" + markertype + "」は見つかりませんでした。");
                return true;
            }
            MarkerSet MarkerType = MarkersTypes.get(markertype);
            Map<String, Marker> Markers = new HashMap<>();
            for (MarkerSet markerset : markerapi.getMarkerSets()) {
                for (Marker marker : markerset.getMarkers()) {
                    Markers.put(marker.getLabel(), marker);
                }
            }
            String MarkerIconDef = MarkerIcon.DEFAULT;
            MarkerIcon markericondef = null;
            for (MarkerIcon icon : markerapi.getMarkerIcons()) {
                if (icon.getMarkerIconID().equals(MarkerIconDef)) {
                    markericondef = icon;
                }
            }
            if (markericondef == null) {
                SendMessage(sender, cmd, "デフォルトマーカーアイコンが存在しませんでした。");
                return true;
            }
            Marker marker = MarkerType.createMarker(null, markerlabel, loc.getWorld().getName(), loc.getX(), loc.getY(), loc.getZ(), markericondef, true);
            if (marker == null) {
                SendMessage(sender, cmd, "指定されたマーカー「" + markerlabel + "」を作成できませんでした。");
                return true;
            }
            SendMessage(sender, cmd, "指定されたマーカー「" + markerlabel + "」を作成しました。");
            if (Markers.containsKey(markerlabel)) {
                SendMessage(sender, cmd, "ヒント: 同じMarkerNameのマーカーが他にもあるようです。");
                SendMessage(sender, cmd, "正常にテレポートできない可能性があります。");
                return true;
            }
            return true;
        } else {
            // addとかdelとか以外 => プレイヤー名?
            // /dt <Player> <MarkerName>
            String playername = args[0];
            Player player = Bukkit.getPlayerExact(playername);
            if (player == null) {
                SendMessage(sender, cmd, "指定されたプレイヤー「" + playername + "」は見つかりませんでした。");
                Player any_chance_player = Bukkit.getPlayer(playername);
                if (any_chance_player != null) {
                    SendMessage(sender, cmd, "もしかして: " + any_chance_player.getName());
                }
                return true;
            }
            String markerlabel = "";
            int c = 1;
            while (args.length > c) {
                markerlabel += args[c];
                if (args.length != (c + 1)) {
                    markerlabel += " ";
                }
                c++;
            }
            Map<String, Marker> Markers = new HashMap<>();
            for (MarkerSet markerset : markerapi.getMarkerSets()) {
                for (Marker marker : markerset.getMarkers()) {
                    Markers.put(marker.getLabel(), marker);
                }
            }
            if (Markers.containsKey(markerlabel)) {
                Marker marker = Markers.get(markerlabel);
                World world = Bukkit.getWorld(marker.getWorld());
                double x = marker.getX();
                double y = marker.getY();
                double z = marker.getZ();
                Location loc = new Location(world, x, y, z);
                loc.add(0.5f, 0f, 0.5f);
                player.teleport(loc);
                TitleAPI.sendTitle(player, 2, 5, 2, "", ChatColor.AQUA + "You have been teleported to " + markerlabel + "!");
                DiscordSend("*[" + sender.getName() + ": " + player.getName() + " to " + markerlabel + "]*");
                Bukkit.broadcastMessage(ChatColor.GRAY + "[" + ChatColor.ITALIC + sender.getName() + ChatColor.GRAY + ": " + ChatColor.ITALIC + player.getName() + ChatColor.GRAY + " は " + ChatColor.ITALIC + markerlabel + ChatColor.GRAY + " にワープしました]");
                return true;
            } else {
                // 見つからなかった
                SendMessage(sender, cmd, "指定されたマーカー「" + markerlabel + "」は見つかりませんでした。");
                SendMessage(sender, cmd, "マーカー名は大文字小文字を区別します。もう一度間違っていないか確認してください。");
                return true;
            }
        }
    }
    SendUsageMessage(sender, cmd);
    return true;
}
Also used : MarkerSet(org.dynmap.markers.MarkerSet) Player(org.bukkit.entity.Player) DynmapAPI(org.dynmap.DynmapAPI) MarkerSet(org.dynmap.markers.MarkerSet) Set(java.util.Set) HashSet(java.util.HashSet) HashMap(java.util.HashMap) MarkerAPI(org.dynmap.markers.MarkerAPI) Marker(org.dynmap.markers.Marker) World(org.bukkit.World) MarkerIcon(org.dynmap.markers.MarkerIcon) HashMap(java.util.HashMap) Map(java.util.Map) Plugin(org.bukkit.plugin.Plugin) JavaPlugin(org.bukkit.plugin.java.JavaPlugin) HashSet(java.util.HashSet) Location(org.bukkit.Location)

Example 2 with MarkerIcon

use of org.dynmap.markers.MarkerIcon in project MagicPlugin by elBukkit.

the class DynmapController method addMarker.

public boolean addMarker(String id, String group, String title, String world, int x, int y, int z, String description) {
    boolean created = false;
    if (dynmap != null && dynmap.markerAPIInitialized()) {
        MarkerAPI markers = dynmap.getMarkerAPI();
        MarkerSet markerSet = markers.getMarkerSet(group);
        if (markerSet == null) {
            markerSet = markers.createMarkerSet(group, group, null, false);
        }
        MarkerIcon wandIcon = markers.getMarkerIcon("wand");
        if (wandIcon == null) {
            wandIcon = markers.createMarkerIcon("wand", "Wand", plugin.getResource("wand_icon32.png"));
        }
        Marker marker = markerSet.findMarker(id);
        if (marker == null) {
            created = true;
            marker = markerSet.createMarker(id, title, world, x, y, z, wandIcon, false);
        } else {
            marker.setLocation(world, x, y, z);
            marker.setLabel(title);
        }
        if (description != null) {
            marker.setDescription(description);
        }
    }
    return created;
}
Also used : MarkerSet(org.dynmap.markers.MarkerSet) MarkerAPI(org.dynmap.markers.MarkerAPI) MarkerIcon(org.dynmap.markers.MarkerIcon) Marker(org.dynmap.markers.Marker) PolyLineMarker(org.dynmap.markers.PolyLineMarker) CircleMarker(org.dynmap.markers.CircleMarker)

Aggregations

Marker (org.dynmap.markers.Marker)2 MarkerAPI (org.dynmap.markers.MarkerAPI)2 MarkerIcon (org.dynmap.markers.MarkerIcon)2 MarkerSet (org.dynmap.markers.MarkerSet)2 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 Map (java.util.Map)1 Set (java.util.Set)1 Location (org.bukkit.Location)1 World (org.bukkit.World)1 Player (org.bukkit.entity.Player)1 Plugin (org.bukkit.plugin.Plugin)1 JavaPlugin (org.bukkit.plugin.java.JavaPlugin)1 DynmapAPI (org.dynmap.DynmapAPI)1 CircleMarker (org.dynmap.markers.CircleMarker)1 PolyLineMarker (org.dynmap.markers.PolyLineMarker)1