
HyGuard - 领地 / 区域
一个管理玩家领地及/或可配置管理员区域的插件
管理玩家领地和管理员区域的插件。我们希望它能有所帮助。
配置文件 - V1.1.1
- MapRefreshTick: 100 每隔多久刷新世界地图(以刷新后的总计tick数表示)
- PlayerMaxChunks = 4; 玩家最大领地限制
- PlayerChunksCanDetach = false; 玩家区域内的区块是否可以彼此分离
- PlayerChunksDecay = false; 如果玩家在总时间内未登录,区块是否自动删除
- WorkbenchChestRadius = 14; 工作台检测箱子内物品的半径
当前命令
- /hg 打开领地GUI(仍在开发中)
- /hg claim 认领你的区块
- /hg unclaim 取消认领你的区块
- /hg trust {player} 信任一个玩家,允许其编辑你的区块
- /hg untrust {player} 取消信任一个玩家,使其无法编辑你的区块
- /hg ban {player} 禁止一个玩家进入你的区块
- /hg unban {player} 解禁一个玩家,允许其进入你的区块
- /hg funclaim {region} [管理员命令] 强制取消认领一个区块
- /hg fclaim {region} [管理员命令] 强制认领一个区块
- /hg region tp {region} [管理员命令] 传送至一个区域
你可以创建管理区域!这些是完全可配置的! 实际上,所有玩家领地都是这些区域的自定义预设!
- /hg region create {region}
- /hg region delete {region}
- /hg region group create {region} {group}
- /hg region group delete {region} {group}
- /hg region group add {region} {group} {player}
- /hg region group remove {region} {group} {player}
- /hg region group permission add {region} {group} {permission} {DENY/ALLOW}
- /hg region group permission remove {region} {group} {permission}
当前事件
- event.movement
- event.breakblock
- event.placeblock
- event.interact
新增API支持 - V1.1.1
MAVEN 集成
将文件添加到主项目目录下的 lib 配置中。
<dependency>
<groupId>it.hytale</groupId>
<artifactId>HyGuard</artifactId>
<version>1.1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/HyGuard-1.1.0.jar</systemPath>
</dependency>
API 方法
public interface IRegionManager {
CompletableFuture<Void> create(Ref<EntityStore> ref, String regionName);
CompletableFuture<Void> delete(Ref<EntityStore> ref, String regionName);
CompletableFuture<Void> teleport(Ref<EntityStore> ref, Player player, String regionName);
void decay(String regionName);
}
public interface IPermissionManager {
CompletableFuture<Void> remove(Ref<EntityStore> ref, String regionName, String groupName, String permission);
CompletableFuture<Void> add(Ref<EntityStore> ref, String regionName, String groupName, String permission, State state);
}
public interface IGroupManager {
CompletableFuture<Void> create(Ref<EntityStore> ref, String regionName, String groupName);
CompletableFuture<Void> delete(Ref<EntityStore> ref, String regionName, String groupName);
CompletableFuture<Void> add(Ref<EntityStore> ref, String regionName, String groupName, UUID targetUuid);
CompletableFuture<Void> remove(Ref<EntityStore> ref, String regionName, String groupName, UUID targetUuid);
}
如果你正在使用 SimpleClaim 并且想使用本插件,我制作了一个将配置文件区域转换的 python 转换器。如果你愿意,可以在 google.colab 中运行它,代码如下:
import json
from collections import defaultdict
input_path = "/content/Claims.json"
output_path = "/content/Regions.json"
with open(input_path, "r", encoding="utf-8") as f:
data = json.load(f)
regions_map = defaultdict(lambda: {
"UUID": None,
"Region": None,
"Chunks": [],
"Groups": [],
"IsFullChunkOnly": True,
"IsOverlapable": True,
"IsOverlapping": False,
"IsDecayable": False,
"Priority": 0,
"MapColor": 16092226,
"Title": None
})
for dim in data.get("Dimensions", []):
dimension_name = dim.get("Dimension", "default")
for chunk in dim.get("ChunkInfo", []):
owner_uuid = chunk.get("CreatedTracker", {}).get("UserUUID")
chunk_x = chunk.get("ChunkX")
chunk_z = chunk.get("ChunkY")
username = chunk.get("CreatedTracker", {}).get("UserName", "Unknown")
title = f"{username} Claim"
region_name = title.replace(" ", "")
if regions_map[owner_uuid]["UUID"] is None:
regions_map[owner_uuid]["UUID"] = owner_uuid
regions_map[owner_uuid]["Region"] = region_name
regions_map[owner_uuid]["Title"] = title
regions_map[owner_uuid]["Groups"] = [
{
"Permissions": [
{"State": "DENY", "Permission": "event.breakblock"},
{"State": "DENY", "Permission": "event.placeblock"},
{"State": "DENY", "Permission": "event.interact"}
],
"Players": [],
"Group": "DEFAULT",
"Priority": 0
},
{
"Permissions": [
{"State": "ALLOW", "Permission": "event.breakblock"},
{"State": "ALLOW", "Permission": "event.placeblock"},
{"State": "ALLOW", "Permission": "event.interact"}
],
"Players": [{"UUID": owner_uuid}],
"Group": "trust",
"Priority": 10
},
{
"Permissions": [
{"State": "DENY", "Permission": "event.movement"}
],
"Players": [],
"Group": "ban",
"Priority": 10
}
]
regions_map[owner_uuid]["Chunks"].append({
"X": chunk_x,
"Z": chunk_z,
"World": dimension_name,
"Offsets": []
})
regions = list(regions_map.values())
output = {"Regions": regions}
with open(output_path, "w", encoding="utf-8") as f:
json.dump(output, f, indent=2, ensure_ascii=False)
对于玩家可以使用工作台从已认领箱子中偷取物品的BUG,考虑安装 AntiWorkBenchDetectChest 作为临时应对措施!
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。