[1] Made world permissions actually controllable, in the gui and the command alike. Before, the gui checked a node the command never used (so regular players saw an empty menu full of filler glass), while /rtp <world> let everyone through unless a node was explicitly denied, so restricting worlds per group never really worked. Both now follow one clear rule: the world you are standing in is always available, justrtp.command.rtp.world unlocks every world, and justrtp.command.rtp.world.<world> (for example justrtp.command.rtp.world.world_nether) unlocks exactly that one, which also makes it appear in the gui. An explicit denial of justrtp.command.rtp.<world> still always wins. The gui shows exactly what the player can use, nothing more, and the docs got a full section with LuckPerms examples.
[2] Closed a paid teleport loophole. If a payment confirmation was still pending, the next /rtp request (or gui click) skipped the confirmation entirely and started right away, without ever charging the player. A new paid request now always asks for its own confirmation and replaces the old one, and each confirmation keeps its own full 30 second window.
[3] Fixed zone particles turned off with /rtpzone particles <id> none coming back after a reload or restart. Choosing none was never written to rtp_zones.yml, and a zone without a saved style falls back to the default style on load, so the particles quietly returned. The choice is stored explicitly now and none stays none.
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }