Skip to content

Configuration Examples

Joshua Prince edited this page Nov 16, 2025 · 1 revision

This page gives several example config.yml recipes that achieve various obfuscation goals. You may paste these into your configuration as-is, or use them as guidance for setting your own offset providers and override rules.

General Tips

  • Always apply an offset in The End that isn't used in other worlds. If you don't, someone can stand near the exit portal (which is always at true 0,0) and see their exact offset in the overworld. Consider how any other custom worlds might allow for similar offset leaks.
  • Want to prevent players from sharing coordinates? Vary offsets between players. Use a RandomOffsetProvider or assign different offset permission nodes through a PermissionOffsetProvider.
    • Want to avoid confusing players who share coordinates? Give those players the same offset. Use a single ConstantOffsetProvider.
  • Want to break mods like waypoints and world maps? Regenerate offsets frequently. Use a RandomOffsetProvider or ZeroAtLocationOffsetProvider with regenerateOn settings set to true.
    • Want to avoid breaking waypoint and world maps? Never change a player's offset. Set all regenerateOn settings to false, or use a ConstantOffsetProvider.

Consistent Offsets, Unique Per-Player (default config)

  • Make players unable to share coordinates to find points of interest or each other.
  • Make coordinate leaks between players meaningless.
  • Allow mods like waypoints and world maps to still be fully functional.
defaultOffsetProvider: randomConstant
offsetProviderOverrides:
- provider: disabled
  world: world_the_end
offsetProviders:
  randomConstant:
    class: RandomOffsetProvider
    randomBound: 100000
    regenerateOnJoin: false
    regenerateOnDeath: false
    regenerateOnWorldChange: false
    regenerateOnTeleport: false
  disabled:
    class: ConstantOffsetProvider
    offsetX: 0
    offsetZ: 0

Punish Player Deaths

  • Make coordinates consistent until the player dies.
  • Effectively erase a player's waypoint and world map data when they die.
  • Make in-game recovery compass items the only realistic way to track a death point.
  • Make players unable to share coordinates to find points of interest or each other.
  • Make coordinate leaks between players meaningless.
defaultOffsetProvider: randomizeOnDeath
offsetProviderOverrides:
- provider: disabled
  world: world_the_end
offsetProviders:
  randomizeOnDeath:
    class: RandomOffsetProvider
    randomBound: 100000
    regenerateOnJoin: false
    regenerateOnDeath: true
    regenerateOnWorldChange: false
    regenerateOnTeleport: false
  disabled:
    class: ConstantOffsetProvider
    offsetX: 0
    offsetZ: 0

Wilderness

  • Combine with a "random spawn location" plugin to start everyone at their own personal (0, 0).
  • Make coordinates consistent so waypoint and world map mods are still usable.
  • Make players unable to share coordinates to find points of interest or each other.
defaultOffsetProvider: wilderness
offsetProviderOverrides:
- provider: disabled
  world: world_the_end
offsetProviders:
  wilderness:
    class: ZeroAtLocationOffsetProvider
    regenerateOnJoin: false
    regenerateOnDeath: false  # or true, if you want to change their spawn point every time and break map/waypoint mods
    regenerateOnWorldChange: false
    regenerateOnTeleport: false
  disabled:
    class: ConstantOffsetProvider
    offsetX: 0
    offsetZ: 0

Maximum Obfuscation

  • Make coordinates as useless as possible by making them change on every possible occasion.
  • Make in-game items like maps and compasses the only way to navigate consistently.
  • Make mods that provide waypoints and world maps completely useless.
defaultOffsetProvider: fullRandom
offsetProviders:
  fullRandom:
    class: RandomOffsetProvider
    randomBound: 100000
    regenerateOnJoin: true
    regenerateOnDeath: true
    regenerateOnWorldChange: true
    regenerateOnTeleport: true
    # Even with max obfuscation, don't set this below 100.
    # Ender pearl and chorus fruit effects count as teleports!
    minimumTeleportDistance: 256.0

Minimal Anti-Seed Cracking

  • Make seed cracking tools based on world generation more difficult to use.
  • Make coordinates incorrect, but otherwise fully shareable and usable.
defaultOffsetProvider: constant
offsetProviderOverrides:
- provider: disabled
  world: world_the_end
offsetProviders:
  constant:
    class: ConstantOffsetProvider
    offsetX: 943680  # generate your own random numbers here
    offsetZ: −43856
  disabled:
    class: ConstantOffsetProvider
    offsetX: 0
    offsetZ: 0

Prevent Screenshot Coordinate Leaks

  • Let players query their own offset and real coordinates.
  • Let players regenerate their own offset.
  • Prevent reverse-engineering of coordinates based on a screenshot (since everyone has their own offset that they control).
# Give players permissions: "coordinateoffset.query", "coordinateoffset.regenerate"
defaultOffsetProvider: randomConstant
offsetProviderOverrides:
- provider: disabled
  world: world_the_end
offsetProviders:
  randomConstant:
    class: RandomOffsetProvider
    randomBound: 100000
    regenerateOnJoin: false
    regenerateOnDeath: false
    regenerateOnWorldChange: false
    regenerateOnTeleport: false
    # offsets still regenerate when a player runs /offset regenerate
  disabled:
    class: ConstantOffsetProvider
    offsetX: 0
    offsetZ: 0

Factions

  • Give each faction their own coordinate system.
  • Make coordinate leaks between factions less impactful (but note that it's not hard for a dedicated griefer to reverse-engineer the system).
  • Allow mods like waypoints and world maps to still be fully functional.
defaultOffsetProvider: permission
offsetProviderOverrides:
- provider: disabled
  world: world_the_end
offsetProviders:
  permission:
    class: PermissionOffsetProvider
    prefix: coordinateoffset.offset
  disabled:
    class: ConstantOffsetProvider
    offsetX: 0
    offsetZ: 0

Give everyone in faction A a permission node like coordinateoffset.offset.-558272.-13584, faction B one like coordinateoffset.offset.117984.−469136, etc. Generate these numbers randomly and make sure they are evenly divisible by 16.

Clone this wiki locally