> mca_files) {
- if (!Dominion.config.getBlueMap()) {
- return;
- }
Scheduler.runTaskAsync(() -> {
try {
BlueMapAPI.getInstance().ifPresent(api -> {
diff --git a/src/main/java/cn/lunadeer/dominion/utils/DynmapConnect.java b/src/main/java/cn/lunadeer/dominion/utils/DynmapConnect.java
new file mode 100644
index 0000000..865fe44
--- /dev/null
+++ b/src/main/java/cn/lunadeer/dominion/utils/DynmapConnect.java
@@ -0,0 +1,88 @@
+package cn.lunadeer.dominion.utils;
+
+import cn.lunadeer.dominion.dtos.DominionDTO;
+import cn.lunadeer.minecraftpluginutils.Scheduler;
+import cn.lunadeer.minecraftpluginutils.XLogger;
+import com.flowpowered.math.vector.Vector2d;
+import de.bluecolored.bluemap.api.math.Shape;
+import org.dynmap.DynmapCommonAPI;
+import org.dynmap.DynmapCommonAPIListener;
+import org.dynmap.markers.AreaMarker;
+import org.dynmap.markers.MarkerAPI;
+import org.dynmap.markers.MarkerSet;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+public class DynmapConnect extends DynmapCommonAPIListener {
+
+ public static DynmapConnect instance;
+
+ private MarkerSet markerSet;
+
+ @Override
+ public void apiEnabled(DynmapCommonAPI dynmapCommonAPI) {
+ MarkerAPI markerAPI = dynmapCommonAPI.getMarkerAPI();
+ this.markerSet = markerAPI.getMarkerSet("dominion");
+ if (this.markerSet == null) {
+ this.markerSet = markerAPI.createMarkerSet("dominion", "Dominion领地", null, false);
+ }
+ }
+
+ public void setDominionMarker(DominionDTO dominion) {
+ String nameLabel = "" + dominion.getName() + "
";
+ double[] xx = {dominion.getX1(), dominion.getX2()};
+ double[] zz = {dominion.getZ1(), dominion.getZ2()};
+ AreaMarker marker = this.markerSet.createAreaMarker(
+ dominion.getId().toString(),
+ nameLabel,
+ true,
+ dominion.getWorld(),
+ xx,
+ zz,
+ false
+ );
+ marker.setFillStyle(0.2, dominion.getColorHex());
+ marker.setLineStyle(1, 0.8, dominion.getColorHex());
+ XLogger.debug("Add dominion marker: " + dominion.getName());
+ }
+
+ public void setDominionMarkers(List dominions) {
+ Scheduler.runTaskAsync(() -> {
+ for (DominionDTO dominion : dominions) {
+ this.setDominionMarker(dominion);
+ }
+ });
+ }
+
+ public void setMCAMarkers(Map> mca_files) {
+ Scheduler.runTaskAsync(() -> {
+ for (Map.Entry> entry : mca_files.entrySet()) {
+ for (String file : entry.getValue()) {
+ String[] cords = file.split("\\.");
+ int world_x1 = Integer.parseInt(cords[1]) * 512;
+ int world_x2 = (Integer.parseInt(cords[1]) + 1) * 512;
+ int world_z1 = Integer.parseInt(cords[2]) * 512;
+ int world_z2 = (Integer.parseInt(cords[2]) + 1) * 512;
+ String nameLabel = "" + file + "
";
+ double[] xx = {world_x1, world_x2};
+ double[] zz = {world_z1, world_z2};
+ AreaMarker marker = this.markerSet.createAreaMarker(
+ file,
+ nameLabel,
+ true,
+ entry.getKey(),
+ xx,
+ zz,
+ false
+ );
+ marker.setFillStyle(0.2, 0x00CC00);
+ marker.setLineStyle(1, 0.8, 0x00CC00);
+ }
+ }
+ });
+ }
+
+}
diff --git a/src/main/java/cn/lunadeer/dominion/utils/MapRender.java b/src/main/java/cn/lunadeer/dominion/utils/MapRender.java
new file mode 100644
index 0000000..c2a9814
--- /dev/null
+++ b/src/main/java/cn/lunadeer/dominion/utils/MapRender.java
@@ -0,0 +1,31 @@
+package cn.lunadeer.dominion.utils;
+
+import cn.lunadeer.dominion.Cache;
+import cn.lunadeer.dominion.Dominion;
+
+import java.util.List;
+import java.util.Map;
+
+public class MapRender {
+
+ public static void render() {
+ if (Dominion.config.getBlueMap()) {
+ BlueMapConnect.render();
+ }
+
+ if (Dominion.config.getDynmap()) {
+ DynmapConnect.instance.setDominionMarkers(Cache.instance.getDominions());
+ }
+ }
+
+ public static void renderMCA(Map> mca_files) {
+ if (Dominion.config.getBlueMap()) {
+ BlueMapConnect.renderMCA(mca_files);
+ }
+
+ if (Dominion.config.getDynmap()) {
+ DynmapConnect.instance.setMCAMarkers(mca_files);
+ }
+ }
+
+}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index a30669e..aa6d258 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -52,7 +52,8 @@ FlyPermissionNodes:
# 是否允许玩家从 Residence 迁移领地数据
ResidenceMigration: false
-BlueMap: true
+BlueMap: false
+Dynmap: false
CheckUpdate: true
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 6aa760a..0ac2024 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -4,8 +4,9 @@ main: cn.lunadeer.dominion.Dominion
api-version: '1.20'
load: STARTUP
folia-supported: true
-loadbefore:
+softdepend:
- Vault
+ - dynmap
commands:
Dominion:
description: 领地插件命令