适用于Minecraft服务器的区域探索与追踪模组。在地图上定义区域,让玩家通过探索来发现它们。
区域定义
在游戏中定义多边形区域。您可以为其命名、添加描述、设置为可发现状态,并建立父子级联关系。
探索发现
当玩家首次进入某个区域时,该区域将被标记为已发现,玩家会收到“已发现”弹窗提示。玩家还可在屏幕左上角查看当前位置信息。
地图类型
支持使用服务器内置的BlueMap,或上传区域覆盖层来绘制区域。
可选组件
/mods/目录/mods/目录/ardaregions processtiles,将BlueMap的瓦片转换为ArdaRegions格式config/arda-regions/map-overlay.json中添加额外地图覆盖层。将worldSize设置为图像对应的Minecraft方块宽度,worldX和worldY设置为Minecraft世界左上角坐标/ardaregions panel中的地图覆盖层按钮切换不同地图ArdaRegions支持使用内置的Minecraft OP权限系统,或通过Fabric Permissions API实现的权限系统(如LuckPerms)。
若使用LuckPerms或其他实现Fabric Permissions API的模组,请为用户授予ardaregions.admin权限节点以允许使用管理员命令。
/ardaregions panel – 打开区域地图(管理员)/ardaregions processtiles – 处理BlueMap瓦片(管理员)/ardaregions resetprogress – 重置自己的探索进度/ardaregions resetprogress – 重置其他玩家的探索进度(管理员)/ardaregions view - 查看指定区域的3D显示(管理员)/ardaregions viewall - 查看所有区域的3D显示(管理员)/ardaregions viewnone - 关闭3D显示(管理员)/ardaregions viewcurrent - 查看当前区域的3D显示(管理员)衷心感谢所有参与本模组开发的贡献者:
ArdaRegions提供客户端API,允许其他模组利用区域事件(如发现事件、当前区域、区域列表等)。
入口点方式(推荐):
在fabric.mod.json中配置:
"entrypoints": {
"arda-regions:api": [
"your.mod.YourApiEntrypoint"
]
}
您的类需实现ArdaRegionsApiEntrypoint接口:
import mc.ardacraft.ardaregions.api.ArdaRegionsAPI;
import mc.ardacraft.ardaregions.api.ArdaRegionsApiEntrypoint;
public class YourApiEntrypoint implements ArdaRegionsApiEntrypoint {
@Override
public void onApiReady(ArdaRegionsAPI api) {
// 存储api实例,使用getRegionAPI() / getExplorationAPI() / 事件系统
}
}
延迟获取方式:
通过ArdaRegionsAPI.getInstance()获取API实例(若模组未加载将抛出异常)。建议使用入口点方式以确保API就绪时立即获取。
IRegionAPI)通过api.getRegionAPI()获取。
| 方法 | 说明 |
|---|---|
getRegion(String regionId) |
通过ID获取区域(可能为空) |
getAllRegions() |
获取所有区域 |
getRegionsByWorld(String worldId) |
获取指定世界的区域(世界ID来自注册表键,如minecraft:overworld) |
getChildRegions(String parentId) |
获取区域的直接子区域 |
getParentRegion(String regionId) |
获取区域的父区域(可能为空) |
regionExists(String regionId) |
检查区域是否存在 |
isPointInRegion(String regionId, double x, double z, int y, String world) |
检查指定世界坐标(x, z, y)是否在区域内 |
IPlayerExplorationAPI)通过api.getExplorationAPI()获取。
| 方法 | 说明 |
|---|---|
getDiscoveredRegions(UUID playerId) |
获取玩家已发现的区域ID集合 |
hasDiscovered(UUID playerId, String regionId) |
检查玩家是否已发现指定区域 |
getDiscoveryCount(UUID playerId) |
获取玩家已发现区域数量 |
getDiscoveredRegionsAsObjects(UUID playerId) |
以ApiRegion对象形式获取已发现区域 |
ApiRegion
包含id、name、parentId、childrenIds、polygons、metadata属性。
getDescription()方法可获取metadata中的描述信息(如果存在)。
ApiPolygon
包含vertices(ApiPoint2D列表)、minY、maxY、world属性。
isWithinYBounds(int y)方法用于Y坐标检查。
ApiPoint2D
包含x、z坐标(双精度浮点数)。通过getX()、getZ()方法访问。
所有类型均位于mc.ardacraft.ardaregions.api.data包中,均为不可变对象。
所有事件均为Fabric Event类型。通过event.register(callback)注册监听器。
| 事件 | 回调参数 | 触发时机 |
|---|---|---|
getRegionDiscoveredEvent() |
(UUID playerId, String regionId) |
玩家发现新区域时 |
getRegionCreatedEvent() |
(ApiRegion region) |
管理员创建区域时 |
getRegionUpdatedEvent() |
(ApiRegion oldRegion, ApiRegion newRegion) |
管理员更新区域时 |
getRegionDeletedEvent() |
(String regionId) |
管理员删除区域时 |
getClientDiscoveryPopupEvent() |
(String regionId, String regionName, String description, float alpha) |
客户端显示发现弹窗时(仅客户端) |
使用示例:
api.getRegionDiscoveredEvent().register((playerId, regionId) -> {
// ...
});
友情链接: 网易我的世界 | 泰拉瑞亚 | ocent云计算 | 米饭Minecraft插件文档 | 友链合作
历史访问人数:81,942 | 历史访问人次:170,415
今日访问人数:12,586 | 今日访问人次:13,578
昨日访问人数:20,761 | 昨日访问人次:24,774
Copyright © 2019-2026 我的世界服务器列表站. All rights reserved.
❤ Powered by GermMC 京ICP备17023959号-6