mirror of
https://github.com/ColdeZhang/Dominion.git
synced 2025-02-05 02:59:27 +08:00
新增dynmap支持
This commit is contained in:
parent
fb1736e0f2
commit
23eb35c8b3
12
pom.xml
12
pom.xml
@ -6,7 +6,7 @@
|
||||
|
||||
<groupId>cn.lunadeer</groupId>
|
||||
<artifactId>Dominion</artifactId>
|
||||
<version>1.35.9-beta</version>
|
||||
<version>1.35.9-dynmap-beta</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>Dominion</name>
|
||||
@ -70,6 +70,10 @@
|
||||
<id>lunadeer-repo</id>
|
||||
<url>https://ssl.lunadeer.cn:14454/repository/maven-snapshots/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>MikeRepo</id>
|
||||
<url>https://repo.mikeprimm.com/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
@ -95,5 +99,11 @@
|
||||
<artifactId>snakeyaml</artifactId>
|
||||
<version>2.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>us.dynmap</groupId>
|
||||
<artifactId>dynmap-api</artifactId>
|
||||
<version>3.4-beta-3</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
@ -1,6 +1,8 @@
|
||||
package cn.lunadeer.dominion;
|
||||
|
||||
import cn.lunadeer.dominion.dtos.*;
|
||||
import cn.lunadeer.dominion.utils.BlueMapConnect;
|
||||
import cn.lunadeer.dominion.utils.MapRender;
|
||||
import cn.lunadeer.dominion.utils.ResMigration;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import cn.lunadeer.minecraftpluginutils.ParticleRender;
|
||||
@ -90,7 +92,7 @@ public class Cache {
|
||||
count = 1;
|
||||
}
|
||||
}
|
||||
BlueMapConnect.render();
|
||||
MapRender.render();
|
||||
recheckPlayerState = true;
|
||||
_last_update_dominion.set(System.currentTimeMillis());
|
||||
XLogger.debug("loadDominionsExecution cost: %d ms for %d dominions"
|
||||
|
@ -1,11 +1,13 @@
|
||||
package cn.lunadeer.dominion;
|
||||
|
||||
import cn.lunadeer.dominion.dtos.PrivilegeTemplateDTO;
|
||||
import cn.lunadeer.dominion.events.EnvironmentEvents;
|
||||
import cn.lunadeer.dominion.events.PlayerEvents;
|
||||
import cn.lunadeer.dominion.events.SelectPointEvents;
|
||||
import cn.lunadeer.dominion.managers.ConfigManager;
|
||||
import cn.lunadeer.dominion.managers.DatabaseTables;
|
||||
import cn.lunadeer.dominion.utils.BlueMapConnect;
|
||||
import cn.lunadeer.dominion.utils.DynmapConnect;
|
||||
import cn.lunadeer.dominion.utils.MapRender;
|
||||
import cn.lunadeer.minecraftpluginutils.*;
|
||||
import cn.lunadeer.minecraftpluginutils.databse.DatabaseManager;
|
||||
import cn.lunadeer.minecraftpluginutils.databse.DatabaseType;
|
||||
@ -13,6 +15,7 @@ import cn.lunadeer.minecraftpluginutils.scui.CuiManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.dynmap.DynmapCommonAPIListener;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@ -72,7 +75,8 @@ public final class Dominion extends JavaPlugin {
|
||||
XLogger.info(" |_____/ \\___/|_| |_| |_|_|_| |_|_|\\___/|_| |_|");
|
||||
XLogger.info(" ");
|
||||
|
||||
Scheduler.runTaskLaterAsync(BlueMapConnect::render, 40 * 20);
|
||||
if (config.getDynmap()) DynmapCommonAPIListener.register(new DynmapConnect()); // 注册 Dynmap API
|
||||
Scheduler.runTaskLaterAsync(MapRender::render, 40 * 20);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,9 +1,10 @@
|
||||
package cn.lunadeer.dominion.commands;
|
||||
|
||||
import cn.lunadeer.dominion.BlueMapConnect;
|
||||
import cn.lunadeer.dominion.utils.BlueMapConnect;
|
||||
import cn.lunadeer.dominion.Cache;
|
||||
import cn.lunadeer.dominion.Dominion;
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.utils.MapRender;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import cn.lunadeer.minecraftpluginutils.Scheduler;
|
||||
import cn.lunadeer.minecraftpluginutils.XLogger;
|
||||
@ -104,7 +105,7 @@ public class Operator {
|
||||
Notification.error(sender, e.getMessage());
|
||||
}
|
||||
}
|
||||
BlueMapConnect.renderMCA(mca_cords);
|
||||
MapRender.renderMCA(mca_cords);
|
||||
Notification.info(sender, "MCA文件列表已导出到 %s", folder.getAbsolutePath());
|
||||
});
|
||||
}
|
||||
|
@ -433,4 +433,8 @@ public class DominionDTO {
|
||||
public String getColor() {
|
||||
return (String) color.value;
|
||||
}
|
||||
|
||||
public int getColorHex() {
|
||||
return (getColorR() << 16) + (getColorG() << 8) + getColorB();
|
||||
}
|
||||
}
|
||||
|
@ -48,7 +48,8 @@ public class ConfigManager {
|
||||
XLogger.err("Limit.SizeZ 尺寸不能小于 4,已重置为 128");
|
||||
setLimitSizeZ(128);
|
||||
}
|
||||
_blue_map = _file.getBoolean("BlueMap", true);
|
||||
_blue_map = _file.getBoolean("BlueMap", false);
|
||||
_dynmap = _file.getBoolean("Dynmap", false);
|
||||
_auto_clean_after_days = _file.getInt("AutoCleanAfterDays", 180);
|
||||
if (_auto_clean_after_days == 0) {
|
||||
XLogger.err("AutoCleanAfterDays 不能等于 0,已重置为 180");
|
||||
@ -98,6 +99,7 @@ public class ConfigManager {
|
||||
_file.set("Limit.SizeY", _limit_size_y);
|
||||
_file.set("Limit.SizeZ", _limit_size_z);
|
||||
_file.set("BlueMap", _blue_map);
|
||||
_file.set("Dynmap", _dynmap);
|
||||
_file.set("AutoCleanAfterDays", _auto_clean_after_days);
|
||||
_file.set("Limit.MinY", _limit_min_y);
|
||||
_file.set("Limit.MaxY", _limit_max_y);
|
||||
@ -220,10 +222,8 @@ public class ConfigManager {
|
||||
return _blue_map;
|
||||
}
|
||||
|
||||
public void setBlueMap(Boolean blue_map) {
|
||||
_blue_map = blue_map;
|
||||
_file.set("BlueMap", blue_map);
|
||||
_plugin.saveConfig();
|
||||
public Boolean getDynmap() {
|
||||
return _dynmap;
|
||||
}
|
||||
|
||||
public Integer getAutoCleanAfterDays() {
|
||||
@ -423,6 +423,7 @@ public class ConfigManager {
|
||||
private Boolean _limit_op_bypass;
|
||||
|
||||
private Boolean _blue_map;
|
||||
private Boolean _dynmap;
|
||||
private Integer _auto_clean_after_days;
|
||||
private Integer _limit_min_y;
|
||||
private Integer _limit_max_y;
|
||||
|
@ -1,5 +1,7 @@
|
||||
package cn.lunadeer.dominion;
|
||||
package cn.lunadeer.dominion.utils;
|
||||
|
||||
import cn.lunadeer.dominion.Cache;
|
||||
import cn.lunadeer.dominion.Dominion;
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.minecraftpluginutils.Scheduler;
|
||||
import cn.lunadeer.minecraftpluginutils.XLogger;
|
||||
@ -15,9 +17,6 @@ import java.util.*;
|
||||
|
||||
public class BlueMapConnect {
|
||||
public static void render() {
|
||||
if (!Dominion.config.getBlueMap()) {
|
||||
return;
|
||||
}
|
||||
Scheduler.runTaskAsync(() -> {
|
||||
try {
|
||||
BlueMapAPI.getInstance().ifPresent(api -> {
|
||||
@ -76,9 +75,6 @@ public class BlueMapConnect {
|
||||
}
|
||||
|
||||
public static void renderMCA(Map<String, List<String>> mca_files) {
|
||||
if (!Dominion.config.getBlueMap()) {
|
||||
return;
|
||||
}
|
||||
Scheduler.runTaskAsync(() -> {
|
||||
try {
|
||||
BlueMapAPI.getInstance().ifPresent(api -> {
|
88
src/main/java/cn/lunadeer/dominion/utils/DynmapConnect.java
Normal file
88
src/main/java/cn/lunadeer/dominion/utils/DynmapConnect.java
Normal file
@ -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 = "<div>" + dominion.getName() + "</div>";
|
||||
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<DominionDTO> dominions) {
|
||||
Scheduler.runTaskAsync(() -> {
|
||||
for (DominionDTO dominion : dominions) {
|
||||
this.setDominionMarker(dominion);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void setMCAMarkers(Map<String, List<String>> mca_files) {
|
||||
Scheduler.runTaskAsync(() -> {
|
||||
for (Map.Entry<String, List<String>> 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 = "<div>" + file + "</div>";
|
||||
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);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
31
src/main/java/cn/lunadeer/dominion/utils/MapRender.java
Normal file
31
src/main/java/cn/lunadeer/dominion/utils/MapRender.java
Normal file
@ -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<String, List<String>> mca_files) {
|
||||
if (Dominion.config.getBlueMap()) {
|
||||
BlueMapConnect.renderMCA(mca_files);
|
||||
}
|
||||
|
||||
if (Dominion.config.getDynmap()) {
|
||||
DynmapConnect.instance.setMCAMarkers(mca_files);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -52,7 +52,8 @@ FlyPermissionNodes:
|
||||
# 是否允许玩家从 Residence 迁移领地数据
|
||||
ResidenceMigration: false
|
||||
|
||||
BlueMap: true
|
||||
BlueMap: false
|
||||
Dynmap: false
|
||||
|
||||
CheckUpdate: true
|
||||
|
||||
|
@ -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: 领地插件命令
|
||||
|
Loading…
Reference in New Issue
Block a user