mirror of
https://github.com/ColdeZhang/Dominion.git
synced 2024-10-18 21:16:45 +08:00
Compare commits
27 Commits
v2.11.0-be
...
master
Author | SHA1 | Date | |
---|---|---|---|
11123822e4 | |||
3f6b7c8a92 | |||
3b09e6c885 | |||
2d2fb9a233 | |||
8e490ec57a | |||
f1116fa281 | |||
dcf39f4097 | |||
76a9b27ebd | |||
1b48eba6c7 | |||
01b329a3e7 | |||
7fff24dacf | |||
8e251504fa | |||
5732fe0182 | |||
a53733a0fb | |||
5734c97a58 | |||
a86ce4624f | |||
6f4d716d95 | |||
9017402d06 | |||
af7c4ad6b2 | |||
6e57cada94 | |||
d287b611ad | |||
7046ef0391 | |||
9eb69a4ecc | |||
7f4ed745d7 | |||
7bf81b753d | |||
086e468f03 | |||
e0e713c097 |
@ -13,6 +13,12 @@ jobs:
|
|||||||
uses: https://ssl.lunadeer.cn:14446/actions/checkout@v3
|
uses: https://ssl.lunadeer.cn:14446/actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
- name: "Set up JDK 17"
|
||||||
|
uses: https://ssl.lunadeer.cn:14446/actions/setup-java@v3
|
||||||
|
with:
|
||||||
|
java-version: '17'
|
||||||
|
distribution: 'zulu'
|
||||||
|
cache: gradle
|
||||||
- name: "Set up JDK 21"
|
- name: "Set up JDK 21"
|
||||||
uses: https://ssl.lunadeer.cn:14446/actions/setup-java@v3
|
uses: https://ssl.lunadeer.cn:14446/actions/setup-java@v3
|
||||||
with:
|
with:
|
||||||
@ -21,9 +27,13 @@ jobs:
|
|||||||
cache: gradle
|
cache: gradle
|
||||||
- name: "Build with Gradle"
|
- name: "Build with Gradle"
|
||||||
run: |
|
run: |
|
||||||
./gradlew buildPlugin
|
./gradlew clean
|
||||||
- name: "Copy jar to staging"
|
./gradlew shadowJar -PBuildFull=false
|
||||||
run: mkdir staging && cp build/libs/*.jar staging/
|
./gradlew shadowJar -PBuildFull=true
|
||||||
|
- name: "Stage"
|
||||||
|
run: |
|
||||||
|
mkdir -p staging
|
||||||
|
mv build/libs/*.jar staging/
|
||||||
- name: "Build & test"
|
- name: "Build & test"
|
||||||
run: |
|
run: |
|
||||||
echo "done!"
|
echo "done!"
|
||||||
@ -36,7 +46,7 @@ jobs:
|
|||||||
- name: "Release"
|
- name: "Release"
|
||||||
uses: https://ssl.lunadeer.cn:14446/zhangyuheng/release-action@main
|
uses: https://ssl.lunadeer.cn:14446/zhangyuheng/release-action@main
|
||||||
with:
|
with:
|
||||||
note: " - 带 `original-` 前缀的文件无法用于运行,请下载不带此前缀的版本。"
|
note: " - `full` 后缀包含所有依赖直接安装即可使用,`lite` 后缀不包含任何依赖,会在第一次安装后启动时自动下载"
|
||||||
files: |-
|
files: |-
|
||||||
staging/*.jar
|
staging/*.jar
|
||||||
api_key: '${{secrets.RELEASE_TOKEN}}'
|
api_key: '${{secrets.RELEASE_TOKEN}}'
|
15
.github/workflows/main.yml
vendored
15
.github/workflows/main.yml
vendored
@ -19,10 +19,14 @@ jobs:
|
|||||||
distribution: 'zulu'
|
distribution: 'zulu'
|
||||||
cache: gradle
|
cache: gradle
|
||||||
- name: "Build with Gradle"
|
- name: "Build with Gradle"
|
||||||
run: ./gradlew buildPlugin
|
|
||||||
- name: "Copy jar to staging"
|
|
||||||
run: |
|
run: |
|
||||||
mkdir staging && cp build/libs/*.jar staging/
|
./gradlew clean
|
||||||
|
./gradlew shadowJar -PBuildFull=false
|
||||||
|
./gradlew shadowJar -PBuildFull=true
|
||||||
|
- name: "Stage"
|
||||||
|
run: |
|
||||||
|
mkdir -p staging
|
||||||
|
mv build/libs/*.jar staging/
|
||||||
- name: "Build & test"
|
- name: "Build & test"
|
||||||
run: |
|
run: |
|
||||||
TAG=$(echo $GITHUB_REF | sed 's/refs\/tags\///')
|
TAG=$(echo $GITHUB_REF | sed 's/refs\/tags\///')
|
||||||
@ -46,7 +50,7 @@ jobs:
|
|||||||
game_versions: 1.20.1:1.20.6,1.21,1.21.1
|
game_versions: 1.20.1:1.20.6,1.21,1.21.1
|
||||||
version_number: ${{ env.AUTOMATIC_RELEASES_TAG }}
|
version_number: ${{ env.AUTOMATIC_RELEASES_TAG }}
|
||||||
files: |
|
files: |
|
||||||
staging/*.jar
|
staging/*-lite.jar
|
||||||
changelog: "See https://github.com/ColdeZhang/Dominion/releases/tag/${{ env.AUTOMATIC_RELEASES_TAG }}"
|
changelog: "See https://github.com/ColdeZhang/Dominion/releases/tag/${{ env.AUTOMATIC_RELEASES_TAG }}"
|
||||||
version_type: beta
|
version_type: beta
|
||||||
featured: false
|
featured: false
|
||||||
@ -55,5 +59,4 @@ jobs:
|
|||||||
- name: "Hangar Release"
|
- name: "Hangar Release"
|
||||||
env:
|
env:
|
||||||
HANGAR_TOKEN: ${{ secrets.HANGAR_API_TOKEN }}
|
HANGAR_TOKEN: ${{ secrets.HANGAR_API_TOKEN }}
|
||||||
run: ./gradlew build publishPluginPublicationToHangar --stacktrace
|
run: ./gradlew build publishPluginPublicationToHangar -PBuildFull=false
|
||||||
continue-on-error: true
|
|
||||||
|
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[submodule "api"]
|
||||||
|
path = api
|
||||||
|
url = https://github.com/ColdeZhang/DominionAPI.git
|
@ -30,9 +30,6 @@ For detail functions and features of Dominion, you can view [Introduction](intro
|
|||||||
|
|
||||||
- 1.20.1+ (Bukkit、Spigot、Paper、Folia)
|
- 1.20.1+ (Bukkit、Spigot、Paper、Folia)
|
||||||
|
|
||||||
> You need to use Java21 to run your server. If you are still using Java17, you can safely replace it with Java21. In
|
|
||||||
> theory, version 1.20.1+ can be directly upgraded to Java21.
|
|
||||||
|
|
||||||
> Although this plugin supports Spigot, we strongly recommend that you upgrade your core to Paper or its forked (such as
|
> Although this plugin supports Spigot, we strongly recommend that you upgrade your core to Paper or its forked (such as
|
||||||
> Purpur) for a better performance experience.
|
> Purpur) for a better performance experience.
|
||||||
|
|
||||||
|
@ -29,9 +29,6 @@ Dominion 是一个完全开源、免费,专为高版本开发,面向未来
|
|||||||
|
|
||||||
- 1.20.1+ (Bukkit、Spigot、Paper、Folia)
|
- 1.20.1+ (Bukkit、Spigot、Paper、Folia)
|
||||||
|
|
||||||
> 需要使用 Java21 运行你的服务端,如果你还在使用 Java17 可以放心替换为 Java21,理论上 1.20.1+ 版本的服务端核心可以直接升级到
|
|
||||||
> Java21 启动。
|
|
||||||
|
|
||||||
> 虽然本插件支持 Spigot,但是我们强烈建议您将您的核心升级到 Paper 或其分支核心(如 Purpur)以获得更好的性能体验。
|
> 虽然本插件支持 Spigot,但是我们强烈建议您将您的核心升级到 Paper 或其分支核心(如 Purpur)以获得更好的性能体验。
|
||||||
|
|
||||||
## 帮助我们不断改进
|
## 帮助我们不断改进
|
||||||
|
1
api
Submodule
1
api
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 9a22a3e453ef0391741b6282a5b7f7219bfbbb0c
|
@ -1,42 +0,0 @@
|
|||||||
plugins {
|
|
||||||
id("java")
|
|
||||||
id("maven-publish")
|
|
||||||
}
|
|
||||||
|
|
||||||
java {
|
|
||||||
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
|
|
||||||
}
|
|
||||||
|
|
||||||
// utf-8
|
|
||||||
tasks.withType<JavaCompile> {
|
|
||||||
options.encoding = "UTF-8"
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
compileOnly("io.papermc.paper:paper-api:1.20.1-R0.1-SNAPSHOT")
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.jar {
|
|
||||||
archiveClassifier.set("sources")
|
|
||||||
}
|
|
||||||
|
|
||||||
publishing {
|
|
||||||
publications {
|
|
||||||
create<MavenPublication>("mavenJava") {
|
|
||||||
groupId = "cn.lunadeer"
|
|
||||||
artifactId = "DominionAPI"
|
|
||||||
version = "1.5-SNAPSHOT"
|
|
||||||
from(components["java"])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
repositories {
|
|
||||||
maven {
|
|
||||||
url = uri("https://ssl.lunadeer.cn:14454/repository/maven-snapshots/")
|
|
||||||
credentials {
|
|
||||||
// from m2 settings.xml
|
|
||||||
username = project.findProperty("nexusUsername")?.toString()
|
|
||||||
password = project.findProperty("nexusPassword")?.toString()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,19 +0,0 @@
|
|||||||
package cn.lunadeer.dominion.api;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
|
|
||||||
public class Dominion {
|
|
||||||
|
|
||||||
public static DominionAPI getInstance() throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException {
|
|
||||||
// 通过反射获取 Cache 类中的 instance 字段
|
|
||||||
var instanceField = Class.forName("cn.lunadeer.dominion.Cache").getDeclaredField("instance");
|
|
||||||
// 设置可访问
|
|
||||||
instanceField.setAccessible(true);
|
|
||||||
// 返回 Cache 的实例
|
|
||||||
return (DominionAPI) instanceField.get(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isDominionEnabled() {
|
|
||||||
return Bukkit.getPluginManager().isPluginEnabled("Dominion");
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,80 +0,0 @@
|
|||||||
package cn.lunadeer.dominion.api;
|
|
||||||
|
|
||||||
import cn.lunadeer.dominion.api.dtos.DominionDTO;
|
|
||||||
import cn.lunadeer.dominion.api.dtos.GroupDTO;
|
|
||||||
import cn.lunadeer.dominion.api.dtos.MemberDTO;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
public interface DominionAPI {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取所有领地信息
|
|
||||||
*
|
|
||||||
* @return 所有领地信息
|
|
||||||
*/
|
|
||||||
@NotNull List<DominionDTO> getAllDominions();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取玩家当前所在领地
|
|
||||||
*
|
|
||||||
* @param player 玩家
|
|
||||||
* @return 玩家当前所在领地 如果玩家不在任何领地内,则返回null
|
|
||||||
*/
|
|
||||||
@Nullable DominionDTO getPlayerCurrentDominion(@NotNull Player player);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取指定位置的领地信息
|
|
||||||
*
|
|
||||||
* @param loc 位置
|
|
||||||
* @return 领地信息 如果位置不在任何领地内,则返回null
|
|
||||||
*/
|
|
||||||
@Nullable DominionDTO getDominionByLoc(@NotNull Location loc);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据 ID 获取权限组对象
|
|
||||||
*
|
|
||||||
* @param id 权限组 ID
|
|
||||||
* @return 权限组对象 如果权限组不存在,则返回null
|
|
||||||
*/
|
|
||||||
@Nullable GroupDTO getGroup(@NotNull Integer id);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取玩家在指定领地的成员信息
|
|
||||||
*
|
|
||||||
* @param player 玩家
|
|
||||||
* @param dominion 领地
|
|
||||||
* @return 玩家在指定领地的成员信息 如果玩家不属于领地成员,则返回null
|
|
||||||
*/
|
|
||||||
@Nullable MemberDTO getMember(@NotNull Player player, @NotNull DominionDTO dominion);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取玩家在指定领地的成员信息
|
|
||||||
*
|
|
||||||
* @param player_uuid 玩家 UUID
|
|
||||||
* @param dominion 领地
|
|
||||||
* @return 玩家在指定领地的成员信息 如果玩家不属于领地成员,则返回null
|
|
||||||
*/
|
|
||||||
@Nullable MemberDTO getMember(@NotNull UUID player_uuid, @NotNull DominionDTO dominion);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取指定 ID 的领地信息
|
|
||||||
*
|
|
||||||
* @param id 领地 ID
|
|
||||||
* @return 领地信息 如果领地不存在,则返回null
|
|
||||||
*/
|
|
||||||
@Nullable DominionDTO getDominion(@NotNull Integer id);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取玩家当前正在使用的权限组称号
|
|
||||||
*
|
|
||||||
* @param uuid 玩家 UUID
|
|
||||||
* @return 权限组对象 如果玩家没有使用任何权限组,则返回null
|
|
||||||
*/
|
|
||||||
@Nullable GroupDTO getPlayerUsingGroupTitle(@NotNull UUID uuid);
|
|
||||||
}
|
|
@ -1,131 +0,0 @@
|
|||||||
package cn.lunadeer.dominion.api.dtos;
|
|
||||||
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.World;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
public interface DominionDTO {
|
|
||||||
/**
|
|
||||||
* 获取领地 ID
|
|
||||||
*
|
|
||||||
* @return 领地 ID
|
|
||||||
*/
|
|
||||||
Integer getId();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取领地所有者 UUID
|
|
||||||
*
|
|
||||||
* @return 领地所有者 UUID
|
|
||||||
*/
|
|
||||||
UUID getOwner();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取领地名称
|
|
||||||
*
|
|
||||||
* @return 领地名称
|
|
||||||
*/
|
|
||||||
String getName();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取领地所在世界
|
|
||||||
*
|
|
||||||
* @return 领地所在世界 如果世界不存在,则返回null
|
|
||||||
*/
|
|
||||||
@Nullable World getWorld();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取领地所在世界 UUID
|
|
||||||
*
|
|
||||||
* @return 领地所在世界 UUID
|
|
||||||
*/
|
|
||||||
UUID getWorldUid();
|
|
||||||
|
|
||||||
Integer getX1();
|
|
||||||
|
|
||||||
Integer getY1();
|
|
||||||
|
|
||||||
Integer getZ1();
|
|
||||||
|
|
||||||
Integer getX2();
|
|
||||||
|
|
||||||
Integer getY2();
|
|
||||||
|
|
||||||
Integer getZ2();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取领地面积
|
|
||||||
*
|
|
||||||
* @return 领地面积
|
|
||||||
*/
|
|
||||||
Integer getSquare();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取领地体积
|
|
||||||
*
|
|
||||||
* @return 领地体积
|
|
||||||
*/
|
|
||||||
Integer getVolume();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取领地X轴向(东西向)宽度
|
|
||||||
*
|
|
||||||
* @return 领地X轴向(东西向)宽度
|
|
||||||
*/
|
|
||||||
Integer getWidthX();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取领地Y轴向(上下向)高度
|
|
||||||
*
|
|
||||||
* @return 领地Y轴向(上下向)高度
|
|
||||||
*/
|
|
||||||
Integer getHeight();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取领地Z轴向(南北向)宽度
|
|
||||||
*
|
|
||||||
* @return 领地Z轴向(南北向)宽度
|
|
||||||
*/
|
|
||||||
Integer getWidthZ();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取父领地 ID
|
|
||||||
*
|
|
||||||
* @return 父领地 ID 如果没有父领地,则返回 -1
|
|
||||||
*/
|
|
||||||
Integer getParentDomId();
|
|
||||||
|
|
||||||
String getJoinMessage();
|
|
||||||
|
|
||||||
String getLeaveMessage();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取领地某个权限的值
|
|
||||||
*
|
|
||||||
* @param flag 权限
|
|
||||||
* @return 权限值
|
|
||||||
*/
|
|
||||||
Boolean getFlagValue(Flag flag);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取领地传送点坐标
|
|
||||||
*
|
|
||||||
* @return 领地传送点坐标 如果没有设置传送点,则返回null
|
|
||||||
*/
|
|
||||||
@Nullable Location getTpLocation();
|
|
||||||
|
|
||||||
Location getLocation1();
|
|
||||||
|
|
||||||
Location getLocation2();
|
|
||||||
|
|
||||||
int getColorR();
|
|
||||||
|
|
||||||
int getColorG();
|
|
||||||
|
|
||||||
int getColorB();
|
|
||||||
|
|
||||||
String getColor();
|
|
||||||
|
|
||||||
int getColorHex();
|
|
||||||
}
|
|
@ -1,40 +0,0 @@
|
|||||||
package cn.lunadeer.dominion.api.dtos;
|
|
||||||
|
|
||||||
public interface Flag {
|
|
||||||
/**
|
|
||||||
* 权限名称(英文)
|
|
||||||
*
|
|
||||||
* @return 权限名称
|
|
||||||
*/
|
|
||||||
String getFlagName();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 权限显示名称(中文)
|
|
||||||
* 该名称从languages文件中加载
|
|
||||||
*
|
|
||||||
* @return 权限显示名称
|
|
||||||
*/
|
|
||||||
String getDisplayName();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 权限描述
|
|
||||||
* 该描述从languages文件中加载
|
|
||||||
*
|
|
||||||
* @return 权限描述
|
|
||||||
*/
|
|
||||||
String getDescription();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取权限默认值
|
|
||||||
*
|
|
||||||
* @return 权限默认值
|
|
||||||
*/
|
|
||||||
Boolean getDefaultValue();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取权限是否启用
|
|
||||||
*
|
|
||||||
* @return 权限是否启用
|
|
||||||
*/
|
|
||||||
Boolean getEnable();
|
|
||||||
}
|
|
@ -1,55 +0,0 @@
|
|||||||
package cn.lunadeer.dominion.api.dtos;
|
|
||||||
|
|
||||||
import net.kyori.adventure.text.Component;
|
|
||||||
|
|
||||||
public interface GroupDTO {
|
|
||||||
/**
|
|
||||||
* 获取权限组 ID
|
|
||||||
*
|
|
||||||
* @return 权限组 ID
|
|
||||||
*/
|
|
||||||
Integer getId();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取权限组所属领地 ID
|
|
||||||
*
|
|
||||||
* @return 权限组所属领地 ID
|
|
||||||
*/
|
|
||||||
Integer getDomID();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取权限组名称
|
|
||||||
*
|
|
||||||
* @return 权限组名称
|
|
||||||
*/
|
|
||||||
String getName();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取权限组名称(带颜色) kyori.adventure.text.Component
|
|
||||||
*
|
|
||||||
* @return 权限组名称(带颜色)
|
|
||||||
*/
|
|
||||||
Component getNameColoredComponent();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取权限组名称(带颜色) Bukkit
|
|
||||||
*
|
|
||||||
* @return 权限组名称(带颜色)
|
|
||||||
*/
|
|
||||||
String getNameColoredBukkit();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取权限组是否为管理员组
|
|
||||||
*
|
|
||||||
* @return 是否为管理员组
|
|
||||||
*/
|
|
||||||
Boolean getAdmin();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取权限组某个权限配置
|
|
||||||
*
|
|
||||||
* @param flag 权限
|
|
||||||
* @return 权限配置值
|
|
||||||
*/
|
|
||||||
Boolean getFlagValue(Flag flag);
|
|
||||||
}
|
|
@ -1,48 +0,0 @@
|
|||||||
package cn.lunadeer.dominion.api.dtos;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
public interface MemberDTO {
|
|
||||||
/**
|
|
||||||
* 获取成员 ID
|
|
||||||
*
|
|
||||||
* @return 成员 ID
|
|
||||||
*/
|
|
||||||
Integer getId();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取成员 UUID
|
|
||||||
*
|
|
||||||
* @return 成员 UUID
|
|
||||||
*/
|
|
||||||
UUID getPlayerUUID();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 成员是否为管理员
|
|
||||||
*
|
|
||||||
* @return 是否为管理员
|
|
||||||
*/
|
|
||||||
Boolean getAdmin();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取成员所属领地 ID
|
|
||||||
*
|
|
||||||
* @return 领地 ID
|
|
||||||
*/
|
|
||||||
Integer getDomID();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取成员所属权限组 ID
|
|
||||||
*
|
|
||||||
* @return 权限组 ID 如果成员不属于任何权限组,则返回-1
|
|
||||||
*/
|
|
||||||
Integer getGroupId();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取成员某个权限配置
|
|
||||||
*
|
|
||||||
* @param flag 权限
|
|
||||||
* @return 权限配置值
|
|
||||||
*/
|
|
||||||
Boolean getFlagValue(Flag flag);
|
|
||||||
}
|
|
@ -6,11 +6,15 @@ plugins {
|
|||||||
id("io.papermc.hangar-publish-plugin") version "0.1.2"
|
id("io.papermc.hangar-publish-plugin") version "0.1.2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var BuildFull = properties["BuildFull"].toString() == "true"
|
||||||
|
var libraries = listOf<String>()
|
||||||
|
libraries = libraries + "cn.lunadeer:MinecraftPluginUtils:2.0.7"
|
||||||
|
|
||||||
group = "cn.lunadeer"
|
group = "cn.lunadeer"
|
||||||
version = "2.11.0-beta"
|
version = "2.14.1-beta"
|
||||||
|
|
||||||
java {
|
java {
|
||||||
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
|
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||||
}
|
}
|
||||||
|
|
||||||
// utf-8
|
// utf-8
|
||||||
@ -29,7 +33,6 @@ allprojects {
|
|||||||
maven("https://repo.papermc.io/repository/maven-public/")
|
maven("https://repo.papermc.io/repository/maven-public/")
|
||||||
maven("https://jitpack.io")
|
maven("https://jitpack.io")
|
||||||
maven("https://repo.mikeprimm.com/")
|
maven("https://repo.mikeprimm.com/")
|
||||||
maven("https://ssl.lunadeer.cn:14454/repository/maven-snapshots/")
|
|
||||||
maven("https://repo.extendedclip.com/content/repositories/placeholderapi/")
|
maven("https://repo.extendedclip.com/content/repositories/placeholderapi/")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,8 +41,15 @@ allprojects {
|
|||||||
compileOnly("us.dynmap:DynmapCoreAPI:3.4")
|
compileOnly("us.dynmap:DynmapCoreAPI:3.4")
|
||||||
compileOnly("me.clip:placeholderapi:2.11.6")
|
compileOnly("me.clip:placeholderapi:2.11.6")
|
||||||
|
|
||||||
implementation("cn.lunadeer:MinecraftPluginUtils:1.3.10-SNAPSHOT")
|
if (!BuildFull) {
|
||||||
implementation("org.yaml:snakeyaml:2.0")
|
libraries.forEach {
|
||||||
|
compileOnly(it)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
libraries.forEach {
|
||||||
|
implementation(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.processResources {
|
tasks.processResources {
|
||||||
@ -53,6 +63,15 @@ allprojects {
|
|||||||
filter {
|
filter {
|
||||||
it.replace("@version@", rootProject.version.toString())
|
it.replace("@version@", rootProject.version.toString())
|
||||||
}
|
}
|
||||||
|
if (!BuildFull) {
|
||||||
|
var libs = "libraries: ["
|
||||||
|
libraries.forEach {
|
||||||
|
libs += "$it,"
|
||||||
|
}
|
||||||
|
filter {
|
||||||
|
it.replace("libraries: [ ]", libs.substring(0, libs.length - 1) + "]")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,6 +79,8 @@ allprojects {
|
|||||||
archiveClassifier.set("")
|
archiveClassifier.set("")
|
||||||
archiveVersion.set(project.version.toString())
|
archiveVersion.set(project.version.toString())
|
||||||
dependsOn(tasks.withType<ProcessResources>())
|
dependsOn(tasks.withType<ProcessResources>())
|
||||||
|
// add -lite to the end of the file name if BuildLite is true or -full if BuildLite is false
|
||||||
|
archiveFileName.set("${project.name}-${project.version}${if (BuildFull) "-full" else "-lite"}.jar")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,7 +95,7 @@ tasks.shadowJar {
|
|||||||
archiveVersion.set(project.version.toString())
|
archiveVersion.set(project.version.toString())
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.register("buildPlugin") { // <<<< RUN THIS TASK TO BUILD PLUGIN
|
tasks.register("Clean&Build") { // <<<< RUN THIS TASK TO BUILD PLUGIN
|
||||||
dependsOn(tasks.clean)
|
dependsOn(tasks.clean)
|
||||||
dependsOn(tasks.shadowJar)
|
dependsOn(tasks.shadowJar)
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
java {
|
java {
|
||||||
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
|
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||||
}
|
}
|
||||||
|
|
||||||
// utf-8
|
// utf-8
|
||||||
|
@ -26,7 +26,7 @@ import java.util.concurrent.atomic.AtomicLong;
|
|||||||
import static cn.lunadeer.dominion.DominionNode.getLocInDominionNode;
|
import static cn.lunadeer.dominion.DominionNode.getLocInDominionNode;
|
||||||
import static cn.lunadeer.dominion.DominionNode.isInDominion;
|
import static cn.lunadeer.dominion.DominionNode.isInDominion;
|
||||||
|
|
||||||
public class Cache implements DominionAPI {
|
public class Cache {
|
||||||
|
|
||||||
public Cache() {
|
public Cache() {
|
||||||
player_current_dominion_id = new HashMap<>();
|
player_current_dominion_id = new HashMap<>();
|
||||||
@ -206,7 +206,6 @@ public class Cache implements DominionAPI {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public DominionDTO getPlayerCurrentDominion(@NotNull Player player) {
|
public DominionDTO getPlayerCurrentDominion(@NotNull Player player) {
|
||||||
try (AutoTimer ignored = new AutoTimer(Dominion.config.TimerEnabled())) {
|
try (AutoTimer ignored = new AutoTimer(Dominion.config.TimerEnabled())) {
|
||||||
Integer last_in_dom_id = player_current_dominion_id.get(player.getUniqueId());
|
Integer last_in_dom_id = player_current_dominion_id.get(player.getUniqueId());
|
||||||
@ -261,7 +260,6 @@ public class Cache implements DominionAPI {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public DominionDTO getDominionByLoc(@NotNull Location loc) {
|
public DominionDTO getDominionByLoc(@NotNull Location loc) {
|
||||||
return dominion_trees.getLocInDominionDTO(loc);
|
return dominion_trees.getLocInDominionDTO(loc);
|
||||||
}
|
}
|
||||||
@ -345,18 +343,15 @@ public class Cache implements DominionAPI {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public GroupDTO getGroup(@NotNull Integer id) {
|
public GroupDTO getGroup(@NotNull Integer id) {
|
||||||
return id_groups.get(id);
|
return id_groups.get(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public MemberDTO getMember(@NotNull Player player, cn.lunadeer.dominion.api.dtos.@NotNull DominionDTO dominion) {
|
public MemberDTO getMember(@NotNull Player player, cn.lunadeer.dominion.api.dtos.@NotNull DominionDTO dominion) {
|
||||||
if (!player_uuid_to_member.containsKey(player.getUniqueId())) return null;
|
if (!player_uuid_to_member.containsKey(player.getUniqueId())) return null;
|
||||||
return player_uuid_to_member.get(player.getUniqueId()).get(dominion.getId());
|
return player_uuid_to_member.get(player.getUniqueId()).get(dominion.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public MemberDTO getMember(@NotNull UUID player_uuid, cn.lunadeer.dominion.api.dtos.@NotNull DominionDTO dominion) {
|
public MemberDTO getMember(@NotNull UUID player_uuid, cn.lunadeer.dominion.api.dtos.@NotNull DominionDTO dominion) {
|
||||||
if (!player_uuid_to_member.containsKey(player_uuid)) return null;
|
if (!player_uuid_to_member.containsKey(player_uuid)) return null;
|
||||||
return player_uuid_to_member.get(player_uuid).get(dominion.getId());
|
return player_uuid_to_member.get(player_uuid).get(dominion.getId());
|
||||||
@ -376,7 +371,6 @@ public class Cache implements DominionAPI {
|
|||||||
return groups;
|
return groups;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public DominionDTO getDominion(@NotNull Integer id) {
|
public DominionDTO getDominion(@NotNull Integer id) {
|
||||||
return id_dominions.get(id);
|
return id_dominions.get(id);
|
||||||
}
|
}
|
||||||
@ -420,7 +414,6 @@ public class Cache implements DominionAPI {
|
|||||||
return residence_data.get(player_uuid);
|
return residence_data.get(player_uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public @NotNull List<cn.lunadeer.dominion.api.dtos.DominionDTO> getAllDominions() {
|
public @NotNull List<cn.lunadeer.dominion.api.dtos.DominionDTO> getAllDominions() {
|
||||||
return new ArrayList<>(id_dominions.values());
|
return new ArrayList<>(id_dominions.values());
|
||||||
}
|
}
|
||||||
@ -601,7 +594,6 @@ public class Cache implements DominionAPI {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public @Nullable GroupDTO getPlayerUsingGroupTitle(@NotNull UUID uuid) {
|
public @Nullable GroupDTO getPlayerUsingGroupTitle(@NotNull UUID uuid) {
|
||||||
if (!Dominion.config.getGroupTitleEnable()) {
|
if (!Dominion.config.getGroupTitleEnable()) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -224,6 +224,7 @@ public class Commands implements TabExecutor {
|
|||||||
"export_mca",
|
"export_mca",
|
||||||
"export_db",
|
"export_db",
|
||||||
"import_db",
|
"import_db",
|
||||||
|
"version",
|
||||||
"sys_config",
|
"sys_config",
|
||||||
"all_dominion",
|
"all_dominion",
|
||||||
"set_map_color",
|
"set_map_color",
|
||||||
|
@ -39,6 +39,7 @@ public final class Dominion extends JavaPlugin {
|
|||||||
new Scheduler(this);
|
new Scheduler(this);
|
||||||
AutoClean.run();
|
AutoClean.run();
|
||||||
Cache.instance = new Cache();
|
Cache.instance = new Cache();
|
||||||
|
DominionInterface.instance = new DominionInterface();
|
||||||
|
|
||||||
if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
|
if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
|
||||||
new PlaceHolderApi(this);
|
new PlaceHolderApi(this);
|
||||||
|
@ -0,0 +1,76 @@
|
|||||||
|
package cn.lunadeer.dominion;
|
||||||
|
|
||||||
|
import cn.lunadeer.dominion.api.DominionAPI;
|
||||||
|
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||||
|
import cn.lunadeer.dominion.dtos.Flag;
|
||||||
|
import cn.lunadeer.dominion.dtos.GroupDTO;
|
||||||
|
import cn.lunadeer.dominion.dtos.MemberDTO;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class DominionInterface implements DominionAPI {
|
||||||
|
|
||||||
|
public static DominionInterface instance;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DominionDTO getPlayerCurrentDominion(@NotNull Player player) {
|
||||||
|
return Cache.instance.getPlayerCurrentDominion(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DominionDTO getDominionByLoc(@NotNull Location loc) {
|
||||||
|
return Cache.instance.getDominionByLoc(loc);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GroupDTO getGroup(@NotNull Integer id) {
|
||||||
|
return Cache.instance.getGroup(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MemberDTO getMember(@NotNull Player player, cn.lunadeer.dominion.api.dtos.@NotNull DominionDTO dominion) {
|
||||||
|
return Cache.instance.getMember(player.getUniqueId(), dominion);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MemberDTO getMember(@NotNull UUID player_uuid, cn.lunadeer.dominion.api.dtos.@NotNull DominionDTO dominion) {
|
||||||
|
return Cache.instance.getMember(player_uuid, dominion);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DominionDTO getDominion(@NotNull Integer id) {
|
||||||
|
return Cache.instance.getDominion(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull List<cn.lunadeer.dominion.api.dtos.DominionDTO> getAllDominions() {
|
||||||
|
return Cache.instance.getAllDominions();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable GroupDTO getPlayerUsingGroupTitle(@NotNull UUID uuid) {
|
||||||
|
return Cache.instance.getPlayerUsingGroupTitle(uuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull List<cn.lunadeer.dominion.api.dtos.Flag> getEnvironmentFlagsEnabled() {
|
||||||
|
return new ArrayList<>(Flag.getEnvironmentFlagsEnabled());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull List<cn.lunadeer.dominion.api.dtos.Flag> getPrivilegeFlagsEnabled() {
|
||||||
|
return new ArrayList<>(Flag.getPrivilegeFlagsEnabled());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public cn.lunadeer.dominion.api.dtos.@Nullable Flag getFlagByName(@NotNull String flagName) {
|
||||||
|
return Flag.getFlag(flagName);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -44,7 +44,7 @@ public class Helper {
|
|||||||
if (dominion == null) return groups_name;
|
if (dominion == null) return groups_name;
|
||||||
List<GroupDTO> groups = GroupDTO.selectByDominionId(dominion.getId());
|
List<GroupDTO> groups = GroupDTO.selectByDominionId(dominion.getId());
|
||||||
for (GroupDTO group : groups) {
|
for (GroupDTO group : groups) {
|
||||||
groups_name.add(group.getName());
|
groups_name.add(group.getNamePlain());
|
||||||
}
|
}
|
||||||
return groups_name;
|
return groups_name;
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ public class Title {
|
|||||||
}
|
}
|
||||||
DominionDTO dominion = Cache.instance.getDominion(group.getDomID());
|
DominionDTO dominion = Cache.instance.getDominion(group.getDomID());
|
||||||
if (dominion == null) {
|
if (dominion == null) {
|
||||||
Notification.error(sender, Translation.Commands_Title_GroupDominionNotExist, group.getName());
|
Notification.error(sender, Translation.Commands_Title_GroupDominionNotExist, group.getNamePlain());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!dominion.getOwner().equals(bukkit_player.getUniqueId())) {
|
if (!dominion.getOwner().equals(bukkit_player.getUniqueId())) {
|
||||||
@ -53,12 +53,12 @@ public class Title {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!Objects.equals(member.getGroupId(), group.getId())) {
|
if (!Objects.equals(member.getGroupId(), group.getId())) {
|
||||||
Notification.error(sender, Translation.Commands_Title_NotGroupMember, group.getName());
|
Notification.error(sender, Translation.Commands_Title_NotGroupMember, group.getNamePlain());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
player.setUsingGroupTitleID(group.getId());
|
player.setUsingGroupTitleID(group.getId());
|
||||||
Notification.info(sender, Translation.Commands_Title_UseTitleSuccess, group.getName());
|
Notification.info(sender, Translation.Commands_Title_UseTitleSuccess, group.getNamePlain());
|
||||||
}
|
}
|
||||||
int page = getPage(args, 2);
|
int page = getPage(args, 2);
|
||||||
TitleList.show(sender, page);
|
TitleList.show(sender, page);
|
||||||
|
@ -71,7 +71,7 @@ public class MemberController {
|
|||||||
}
|
}
|
||||||
GroupDTO group = GroupDTO.select(privilege.getGroupId());
|
GroupDTO group = GroupDTO.select(privilege.getGroupId());
|
||||||
if (group != null) {
|
if (group != null) {
|
||||||
operator.setResponse(FAIL.addMessage(Translation.Messages_PlayerBelongToGroup, player_name, group.getName()));
|
operator.setResponse(FAIL.addMessage(Translation.Messages_PlayerBelongToGroup, player_name, group.getNamePlain()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((flag.equals("admin") || isAdmin(privilege)) && notOwner(operator, dominion)) {
|
if ((flag.equals("admin") || isAdmin(privilege)) && notOwner(operator, dominion)) {
|
||||||
|
@ -11,6 +11,7 @@ import cn.lunadeer.minecraftpluginutils.databse.syntax.InsertRow;
|
|||||||
import cn.lunadeer.minecraftpluginutils.databse.syntax.UpdateRow;
|
import cn.lunadeer.minecraftpluginutils.databse.syntax.UpdateRow;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
@ -89,7 +90,7 @@ public class DominionDTO implements cn.lunadeer.dominion.api.dtos.DominionDTO {
|
|||||||
String sql = "SELECT * FROM dominion WHERE id = ? AND id > 0;";
|
String sql = "SELECT * FROM dominion WHERE id = ? AND id > 0;";
|
||||||
List<DominionDTO> dominions = query(sql, id);
|
List<DominionDTO> dominions = query(sql, id);
|
||||||
if (dominions.isEmpty()) return null;
|
if (dominions.isEmpty()) return null;
|
||||||
return dominions.getFirst();
|
return dominions.get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<DominionDTO> selectByParentId(World world, Integer parentId) {
|
public static List<DominionDTO> selectByParentId(World world, Integer parentId) {
|
||||||
@ -113,7 +114,7 @@ public class DominionDTO implements cn.lunadeer.dominion.api.dtos.DominionDTO {
|
|||||||
String sql = "SELECT * FROM dominion WHERE name = ? AND id > 0;";
|
String sql = "SELECT * FROM dominion WHERE name = ? AND id > 0;";
|
||||||
List<DominionDTO> dominions = query(sql, name);
|
List<DominionDTO> dominions = query(sql, name);
|
||||||
if (dominions.isEmpty()) return null;
|
if (dominions.isEmpty()) return null;
|
||||||
return dominions.getFirst();
|
return dominions.get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DominionDTO insert(DominionDTO dominion) {
|
public static DominionDTO insert(DominionDTO dominion) {
|
||||||
@ -133,7 +134,7 @@ public class DominionDTO implements cn.lunadeer.dominion.api.dtos.DominionDTO {
|
|||||||
Cache.instance.loadDominions();
|
Cache.instance.loadDominions();
|
||||||
List<DominionDTO> dominions = getDTOFromRS(rs);
|
List<DominionDTO> dominions = getDTOFromRS(rs);
|
||||||
if (dominions.isEmpty()) return null;
|
if (dominions.isEmpty()) return null;
|
||||||
return dominions.getFirst();
|
return dominions.get(0);
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
DatabaseManager.handleDatabaseError("DominionDTO.insert ", e, insert.toString());
|
DatabaseManager.handleDatabaseError("DominionDTO.insert ", e, insert.toString());
|
||||||
return null;
|
return null;
|
||||||
@ -220,12 +221,12 @@ public class DominionDTO implements cn.lunadeer.dominion.api.dtos.DominionDTO {
|
|||||||
|
|
||||||
// getters and setters
|
// getters and setters
|
||||||
@Override
|
@Override
|
||||||
public Integer getId() {
|
public @NotNull Integer getId() {
|
||||||
return (Integer) id.value;
|
return (Integer) id.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UUID getOwner() {
|
public @NotNull UUID getOwner() {
|
||||||
return UUID.fromString((String) owner.value);
|
return UUID.fromString((String) owner.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -237,23 +238,31 @@ public class DominionDTO implements cn.lunadeer.dominion.api.dtos.DominionDTO {
|
|||||||
List<DominionDTO> dominions = getDTOFromRS(rs);
|
List<DominionDTO> dominions = getDTOFromRS(rs);
|
||||||
if (dominions.isEmpty()) return null;
|
if (dominions.isEmpty()) return null;
|
||||||
Cache.instance.loadDominions((Integer) id.value);
|
Cache.instance.loadDominions((Integer) id.value);
|
||||||
return dominions.getFirst();
|
return dominions.get(0);
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
DatabaseManager.handleDatabaseError("DominionDTO.doUpdate ", e, updateRow.toString());
|
DatabaseManager.handleDatabaseError("DominionDTO.doUpdate ", e, updateRow.toString());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public DominionDTO setOwner(UUID owner) {
|
public DominionDTO setOwner(UUID owner) {
|
||||||
this.owner.value = owner.toString();
|
this.owner.value = owner.toString();
|
||||||
return doUpdate(new UpdateRow().field(this.owner));
|
return doUpdate(new UpdateRow().field(this.owner));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public DominionDTO setOwner(Player owner) {
|
||||||
|
this.owner.value = owner.getUniqueId().toString();
|
||||||
|
return doUpdate(new UpdateRow().field(this.owner));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull String getName() {
|
||||||
return (String) name.value;
|
return (String) name.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public DominionDTO setName(String name) {
|
public DominionDTO setName(String name) {
|
||||||
this.name.value = name;
|
this.name.value = name;
|
||||||
return doUpdate(new UpdateRow().field(this.name));
|
return doUpdate(new UpdateRow().field(this.name));
|
||||||
@ -265,12 +274,12 @@ public class DominionDTO implements cn.lunadeer.dominion.api.dtos.DominionDTO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UUID getWorldUid() {
|
public @NotNull UUID getWorldUid() {
|
||||||
return UUID.fromString((String) world_uid.value);
|
return UUID.fromString((String) world_uid.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getX1() {
|
public @NotNull Integer getX1() {
|
||||||
return (Integer) x1.value;
|
return (Integer) x1.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,7 +289,7 @@ public class DominionDTO implements cn.lunadeer.dominion.api.dtos.DominionDTO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getY1() {
|
public @NotNull Integer getY1() {
|
||||||
return (Integer) y1.value;
|
return (Integer) y1.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -290,7 +299,7 @@ public class DominionDTO implements cn.lunadeer.dominion.api.dtos.DominionDTO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getZ1() {
|
public @NotNull Integer getZ1() {
|
||||||
return (Integer) z1.value;
|
return (Integer) z1.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -300,7 +309,7 @@ public class DominionDTO implements cn.lunadeer.dominion.api.dtos.DominionDTO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getX2() {
|
public @NotNull Integer getX2() {
|
||||||
return (Integer) x2.value;
|
return (Integer) x2.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -310,7 +319,7 @@ public class DominionDTO implements cn.lunadeer.dominion.api.dtos.DominionDTO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getY2() {
|
public @NotNull Integer getY2() {
|
||||||
return (Integer) y2.value;
|
return (Integer) y2.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -320,7 +329,7 @@ public class DominionDTO implements cn.lunadeer.dominion.api.dtos.DominionDTO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getZ2() {
|
public @NotNull Integer getZ2() {
|
||||||
return (Integer) z2.value;
|
return (Integer) z2.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -330,67 +339,84 @@ public class DominionDTO implements cn.lunadeer.dominion.api.dtos.DominionDTO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getSquare() {
|
public @NotNull Integer getSquare() {
|
||||||
return getWidthX() * getWidthZ();
|
return getWidthX() * getWidthZ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getVolume() {
|
public @NotNull Integer getVolume() {
|
||||||
return getSquare() * getHeight();
|
return getSquare() * getHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getWidthX() {
|
public @NotNull Integer getWidthX() {
|
||||||
return getX2() - getX1();
|
return getX2() - getX1();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getHeight() {
|
public @NotNull Integer getHeight() {
|
||||||
return getY2() - getY1();
|
return getY2() - getY1();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getWidthZ() {
|
public @NotNull Integer getWidthZ() {
|
||||||
return getZ2() - getZ1();
|
return getZ2() - getZ1();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getParentDomId() {
|
public @NotNull Integer getParentDomId() {
|
||||||
return (Integer) parentDomId.value;
|
return (Integer) parentDomId.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getJoinMessage() {
|
public @NotNull String getJoinMessage() {
|
||||||
return (String) joinMessage.value;
|
return (String) joinMessage.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public DominionDTO setJoinMessage(String joinMessage) {
|
public DominionDTO setJoinMessage(String joinMessage) {
|
||||||
this.joinMessage.value = joinMessage;
|
this.joinMessage.value = joinMessage;
|
||||||
return doUpdate(new UpdateRow().field(this.joinMessage));
|
return doUpdate(new UpdateRow().field(this.joinMessage));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getLeaveMessage() {
|
public @NotNull String getLeaveMessage() {
|
||||||
return (String) leaveMessage.value;
|
return (String) leaveMessage.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public DominionDTO setLeaveMessage(String leaveMessage) {
|
public DominionDTO setLeaveMessage(String leaveMessage) {
|
||||||
this.leaveMessage.value = leaveMessage;
|
this.leaveMessage.value = leaveMessage;
|
||||||
return doUpdate(new UpdateRow().field(this.leaveMessage));
|
return doUpdate(new UpdateRow().field(this.leaveMessage));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Boolean getFlagValue(Flag flag) {
|
public Boolean getFlagValue(Flag flag) {
|
||||||
if (!flags.containsKey(flag)) return flag.getDefaultValue();
|
if (!flags.containsKey(flag)) return flag.getDefaultValue();
|
||||||
return flags.get(flag);
|
return flags.get(flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DominionDTO setFlagValue(Flag flag, Boolean value) {
|
@Override
|
||||||
|
public @NotNull Map<Flag, Boolean> getEnvironmentFlagValue() {
|
||||||
|
return flags.entrySet().stream()
|
||||||
|
.filter(e -> e.getKey().isEnvironmentFlag())
|
||||||
|
.collect(HashMap::new, (m, e) -> m.put(e.getKey(), e.getValue()), HashMap::putAll);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Map<Flag, Boolean> getGuestPrivilegeFlagValue() {
|
||||||
|
return flags.entrySet().stream()
|
||||||
|
.filter(e -> !e.getKey().isEnvironmentFlag())
|
||||||
|
.collect(HashMap::new, (m, e) -> m.put(e.getKey(), e.getValue()), HashMap::putAll);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DominionDTO setFlagValue(@NotNull Flag flag, @NotNull Boolean value) {
|
||||||
flags.put(flag, value);
|
flags.put(flag, value);
|
||||||
Field flagField = new Field(flag.getFlagName(), value);
|
Field flagField = new Field(flag.getFlagName(), value);
|
||||||
return doUpdate(new UpdateRow().field(flagField));
|
return doUpdate(new UpdateRow().field(flagField));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public DominionDTO setXYZ(Integer x1, Integer y1, Integer z1, Integer x2, Integer y2, Integer z2) {
|
public DominionDTO setXYZ(Integer x1, Integer y1, Integer z1, Integer x2, Integer y2, Integer z2) {
|
||||||
this.x1.value = x1;
|
this.x1.value = x1;
|
||||||
this.y1.value = y1;
|
this.y1.value = y1;
|
||||||
@ -398,9 +424,25 @@ public class DominionDTO implements cn.lunadeer.dominion.api.dtos.DominionDTO {
|
|||||||
this.x2.value = x2;
|
this.x2.value = x2;
|
||||||
this.y2.value = y2;
|
this.y2.value = y2;
|
||||||
this.z2.value = z2;
|
this.z2.value = z2;
|
||||||
|
if (x1 > x2) {
|
||||||
|
int tmp = x1;
|
||||||
|
this.x1.value = x2;
|
||||||
|
this.x2.value = tmp;
|
||||||
|
}
|
||||||
|
if (y1 > y2) {
|
||||||
|
int tmp = y1;
|
||||||
|
this.y1.value = y2;
|
||||||
|
this.y2.value = tmp;
|
||||||
|
}
|
||||||
|
if (z1 > z2) {
|
||||||
|
int tmp = z1;
|
||||||
|
this.z1.value = z2;
|
||||||
|
this.z2.value = tmp;
|
||||||
|
}
|
||||||
return doUpdate(new UpdateRow().field(this.x1).field(this.y1).field(this.z1).field(this.x2).field(this.y2).field(this.z2));
|
return doUpdate(new UpdateRow().field(this.x1).field(this.y1).field(this.z1).field(this.x2).field(this.y2).field(this.z2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public DominionDTO setXYZ(int[] cords) {
|
public DominionDTO setXYZ(int[] cords) {
|
||||||
if (cords.length == 6) {
|
if (cords.length == 6) {
|
||||||
return setXYZ(cords[0], cords[1], cords[2], cords[3], cords[4], cords[5]);
|
return setXYZ(cords[0], cords[1], cords[2], cords[3], cords[4], cords[5]);
|
||||||
@ -435,12 +477,12 @@ public class DominionDTO implements cn.lunadeer.dominion.api.dtos.DominionDTO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Location getLocation1() {
|
public @NotNull Location getLocation1() {
|
||||||
return new Location(getWorld(), getX1(), getY1(), getZ1());
|
return new Location(getWorld(), getX1(), getY1(), getZ1());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Location getLocation2() {
|
public @NotNull Location getLocation2() {
|
||||||
return new Location(getWorld(), getX2(), getY2(), getZ2());
|
return new Location(getWorld(), getX2(), getY2(), getZ2());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -465,7 +507,7 @@ public class DominionDTO implements cn.lunadeer.dominion.api.dtos.DominionDTO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getColor() {
|
public @NotNull String getColor() {
|
||||||
return (String) color.value;
|
return (String) color.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ import cn.lunadeer.minecraftpluginutils.XLogger;
|
|||||||
import cn.lunadeer.minecraftpluginutils.i18n.Localization;
|
import cn.lunadeer.minecraftpluginutils.i18n.Localization;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -102,30 +103,35 @@ public enum Flag implements cn.lunadeer.dominion.api.dtos.Flag {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getFlagName() {
|
public @NotNull String getFlagName() {
|
||||||
return flag_name;
|
return flag_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDisplayName() {
|
public @NotNull String getDisplayName() {
|
||||||
return display_name;
|
return display_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription() {
|
public @NotNull String getDescription() {
|
||||||
return description;
|
return description;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean getDefaultValue() {
|
public @NotNull Boolean getDefaultValue() {
|
||||||
return default_value;
|
return default_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean getEnable() {
|
public @NotNull Boolean getEnable() {
|
||||||
return enable;
|
return enable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Boolean isEnvironmentFlag() {
|
||||||
|
return dominion_only;
|
||||||
|
}
|
||||||
|
|
||||||
public void setDisplayName(String displayName) {
|
public void setDisplayName(String displayName) {
|
||||||
this.display_name = displayName;
|
this.display_name = displayName;
|
||||||
}
|
}
|
||||||
@ -154,7 +160,24 @@ public enum Flag implements cn.lunadeer.dominion.api.dtos.Flag {
|
|||||||
return Arrays.asList(Flag.values());
|
return Arrays.asList(Flag.values());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Flag> getDominionOnlyFlagsEnabled() {
|
public static List<Flag> getDominionFlagsEnabled() {
|
||||||
|
List<Flag> flags = new ArrayList<>();
|
||||||
|
for (Flag flag : Flag.values()) {
|
||||||
|
if (!flag.enable) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
flags.add(flag);
|
||||||
|
}
|
||||||
|
Comparator<Object> comparator = Collator.getInstance(java.util.Locale.CHINA);
|
||||||
|
flags.sort((o1, o2) -> comparator.compare(o1.getDisplayName(), o2.getDisplayName()));
|
||||||
|
return flags;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isDominionOnlyFlag(String flagName) {
|
||||||
|
return getFlag(flagName).dominion_only;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<Flag> getEnvironmentFlagsEnabled() {
|
||||||
List<Flag> flags = new ArrayList<>();
|
List<Flag> flags = new ArrayList<>();
|
||||||
for (Flag flag : Flag.values()) {
|
for (Flag flag : Flag.values()) {
|
||||||
if (!flag.dominion_only) {
|
if (!flag.dominion_only) {
|
||||||
@ -170,28 +193,6 @@ public enum Flag implements cn.lunadeer.dominion.api.dtos.Flag {
|
|||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isDominionOnlyFlag(String flagName) {
|
|
||||||
return getFlag(flagName).dominion_only;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<Flag> getDominionFlagsEnabled() {
|
|
||||||
List<Flag> flags = new ArrayList<>();
|
|
||||||
for (Flag flag : Flag.values()) {
|
|
||||||
if (!flag.enable) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
flags.add(flag);
|
|
||||||
}
|
|
||||||
Comparator<Object> comparator = Collator.getInstance(java.util.Locale.CHINA);
|
|
||||||
flags.sort((o1, o2) -> comparator.compare(o1.getDisplayName(), o2.getDisplayName()));
|
|
||||||
return flags;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<Flag> getAllDominionFlags() {
|
|
||||||
return new ArrayList<>(Arrays.asList(Flag.values()));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static List<Flag> getPrivilegeFlagsEnabled() {
|
public static List<Flag> getPrivilegeFlagsEnabled() {
|
||||||
List<Flag> flags = new ArrayList<>();
|
List<Flag> flags = new ArrayList<>();
|
||||||
for (Flag flag : Flag.values()) {
|
for (Flag flag : Flag.values()) {
|
||||||
@ -208,6 +209,10 @@ public enum Flag implements cn.lunadeer.dominion.api.dtos.Flag {
|
|||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<Flag> getAllDominionFlags() {
|
||||||
|
return new ArrayList<>(Arrays.asList(Flag.values()));
|
||||||
|
}
|
||||||
|
|
||||||
public static List<Flag> getAllPrivilegeFlags() {
|
public static List<Flag> getAllPrivilegeFlags() {
|
||||||
List<Flag> flags = new ArrayList<>();
|
List<Flag> flags = new ArrayList<>();
|
||||||
for (Flag flag : Flag.values()) {
|
for (Flag flag : Flag.values()) {
|
||||||
|
@ -10,6 +10,8 @@ import cn.lunadeer.minecraftpluginutils.databse.FieldType;
|
|||||||
import cn.lunadeer.minecraftpluginutils.databse.syntax.InsertRow;
|
import cn.lunadeer.minecraftpluginutils.databse.syntax.InsertRow;
|
||||||
import cn.lunadeer.minecraftpluginutils.databse.syntax.UpdateRow;
|
import cn.lunadeer.minecraftpluginutils.databse.syntax.UpdateRow;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -21,72 +23,88 @@ public class GroupDTO implements cn.lunadeer.dominion.api.dtos.GroupDTO {
|
|||||||
|
|
||||||
Field id = new Field("id", FieldType.INT);
|
Field id = new Field("id", FieldType.INT);
|
||||||
Field domID = new Field("dom_id", FieldType.INT);
|
Field domID = new Field("dom_id", FieldType.INT);
|
||||||
Field name = new Field("name", FieldType.STRING);
|
Field name_raw = new Field("name", FieldType.STRING);
|
||||||
Field admin = new Field("admin", FieldType.BOOLEAN);
|
Field admin = new Field("admin", FieldType.BOOLEAN);
|
||||||
Field name_colored = new Field("name_colored", FieldType.STRING);
|
Field name_color = new Field("name_colored", FieldType.STRING);
|
||||||
|
|
||||||
private final Map<Flag, Boolean> flags = new HashMap<>();
|
private final Map<Flag, Boolean> flags = new HashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getId() {
|
public @NotNull Integer getId() {
|
||||||
return (Integer) id.value;
|
return (Integer) id.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getDomID() {
|
public @NotNull Integer getDomID() {
|
||||||
return (Integer) domID.value;
|
return (Integer) domID.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public @NotNull String getNameRaw() {
|
||||||
return (String) name.value;
|
return (String) name_color.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Component getNameColoredComponent() {
|
public @NotNull String getNamePlain() {
|
||||||
|
return (String) name_raw.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Component getNameColoredComponent() {
|
||||||
String with_pre_suf = "&#ffffff" +
|
String with_pre_suf = "&#ffffff" +
|
||||||
Dominion.config.getGroupTitlePrefix() +
|
Dominion.config.getGroupTitlePrefix() +
|
||||||
(String) name_colored.value +
|
(String) name_color.value +
|
||||||
"&#ffffff" +
|
"&#ffffff" +
|
||||||
Dominion.config.getGroupTitleSuffix();
|
Dominion.config.getGroupTitleSuffix();
|
||||||
return ColorParser.getComponentType(with_pre_suf);
|
return ColorParser.getComponentType(with_pre_suf);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getNameColoredBukkit() {
|
public @NotNull String getNameColoredBukkit() {
|
||||||
String with_pre_suf = "&#ffffff" +
|
String with_pre_suf = "&#ffffff" +
|
||||||
Dominion.config.getGroupTitlePrefix() +
|
Dominion.config.getGroupTitlePrefix() +
|
||||||
(String) name_colored.value +
|
(String) name_color.value +
|
||||||
"&#ffffff" +
|
"&#ffffff" +
|
||||||
Dominion.config.getGroupTitleSuffix();
|
Dominion.config.getGroupTitleSuffix();
|
||||||
return ColorParser.getBukkitType(with_pre_suf);
|
return ColorParser.getBukkitType(with_pre_suf);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean getAdmin() {
|
public @NotNull Boolean getAdmin() {
|
||||||
return (Boolean) admin.value;
|
return (Boolean) admin.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean getFlagValue(Flag flag) {
|
public @NotNull Boolean getFlagValue(@NotNull Flag flag) {
|
||||||
if (!flags.containsKey(flag)) return flag.getDefaultValue();
|
if (!flags.containsKey(flag)) return flag.getDefaultValue();
|
||||||
return flags.get(flag);
|
return flags.get(flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
public GroupDTO setName(String name) {
|
@Override
|
||||||
this.name_colored.value = name;
|
public @NotNull Map<Flag, Boolean> getFlagsValue() {
|
||||||
this.name.value = ColorParser.getPlainText(name);
|
return flags;
|
||||||
UpdateRow updateRow = new UpdateRow().field(this.name).field(this.name_colored);
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable GroupDTO setName(@NotNull String name) {
|
||||||
|
this.name_color.value = name;
|
||||||
|
this.name_raw.value = ColorParser.getPlainText(name);
|
||||||
|
UpdateRow updateRow = new UpdateRow().field(this.name_raw).field(this.name_color);
|
||||||
return doUpdate(updateRow);
|
return doUpdate(updateRow);
|
||||||
}
|
}
|
||||||
|
|
||||||
public GroupDTO setAdmin(Boolean admin) {
|
@Override
|
||||||
|
public @Nullable GroupDTO setAdmin(@NotNull Boolean admin) {
|
||||||
this.admin.value = admin;
|
this.admin.value = admin;
|
||||||
UpdateRow updateRow = new UpdateRow().field(this.admin);
|
UpdateRow updateRow = new UpdateRow().field(this.admin);
|
||||||
return doUpdate(updateRow);
|
return doUpdate(updateRow);
|
||||||
}
|
}
|
||||||
|
|
||||||
public GroupDTO setFlagValue(Flag flag, Boolean value) {
|
@Override
|
||||||
|
public GroupDTO setFlagValue(@NotNull Flag flag, @NotNull Boolean value) {
|
||||||
|
if (flag.isEnvironmentFlag()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
flags.put(flag, value);
|
flags.put(flag, value);
|
||||||
Field f = new Field(flag.getFlagName(), value);
|
Field f = new Field(flag.getFlagName(), value);
|
||||||
UpdateRow updateRow = new UpdateRow().field(f);
|
UpdateRow updateRow = new UpdateRow().field(f);
|
||||||
@ -98,17 +116,17 @@ public class GroupDTO implements cn.lunadeer.dominion.api.dtos.GroupDTO {
|
|||||||
InsertRow insertRow = new InsertRow().returningAll().onConflictDoNothing(new Field("id", null));
|
InsertRow insertRow = new InsertRow().returningAll().onConflictDoNothing(new Field("id", null));
|
||||||
insertRow.table("dominion_group")
|
insertRow.table("dominion_group")
|
||||||
.field(group.domID)
|
.field(group.domID)
|
||||||
.field(group.name)
|
.field(group.name_raw)
|
||||||
.field(group.admin)
|
.field(group.admin)
|
||||||
.field(group.name_colored);
|
.field(group.name_color);
|
||||||
for (Flag f : cn.lunadeer.dominion.dtos.Flag.getPrivilegeFlagsEnabled()) {
|
for (Flag f : cn.lunadeer.dominion.dtos.Flag.getPrivilegeFlagsEnabled()) {
|
||||||
insertRow.field(new Field(f.getFlagName(), dominionDTO.getFlagValue(f)));
|
insertRow.field(new Field(f.getFlagName(), dominionDTO.getFlagValue(f)));
|
||||||
}
|
}
|
||||||
try (ResultSet rs = insertRow.execute()) {
|
try (ResultSet rs = insertRow.execute()) {
|
||||||
List<GroupDTO> groups = getDTOFromRS(rs);
|
List<GroupDTO> groups = getDTOFromRS(rs);
|
||||||
if (groups.isEmpty()) return null;
|
if (groups.isEmpty()) return null;
|
||||||
Cache.instance.loadGroups(groups.getFirst().getId());
|
Cache.instance.loadGroups(groups.get(0).getId());
|
||||||
return groups.getFirst();
|
return groups.get(0);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
DatabaseManager.handleDatabaseError("GroupDTO.create ", e, "");
|
DatabaseManager.handleDatabaseError("GroupDTO.create ", e, "");
|
||||||
return null;
|
return null;
|
||||||
@ -133,14 +151,14 @@ public class GroupDTO implements cn.lunadeer.dominion.api.dtos.GroupDTO {
|
|||||||
String sql = "SELECT * FROM dominion_group WHERE id = ?;";
|
String sql = "SELECT * FROM dominion_group WHERE id = ?;";
|
||||||
List<GroupDTO> groups = getDTOFromRS(DatabaseManager.instance.query(sql, id));
|
List<GroupDTO> groups = getDTOFromRS(DatabaseManager.instance.query(sql, id));
|
||||||
if (groups.isEmpty()) return null;
|
if (groups.isEmpty()) return null;
|
||||||
return groups.getFirst();
|
return groups.get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static GroupDTO select(Integer domID, String name) {
|
public static GroupDTO select(Integer domID, String name) {
|
||||||
String sql = "SELECT * FROM dominion_group WHERE dom_id = ? AND name = ?;";
|
String sql = "SELECT * FROM dominion_group WHERE dom_id = ? AND name = ?;";
|
||||||
List<GroupDTO> groups = getDTOFromRS(DatabaseManager.instance.query(sql, domID, name));
|
List<GroupDTO> groups = getDTOFromRS(DatabaseManager.instance.query(sql, domID, name));
|
||||||
if (groups.isEmpty()) return null;
|
if (groups.isEmpty()) return null;
|
||||||
return groups.getFirst();
|
return groups.get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<GroupDTO> selectAll() {
|
public static List<GroupDTO> selectAll() {
|
||||||
@ -155,8 +173,8 @@ public class GroupDTO implements cn.lunadeer.dominion.api.dtos.GroupDTO {
|
|||||||
|
|
||||||
private GroupDTO(String name, Integer domID) {
|
private GroupDTO(String name, Integer domID) {
|
||||||
this.domID.value = domID;
|
this.domID.value = domID;
|
||||||
this.name.value = ColorParser.getPlainText(name);
|
this.name_raw.value = ColorParser.getPlainText(name);
|
||||||
this.name_colored.value = name;
|
this.name_color.value = name;
|
||||||
this.admin.value = false;
|
this.admin.value = false;
|
||||||
for (Flag f : cn.lunadeer.dominion.dtos.Flag.getPrivilegeFlagsEnabled()) {
|
for (Flag f : cn.lunadeer.dominion.dtos.Flag.getPrivilegeFlagsEnabled()) {
|
||||||
flags.put(f, f.getDefaultValue());
|
flags.put(f, f.getDefaultValue());
|
||||||
@ -166,10 +184,10 @@ public class GroupDTO implements cn.lunadeer.dominion.api.dtos.GroupDTO {
|
|||||||
private GroupDTO(Integer id, Integer domID, String name, Boolean admin, Map<Flag, Boolean> flags, String nameColored) {
|
private GroupDTO(Integer id, Integer domID, String name, Boolean admin, Map<Flag, Boolean> flags, String nameColored) {
|
||||||
this.id.value = id;
|
this.id.value = id;
|
||||||
this.domID.value = domID;
|
this.domID.value = domID;
|
||||||
this.name.value = name;
|
this.name_raw.value = name;
|
||||||
this.admin.value = admin;
|
this.admin.value = admin;
|
||||||
this.flags.putAll(flags);
|
this.flags.putAll(flags);
|
||||||
this.name_colored.value = nameColored;
|
this.name_color.value = nameColored;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<GroupDTO> getDTOFromRS(ResultSet rs) {
|
private static List<GroupDTO> getDTOFromRS(ResultSet rs) {
|
||||||
@ -205,7 +223,7 @@ public class GroupDTO implements cn.lunadeer.dominion.api.dtos.GroupDTO {
|
|||||||
List<GroupDTO> groups = getDTOFromRS(rs);
|
List<GroupDTO> groups = getDTOFromRS(rs);
|
||||||
if (groups.isEmpty()) return null;
|
if (groups.isEmpty()) return null;
|
||||||
Cache.instance.loadGroups((Integer) id.value);
|
Cache.instance.loadGroups((Integer) id.value);
|
||||||
return groups.getFirst();
|
return groups.get(0);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
DatabaseManager.handleDatabaseError("更新权限组失败: ", e, "");
|
DatabaseManager.handleDatabaseError("更新权限组失败: ", e, "");
|
||||||
return null;
|
return null;
|
||||||
|
@ -7,6 +7,8 @@ import cn.lunadeer.minecraftpluginutils.databse.Field;
|
|||||||
import cn.lunadeer.minecraftpluginutils.databse.FieldType;
|
import cn.lunadeer.minecraftpluginutils.databse.FieldType;
|
||||||
import cn.lunadeer.minecraftpluginutils.databse.syntax.InsertRow;
|
import cn.lunadeer.minecraftpluginutils.databse.syntax.InsertRow;
|
||||||
import cn.lunadeer.minecraftpluginutils.databse.syntax.UpdateRow;
|
import cn.lunadeer.minecraftpluginutils.databse.syntax.UpdateRow;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@ -56,7 +58,7 @@ public class MemberDTO implements cn.lunadeer.dominion.api.dtos.MemberDTO {
|
|||||||
List<MemberDTO> players = getDTOFromRS(rs);
|
List<MemberDTO> players = getDTOFromRS(rs);
|
||||||
if (players.isEmpty()) return null;
|
if (players.isEmpty()) return null;
|
||||||
Cache.instance.loadMembers(getPlayerUUID());
|
Cache.instance.loadMembers(getPlayerUUID());
|
||||||
return players.getFirst();
|
return players.get(0);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
DatabaseManager.handleDatabaseError("MemberDTO.doUpdate ", e, "");
|
DatabaseManager.handleDatabaseError("MemberDTO.doUpdate ", e, "");
|
||||||
return null;
|
return null;
|
||||||
@ -76,7 +78,7 @@ public class MemberDTO implements cn.lunadeer.dominion.api.dtos.MemberDTO {
|
|||||||
Cache.instance.loadMembers(player.getPlayerUUID());
|
Cache.instance.loadMembers(player.getPlayerUUID());
|
||||||
List<MemberDTO> players = getDTOFromRS(rs);
|
List<MemberDTO> players = getDTOFromRS(rs);
|
||||||
if (players.isEmpty()) return null;
|
if (players.isEmpty()) return null;
|
||||||
return players.getFirst();
|
return players.get(0);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
DatabaseManager.handleDatabaseError("MemberDTO.insert ", e, "");
|
DatabaseManager.handleDatabaseError("MemberDTO.insert ", e, "");
|
||||||
return null;
|
return null;
|
||||||
@ -87,7 +89,7 @@ public class MemberDTO implements cn.lunadeer.dominion.api.dtos.MemberDTO {
|
|||||||
String sql = "SELECT * FROM dominion_member WHERE player_uuid = ? AND dom_id = ?;";
|
String sql = "SELECT * FROM dominion_member WHERE player_uuid = ? AND dom_id = ?;";
|
||||||
List<MemberDTO> p = query(sql, playerUUID.toString(), dom_id);
|
List<MemberDTO> p = query(sql, playerUUID.toString(), dom_id);
|
||||||
if (p.isEmpty()) return null;
|
if (p.isEmpty()) return null;
|
||||||
return p.getFirst();
|
return p.get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<MemberDTO> select(Integer dom_id) {
|
public static List<MemberDTO> select(Integer dom_id) {
|
||||||
@ -155,19 +157,29 @@ public class MemberDTO implements cn.lunadeer.dominion.api.dtos.MemberDTO {
|
|||||||
private final Map<Flag, Boolean> flags = new HashMap<>();
|
private final Map<Flag, Boolean> flags = new HashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean getFlagValue(Flag flag) {
|
public @NotNull Boolean getFlagValue(Flag flag) {
|
||||||
if (!flags.containsKey(flag)) return flag.getDefaultValue();
|
if (!flags.containsKey(flag)) return flag.getDefaultValue();
|
||||||
return flags.get(flag);
|
return flags.get(flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
public MemberDTO setFlagValue(Flag flag, Boolean value) {
|
@Override
|
||||||
|
public @NotNull Map<Flag, Boolean> getFlagsValue() {
|
||||||
|
return flags;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MemberDTO setFlagValue(@NotNull Flag flag, @NotNull Boolean value) {
|
||||||
|
if (flag.isEnvironmentFlag()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
flags.put(flag, value);
|
flags.put(flag, value);
|
||||||
Field f = new Field(flag.getFlagName(), value);
|
Field f = new Field(flag.getFlagName(), value);
|
||||||
UpdateRow updateRow = new UpdateRow().field(f);
|
UpdateRow updateRow = new UpdateRow().field(f);
|
||||||
return doUpdate(updateRow);
|
return doUpdate(updateRow);
|
||||||
}
|
}
|
||||||
|
|
||||||
public MemberDTO setAdmin(Boolean admin) {
|
@Override
|
||||||
|
public @Nullable MemberDTO setAdmin(@NotNull Boolean admin) {
|
||||||
this.admin.value = admin;
|
this.admin.value = admin;
|
||||||
UpdateRow updateRow = new UpdateRow().field(this.admin);
|
UpdateRow updateRow = new UpdateRow().field(this.admin);
|
||||||
return doUpdate(updateRow);
|
return doUpdate(updateRow);
|
||||||
@ -203,9 +215,7 @@ public class MemberDTO implements cn.lunadeer.dominion.api.dtos.MemberDTO {
|
|||||||
this.playerUUID.value = playerUUID.toString();
|
this.playerUUID.value = playerUUID.toString();
|
||||||
this.admin.value = false;
|
this.admin.value = false;
|
||||||
this.domID.value = dom.getId();
|
this.domID.value = dom.getId();
|
||||||
for (Flag f : cn.lunadeer.dominion.dtos.Flag.getPrivilegeFlagsEnabled()) {
|
this.flags.putAll(dom.getGuestPrivilegeFlagValue());
|
||||||
this.flags.put(f, dom.getFlagValue(f));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -77,14 +77,14 @@ public class PlayerDTO {
|
|||||||
String sql = "SELECT * FROM player_name WHERE uuid = ?;";
|
String sql = "SELECT * FROM player_name WHERE uuid = ?;";
|
||||||
List<PlayerDTO> players = query(sql, uuid.toString());
|
List<PlayerDTO> players = query(sql, uuid.toString());
|
||||||
if (players.isEmpty()) return null;
|
if (players.isEmpty()) return null;
|
||||||
return players.getFirst();
|
return players.get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PlayerDTO select(String name) {
|
public static PlayerDTO select(String name) {
|
||||||
String sql = "SELECT * FROM player_name WHERE last_known_name = ?;";
|
String sql = "SELECT * FROM player_name WHERE last_known_name = ?;";
|
||||||
List<PlayerDTO> players = query(sql, name);
|
List<PlayerDTO> players = query(sql, name);
|
||||||
if (players.isEmpty()) return null;
|
if (players.isEmpty()) return null;
|
||||||
return players.getFirst();
|
return players.get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<PlayerDTO> search(String name) {
|
public static List<PlayerDTO> search(String name) {
|
||||||
@ -114,7 +114,7 @@ public class PlayerDTO {
|
|||||||
try (ResultSet rs = insertRow.execute()) {
|
try (ResultSet rs = insertRow.execute()) {
|
||||||
List<PlayerDTO> players = getDTOFromRS(rs);
|
List<PlayerDTO> players = getDTOFromRS(rs);
|
||||||
if (players.isEmpty()) return null;
|
if (players.isEmpty()) return null;
|
||||||
return players.getFirst();
|
return players.get(0);
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
DatabaseManager.handleDatabaseError("PlayerDTO.insert ", e, insertRow.toString());
|
DatabaseManager.handleDatabaseError("PlayerDTO.insert ", e, insertRow.toString());
|
||||||
return null;
|
return null;
|
||||||
@ -136,7 +136,7 @@ public class PlayerDTO {
|
|||||||
try (ResultSet rs = updateRow.execute()) {
|
try (ResultSet rs = updateRow.execute()) {
|
||||||
List<PlayerDTO> players = getDTOFromRS(rs);
|
List<PlayerDTO> players = getDTOFromRS(rs);
|
||||||
if (players.isEmpty()) return null;
|
if (players.isEmpty()) return null;
|
||||||
return players.getFirst();
|
return players.get(0);
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
DatabaseManager.handleDatabaseError("PlayerDTO.update ", e, updateRow.toString());
|
DatabaseManager.handleDatabaseError("PlayerDTO.update ", e, updateRow.toString());
|
||||||
return null;
|
return null;
|
||||||
|
@ -55,7 +55,7 @@ public class PrivilegeTemplateDTO {
|
|||||||
try (ResultSet rs = insertRow.execute()) {
|
try (ResultSet rs = insertRow.execute()) {
|
||||||
List<PrivilegeTemplateDTO> templates = getDTOFromRS(rs);
|
List<PrivilegeTemplateDTO> templates = getDTOFromRS(rs);
|
||||||
if (templates.isEmpty()) return null;
|
if (templates.isEmpty()) return null;
|
||||||
return templates.getFirst();
|
return templates.get(0);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
DatabaseManager.handleDatabaseError("PrivilegeTemplateDTO.create ", e, null);
|
DatabaseManager.handleDatabaseError("PrivilegeTemplateDTO.create ", e, null);
|
||||||
return null;
|
return null;
|
||||||
@ -70,7 +70,7 @@ public class PrivilegeTemplateDTO {
|
|||||||
try (ResultSet rs = updateRow.execute()) {
|
try (ResultSet rs = updateRow.execute()) {
|
||||||
List<PrivilegeTemplateDTO> templates = getDTOFromRS(rs);
|
List<PrivilegeTemplateDTO> templates = getDTOFromRS(rs);
|
||||||
if (templates.isEmpty()) return null;
|
if (templates.isEmpty()) return null;
|
||||||
return templates.getFirst();
|
return templates.get(0);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
DatabaseManager.handleDatabaseError("PrivilegeTemplateDTO.doUpdate ", e, null);
|
DatabaseManager.handleDatabaseError("PrivilegeTemplateDTO.doUpdate ", e, null);
|
||||||
return null;
|
return null;
|
||||||
@ -81,7 +81,7 @@ public class PrivilegeTemplateDTO {
|
|||||||
String sql = "SELECT * FROM privilege_template WHERE creator = ? AND name = ?;";
|
String sql = "SELECT * FROM privilege_template WHERE creator = ? AND name = ?;";
|
||||||
List<PrivilegeTemplateDTO> templates = query(sql, creator.toString(), name);
|
List<PrivilegeTemplateDTO> templates = query(sql, creator.toString(), name);
|
||||||
if (templates.isEmpty()) return null;
|
if (templates.isEmpty()) return null;
|
||||||
return templates.getFirst();
|
return templates.get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<PrivilegeTemplateDTO> selectAll(UUID creator) {
|
public static List<PrivilegeTemplateDTO> selectAll(UUID creator) {
|
||||||
|
@ -57,6 +57,7 @@ public class ConfigManager {
|
|||||||
_tp_delay = _file.getInt("Teleport.Delay", 0);
|
_tp_delay = _file.getInt("Teleport.Delay", 0);
|
||||||
_tp_cool_down = _file.getInt("Teleport.CoolDown", 0);
|
_tp_cool_down = _file.getInt("Teleport.CoolDown", 0);
|
||||||
_tool = _file.getString("Tool", "ARROW");
|
_tool = _file.getString("Tool", "ARROW");
|
||||||
|
_info_tool = _file.getString("InfoTool", "STRING");
|
||||||
|
|
||||||
_economy_enable = _file.getBoolean("Economy.Enable", false);
|
_economy_enable = _file.getBoolean("Economy.Enable", false);
|
||||||
if (getEconomyEnable()) {
|
if (getEconomyEnable()) {
|
||||||
@ -179,6 +180,8 @@ public class ConfigManager {
|
|||||||
|
|
||||||
_file.set("Tool", _tool);
|
_file.set("Tool", _tool);
|
||||||
_file.setComments("Tool", List.of(Translation.Config_Comment_ToolName.trans()));
|
_file.setComments("Tool", List.of(Translation.Config_Comment_ToolName.trans()));
|
||||||
|
_file.set("InfoTool", _info_tool);
|
||||||
|
_file.setComments("InfoTool", List.of(Translation.Config_Comment_InfoToolName.trans()));
|
||||||
|
|
||||||
_file.setComments("Economy", Arrays.asList(Translation.Config_Comment_Economy.trans(), Translation.Config_Comment_VaultRequired.trans()));
|
_file.setComments("Economy", Arrays.asList(Translation.Config_Comment_Economy.trans(), Translation.Config_Comment_VaultRequired.trans()));
|
||||||
_file.set("Economy.Enable", _economy_enable);
|
_file.set("Economy.Enable", _economy_enable);
|
||||||
@ -396,6 +399,15 @@ public class ConfigManager {
|
|||||||
_file.set("Tool", tool);
|
_file.set("Tool", tool);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Material getInfoTool() {
|
||||||
|
return Material.getMaterial(_info_tool);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInfoTool(String info_tool) {
|
||||||
|
_info_tool = info_tool;
|
||||||
|
_file.set("InfoTool", info_tool);
|
||||||
|
}
|
||||||
|
|
||||||
public Boolean getEconomyEnable() {
|
public Boolean getEconomyEnable() {
|
||||||
return _economy_enable;
|
return _economy_enable;
|
||||||
}
|
}
|
||||||
@ -450,6 +462,10 @@ public class ConfigManager {
|
|||||||
XLogger.err(Translation.Config_Check_ToolNameError);
|
XLogger.err(Translation.Config_Check_ToolNameError);
|
||||||
setTool("ARROW");
|
setTool("ARROW");
|
||||||
}
|
}
|
||||||
|
if (Material.getMaterial(_info_tool) == null) {
|
||||||
|
XLogger.err(Translation.Config_Check_InfoToolNameError);
|
||||||
|
setInfoTool("STRING");
|
||||||
|
}
|
||||||
if (getAutoCreateRadius() <= 0 && getAutoCreateRadius() != -1) {
|
if (getAutoCreateRadius() <= 0 && getAutoCreateRadius() != -1) {
|
||||||
XLogger.err(Translation.Config_Check_AutoCreateRadiusError);
|
XLogger.err(Translation.Config_Check_AutoCreateRadiusError);
|
||||||
setAutoCreateRadius(10);
|
setAutoCreateRadius(10);
|
||||||
@ -509,7 +525,9 @@ public class ConfigManager {
|
|||||||
private Boolean _tp_enable;
|
private Boolean _tp_enable;
|
||||||
private Integer _tp_delay;
|
private Integer _tp_delay;
|
||||||
private Integer _tp_cool_down;
|
private Integer _tp_cool_down;
|
||||||
|
|
||||||
private String _tool;
|
private String _tool;
|
||||||
|
private String _info_tool;
|
||||||
|
|
||||||
private Boolean _economy_enable;
|
private Boolean _economy_enable;
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import cn.lunadeer.dominion.commands.Operator;
|
|||||||
import cn.lunadeer.dominion.dtos.Flag;
|
import cn.lunadeer.dominion.dtos.Flag;
|
||||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||||
import cn.lunadeer.minecraftpluginutils.Scheduler;
|
import cn.lunadeer.minecraftpluginutils.Scheduler;
|
||||||
|
import cn.lunadeer.minecraftpluginutils.XLogger;
|
||||||
import cn.lunadeer.minecraftpluginutils.databse.*;
|
import cn.lunadeer.minecraftpluginutils.databse.*;
|
||||||
import cn.lunadeer.minecraftpluginutils.databse.syntax.AddColumn;
|
import cn.lunadeer.minecraftpluginutils.databse.syntax.AddColumn;
|
||||||
import cn.lunadeer.minecraftpluginutils.databse.syntax.CreateTable;
|
import cn.lunadeer.minecraftpluginutils.databse.syntax.CreateTable;
|
||||||
@ -12,10 +13,15 @@ import cn.lunadeer.minecraftpluginutils.databse.syntax.InsertRow;
|
|||||||
import cn.lunadeer.minecraftpluginutils.databse.syntax.RemoveColumn;
|
import cn.lunadeer.minecraftpluginutils.databse.syntax.RemoveColumn;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class DatabaseTables {
|
public class DatabaseTables {
|
||||||
public static void migrate() {
|
public static void migrate() {
|
||||||
@ -279,7 +285,19 @@ public class DatabaseTables {
|
|||||||
Common.ExportCSV("dominion", new File(export_path, "dominion.csv"));
|
Common.ExportCSV("dominion", new File(export_path, "dominion.csv"));
|
||||||
Common.ExportCSV("dominion_group", new File(export_path, "dominion_group.csv"));
|
Common.ExportCSV("dominion_group", new File(export_path, "dominion_group.csv"));
|
||||||
Common.ExportCSV("dominion_member", new File(export_path, "dominion_member.csv"));
|
Common.ExportCSV("dominion_member", new File(export_path, "dominion_member.csv"));
|
||||||
|
Map<String, String> world_uid_map = Dominion.instance.getServer().getWorlds().stream().collect(HashMap::new, (m, w) -> m.put(w.getName(), w.getUID().toString()), HashMap::putAll);
|
||||||
|
YamlConfiguration world_uid = new YamlConfiguration();
|
||||||
|
for (Map.Entry<String, String> entry : world_uid_map.entrySet()) {
|
||||||
|
world_uid.set(entry.getKey(), entry.getValue());
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
world_uid.save(new File(export_path, "world_uid_mapping.yml"));
|
||||||
|
} catch (Exception e) {
|
||||||
|
XLogger.err("Save world_uid_mapping.yml failed: %s", e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
Notification.info(sender, Translation.Commands_Operator_ExportDBSuccess);
|
Notification.info(sender, Translation.Commands_Operator_ExportDBSuccess);
|
||||||
|
Notification.info(sender, "Path: %s", export_path.getAbsolutePath());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -290,11 +308,40 @@ public class DatabaseTables {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Notification.info(sender, Translation.Commands_Operator_ImportDBBegin);
|
Notification.info(sender, Translation.Commands_Operator_ImportDBBegin);
|
||||||
Common.ImportCSV("player_name", "id", new File(export_path, "player_name.csv"));
|
Map<String, String> world_uid_map = Dominion.instance.getServer().getWorlds().stream().collect(HashMap::new, (m, w) -> m.put(w.getName(), w.getUID().toString()), HashMap::putAll);
|
||||||
Common.ImportCSV("privilege_template", "id", new File(export_path, "privilege_template.csv"));
|
File player_name_csv = new File(export_path, "player_name.csv");
|
||||||
Common.ImportCSV("dominion", "id", new File(export_path, "dominion.csv"));
|
File privilege_template_csv = new File(export_path, "privilege_template.csv");
|
||||||
Common.ImportCSV("dominion_group", "id", new File(export_path, "dominion_group.csv"));
|
File dominion_csv = new File(export_path, "dominion.csv");
|
||||||
Common.ImportCSV("dominion_member", "id", new File(export_path, "dominion_member.csv"));
|
File world_uid_mapping = new File(export_path, "world_uid_mapping.yml");
|
||||||
|
File dominion_group_csv = new File(export_path, "dominion_group.csv");
|
||||||
|
File dominion_member_csv = new File(export_path, "dominion_member.csv");
|
||||||
|
if (!player_name_csv.exists() || !privilege_template_csv.exists() || !dominion_csv.exists() || !world_uid_mapping.exists() || !dominion_group_csv.exists() || !dominion_member_csv.exists()) {
|
||||||
|
Notification.error(sender, Translation.Commands_Operator_ImportDBIncompleteFail);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
String dominion_file_str = Files.readString(dominion_csv.toPath());
|
||||||
|
YamlConfiguration world_uid = YamlConfiguration.loadConfiguration(world_uid_mapping);
|
||||||
|
for (String key : world_uid.getKeys(false)) {
|
||||||
|
if (world_uid_map.containsKey(key)) {
|
||||||
|
String old_uid = world_uid.getString(key);
|
||||||
|
String new_uid = world_uid_map.get(key);
|
||||||
|
if (old_uid == null || new_uid == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
dominion_file_str = dominion_file_str.replace(old_uid, world_uid_map.get(key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Files.writeString(dominion_csv.toPath(), dominion_file_str);
|
||||||
|
} catch (IOException e) {
|
||||||
|
XLogger.err("Import world_uid_mapping.yml failed: %s", e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Common.ImportCSV("player_name", "id", player_name_csv);
|
||||||
|
Common.ImportCSV("privilege_template", "id", privilege_template_csv);
|
||||||
|
Common.ImportCSV("dominion", "id", dominion_csv);
|
||||||
|
Common.ImportCSV("dominion_group", "id", dominion_group_csv);
|
||||||
|
Common.ImportCSV("dominion_member", "id", dominion_member_csv);
|
||||||
Notification.info(sender, Translation.Commands_Operator_ImportDBSuccess);
|
Notification.info(sender, Translation.Commands_Operator_ImportDBSuccess);
|
||||||
Operator.reloadCache(sender, new String[0]);
|
Operator.reloadCache(sender, new String[0]);
|
||||||
});
|
});
|
||||||
|
@ -162,6 +162,8 @@ public class Translation extends Localization {
|
|||||||
public static i18n Commands_Operator_ImportDBSuccess;
|
public static i18n Commands_Operator_ImportDBSuccess;
|
||||||
@i18nField(defaultValue = "没有可导入的数据")
|
@i18nField(defaultValue = "没有可导入的数据")
|
||||||
public static i18n Commands_Operator_ImportDBFail;
|
public static i18n Commands_Operator_ImportDBFail;
|
||||||
|
@i18nField(defaultValue = "导入失败,数据不完整,请重新导出文件")
|
||||||
|
public static i18n Commands_Operator_ImportDBIncompleteFail;
|
||||||
|
|
||||||
@i18nField(defaultValue = "用法: /dominion template create <模板名称>")
|
@i18nField(defaultValue = "用法: /dominion template create <模板名称>")
|
||||||
public static i18n Commands_Template_CreateTemplateUsage;
|
public static i18n Commands_Template_CreateTemplateUsage;
|
||||||
@ -824,8 +826,10 @@ public class Translation extends Localization {
|
|||||||
public static i18n Config_Check_MessageDisplayError;
|
public static i18n Config_Check_MessageDisplayError;
|
||||||
@i18nField(defaultValue = "AutoCleanAfterDays 不能等于 0,已重置为 180")
|
@i18nField(defaultValue = "AutoCleanAfterDays 不能等于 0,已重置为 180")
|
||||||
public static i18n Config_Check_AutoCleanAfterDaysError;
|
public static i18n Config_Check_AutoCleanAfterDaysError;
|
||||||
@i18nField(defaultValue = "工具名称设置错误,已重置为 ARROW")
|
@i18nField(defaultValue = "Tool 名称设置错误,已重置为 ARROW")
|
||||||
public static i18n Config_Check_ToolNameError;
|
public static i18n Config_Check_ToolNameError;
|
||||||
|
@i18nField(defaultValue = "InfoTool 名称设置错误,已重置为 STRING")
|
||||||
|
public static i18n Config_Check_InfoToolNameError;
|
||||||
@i18nField(defaultValue = "%s 的 MinY 不能大于等于 MaxY,已重置为 -64 和 320")
|
@i18nField(defaultValue = "%s 的 MinY 不能大于等于 MaxY,已重置为 -64 和 320")
|
||||||
public static i18n Config_Check_GroupMinYError;
|
public static i18n Config_Check_GroupMinYError;
|
||||||
@i18nField(defaultValue = "%s 的 Size.MaxX 设置过小,已重置为 128")
|
@i18nField(defaultValue = "%s 的 Size.MaxX 设置过小,已重置为 128")
|
||||||
@ -919,6 +923,8 @@ public class Translation extends Localization {
|
|||||||
public static i18n Config_Comment_AutoCleanAfterDays;
|
public static i18n Config_Comment_AutoCleanAfterDays;
|
||||||
@i18nField(defaultValue = "圈地工具名称")
|
@i18nField(defaultValue = "圈地工具名称")
|
||||||
public static i18n Config_Comment_ToolName;
|
public static i18n Config_Comment_ToolName;
|
||||||
|
@i18nField(defaultValue = "查询领地信息工具名称")
|
||||||
|
public static i18n Config_Comment_InfoToolName;
|
||||||
@i18nField(defaultValue = "经济设置")
|
@i18nField(defaultValue = "经济设置")
|
||||||
public static i18n Config_Comment_Economy;
|
public static i18n Config_Comment_Economy;
|
||||||
@i18nField(defaultValue = "需要安装 Vault 前置及插件")
|
@i18nField(defaultValue = "需要安装 Vault 前置及插件")
|
||||||
@ -963,6 +969,31 @@ public class Translation extends Localization {
|
|||||||
@i18nField(defaultValue = "管理领地内的其他成员权限")
|
@i18nField(defaultValue = "管理领地内的其他成员权限")
|
||||||
public static i18n Flags_admin_Description;
|
public static i18n Flags_admin_Description;
|
||||||
|
|
||||||
|
@i18nField(defaultValue = "已选择第一个点: %d %d %d")
|
||||||
|
public static i18n Tool_SelectFirstPoint;
|
||||||
|
@i18nField(defaultValue = "已选择第二个点: %d %d %d")
|
||||||
|
public static i18n Tool_SelectSecondPoint;
|
||||||
|
@i18nField(defaultValue = "两个点不在同一个世界")
|
||||||
|
public static i18n Tool_NotSameWorld;
|
||||||
|
@i18nField(defaultValue = "已选择两个点,可以使用 /dominion create <领地名称> 创建领地")
|
||||||
|
public static i18n Tool_SelectTwoPoints;
|
||||||
|
@i18nField(defaultValue = "预计领地创建价格为 %.2f %s")
|
||||||
|
public static i18n Tool_CreateDominionPrice;
|
||||||
|
@i18nField(defaultValue = "尺寸: %d x %d x %d")
|
||||||
|
public static i18n Tool_DominionSize;
|
||||||
|
@i18nField(defaultValue = "面积: %d")
|
||||||
|
public static i18n Tool_DominionSquare;
|
||||||
|
@i18nField(defaultValue = "体积: %d")
|
||||||
|
public static i18n Tool_DominionVolume;
|
||||||
|
@i18nField(defaultValue = "高度: %d")
|
||||||
|
public static i18n Tool_DominionHeight;
|
||||||
|
@i18nField(defaultValue = "这个方块(%d, %d, %d)不在任何领地内")
|
||||||
|
public static i18n Tool_LocationNotInDominion;
|
||||||
|
@i18nField(defaultValue = "这个方块(%d, %d, %d)在领地 %s 内")
|
||||||
|
public static i18n Tool_LocationInDominion;
|
||||||
|
@i18nField(defaultValue = "领地主人: %s")
|
||||||
|
public static i18n Tool_DominionOwner;
|
||||||
|
|
||||||
|
|
||||||
public Translation(JavaPlugin plugin) {
|
public Translation(JavaPlugin plugin) {
|
||||||
super(plugin);
|
super(plugin);
|
||||||
|
@ -34,7 +34,7 @@ public class CreateDominion {
|
|||||||
Map<Integer, Location> points = autoPoints(sender);
|
Map<Integer, Location> points = autoPoints(sender);
|
||||||
operator.getResponse().thenAccept(result -> {
|
operator.getResponse().thenAccept(result -> {
|
||||||
if (Objects.equals(result.getStatus(), AbstractOperator.Result.SUCCESS)) {
|
if (Objects.equals(result.getStatus(), AbstractOperator.Result.SUCCESS)) {
|
||||||
DominionManage.show(sender, new String[]{"list"});
|
DominionManage.show(sender, new String[]{"manage", input});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
DominionController.create(operator, input, points.get(0), points.get(1));
|
DominionController.create(operator, input, points.get(0), points.get(1));
|
||||||
|
@ -36,7 +36,7 @@ public class EnvSetting {
|
|||||||
.append(Button.create(Translation.TUI_Navigation_DominionList).setExecuteCommand("/dominion list").build())
|
.append(Button.create(Translation.TUI_Navigation_DominionList).setExecuteCommand("/dominion list").build())
|
||||||
.append(Button.create(Translation.TUI_Navigation_Manage).setExecuteCommand("/dominion manage " + dominion.getName()).build())
|
.append(Button.create(Translation.TUI_Navigation_Manage).setExecuteCommand("/dominion manage " + dominion.getName()).build())
|
||||||
.append(Translation.TUI_Navigation_EnvSetting));
|
.append(Translation.TUI_Navigation_EnvSetting));
|
||||||
for (Flag flag : Flag.getDominionOnlyFlagsEnabled()) {
|
for (Flag flag : Flag.getEnvironmentFlagsEnabled()) {
|
||||||
view.add(createOption(flag, dominion.getFlagValue(flag), dominion.getName(), page));
|
view.add(createOption(flag, dominion.getFlagValue(flag), dominion.getName(), page));
|
||||||
}
|
}
|
||||||
view.showOn(player, page);
|
view.showOn(player, page);
|
||||||
|
@ -63,14 +63,14 @@ public class GroupList {
|
|||||||
for (GroupDTO group : groups) {
|
for (GroupDTO group : groups) {
|
||||||
Line line = new Line();
|
Line line = new Line();
|
||||||
Button del = Button.createRed(Translation.TUI_DeleteButton)
|
Button del = Button.createRed(Translation.TUI_DeleteButton)
|
||||||
.setHoverText(String.format(Translation.TUI_GroupList_DeleteDescription.trans(), group.getName()))
|
.setHoverText(String.format(Translation.TUI_GroupList_DeleteDescription.trans(), group.getNamePlain()))
|
||||||
.setExecuteCommand("/dominion group delete " + dominion.getName() + " " + group.getName());
|
.setExecuteCommand("/dominion group delete " + dominion.getName() + " " + group.getNamePlain());
|
||||||
Button edit = Button.create(Translation.TUI_EditButton)
|
Button edit = Button.create(Translation.TUI_EditButton)
|
||||||
.setHoverText(String.format(Translation.TUI_GroupList_EditDescription.trans(), group.getName()))
|
.setHoverText(String.format(Translation.TUI_GroupList_EditDescription.trans(), group.getNamePlain()))
|
||||||
.setExecuteCommand("/dominion group setting " + dominion.getName() + " " + group.getName());
|
.setExecuteCommand("/dominion group setting " + dominion.getName() + " " + group.getNamePlain());
|
||||||
Button add = Button.createGreen("+")
|
Button add = Button.createGreen("+")
|
||||||
.setHoverText(String.format(Translation.TUI_GroupList_AddMemberDescription.trans(), group.getName()))
|
.setHoverText(String.format(Translation.TUI_GroupList_AddMemberDescription.trans(), group.getNamePlain()))
|
||||||
.setExecuteCommand("/dominion group select_member " + dominion.getName() + " " + group.getName() + " " + page);
|
.setExecuteCommand("/dominion group select_member " + dominion.getName() + " " + group.getNamePlain() + " " + page);
|
||||||
line.append(del.build()).append(edit.build()).append(group.getNameColoredComponent()).append(add.build());
|
line.append(del.build()).append(edit.build()).append(group.getNameColoredComponent()).append(add.build());
|
||||||
view.add(line);
|
view.add(line);
|
||||||
List<MemberDTO> players = MemberDTO.selectByGroupId(group.getId());
|
List<MemberDTO> players = MemberDTO.selectByGroupId(group.getId());
|
||||||
@ -80,9 +80,9 @@ public class GroupList {
|
|||||||
if (p == null) continue;
|
if (p == null) continue;
|
||||||
Button remove = Button.createRed("-")
|
Button remove = Button.createRed("-")
|
||||||
.setHoverText(
|
.setHoverText(
|
||||||
String.format(Translation.TUI_GroupList_RemoveMemberDescription.trans(), p.getLastKnownName(), group.getName())
|
String.format(Translation.TUI_GroupList_RemoveMemberDescription.trans(), p.getLastKnownName(), group.getNamePlain())
|
||||||
)
|
)
|
||||||
.setExecuteCommand("/dominion group remove_member " + dominion.getName() + " " + group.getName() + " " + p.getLastKnownName() + " " + page);
|
.setExecuteCommand("/dominion group remove_member " + dominion.getName() + " " + group.getNamePlain() + " " + p.getLastKnownName() + " " + page);
|
||||||
Line playerLine = new Line().setDivider("");
|
Line playerLine = new Line().setDivider("");
|
||||||
playerLine.append(Component.text(" "));
|
playerLine.append(Component.text(" "));
|
||||||
playerLine.append(remove.build()).append(" | " + p.getLastKnownName());
|
playerLine.append(remove.build()).append(" | " + p.getLastKnownName());
|
||||||
|
@ -45,7 +45,7 @@ public class GroupSetting {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ListView view = ListView.create(10, "/dominion group setting " + dominion.getName() + " " + group.getName());
|
ListView view = ListView.create(10, "/dominion group setting " + dominion.getName() + " " + group.getNamePlain());
|
||||||
view.title(Component.text(Translation.TUI_GroupSetting_TitleL.trans())
|
view.title(Component.text(Translation.TUI_GroupSetting_TitleL.trans())
|
||||||
.append(group.getNameColoredComponent())
|
.append(group.getNameColoredComponent())
|
||||||
.append(Component.text(Translation.TUI_GroupSetting_TitleR.trans())));
|
.append(Component.text(Translation.TUI_GroupSetting_TitleR.trans())));
|
||||||
@ -58,31 +58,31 @@ public class GroupSetting {
|
|||||||
.append(Translation.TUI_Navigation_GroupSetting)
|
.append(Translation.TUI_Navigation_GroupSetting)
|
||||||
);
|
);
|
||||||
Button rename_btn = Button.create(Translation.TUI_GroupSetting_RenameButton)
|
Button rename_btn = Button.create(Translation.TUI_GroupSetting_RenameButton)
|
||||||
.setHoverText(String.format(Translation.TUI_GroupSetting_RenameDescription.trans(), group.getName()))
|
.setHoverText(String.format(Translation.TUI_GroupSetting_RenameDescription.trans(), group.getNamePlain()))
|
||||||
.setExecuteCommand("/dominion cui_rename_group " + dominion.getName() + " " + group.getName());
|
.setExecuteCommand("/dominion cui_rename_group " + dominion.getName() + " " + group.getNamePlain());
|
||||||
view.add(Line.create().append(rename_btn.build()));
|
view.add(Line.create().append(rename_btn.build()));
|
||||||
|
|
||||||
if (group.getAdmin()) {
|
if (group.getAdmin()) {
|
||||||
view.add(Line.create()
|
view.add(Line.create()
|
||||||
.append(Button.createGreen("☑")
|
.append(Button.createGreen("☑")
|
||||||
.setExecuteCommand(parseCommand(dominion.getName(), group.getName(), "admin", false, page))
|
.setExecuteCommand(parseCommand(dominion.getName(), group.getNamePlain(), "admin", false, page))
|
||||||
.build())
|
.build())
|
||||||
.append(
|
.append(
|
||||||
Component.text(Translation.Flags_admin_DisplayName.trans())
|
Component.text(Translation.Flags_admin_DisplayName.trans())
|
||||||
.hoverEvent(Component.text(Translation.Flags_admin_Description.trans()))
|
.hoverEvent(Component.text(Translation.Flags_admin_Description.trans()))
|
||||||
));
|
));
|
||||||
view.add(createOption(Flag.GLOW, group.getFlagValue(Flag.GLOW), dominion.getName(), group.getName(), page));
|
view.add(createOption(Flag.GLOW, group.getFlagValue(Flag.GLOW), dominion.getName(), group.getNamePlain(), page));
|
||||||
} else {
|
} else {
|
||||||
view.add(Line.create()
|
view.add(Line.create()
|
||||||
.append(Button.createRed("☐")
|
.append(Button.createRed("☐")
|
||||||
.setExecuteCommand(parseCommand(dominion.getName(), group.getName(), "admin", true, page))
|
.setExecuteCommand(parseCommand(dominion.getName(), group.getNamePlain(), "admin", true, page))
|
||||||
.build())
|
.build())
|
||||||
.append(
|
.append(
|
||||||
Component.text(Translation.Flags_admin_DisplayName.trans())
|
Component.text(Translation.Flags_admin_DisplayName.trans())
|
||||||
.hoverEvent(Component.text(Translation.Flags_admin_Description.trans()))
|
.hoverEvent(Component.text(Translation.Flags_admin_Description.trans()))
|
||||||
));
|
));
|
||||||
for (Flag flag : Flag.getPrivilegeFlagsEnabled()) {
|
for (Flag flag : Flag.getPrivilegeFlagsEnabled()) {
|
||||||
view.add(createOption(flag, group.getFlagValue(flag), dominion.getName(), group.getName(), page));
|
view.add(createOption(flag, group.getFlagValue(flag), dominion.getName(), group.getNamePlain(), page));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
view.showOn(player, page);
|
view.showOn(player, page);
|
||||||
|
@ -39,9 +39,9 @@ public class SelectMember {
|
|||||||
}
|
}
|
||||||
int backPage = getPage(args, 4);
|
int backPage = getPage(args, 4);
|
||||||
int page = getPage(args, 5);
|
int page = getPage(args, 5);
|
||||||
ListView view = ListView.create(10, "/dominion group select_member " + dominion.getName() + " " + group.getName() + " " + backPage);
|
ListView view = ListView.create(10, "/dominion group select_member " + dominion.getName() + " " + group.getNamePlain() + " " + backPage);
|
||||||
view.title(Translation.TUI_SelectMember_Title);
|
view.title(Translation.TUI_SelectMember_Title);
|
||||||
Line sub = Line.create().append(String.format(Translation.TUI_SelectMember_Description.trans(), group.getName()))
|
Line sub = Line.create().append(String.format(Translation.TUI_SelectMember_Description.trans(), group.getNamePlain()))
|
||||||
.append(Button.create(Translation.TUI_BackButton).setExecuteCommand("/dominion group list " + dominion.getName() + " " + backPage).build());
|
.append(Button.create(Translation.TUI_BackButton).setExecuteCommand("/dominion group list " + dominion.getName() + " " + backPage).build());
|
||||||
view.subtitle(sub);
|
view.subtitle(sub);
|
||||||
List<MemberDTO> members = MemberDTO.selectByDomGroupId(dominion.getId(), -1);
|
List<MemberDTO> members = MemberDTO.selectByDomGroupId(dominion.getId(), -1);
|
||||||
@ -50,7 +50,7 @@ public class SelectMember {
|
|||||||
if (p == null) continue;
|
if (p == null) continue;
|
||||||
view.add(Line.create()
|
view.add(Line.create()
|
||||||
.append(Button.create(p.getLastKnownName())
|
.append(Button.create(p.getLastKnownName())
|
||||||
.setExecuteCommand("/dominion group add_member " + dominion.getName() + " " + group.getName() + " " + p.getLastKnownName() + " " + backPage)
|
.setExecuteCommand("/dominion group add_member " + dominion.getName() + " " + group.getNamePlain() + " " + p.getLastKnownName() + " " + backPage)
|
||||||
.build()));
|
.build()));
|
||||||
}
|
}
|
||||||
view.showOn(player, page);
|
view.showOn(player, page);
|
||||||
|
@ -99,7 +99,7 @@ public class MemberList {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (group != null) {
|
if (group != null) {
|
||||||
prev.setDisabled(String.format(Translation.TUI_MemberList_BelongToGroup.trans(), group.getName()));
|
prev.setDisabled(String.format(Translation.TUI_MemberList_BelongToGroup.trans(), group.getNamePlain()));
|
||||||
}
|
}
|
||||||
line.append(remove.build());
|
line.append(remove.build());
|
||||||
line.append(prev.build());
|
line.append(prev.build());
|
||||||
|
@ -55,6 +55,8 @@ AutoCleanAfterDays: 180
|
|||||||
|
|
||||||
Tool: ARROW
|
Tool: ARROW
|
||||||
|
|
||||||
|
InfoTool: STRING
|
||||||
|
|
||||||
Economy:
|
Economy:
|
||||||
Enable: false
|
Enable: false
|
||||||
Price: 10.0
|
Price: 10.0
|
||||||
|
@ -3,10 +3,12 @@ version: @version@
|
|||||||
main: cn.lunadeer.dominion.Dominion
|
main: cn.lunadeer.dominion.Dominion
|
||||||
api-version: '1.20'
|
api-version: '1.20'
|
||||||
folia-supported: true
|
folia-supported: true
|
||||||
|
libraries: [ ]
|
||||||
softdepend:
|
softdepend:
|
||||||
- Vault
|
- Vault
|
||||||
- dynmap
|
- dynmap
|
||||||
- PlaceholderAPI
|
- PlaceholderAPI
|
||||||
|
- BlueMap
|
||||||
commands:
|
commands:
|
||||||
Dominion:
|
Dominion:
|
||||||
description: 领地插件命令
|
description: 领地插件命令
|
||||||
|
@ -1,6 +1,15 @@
|
|||||||
## Dominion Documentation
|
## Dominion Documentation
|
||||||
|
|
||||||
## Preface
|
[![GitHub Repository](https://img.shields.io/badge/SourceCode-GitHub-blue?logo=github)](https://github.com/ColdeZhang/Dominion)
|
||||||
|
[![bStats](https://img.shields.io/badge/bStats-Statistics-eacd76?logo=google-analytics)](https://bstats.org/plugin/bukkit/Dominion/21445)
|
||||||
|
|
||||||
|
[![Hangar](https://img.shields.io/badge/To-Hangar-004ee9)](https://hangar.papermc.io/zhangyuheng/Dominion)
|
||||||
|
[![Modrinth](https://img.shields.io/badge/To-Modrinth-1bd96a)](https://modrinth.com/plugin/zhangyuheng-dominion)
|
||||||
|
[![Spigot](https://img.shields.io/badge/To-Spigot-ed8106)](https://www.spigotmc.org/resources/dominion.119514/)
|
||||||
|
|
||||||
|
[![Latest Build](https://img.shields.io/github/v/release/ColdeZhang/Dominion?label=LatestBuild&logo=github&color=0aa344)](https://github.com/ColdeZhang/Dominion/releases/latest)
|
||||||
|
|
||||||
|
## Brief
|
||||||
|
|
||||||
First of all, thank you very much for choosing and using this plugin.
|
First of all, thank you very much for choosing and using this plugin.
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
### 1. 引入依赖
|
### 1. 引入依赖
|
||||||
|
|
||||||
If you are using gradle, you can add the following code to your `build.gradle` file:
|
如果您使用 gradle,可以在您的 `build.gradle` 文件中添加如下代码:
|
||||||
|
|
||||||
```groovy
|
```groovy
|
||||||
// build.gradle
|
// build.gradle
|
||||||
@ -15,11 +15,11 @@ repositories {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly("cn.lunadeer:DominionAPI:1.4-SNAPSHOT")
|
compileOnly("cn.lunadeer:DominionAPI:2.1-SNAPSHOT")
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
or if you are using gradle kotlin dsl:
|
或者你使用的是 gradle kotlin dsl:
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
// build.gradle.kts
|
// build.gradle.kts
|
||||||
@ -28,11 +28,11 @@ repositories {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly("cn.lunadeer:DominionAPI:1.4-SNAPSHOT")
|
compileOnly("cn.lunadeer:DominionAPI:2.1-SNAPSHOT")
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
or if you are using maven, you can add the following code to your `pom.xml` file:
|
再或者您使用 maven,可以在您的 `pom.xml` 文件中添加如下代码:
|
||||||
|
|
||||||
```xml
|
```xml
|
||||||
<!-- pom.xml -->
|
<!-- pom.xml -->
|
||||||
@ -47,7 +47,7 @@ or if you are using maven, you can add the following code to your `pom.xml` file
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.lunadeer</groupId>
|
<groupId>cn.lunadeer</groupId>
|
||||||
<artifactId>DominionAPI</artifactId>
|
<artifactId>DominionAPI</artifactId>
|
||||||
<version>1.4-SNAPSHOT</version>
|
<version>2.1-SNAPSHOT</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
@ -93,3 +93,7 @@ public void onEnable() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
[示例项目地址](https://github.com/ColdeZhang/DominionAddonExample)。
|
||||||
|
|
||||||
|
[Javadoc地址](https://coldezhang.github.io/DominionAPI/)。
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
- 1.20.1 及以上;
|
- 1.20.1 及以上;
|
||||||
- Spigot、Paper、Folia...;
|
- Spigot、Paper、Folia...;
|
||||||
- Java 21 及以上;
|
|
||||||
|
|
||||||
> 虽然本插件支持 Spigot 但是我们强烈推荐您升级到 Paper 或其分支核心(如 Purpur)以获得更好的性能体验。
|
> 虽然本插件支持 Spigot 但是我们强烈推荐您升级到 Paper 或其分支核心(如 Purpur)以获得更好的性能体验。
|
||||||
|
|
||||||
|
@ -1,5 +1,12 @@
|
|||||||
# Dominion 文档
|
# Dominion 文档
|
||||||
|
|
||||||
|
[![GitHub Repository](https://img.shields.io/badge/仓库地址-GitHub-blue?logo=github)](https://github.com/ColdeZhang/Dominion)
|
||||||
|
[![bStats](https://img.shields.io/badge/bStats-数据统计-eacd76?logo=google-analytics)](https://bstats.org/plugin/bukkit/Dominion/21445)
|
||||||
|
|
||||||
|
[![Latest Build](https://img.shields.io/github/v/release/ColdeZhang/Dominion?label=%E6%9C%80%E6%96%B0%E6%9E%84%E5%BB%BA%E4%B8%8B%E8%BD%BD&logo=github&color=0aa344)](https://github.com/ColdeZhang/Dominion/releases/latest)
|
||||||
|
|
||||||
|
[![Latest Build](https://img.shields.io/github/v/release/ColdeZhang/Dominion?label=%E5%A4%87%E7%94%A8%E4%B8%8B%E8%BD%BD%E5%9C%B0%E5%9D%80&logo=gitea&color=0aa344)](https://ssl.lunadeer.cn:14446/mirror/Dominion/releases)
|
||||||
|
|
||||||
## 前言
|
## 前言
|
||||||
|
|
||||||
首先十分感谢您选择并使用本插件。
|
首先十分感谢您选择并使用本插件。
|
||||||
@ -18,3 +25,6 @@ Dominion 是一个完全开源、免费,专为高版本开发,面向未来
|
|||||||
1. [安装、必读、常见问题](operator/README.md)
|
1. [安装、必读、常见问题](operator/README.md)
|
||||||
2. [配置文件参考](operator/config.md)
|
2. [配置文件参考](operator/config.md)
|
||||||
|
|
||||||
|
什么,你是新手服主?推荐通读一下[驿站](https://github.com/postyizhan)大佬的 [笨蛋文档|一群笨蛋们写的 Minecraft 开服教程](https://yizhan.wiki/NitWikit/Java/intro)。
|
||||||
|
希望能对你的开服之路有所帮助!
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ repositories {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly("cn.lunadeer:DominionAPI:1.4-SNAPSHOT")
|
compileOnly("cn.lunadeer:DominionAPI:2.1-SNAPSHOT")
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -28,7 +28,7 @@ repositories {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly("cn.lunadeer:DominionAPI:1.4-SNAPSHOT")
|
compileOnly("cn.lunadeer:DominionAPI:2.1-SNAPSHOT")
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -47,7 +47,7 @@ dependencies {
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.lunadeer</groupId>
|
<groupId>cn.lunadeer</groupId>
|
||||||
<artifactId>DominionAPI</artifactId>
|
<artifactId>DominionAPI</artifactId>
|
||||||
<version>1.4-SNAPSHOT</version>
|
<version>2.1-SNAPSHOT</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
@ -93,3 +93,7 @@ public void onEnable() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
[示例项目地址](https://github.com/ColdeZhang/DominionAddonExample)。
|
||||||
|
|
||||||
|
[Javadoc地址](https://coldezhang.github.io/DominionAPI/)。
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
## 权限
|
## 权限
|
||||||
|
|
||||||
当玩家处在一个子领地内时,其行为只收到子领地的权限控制。
|
当玩家处在一个子领地内时,其行为只收到子领地的权限控制。
|
||||||
子领地的权限设置与傅领地完全相同,参考[权限管理](permission/README.md)。
|
子领地的权限设置与父领地完全相同,参考[权限管理](permission/README.md)。
|
||||||
|
|
||||||
## 关于子领地嵌套
|
## 关于子领地嵌套
|
||||||
|
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
- 1.20.1 及以上;
|
- 1.20.1 及以上;
|
||||||
- Spigot、Paper、Folia...;
|
- Spigot、Paper、Folia...;
|
||||||
- Java 21 及以上;
|
|
||||||
|
|
||||||
> 虽然本插件支持 Spigot 但是我们强烈推荐您升级到 Paper 或其分支核心(如 Purpur)以获得更好的性能体验。
|
> 虽然本插件支持 Spigot 但是我们强烈推荐您升级到 Paper 或其分支核心(如 Purpur)以获得更好的性能体验。
|
||||||
|
|
||||||
|
@ -67,6 +67,9 @@ AutoCleanAfterDays: 180
|
|||||||
# 圈地工具名称
|
# 圈地工具名称
|
||||||
Tool: ARROW
|
Tool: ARROW
|
||||||
|
|
||||||
|
# 查询领地信息工具名称
|
||||||
|
InfoTool: STRING
|
||||||
|
|
||||||
# 经济设置
|
# 经济设置
|
||||||
# 需要安装 Vault 前置及插件
|
# 需要安装 Vault 前置及插件
|
||||||
Economy:
|
Economy:
|
||||||
@ -147,7 +150,7 @@ Timer: false # 性能测试计时器
|
|||||||
- MinX:X方向最小长度 不能小于等于0 不能大于MaxX
|
- MinX:X方向最小长度 不能小于等于0 不能大于MaxX
|
||||||
- MinY:Y方向最小长度 不能小于等于0 不能大于MaxY
|
- MinY:Y方向最小长度 不能小于等于0 不能大于MaxY
|
||||||
- MinZ:Z方向最小长度 不能小于等于0 不能大于MaxZ
|
- MinZ:Z方向最小长度 不能小于等于0 不能大于MaxZ
|
||||||
- Amount:每个玩家拥有的最大领地数量 1表示不限制
|
- Amount:每个玩家拥有的最大领地数量 -1表示不限制
|
||||||
- Depth:子领地深度、0表示不允许子领地、 -1表示不限制
|
- Depth:子领地深度、0表示不允许子领地、 -1表示不限制
|
||||||
- Vert:当设置为 `true` 时,玩家选择区域创建或者自动创建领地,会自动将Y向下向上延伸到MinY和MaxY
|
- Vert:当设置为 `true` 时,玩家选择区域创建或者自动创建领地,会自动将Y向下向上延伸到MinY和MaxY
|
||||||
- WorldSettings:单独设置某个世界的圈地规则(如不设置则使用上述默认规则)
|
- WorldSettings:单独设置某个世界的圈地规则(如不设置则使用上述默认规则)
|
||||||
@ -167,6 +170,10 @@ Timer: false # 性能测试计时器
|
|||||||
|
|
||||||
配置手动圈地时的选取工具。如果配置错误会被设置为默认值“ARROW”箭矢。
|
配置手动圈地时的选取工具。如果配置错误会被设置为默认值“ARROW”箭矢。
|
||||||
|
|
||||||
|
### InfoTool
|
||||||
|
|
||||||
|
配置查询领地信息工具。如果配置错误会被设置为默认值“STRING”字符串。使用左键配合该物品点击领地内方块时会显示领地信息。
|
||||||
|
|
||||||
### Economy
|
### Economy
|
||||||
|
|
||||||
经济控制支持,让玩家需要花费金钱圈地。使用此特性需要安装 Vault 经济前置插件。
|
经济控制支持,让玩家需要花费金钱圈地。使用此特性需要安装 Vault 经济前置插件。
|
||||||
|
@ -1,5 +1,14 @@
|
|||||||
# Dominion 文檔
|
# Dominion 文檔
|
||||||
|
|
||||||
|
[![GitHub Repository](https://img.shields.io/badge/SourceCode-GitHub-blue?logo=github)](https://github.com/ColdeZhang/Dominion)
|
||||||
|
[![bStats](https://img.shields.io/badge/bStats-Statistics-eacd76?logo=google-analytics)](https://bstats.org/plugin/bukkit/Dominion/21445)
|
||||||
|
|
||||||
|
[![Hangar](https://img.shields.io/badge/To-Hangar-004ee9)](https://hangar.papermc.io/zhangyuheng/Dominion)
|
||||||
|
[![Modrinth](https://img.shields.io/badge/To-Modrinth-1bd96a)](https://modrinth.com/plugin/zhangyuheng-dominion)
|
||||||
|
[![Spigot](https://img.shields.io/badge/To-Spigot-ed8106)](https://www.spigotmc.org/resources/dominion.119514/)
|
||||||
|
|
||||||
|
[![Latest Build](https://img.shields.io/github/v/release/ColdeZhang/Dominion?label=LatestBuild&logo=github&color=0aa344)](https://github.com/ColdeZhang/Dominion/releases/latest)
|
||||||
|
|
||||||
## 前言
|
## 前言
|
||||||
|
|
||||||
首先十分感謝您選擇並使用本插件。
|
首先十分感謝您選擇並使用本插件。
|
||||||
|
@ -15,7 +15,7 @@ repositories {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly("cn.lunadeer:DominionAPI:1.4-SNAPSHOT")
|
compileOnly("cn.lunadeer:DominionAPI:2.1-SNAPSHOT")
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -28,7 +28,7 @@ repositories {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly("cn.lunadeer:DominionAPI:1.4-SNAPSHOT")
|
compileOnly("cn.lunadeer:DominionAPI:2.1-SNAPSHOT")
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -47,7 +47,7 @@ dependencies {
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.lunadeer</groupId>
|
<groupId>cn.lunadeer</groupId>
|
||||||
<artifactId>DominionAPI</artifactId>
|
<artifactId>DominionAPI</artifactId>
|
||||||
<version>1.4-SNAPSHOT</version>
|
<version>2.1-SNAPSHOT</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
@ -93,3 +93,7 @@ public void onEnable() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
[示例项目地址](https://github.com/ColdeZhang/DominionAddonExample)。
|
||||||
|
|
||||||
|
[Javadoc地址](https://coldezhang.github.io/DominionAPI/)。
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
- 1.20.1 及以上;
|
- 1.20.1 及以上;
|
||||||
- Spigot、Paper、Folia...;
|
- Spigot、Paper、Folia...;
|
||||||
- Java 21 及以上;
|
|
||||||
|
|
||||||
> 雖然本插件支持 Spigot 但是我們強烈推薦您升級到 Paper 或其分支核心(如 Purpur)以獲得更好的性能體驗。
|
> 雖然本插件支持 Spigot 但是我們強烈推薦您升級到 Paper 或其分支核心(如 Purpur)以獲得更好的性能體驗。
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
java {
|
java {
|
||||||
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
|
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||||
}
|
}
|
||||||
|
|
||||||
// utf-8
|
// utf-8
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package cn.lunadeer.dominion.events_v1_20_1;
|
package cn.lunadeer.dominion.events_v1_20_1;
|
||||||
|
|
||||||
|
import cn.lunadeer.dominion.Cache;
|
||||||
import cn.lunadeer.dominion.Dominion;
|
import cn.lunadeer.dominion.Dominion;
|
||||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||||
|
import cn.lunadeer.dominion.managers.Translation;
|
||||||
import cn.lunadeer.dominion.utils.Particle;
|
import cn.lunadeer.dominion.utils.Particle;
|
||||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||||
import cn.lunadeer.minecraftpluginutils.VaultConnect.VaultConnect;
|
import cn.lunadeer.minecraftpluginutils.VaultConnect.VaultConnect;
|
||||||
@ -41,7 +43,7 @@ public class SelectPointEvents implements Listener {
|
|||||||
|
|
||||||
if (action == Action.LEFT_CLICK_BLOCK) {
|
if (action == Action.LEFT_CLICK_BLOCK) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
Notification.info(player, "已选择第一个点: %d %d %d", block.getX(), block.getY(), block.getZ());
|
Notification.info(player, Translation.Tool_SelectFirstPoint, block.getX(), block.getY(), block.getZ());
|
||||||
Location loc = block.getLocation();
|
Location loc = block.getLocation();
|
||||||
if (Dominion.config.getLimitVert(player)) {
|
if (Dominion.config.getLimitVert(player)) {
|
||||||
loc.setY(Dominion.config.getLimitMinY(player));
|
loc.setY(Dominion.config.getLimitMinY(player));
|
||||||
@ -49,7 +51,7 @@ public class SelectPointEvents implements Listener {
|
|||||||
points.put(0, loc);
|
points.put(0, loc);
|
||||||
} else if (action == Action.RIGHT_CLICK_BLOCK) {
|
} else if (action == Action.RIGHT_CLICK_BLOCK) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
Notification.info(player, "已选择第二个点: %d %d %d", block.getX(), block.getY(), block.getZ());
|
Notification.info(player, Translation.Tool_SelectSecondPoint, block.getX(), block.getY(), block.getZ());
|
||||||
Location loc = block.getLocation();
|
Location loc = block.getLocation();
|
||||||
if (Dominion.config.getLimitVert(player)) {
|
if (Dominion.config.getLimitVert(player)) {
|
||||||
loc.setY(Dominion.config.getLimitMaxY(player) - 1);
|
loc.setY(Dominion.config.getLimitMaxY(player) - 1);
|
||||||
@ -66,10 +68,10 @@ public class SelectPointEvents implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!points.get(0).getWorld().equals(points.get(1).getWorld())) {
|
if (!points.get(0).getWorld().equals(points.get(1).getWorld())) {
|
||||||
Notification.warn(player, "两个点不在同一个世界");
|
Notification.warn(player, Translation.Tool_NotSameWorld);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Notification.info(player, "已选择两个点,可以使用 /dominion create <领地名称> 创建领地");
|
Notification.info(player, Translation.Tool_SelectTwoPoints);
|
||||||
Location loc1 = points.get(0);
|
Location loc1 = points.get(0);
|
||||||
Location loc2 = points.get(1);
|
Location loc2 = points.get(1);
|
||||||
int minX = Math.min(loc1.getBlockX(), loc2.getBlockX());
|
int minX = Math.min(loc1.getBlockX(), loc2.getBlockX());
|
||||||
@ -82,7 +84,7 @@ public class SelectPointEvents implements Listener {
|
|||||||
minX, minY, minZ, maxX, maxY, maxZ);
|
minX, minY, minZ, maxX, maxY, maxZ);
|
||||||
if (Dominion.config.getEconomyEnable()) {
|
if (Dominion.config.getEconomyEnable()) {
|
||||||
if (!VaultConnect.instance.economyAvailable()) {
|
if (!VaultConnect.instance.economyAvailable()) {
|
||||||
Notification.error(player, "计算价格失败,没有可用的经济插件系统,请联系服主。");
|
Notification.error(player, Translation.Messages_NoEconomyPlugin);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int count;
|
int count;
|
||||||
@ -92,13 +94,38 @@ public class SelectPointEvents implements Listener {
|
|||||||
count = dominion.getVolume();
|
count = dominion.getVolume();
|
||||||
}
|
}
|
||||||
float price = count * Dominion.config.getEconomyPrice(player);
|
float price = count * Dominion.config.getEconomyPrice(player);
|
||||||
Notification.info(player, "预计领地创建价格为 %.2f %s", price, VaultConnect.instance.currencyNamePlural());
|
Notification.info(player, Translation.Tool_CreateDominionPrice, price, VaultConnect.instance.currencyNamePlural());
|
||||||
}
|
}
|
||||||
Particle.showBorder(player, dominion);
|
Particle.showBorder(player, dominion);
|
||||||
Notification.info(player, "尺寸: %d x %d x %d", dominion.getWidthX(), dominion.getHeight(), dominion.getWidthZ());
|
Notification.info(player, Translation.Tool_DominionSize, dominion.getWidthX(), dominion.getHeight(), dominion.getWidthZ());
|
||||||
Notification.info(player, "面积: %d", dominion.getSquare());
|
Notification.info(player, Translation.Tool_DominionSquare, dominion.getSquare());
|
||||||
Notification.info(player, "高度: %d", dominion.getHeight());
|
Notification.info(player, Translation.Tool_DominionHeight, dominion.getHeight());
|
||||||
Notification.info(player, "体积: %d", dominion.getVolume());
|
Notification.info(player, Translation.Tool_DominionVolume, dominion.getVolume());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.HIGHEST)
|
||||||
|
public void selectBlockToShowInfo(PlayerInteractEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
ItemStack item = player.getInventory().getItemInMainHand();
|
||||||
|
|
||||||
|
if (item.getType() != Dominion.config.getInfoTool()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (event.getAction() != Action.LEFT_CLICK_BLOCK) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
event.setCancelled(true);
|
||||||
|
Block block = event.getClickedBlock();
|
||||||
|
if (block == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DominionDTO dominion = Cache.instance.getDominionByLoc(block.getLocation());
|
||||||
|
if (dominion == null) {
|
||||||
|
Notification.info(player, Translation.Tool_LocationNotInDominion, block.getX(), block.getY(), block.getZ());
|
||||||
|
} else {
|
||||||
|
Notification.info(player, Translation.Tool_LocationInDominion, block.getX(), block.getY(), block.getZ(), dominion.getName());
|
||||||
|
Notification.info(player, Translation.Tool_DominionOwner, Cache.instance.getPlayerName(dominion.getOwner()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,16 +12,15 @@ import org.bukkit.entity.LivingEntity;
|
|||||||
import org.bukkit.entity.Monster;
|
import org.bukkit.entity.Monster;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import static cn.lunadeer.dominion.utils.EventUtils.checkFlag;
|
import static cn.lunadeer.dominion.utils.EventUtils.checkFlag;
|
||||||
|
|
||||||
public class Spigot implements Listener {
|
public class Spigot implements Listener {
|
||||||
|
|
||||||
static {
|
static {
|
||||||
Map<UUID, Location> entityMap = new HashMap<>();
|
ConcurrentHashMap<UUID, Location> entityMap = new ConcurrentHashMap<>();
|
||||||
Scheduler.runTaskRepeat(() -> {
|
Scheduler.runTaskRepeat(() -> {
|
||||||
Dominion.instance.getServer().getWorlds().forEach(world -> {
|
Dominion.instance.getServer().getWorlds().forEach(world -> {
|
||||||
world.getEntities().forEach(entity -> {
|
world.getEntities().forEach(entity -> {
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package cn.lunadeer.dominion.events_v1_21;
|
package cn.lunadeer.dominion.events_v1_21;
|
||||||
|
|
||||||
|
import cn.lunadeer.dominion.Cache;
|
||||||
import cn.lunadeer.dominion.Dominion;
|
import cn.lunadeer.dominion.Dominion;
|
||||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||||
|
import cn.lunadeer.dominion.managers.Translation;
|
||||||
import cn.lunadeer.dominion.utils.Particle;
|
import cn.lunadeer.dominion.utils.Particle;
|
||||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||||
import cn.lunadeer.minecraftpluginutils.VaultConnect.VaultConnect;
|
import cn.lunadeer.minecraftpluginutils.VaultConnect.VaultConnect;
|
||||||
@ -41,7 +43,7 @@ public class SelectPointEvents implements Listener {
|
|||||||
|
|
||||||
if (action == Action.LEFT_CLICK_BLOCK) {
|
if (action == Action.LEFT_CLICK_BLOCK) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
Notification.info(player, "已选择第一个点: %d %d %d", block.getX(), block.getY(), block.getZ());
|
Notification.info(player, Translation.Tool_SelectFirstPoint, block.getX(), block.getY(), block.getZ());
|
||||||
Location loc = block.getLocation();
|
Location loc = block.getLocation();
|
||||||
if (Dominion.config.getLimitVert(player)) {
|
if (Dominion.config.getLimitVert(player)) {
|
||||||
loc.setY(Dominion.config.getLimitMinY(player));
|
loc.setY(Dominion.config.getLimitMinY(player));
|
||||||
@ -49,7 +51,7 @@ public class SelectPointEvents implements Listener {
|
|||||||
points.put(0, loc);
|
points.put(0, loc);
|
||||||
} else if (action == Action.RIGHT_CLICK_BLOCK) {
|
} else if (action == Action.RIGHT_CLICK_BLOCK) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
Notification.info(player, "已选择第二个点: %d %d %d", block.getX(), block.getY(), block.getZ());
|
Notification.info(player, Translation.Tool_SelectSecondPoint, block.getX(), block.getY(), block.getZ());
|
||||||
Location loc = block.getLocation();
|
Location loc = block.getLocation();
|
||||||
if (Dominion.config.getLimitVert(player)) {
|
if (Dominion.config.getLimitVert(player)) {
|
||||||
loc.setY(Dominion.config.getLimitMaxY(player) - 1);
|
loc.setY(Dominion.config.getLimitMaxY(player) - 1);
|
||||||
@ -66,10 +68,10 @@ public class SelectPointEvents implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!points.get(0).getWorld().equals(points.get(1).getWorld())) {
|
if (!points.get(0).getWorld().equals(points.get(1).getWorld())) {
|
||||||
Notification.warn(player, "两个点不在同一个世界");
|
Notification.warn(player, Translation.Tool_NotSameWorld);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Notification.info(player, "已选择两个点,可以使用 /dominion create <领地名称> 创建领地");
|
Notification.info(player, Translation.Tool_SelectTwoPoints);
|
||||||
Location loc1 = points.get(0);
|
Location loc1 = points.get(0);
|
||||||
Location loc2 = points.get(1);
|
Location loc2 = points.get(1);
|
||||||
int minX = Math.min(loc1.getBlockX(), loc2.getBlockX());
|
int minX = Math.min(loc1.getBlockX(), loc2.getBlockX());
|
||||||
@ -82,7 +84,7 @@ public class SelectPointEvents implements Listener {
|
|||||||
minX, minY, minZ, maxX, maxY, maxZ);
|
minX, minY, minZ, maxX, maxY, maxZ);
|
||||||
if (Dominion.config.getEconomyEnable()) {
|
if (Dominion.config.getEconomyEnable()) {
|
||||||
if (!VaultConnect.instance.economyAvailable()) {
|
if (!VaultConnect.instance.economyAvailable()) {
|
||||||
Notification.error(player, "计算价格失败,没有可用的经济插件系统,请联系服主。");
|
Notification.error(player, Translation.Messages_NoEconomyPlugin);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int count;
|
int count;
|
||||||
@ -92,13 +94,38 @@ public class SelectPointEvents implements Listener {
|
|||||||
count = dominion.getVolume();
|
count = dominion.getVolume();
|
||||||
}
|
}
|
||||||
float price = count * Dominion.config.getEconomyPrice(player);
|
float price = count * Dominion.config.getEconomyPrice(player);
|
||||||
Notification.info(player, "预计领地创建价格为 %.2f %s", price, VaultConnect.instance.currencyNamePlural());
|
Notification.info(player, Translation.Tool_CreateDominionPrice, price, VaultConnect.instance.currencyNamePlural());
|
||||||
}
|
}
|
||||||
Particle.showBorder(player, dominion);
|
Particle.showBorder(player, dominion);
|
||||||
Notification.info(player, "尺寸: %d x %d x %d", dominion.getWidthX(), dominion.getHeight(), dominion.getWidthZ());
|
Notification.info(player, Translation.Tool_DominionSize, dominion.getWidthX(), dominion.getHeight(), dominion.getWidthZ());
|
||||||
Notification.info(player, "面积: %d", dominion.getSquare());
|
Notification.info(player, Translation.Tool_DominionSquare, dominion.getSquare());
|
||||||
Notification.info(player, "高度: %d", dominion.getHeight());
|
Notification.info(player, Translation.Tool_DominionHeight, dominion.getHeight());
|
||||||
Notification.info(player, "体积: %d", dominion.getVolume());
|
Notification.info(player, Translation.Tool_DominionVolume, dominion.getVolume());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.HIGHEST)
|
||||||
|
public void selectBlockToShowInfo(PlayerInteractEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
ItemStack item = player.getInventory().getItemInMainHand();
|
||||||
|
|
||||||
|
if (item.getType() != Dominion.config.getInfoTool()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (event.getAction() != Action.LEFT_CLICK_BLOCK) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
event.setCancelled(true);
|
||||||
|
Block block = event.getClickedBlock();
|
||||||
|
if (block == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DominionDTO dominion = Cache.instance.getDominionByLoc(block.getLocation());
|
||||||
|
if (dominion == null) {
|
||||||
|
Notification.info(player, Translation.Tool_LocationNotInDominion, block.getX(), block.getY(), block.getZ());
|
||||||
|
} else {
|
||||||
|
Notification.info(player, Translation.Tool_LocationInDominion, block.getX(), block.getY(), block.getZ(), dominion.getName());
|
||||||
|
Notification.info(player, Translation.Tool_DominionOwner, Cache.instance.getPlayerName(dominion.getOwner()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,16 +12,15 @@ import org.bukkit.entity.LivingEntity;
|
|||||||
import org.bukkit.entity.Monster;
|
import org.bukkit.entity.Monster;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import static cn.lunadeer.dominion.utils.EventUtils.checkFlag;
|
import static cn.lunadeer.dominion.utils.EventUtils.checkFlag;
|
||||||
|
|
||||||
public class Spigot implements Listener {
|
public class Spigot implements Listener {
|
||||||
|
|
||||||
static {
|
static {
|
||||||
Map<UUID, Location> entityMap = new HashMap<>();
|
ConcurrentHashMap<UUID, Location> entityMap = new ConcurrentHashMap<>();
|
||||||
Scheduler.runTaskRepeat(() -> {
|
Scheduler.runTaskRepeat(() -> {
|
||||||
Dominion.instance.getServer().getWorlds().forEach(world -> {
|
Dominion.instance.getServer().getWorlds().forEach(world -> {
|
||||||
world.getEntities().forEach(entity -> {
|
world.getEntities().forEach(entity -> {
|
||||||
|
Loading…
Reference in New Issue
Block a user