Skip to content

Waypoints ​v0.0.2

Server-managed waypoints with access rules, a Java HUD (bedrock coming later), and vanilla commands

See the plugin guide and API reference on the documentation site.

Installation ​

Put waypoints.wasm from the plugin's GitHub release in your server's plugins/ folder and restart. Hot reload cannot ask for permissions, so the first load needs a restart.

Permissions ​

Pumpkin asks for these on the server console the first time the plugin loads.

PermissionWhy
fs.read.dataRead the waypoint store from the plugin data folder.
fs.write.dataPersist waypoint changes in the plugin data folder.
http.outboundCheck Pumpkin Market for plugin updates.

Commands ​

CommandDescriptionPermissionDefault access
/wp createCreate a waypoint at your position or explicit coordinatesWaypoints:command.adminoperators (level 3)
/wp create <name>Create a waypoint at your position or explicit coordinatesWaypoints:command.adminoperators (level 3)
/wp create <name> <x> <y> <z>Create a waypoint at your position or explicit coordinatesWaypoints:command.adminoperators (level 3)
/wp reloadReload waypoint data from diskWaypoints:command.adminoperators (level 3)
/wp delete <name>Delete a waypoint by nameWaypoints:command.adminoperators (level 3)
/wp rename <name> <newName>Rename a waypointWaypoints:command.adminoperators (level 3)
/wp relocateMove a waypoint to your position or explicit coordinatesWaypoints:command.adminoperators (level 3)
/wp relocate <name>Move a waypoint to your position or explicit coordinatesWaypoints:command.adminoperators (level 3)
/wp relocate <name> <x> <y> <z>Move a waypoint to your position or explicit coordinatesWaypoints:command.adminoperators (level 3)
/wp listList enabled waypoints you can accessWaypoints:command.useeveryone
/wp info <name>Show details for an enabled waypoint you can accessWaypoints:command.useeveryone
/wp teleportTeleport to a waypoint or, as an operator, teleport selected playersWaypoints:command.useeveryone
/wp teleport <name>Teleport to a waypoint or, as an operator, teleport selected playersWaypoints:command.useeveryone
/wp teleport <name> <targets>Teleport to a waypoint or, as an operator, teleport selected playersWaypoints:command.useeveryone
/wp tpAlias for teleportWaypoints:command.useeveryone
/wp tp <name>Alias for teleportWaypoints:command.useeveryone
/wp tp <name> <targets>Alias for teleportWaypoints:command.useeveryone
/wp enable <name>Enable a waypointWaypoints:command.adminoperators (level 3)
/wp disable <name>Disable a waypointWaypoints:command.adminoperators (level 3)
/wp get <name>Inspect a waypoint, including disabled recordsWaypoints:command.adminoperators (level 3)
/wp access public <name>Allow every player to access a waypointWaypoints:command.adminoperators (level 3)
/wp access restricted <name>Restrict a waypoint to its grantsWaypoints:command.adminoperators (level 3)
/wp access list <name>List a waypoint access mode and its grantsWaypoints:command.adminoperators (level 3)
/wp access grant player <name> <player>Grant access to an online playerWaypoints:command.adminoperators (level 3)
/wp access grant permission <name> <permission>Grant access to a permission nodeWaypoints:command.adminoperators (level 3)
/wp access grant group <name> <group>Grant access to a permission marker groupWaypoints:command.adminoperators (level 3)
/wp access revoke player <name> <player>Revoke an online player grantWaypoints:command.adminoperators (level 3)
/wp access revoke permission <name> <permission>Revoke a permission node grantWaypoints:command.adminoperators (level 3)
/wp access revoke group <name> <group>Revoke a permission marker group grantWaypoints:command.adminoperators (level 3)
/wp set color <name> <hex>Set the waypoint colorWaypoints:command.adminoperators (level 3)
/wp set icon <name> <item>Set the waypoint item iconWaypoints:command.adminoperators (level 3)
/wp set label <name> <label>Set the waypoint display labelWaypoints:command.adminoperators (level 3)
/wp set description <name> <description>Set the waypoint descriptionWaypoints:command.adminoperators (level 3)
/wp set visibility-range <name> <range>Set the waypoint rendering range in blocksWaypoints:command.adminoperators (level 3)
/wp reset <name> <property>Reset one mutable waypoint property to its defaultWaypoints:command.adminoperators (level 3)

Configuration ​

This plugin has no configuration file.

Create and use waypoints ​

Operators can create a waypoint at their exact position with /wp create "Home Base", or provide absolute coordinates with /wp create "Home Base" 120.5 64 -30. Names are unique across worlds. Use /wp list to see enabled waypoints you can access, /wp info <name> for details, and /wp tp <name> to teleport yourself. Operators can use /wp tp <name> @a to teleport a player selector.

Only server operators can create, edit, enable, disable, grant, or delete waypoints. Administrative handlers check Pumpkin's operator list even if a command permission was manually granted. Player grants resolve online names and store UUIDs. Group grants check the permission marker Waypoints:group.<slug>; another permission provider must assign that marker to group members.

The versioned store is plugins/data/Waypoints/waypoints.json. If it is malformed or has an unsupported schema, the plugin preserves it and refuses writes until the issue is corrected. A successful v1 migration keeps the original bytes in waypoints.v1.json.

Java waypoint HUD ​

Minecraft Java 26.3 players see each enabled waypoint they can access in the same dimension and within its optional visibility range. Private display packets keep restricted names and personalized distances off other clients. Names reveal after a settled look and stay visible near the destination; distant peripheral markers show just their distance and icon. Labels use the waypoint color, a shadow, and a subtle backdrop independent of world lighting. Iconless waypoints use a colored diamond.

The HUD uses client-only TextDisplay entities along each waypoint's world direction. A smooth depth curve approaches a maximum of 24 blocks from the player's eyes, reducing the apparent movement caused by delayed position samples. Labels face the viewer and render through terrain. Camera rotation does not move or replace them. Between sixteen and three blocks from a waypoint, the projection blends into a world anchor two blocks above its stored Y coordinate. It never passes the destination during the blend; within three blocks it stays at the anchor. The transition works in both directions.

Perspective sizing uses camera-forward depth to avoid enlarging labels at the screen edges, and keeps their apparent size consistent through the approach at a fixed field of view. Labels are limited to 32 characters on the HUD; /wp info retains the complete text. Distances use meters below one kilometer and tenths of kilometers above it, with hysteresis to prevent rounding flicker. Text, icons, and backdrop fade between two and 0.75 blocks from the destination, leaving the immediate view clear.

Waypoints stored in the same half-block grid cell get a stable vertical stack, ordered by identifier, without camera-dependent rearrangement. Distinct waypoints along the same bearing may still overlap. Steps and jumps receive strong elevation damping while steep vertical destinations respond faster. Damping eases off near the world anchor. Position and scale updates interpolate over one client tick; unchanged text is not resent for appearance-only updates.

This approximates a first-person HUD: network latency, client view bobbing, and third-person camera offsets can still affect alignment. The server cannot read client FOV or reliably detect Java item-use state, so spyglass and modded zoom enlarge the labels. Other Java protocol versions and Bedrock clients do not receive the HUD. Icons use vanilla 26.3 atlas textures; block items use a representative model texture, and custom item IDs require the corresponding item/<path> sprite in the client's resource pack.

See the preview setup and test checklist for building and trying the current HUD.

Pumpkin Plugins documentation