This repository has been archived on 2024-08-26. You can view files and clone it, but cannot push or open issues or pull requests.
Dominion/src/main/java/cn/lunadeer/dominion/BlueMapConnect.java

72 lines
3.5 KiB
Java
Raw Normal View History

2024-02-15 10:55:08 +08:00
package cn.lunadeer.dominion;
import cn.lunadeer.dominion.dtos.DominionDTO;
2024-02-16 16:44:19 +08:00
import cn.lunadeer.dominion.utils.XLogger;
2024-02-15 10:55:08 +08:00
import com.flowpowered.math.vector.Vector2d;
import de.bluecolored.bluemap.api.BlueMapAPI;
import de.bluecolored.bluemap.api.BlueMapMap;
import de.bluecolored.bluemap.api.markers.ExtrudeMarker;
import de.bluecolored.bluemap.api.markers.MarkerSet;
import de.bluecolored.bluemap.api.math.Color;
import de.bluecolored.bluemap.api.math.Shape;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
public class BlueMapConnect {
public static void render() {
if (!Dominion.config.getBlueMap()) {
return;
}
2024-02-16 16:44:19 +08:00
try {
BlueMapAPI.getInstance().ifPresent(api -> {
for (Map.Entry<String, List<Integer>> world_dominions : Cache.instance.getWorldDominions().entrySet()) {
api.getWorld(world_dominions.getKey()).ifPresent(world -> {
MarkerSet markerSet = MarkerSet.builder()
.label("Dominion")
.build();
2024-02-15 10:55:08 +08:00
2024-02-16 16:44:19 +08:00
for (Integer id : world_dominions.getValue()) {
DominionDTO dominion = Cache.instance.getDominion(id);
Collection<Vector2d> vectors = new ArrayList<>();
vectors.add(new Vector2d(dominion.getX1() + 0.001, dominion.getZ1() + 0.001));
vectors.add(new Vector2d(dominion.getX2() - 0.001, dominion.getZ1() + 0.001));
vectors.add(new Vector2d(dominion.getX2() - 0.001, dominion.getZ2() - 0.001));
vectors.add(new Vector2d(dominion.getX1() + 0.001, dominion.getZ2() - 0.001));
2024-02-16 16:44:19 +08:00
Shape shape = new Shape(vectors);
double x = vectors.iterator().next().getX();
double z = vectors.iterator().next().getY();
double y = dominion.getY1();
2024-02-15 10:55:08 +08:00
2024-02-16 16:44:19 +08:00
Color line = new Color(0, 191, 255, 0.8F);
Color fill = new Color(0, 191, 255, 0.2F);
if (dominion.getParentDomId() != -1) { // for children dominion
line = new Color(240, 230, 140, 0.8F);
fill = new Color(240, 230, 140, 0.2F);
}
ExtrudeMarker marker = ExtrudeMarker.builder()
.label(dominion.getName())
.position(x, y, z)
.shape(shape, dominion.getY1() + 0.001f, dominion.getY2() - 0.001f)
2024-02-16 16:44:19 +08:00
.lineColor(line)
.fillColor(fill)
.build();
markerSet.getMarkers()
.put(dominion.getName(), marker);
2024-02-15 10:55:08 +08:00
}
2024-02-16 16:44:19 +08:00
for (BlueMapMap map : world.getMaps()) {
map.getMarkerSets().put(world_dominions.getKey() + "-" + markerSet.getLabel(), markerSet);
}
});
}
});
} catch (NoClassDefFoundError e) {
XLogger.warn("无法连接 BlueMap 插件,如果你不打算使用卫星地图渲染建议前往配置文件关闭此功能以避免下方的报错。");
XLogger.err(e.getMessage());
}
2024-02-15 10:55:08 +08:00
}
}