All Mods Resource Packs Data Packs Shaders Modpacks Plugins
CoordinateOffset

CoordinateOffset

by Chips • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

CoordinateOffset

A Minecraft Paper plugin that configurably obfuscates players' coordinates.

CoordinateOffset icon

GitHub Release bStats Servers bStats Players Modrinth Downloads Spigot Downloads Hangar Downloads CurseForge Downloads

Minecraft offers a useful debug menu (F3) that allows anyone to easily see their coordinates in the world. This makes it easy to save points of interest and share locations with friends (or enemies).

However, not all multiplayer servers want coordinates to be so easily accessible. /gamerule reducedDebugInfo can administratively hide coordinates from the F3 menu, but it is trivial for a player to add a client-side mod that shows them.

Screenshot of coordinates being offsetted

CoordinateOffset is a plugin for Paper-based Minecraft servers that modifies every coordinate in packets between the server and client. The player still sees the exact same world they would normally see. But no matter which mods they install, they cannot see their real coordinates.

Why?

This plugin isn't intended for all servers. Here are a few ideas that might make CoordinateOffset useful:

  • Prevent metagaming: If you consider coordinate usage and sharing to be metagaming, this prevents it.
  • Amplify in-game items: Coordinates no longer outclass compasses, lodestones, recovery compasses, and maps when those coordinates are inconsistent.
  • Prevent coordinate leaks: If everyone sees different coordinates, players cannot derive each other's coordinates from an accidental leak in a screenshot.
  • Guard the world seed: Any unknown offset makes seed-cracking tactics harder.
  • Center the origin: Put the (0, 0) coordinate anywhere you'd like.

Features

  • Fully-configurable, flexible methods of determining how to apply offsets
  • Generate offsets randomly for each player, or use fixed offsets for multiple players
  • Match offsets to the player's position, so they see themselves near the world's origin
  • Optionally regenerate offsets based on various player actions, including death, world change, teleport, and server join
  • Regenerate and set offsets immediately with commands
  • Configure different offsets per-player, per-world, and with permissions
  • Automatic scaling for offsets to ensure coordinates still align when using a nether portal
  • Extensible API to flexibly get and set offsets
  • Compatible with Distant Horizons, ViaVersion, and Velocity (must be installed on Paper, not Velocity itself)

Requirements and Installation

Some known incompatible plugins are: Most anticheats, Geyser.

After ensuring that you meet the requirements, just grab the latest release and drop it in your server's plugins folder. Then follow the steps below to configure how coordinates are shifted for each player.

Configuration

Main article: Configuration Guide

The main configuration file is automatically generated after the first run at plugins/CoordinateOffset/config.yml.

defaultOffsetProvider: random

The default configuration contains five predefined "offset providers". An "offset" refers to the amount that the player's coordinates should appear to be shifted from their real location. Get started by picking a strategy that matches the type of offsetting you're trying to achieve:

  • constant - Specify the exact offset you want players to have.
  • disabled - Players will see their real coordinates.
  • random - Individually randomize each player's offset. Optionally re-roll offsets upon player actions.
  • zeroAtLocation - Use an offset based on the player's starting location, so they see themselves near (0, 0). Optionally re-center offsets upon player actions.
  • permission - Assign permissions to players, like coordinateoffset.offset.160.-240, to control their offset.

You can customize these providers further, use different providers for different players/worlds/groups, and define your own providers. See the complete Configuration Guide.

Commands and Permissions

See the Commands and Permissions Guide for details.

API

You can use or extend CoordinateOffset in your own plugin by using the API. Please see the API Guide.

Support

Credits

Special thanks to Cavallium for developing CoordinatesObfuscator, which CoordinateOffset is a fork of. CoordinateOffset's packet translation logic was heavily modeled after the work done by CoordinatesObfuscator.

Libraries used:

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
26.3 26.2 26.1.2
Paper Purpur
12h ago 1
26.2 26.1.x 1.21.x
Paper Purpur
12h ago 1
26.2 26.1.x 1.21.x
Paper Purpur
12h ago 1
26.1.x 1.21.x
Paper Purpur
12h ago 1
26.1.x 1.21.x
Paper Purpur
12h ago 1
1.21.x
Paper Purpur
12h ago 1
1.21.x
Paper Purpur
12h ago 1
1.21.x
Paper Purpur
12h ago 1
1.21.x
Paper Purpur
12h ago 1
1.21.x
Paper Purpur
12h ago 1
1.21.x
Paper Purpur
12h ago 1
1.21.x 1.20.x 1.19.x +2
Bukkit Paper Purpur Spigot
12h ago 1
1.21.x 1.20.x 1.19.x +2
Bukkit Paper Purpur Spigot
12h ago 1
1.21.x 1.20.x 1.19.x +2
Bukkit Paper Purpur Spigot
12h ago 1
1.21.x 1.20.x 1.19.x +2
Bukkit Paper Purpur Spigot
12h ago 1
1.21.x 1.20.x 1.19.x +2
Bukkit Paper Purpur Spigot
12h ago 1
1.21.x 1.20.x 1.19.x +2
Bukkit Paper Purpur Spigot
12h ago 1
1.21.x 1.20.x 1.19.x +2
Bukkit Paper Purpur Spigot
12h ago 1
1.21.x 1.20.x 1.19.x +2
Bukkit Paper Purpur Spigot
12h ago 1
1.21.x 1.20.x 1.19.x +2
Bukkit Paper Purpur Spigot
12h ago 1
1.21.x 1.20.x 1.19.x +2
Bukkit Paper Purpur Spigot
12h ago 1
1.21.x 1.20.x 1.19.x +2
Bukkit Paper Purpur Spigot
12h ago 1
1.21.x 1.20.x 1.19.x +2
Bukkit Paper Purpur Spigot
12h ago 1
1.21.x 1.20.x 1.19.x +2
Bukkit Paper Purpur Spigot
12h ago 1
1.21.x 1.20.x 1.19.x +2
Bukkit Paper Purpur Spigot
12h ago 1
1.21 1.20.x 1.19.x +2
Bukkit Paper Purpur Spigot
12h ago 1
1.21 1.20.x 1.19.x +2
Bukkit Paper Purpur Spigot
12h ago 1
1.21 1.20.x 1.19.x +2
Bukkit Paper Purpur Spigot
12h ago 1
1.20.x 1.19.x 1.18.x +1
Bukkit Paper Purpur Spigot
12h ago 1
1.20.x 1.19.x 1.18.x +1
Bukkit Paper Purpur Spigot
12h ago 1
1.20.x 1.19.x 1.18.x +1
Bukkit Paper Purpur Spigot
12h ago 1
1.20.x 1.19.x 1.18.x +1
Bukkit Paper Purpur Spigot
12h ago 1
1.20.x 1.19.x 1.18.x +1
Bukkit Paper Purpur Spigot
12h ago 1
1.20.x 1.19.x 1.18.x +1
Bukkit Paper Purpur Spigot
12h ago 1
1.20.x 1.19.x 1.18.x +1
Bukkit Paper Purpur Spigot
12h ago 1
1.20.x 1.19.4
Bukkit Paper Purpur Spigot
12h ago 1
1.20.x 1.19.4
Bukkit Paper Purpur Spigot
12h ago 1
1.20.x 1.19.4
Bukkit Paper Purpur Spigot
12h ago 1
1.20.x 1.19.4
Bukkit Paper Purpur Spigot
12h ago 1
1.20.x 1.19.4
Bukkit Paper Spigot
12h ago 1
1.20.1
Bukkit Paper Spigot
12h ago 1
  • Supported Minecraft servers: Paper 26.1.2-26.3*

  • Support 26.3
  • Increase minimum Minecraft version to 26.1.2

  • Supported Minecraft servers: Paper 1.21.4-26.2*

  • Fix Distant Horizons Support plugin compatibility for DH 3.1+/DHS 0.15 dev build/Minecraft 26.2

  • Supported Minecraft servers: Paper 1.21.4-26.2*

  • Support 26.2
  • Add sulfur spikes to blocks affected by fixCollision.dripstone

  • Supported Minecraft servers: Paper 1.21.4-26.1.2*

  • Fix Distant Horizons Support plugin compatibility for DH 3.0+/DHS 0.13.0+/Minecraft 26.1+

  • Supported Minecraft servers: Paper 1.21.4-26.1.2*

  • Support 26.1.2
  • Supported Minecraft servers: Paper 1.21.4-1.21.11*

  • Fix world border being placed incorrectly in the nether in 1.21.9 and later (causing blocks to become unplaceable and unbreakable)
  • Fix world border not appearing until a player moves when joining the game

  • Supported Minecraft servers: Paper 1.21.4-1.21.11*

  • Fix offsets not regenerating when players enter an end portal from the overworld to the end

  • Supported Minecraft servers: Paper 1.21.4-1.21.11*

  • Support 1.21.11
  • Add offsetsAreMultiplesOfBlocks configuration setting
  • Controls how the plugin rounds offsets (e.g. to the nearest chunk or to the nearest N chunks)
  • Default is auto, which detects the optimal rounding behavior based on other installed plugins
  • Add **Experimental** Distant Horizons Support plugin compatibility
  • Level-of-detail (LOD) data generated by the [DHS](https://modrinth.com/plugin/distant-horizons-support) plugin is now properly adjusted for the player's offset
  • Read the warnings listed in [Implications and Limitations](https://github.com/joshuaprince/CoordinateOffset/wiki/Implications-and-Limitations) under "Distant Horizons Support" if you plan on installing CoordinateOffset alongside DHS
  • Add WorldEditCUI mod compatibility
  • Players with the WorldEditCUI mod installed will now see correctly-placed WorldEdit selections when they have an offset applied

  • Supported Minecraft servers: Paper 1.21.4-1.21.10*

This is a patch following v6.0.0 with minor fixes. Please see the full [v6.0.0 changelog](https://github.com/joshuaprince/CoordinateOffset/releases/tag/v6.0.0) and [v6 Upgrade Guide](https://github.com/joshuaprince/CoordinateOffset/wiki/v6-Upgrade-Guide) if upgrading from before v6.0.0.

  • Fix version string in paper-plugin.yml being formatted incorrectly
  • Fix config.yml parsing of floating-point numbers with no decimal point
  • Allow zero values for worldCoordinateScaleOverrides
  • Fix metrics reporting wrong statistic for worldCoordinateScaleOverrides
  • API: Add Offset#apply method to all Offset types

  • Supported Minecraft servers: Paper 1.21.4-1.21.10*

CoordinateOffset [5.0.0](https://github.com/joshuaprince/CoordinateOffset/releases/tag/v5.0.0) just came out last month,
but thanks to a breakthrough I made in **immediate offset changes**, it's already time for another major release.

"Immediate offset changes" means that the plugin no longer has to wait for the next opportune event to change a player's
offset. By simulating a teleport, the plugin can change a player's offset at any time. This allows for commands like
/offset regenerate and /offset set. It also allows safe offset changes when the player teleports any distance.

If you like reading, check out the fully documented list of changes in the
read this if you made any significant configuration changes or use the CoordinateOffset API. Otherwise, here's the
summary of everything new:

  • Regular backups are still mandatory.**
  • Add /offset regenerate and /offset set commands.
  • Add PermissionOffsetProvider.
  • Add option to specify offsetProviderOverrides rules based on player name, world key, and world UUID. (Previously
only player UUID and world name were supported.)
  • Add regenerateOnTeleport and minimumTeleportDistance options to RandomOffsetProvider and
ZeroAtLocationOffsetProvider. (Replaces resetOnDistantTeleport and allowUnsafeResetOnDistantTeleport settings)
  • Rename resetOn* offset provider options to regenerateOn* to match the new command. (Configuration will
automatically migrate and leave values unchanged.)
  • Rename persistent RandomOffsetProvider option to regenerateOnJoin. (Configuration will automatically migrate
and leave behavior unchanged; false and true are swapped automatically.)
  • Remove persistenceKey Random offset provider option in favor of using provider name.
  • Add regenerateOnJoin option to ZeroAtLocationOffsetProvider, allowing zero-at-location offsets to persist across
joins and server restarts.
  • Default all regenerateOn* options to false. (The persistent option previously defaulted to false; newly generated
configurations now persist random offsets forever by default.)
  • Redesign internal handling for scaling offsets between worlds.
  • Offsets now scale automatically based on world coordinate scale (e.g. nether scales down by 8).
  • Move worldScaling and worldAlignment options out of offset provider settings and into optional
worldCoordinateScaleOverrides global configuration. (Not automatically migrated from the previous version)
  • Add a default offsetProviderOverrides rule that disables offsets in the end. (Only for newly generated configs;
can be removed if desired.)
  • Automatically disable offsets for Bedrock players with no extra permissions/config required.
  • Add messages.yml to allow customization/translation of most plugin messages.
  • API Changes
  • Offsets returned from custom offset providers are now split into ScalableOffset and FixedOffset to give explicit
control over how providers interact with world coordinate scaling.
  • Add new API endpoints to regenerateOffset and setOffset for immediate offset changes.
  • Add onOffsetSetByCommand interface to offset providers.
  • Supported Minecraft servers: Paper 1.21.4-1.21.10*

I'm proud to announce CoordinateOffset's latest major release, **5.0.0**. This release overhauls lots of internal code and restructures the entire project. This will facilitate some new features and platform support that I've been wanting to add for a while. **Please report bugs on the [issue tracker](https://github.com/joshuaprince/CoordinateOffset/issues) or in [Discord](https://discord.gg/V3xYtqU9JU).**

## Upgrading from CoordinateOffset 4.0

If you just want to upgrade, be aware of the following:

  • Regular backups are mandatory.**
  • Minecraft versions **1.21.3 and below** and **all Spigot servers** are no longer supported. (Read below for more info)
  • [PacketEvents](https://ci.codemc.io/job/retrooper/job/packetevents/) is now required** as a dependent plugin. Please install the latest development build (for now, PE's latest release does not support MC 1.21.10).
  • Your CoordinateOffset config.yml will be stripped of all comments and reorganized on upgrade. Your existing configuration will be backed up to config.v4.old.yml in the plugin's data folder before it is migrated. All saved configuration should work the same as it did before the upgrade.
  • /offsetreload is now /offset reload. /offset <player> is now /offset query <player>.

## Dropping support for <1.21.4 and Spigot

Minecraft versions below **1.21.4** and **all Spigot servers** are no longer supported. Paper [hard-forked from Spigot](https://forums.papermc.io/threads/the-future-of-paper-hard-fork.1451/) almost a year ago, and 1.21.9 was the first version where Paper's decisions split away from Spigot in a way that affects CoordinateOffset. Dropping support let me delete a lot of legacy code, rewrite the command system in Brigadier, and spend less time testing new releases.

Based on [bStats data](https://bstats.org/plugin/bukkit/CoordinateOffset/19988), at the time of writing, only 2 of 41 servers running CoordinateOffset are using Spigot. 4 of 41 servers are running a Minecraft version below 1.21.4. It doesn't make sense to accommodate these servers with new plugin development. My apologies if you are affected, but please stay on [v4.0.16](https://github.com/joshuaprince/CoordinateOffset/releases/tag/v4.0.16) if you need it.

## Full Changelog

  • Support 1.21.9 and 1.21.10
  • Convert plugin to a Paper plugin and increase API version to 1.21.4
  • Stop shading PacketEvents; require PacketEvents as a dependency
  • Replace configuration system with ConfigLib
  • Configuration is now automatically formatted and new options are added during plugin load
  • Comments and unexpected configuration will be deleted when the plugin loads
  • Add new obfuscateDebugPropertySubscriptions config.yml setting
  • Minecraft 1.21.9+ has ["debug" properties](https://minecraft.wiki/w/Debug_property) that clients can enable. These properties show real coordinates inside entity brain data (such as bees and villagers).
  • The new setting disables debug properties for all clients with an offset applied.
  • This setting is enabled by default. Disabling it makes these debug flags work but reveals offsets to players.
  • Rewrite /offset command
  • The output of all subcommands is now formatted more nicely
  • The command gives proper suggestions based on permissions
  • /offsetreload is now /offset reload
  • /offset <player> is now /offset query <player>
  • All permissions are unchanged
  • Add a proper API published on Maven Central
  • See [API wiki page](https://github.com/joshuaprince/CoordinateOffset/wiki/API) for details
  • Remove debug config.yml setting
  • This setting was not intended for production use and caused plugin errors when enabled.
  • Various internal changes
  • Restructure code to be in api, core, and paper subprojects for increased modularization
  • Redesign offset change logic during join/respawn/world change to more accurately map to the game's protocol
  • Redesign offset storage logic to be more efficient with concurrency
  • Fix console errors on player login for versions up to 1.21.4
  • Rate-limit console spam during packet error conditions
  • Support 1.21.8
  • Support 1.21.7
  • Support 1.21.6
  • Fix ghost items appearing on the cursor when moving items with data components in an inventory with an offset applied in 1.21.5
  • Fix underground rain and missing beacon beams in 1.21.5 caused by missing heightmaps
  • Support 1.21.5
  • Fix structure blocks being unusable when an offset is applied
  • Fix chat validation error when plugin is installed in certain Geyser/offline-mode setups
  • Update packetevents dependency
  • Fix compatibility with GrimAC
  • Update packetevents dependency
  • Support 1.21.4
  • Fix packet decoding error and kick caused by potions in inventory or in a container
  • Update packetevents dependency
  • Support 1.21.2 and 1.21.3
  • Update packetevents dependency
  • Make "version not found" joke in the changelog
  • Support 1.21.1
  • Fix "Unknown player of Offset lookup" errors related to logging in from another location
  • Fix "Unknown player for Offset lookup" errors printed occasionally when players disconnect
  • Fix Random offsets occasionally resetting when changing worlds or dying even when the option is disabled
  • Update packetevents dependency
  • Fix NBT errors causing world to sometimes not load when joining
  • Fixes for lodestone compasses
  • Fix Creative players seeing lodestone compasses pointing the wrong direction
  • Fix lodestone compasses on the ground or in other players' hands pointing the wrong direction

CoordinateOffset Icon
Download CoordinateOffset
Select game version
Select platform