
Region management mod that allows you to assign names to custom polygons, and let users know where they are exploring.
Region discovery and tracking for Minecraft servers. Define regions on your map, let players discover them by exploring.
Regions
Define polygons in game. You can name them, add descriptions, set them to be discoverable, and set parent/child links.
Discovery
When a player enters a region for the first time, it's marked as discovered for the player, and they get a "DISCOVERED" popup. Player's can also see their current location at the top left of the screen.
Map Types
Use your servers in-built BlueMap, or upload a Region Overlay to draw regions on.
Optional
/mods/ directory/mods/ directory/ardaregions processtiles. This will process BlueMap's tiles into ArdaRegions tiles.config/arda-regions/map-overlay.json on your client. Set the worldSize to the width of your image in Minecraft Blocks, and the worldX and worldY to the top left corner coordinates of your Minecraft World./ardaregions panelArdaRegions can use either the in-built Minecraft op permission system, or a permission system using the Fabric Permissions API, such as LuckPerms.
If you are using LuckPerms, or another mod that implements the Fabric Permissions API, give the user the ardaregions.admin permission node to allow them to use Admin commands.
/ardaregions panel – open the region map (admin)./ardaregions processtiles – process BlueMap tiles (admin)./ardaregions resetprogress – reset your own discoveries./ardaregions resetprogress <player> – reset another player’s discoveries (admin)./ardaregions view <region_id> - view a 3d representation of the specified region (admin)./ardaregions viewall - view a 3d representation of all regions (admin)./ardaregions viewnone - disable 3d representation view (admin)./ardaregions viewcurrent - view current regions 3d representation (admin).A massive thankyou to everyone who assisted in the development of this mod:
ArdaRegions includes a client-side API that allows other mods to utilise Regions events such as discovery, current region, region lists.
Entrypoint (recommended):
In fabric.mod.json:
"entrypoints": {
"arda-regions:api": [
"your.mod.YourApiEntrypoint"
]
}
Your class implements ArdaRegionsApiEntrypoint:
import mc.ardacraft.ardaregions.api.ArdaRegionsAPI;
import mc.ardacraft.ardaregions.api.ArdaRegionsApiEntrypoint;
public class YourApiEntrypoint implements ArdaRegionsApiEntrypoint {
@Override
public void onApiReady(ArdaRegionsAPI api) {
// Store api and use getRegionAPI() / getExplorationAPI() / events
}
}
Or later:ArdaRegionsAPI.getInstance() returns the API. Throws if the mod is not loaded. Prefer the entrypoint so you get the API as soon as it’s ready.
IRegionAPI)From api.getRegionAPI().
| Method | Description |
|---|---|
getRegion(String regionId) |
Region by ID, or empty |
getAllRegions() |
All regions |
getRegionsByWorld(String worldId) |
Regions in a world (world ID from registry key, e.g. minecraft:overworld) |
getChildRegions(String parentId) |
Direct children of a region |
getParentRegion(String regionId) |
Parent of a region, or empty |
regionExists(String regionId) |
True if the region exists |
isPointInRegion(String regionId, double x, double z, int y, String world) |
True if (x, z, y) in that world is inside the region |
IPlayerExplorationAPI)From api.getExplorationAPI().
| Method | Description |
|---|---|
getDiscoveredRegions(UUID playerId) |
Set of discovered region IDs |
hasDiscovered(UUID playerId, String regionId) |
True if player has discovered that region |
getDiscoveryCount(UUID playerId) |
Number of regions discovered |
getDiscoveredRegionsAsObjects(UUID playerId) |
Discovered regions as ApiRegion objects |
ApiRegionid, name, parentId, childrenIds, polygons, metadata.getDescription() returns metadata.get("description") as string if present.
ApiPolygonvertices (list of ApiPoint2D), minY, maxY, world.isWithinYBounds(int y) for Y check.
ApiPoint2Dx, z (double). Getters: getX(), getZ().
All are in package mc.ardacraft.ardaregions.api.data. Immutable.
All are Fabric Event<T>. Register with event.register(callback).
| Event | Callback | When |
|---|---|---|
getRegionDiscoveredEvent() |
(UUID playerId, String regionId) |
Player discovers a region |
getRegionCreatedEvent() |
(ApiRegion region) |
Admin creates a region |
getRegionUpdatedEvent() |
(ApiRegion oldRegion, ApiRegion newRegion) |
Admin updates a region |
getRegionDeletedEvent() |
(String regionId) |
Admin deletes a region |
getClientDiscoveryPopupEvent() |
(String regionId, String regionName, String description, float alpha) |
Client shows the discovery popup (client-side only) |
Example:
api.getRegionDiscoveredEvent().register((playerId, regionId) -> {
// ...
});