GPS [1.9 - 1.21] | Global Positioning System For Your Server | icon

GPS [1.9 - 1.21] | Global Positioning System For Your Server | -----

An actual GPS featuring 360° 3D axis arrows, in-game configurator, and advanced path computation!




[​IMG]

  • 1.20 & 1.21 | Editor stick command fix for some server distributions.
----------, Dec 17, 2024

[​IMG]

  • 1.20 & 1.21 | The plugin should now work fine on 1.20 and 1.21 servers.
  • Fix | Latest versions of ProtocolLib no longer cause exceptions.

  • Fix | Tab completing point names is no longer case sensitive.
----------, Jul 10, 2024

[​IMG]

  • Fix | Fixed an issue with the path caching that could cause console errors.
----------, Sep 28, 2023

[​IMG]

  • Performance | replaceAll has been replaced with the replace method in every case as regex replacements are not required. As replace is more performant and is used extensively in the plugin this should provide a nice small performance boost.
----------, Feb 14, 2023

[​IMG]

  • Performance | Replaced some unnecessary string parsing with proper data types. This improves performance when using the configurator.
----------, Jan 15, 2023

[​IMG]

  • Refactoring | Minor refactorings in the entity hider logic.

  • Version | Tested the latest Spigot version.
----------, Dec 30, 2022

[​IMG]

  • Revision | Revised some of the version compatibility code.
----------, Sep 10, 2022

[​IMG]

  • Sound | You can now set a sound to be played when reaching a destination. This is set per point with /gpsc attribute sound <sound>.
----------, Jul 9, 2022

[​IMG]

  • 1.19 | Based on initial testing the plugin should work fine on 1.19. If you come across any issues please let me know as soon as possible!
----------, Jun 15, 2022

[​IMG]

  • BossBar | You can now have the BossBar compass prefixed and suffixed with a custom string. Add the following to configure this feature:
    Code (YAML):
    BossBarCompass :
      # Prefix and Suffix the BossBar with a custom string. Can be useful for custom textures or general aesthetics.
      prefix
    : ''
      suffix
    : ''
----------, Apr 7, 2022

[​IMG]

  • Continue | The GPS/Compass can now continue after a player has died and respawns. To enable this please add the following to your config.yml:
    Code (Text):
    # When a player respawns after a death the GPS/Compass tries to recompute
    # the path and continues if possible.
    continueOnRespawn: true
     
----------, Apr 4, 2022

[​IMG]

  • Arrow Name | You can now use PAPI placeholders in the arrow name.
----------, Apr 3, 2022

[​IMG]

  • Fix | Fixed the sign for 2D angles being direction-based.
----------, Mar 27, 2022

[​IMG]

  • Improvement | The value returned by getAngleToTarget and getAngleToTarget2D is now signed.
----------, Mar 26, 2022

[​IMG]

  • API Methods | More API methods are available for finding the angle between the player and their target. These are also used by the PlaceholderAPI expansion.

  • PAPI | More PlaceholderAPI placeholders. See them here https://api.extendedclip.com/expansions/gps/
[​IMG] [​IMG]
[​IMG] [​IMG]
[​IMG]
----------, Mar 26, 2022

[​IMG]

  • API | A new method with the signature getCardinalDegrees(Player player) has been added to the API. It will return between 0-360 based on the direction the player has to go to get to the next target. North is 0/360, East is 90, South is 180, and West is 270. This will be available as a PAPI placeholder soon under %gps_cardinalDegrees%.
[​IMG] [​IMG]
[​IMG] [​IMG]
[​IMG]
----------, Mar 24, 2022

[​IMG]

  • Fix | The <subtitle> splitter is now case-insensitive when configuring title messages.
[​IMG] [​IMG]
[​IMG] [​IMG]
[​IMG]
----------, Feb 22, 2022

[​IMG]

  • Titles | You can now turn any message in the messages.yml file into a title message.
    Code (YAML):
    # Prepend any message with <Title,x,x,x> to send it as a TitleBar message. Examples below:
    #  - <Title,5,10,5>This is a title message with 5 ticks fade in, 10 ticks Stay, and 5 ticks fade out.
    #  - <Title,5,10,5>This is a title<Subtitle>This is a subtitle.
    These instructions are also available in the messages.yml file.
[​IMG] [​IMG]
[​IMG] [​IMG]
[​IMG]
----------, Feb 21, 2022

[​IMG]

  • 1.18 | The plugin works on 1.18 servers. If you encounter any bugs please report them asap.
[​IMG] [​IMG]
[​IMG] [​IMG]
[​IMG]
----------, Dec 19, 2021

[​IMG]

  • Performance | Refactored and moved some logic around in the listener concerned with handling GPS network configuration events. Depending on your player base this can free up around 1% of the full server tick which is quite significant.
[​IMG] [​IMG]
[​IMG] [​IMG]
[​IMG]
----------, Nov 22, 2021

[​IMG]

  • Fix | Using /gps start <point> [player] did not work properly. This has been corrected.
[​IMG] [​IMG]
[​IMG] [​IMG]
[​IMG]
----------, Aug 31, 2021

[​IMG]

  • Fix | ShowForOwnerOnly has been fixed for 1.17 servers. For this, to work you have to use the latest dev build of ProtocolLib. This can be downloaded here.
[​IMG] [​IMG]
[​IMG] [​IMG]
[​IMG]
----------, Jul 19, 2021

[​IMG]

  • Fix | API location formatting has been added to a method that did not enforce it.

  • 1.17 | From the testing conducted GPS works fine on 1.17+ servers.
[​IMG] [​IMG]
[​IMG] [​IMG]
[​IMG]
----------, Jul 7, 2021

[​IMG]

  • Fix | When highlighting a path with /gps show or /compass show the highlighting algorithm will now stop spawning particles outside of the defined particle render distance. This will prevent players from being able to crash the server by spawning millions of particles should they execute e.g. /compass start 9999999 999999 999999 and enable particle with the show command.

    Reported by @Deathdusk; thanks!
[​IMG] [​IMG]
[​IMG] [​IMG]
[​IMG]
----------, Apr 5, 2021

[​IMG]

  • HEX | 1.16+ Only You can now use HEX chat colors in any message/string in the plugin. This includes chat messages, boss bars, action bars, armorstand titles, etc!
[​IMG] [​IMG]
[​IMG] [​IMG]
[​IMG]
----------, Nov 26, 2020

[​IMG]

  • 1.16 | GPS supports 1.16(.1) servers!
[​IMG] [​IMG]
[​IMG] [​IMG]
[​IMG]
----------, Jul 3, 2020

[​IMG]

  • Rainbow Particles | You can now use the value rainbow instead of an RGB value for particle colors. This will result in the particles transitioning smoothly between every color. Config example:
    Code (YAML):
    # The base line color.
    lineColor
    : rainbow
    Ingame example:
    [​IMG]

    Suggested by @BanSystem; thanks!
[​IMG] [​IMG]
[​IMG] [​IMG]
[​IMG]
----------, Jun 9, 2020

[​IMG]

  • Fix | Due to missing parentheses the RGB normalization was incorrect after conversion. This has been fixed and custom RGB colors now work correctly.

    Reported by @BanSystem; thanks!
[​IMG] [​IMG]
[​IMG] [​IMG]
[​IMG]
----------, Jun 8, 2020

[​IMG]

  • Fix | The ProjectileHitEvent would throw an exception on 1.8, 1.9, and 1.10 when any projectile was fired. This was caused by a method used not present in the API in those versions. This has been fixed.

    Reported by @BluueJay; thanks!


  • Improvement | Due to caching changes on Spigot the latest version of a plugin returned from the websites API can take multiple hours before updating to the correct version. E.g. your version is 1.0.1 but Spigot still incorrectly returns 1.0.0 as the latest version.

    Due to the large number of "The plugin says there is a new version available, but I already downloaded the latest version" messages I've been receiving I've gone ahead and implemented a parser that'll only notify you of updates if the version on your server is less than the one on Spigot. If you're on 1.0.1 and Spigot returns 1.0.0 you'll no longer get an incorrect notification.
[​IMG] [​IMG]
[​IMG] [​IMG]
[​IMG]
----------, May 20, 2020

[​IMG]

  • CustomModelData | You can now use CustomModelData for the GPS arrow appearance (In 1.14+). The following has been added to the config.yml file:
    Code (YAML):
    # If the customModelData value doesn't equal 0 then the plugin will use customModelData instead of durability.
    resourcePackCustomModelData
    : 0
    If you wish to make use of this feature please manually add the above to the config.yml file and set the value to your liking. You do not have to add the above if you do not wish to make use of it.

    Suggested by @vip123bmt2001; thanks!
[​IMG] [​IMG]
[​IMG] [​IMG]
[​IMG]
----------, Apr 18, 2020

[​IMG]

  • Feature | You can now set the y-offset of the particle path from the player if you would like it to start higher or lower. The following has been added to the config.yml file:
    Code (YAML):
    # Set the y-offset of the particle path from the player.
    playerPathOffset
    : 0
    If you wish to make use of this feature please add it manually to your config.yml file. You do not have to add it if you do not wish to use it; the default is 0 i.e. from the feet of the player.
[​IMG] [​IMG]
[​IMG] [​IMG]
[​IMG]
----------, Apr 11, 2020

[​IMG]

  • API Version | It wasn't possible to use 1.13+ materials as the arrow material or for the resource pack arrow. This is because the plugin uses the 1.12.2 API version. Without upgrading and making a ton of changes it was possible to fix this by simply specifying the plugin version as "1.13". I've tested the plugin on 1.8.8, 1.12.2, and 1.15.2 and it is working fine. If this causes any issues please let me know as soon as possible.

    Reported by @TheGeekGamer_91; thanks!
[​IMG] [​IMG]
[​IMG] [​IMG]
[​IMG]
----------, Apr 3, 2020

[​IMG]

  • Improvement | The BossBar compass will now indicate whether you're above or below the target. E.g. if you're 5 blocks above the targets y-level the target symbol is a down arrow. The following has been added to the config.yml:
    Code (YAML):
      # The symbol for the target destination if it is above you.
      targetAbove
    : '&c&l⬆'
      # The symbol for the target destination if it is below you.
      targetBelow
    : '&c&l⬇'
      # Set at which y-offset the symbol changes.
      # E.g. if you're 2 blocks above the target the target-symbol changes to targetBelow.
      targetOffset
    : 2
    If you wish to configure this please add it to the config.yml file in the BossBarCompass section.

    Suggested by @Lordinou; thanks!
[​IMG] [​IMG]
[​IMG] [​IMG]
[​IMG]
----------, Mar 30, 2020

[​IMG]

  • BossBar Compass | You can now use the BossBar as a compass which will target the next point.
    [​IMG]
    The red dot is the target and N, E, S, W are there to keep you oriented.

    This is of course configurable. The following has been added to the BossBar settings section in the config.yml:
    Code (YAML):
    # Instead of a message you can use the BossBar as a compass.
    BossBarCompass
    :
      enabled
    : false
      # The symbol for North.
      north
    : '&a&lN'
      # The symbol for East.
      east
    : '&a&lE'
      # The symbol for South.
      south
    : '&a&lS'
      # The symbol for West.
      west
    : '&a&lW'
      # The symbol for the target destination.
      target
    : '&c&l⬤'
      # The separator symbol.
      separator
    : '&f&m '
      # The spacing between e.g. the symbols for north and east.
      separatorLength
    : 15
      # The total length of the BossBar text.
      totalLength
    : 42
    If you wish to use this feature you have to add the above manually and set enabled to true.
[​IMG] [​IMG]
[​IMG] [​IMG]
[​IMG]
----------, Mar 29, 2020

[​IMG]

  • Fix | I forgot to update the jar version which caused the plugin to prompt the player with the message that a new update was available even when there wasn't.

    Reported by @Tiippex; thanks!
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Jan 3, 2020

[​IMG]

  • Fix | The resource pack has been updated for 1.13, 1.14, and 1.15. The new resource pack can be downloaded here.

    Thanks to @SpringBonnie for the fix! ;)
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Jan 2, 2020

[​IMG]

  • Fix | The resource pack option didn't work correctly in 1.13 and up. This has been fixed.

    Reported by @debarba; thanks ;)

    There is still an issue with the provided texture pack in 1.13 and up. The iron hoe appears as the purple/black checkered item if the durability of the item does not match one of the durabilities assigned to an arrow texture. I'm working on resolving this issue!
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Jan 2, 2020

[​IMG]

  • 1.15 Support | GPS now supports 1.15 servers.
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Dec 13, 2019

[​IMG]

  • Tab Fix | Some of the recent changes affected the tab completion filter which could cause an NPE. This has been fixed.

    Reported by @Arkobat; thanks ;)
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Dec 9, 2019

[​IMG]

  • Point Permissions | You can now set a permission per point via the /gpsc attribute permission [permission] command. The permission set is the full permission e.g. if you execute /gpsc attribute permission gps.my.point players are required to have the permission gps.my.point to start the GPS/Compass to that point.

    Suggested by @aglerr; thanks ;)


  • Refactoring | The commands system, a few commands, and permission handling has been rewritten with approximately 500 changes. This should make the codebase more robust.
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Dec 5, 2019

[​IMG]

  • 1.14 Fix | If using the "showForOwnerOnly" feature on 1.14 you'd be spammed with an error stating that a class is missing. This was a class included in the Spigot jar itself, however, it was removed in 1.14. ProtocolLib relies on this but hasn't updated to include it to be compliant with 1.14. To get this update done quickly I've decided to include a heavily minimized version of the library and include it directly in GPS for ProtocolLib to use. This solves the issue and the "showForOwnerOnly" feature now works as intended on 1.14 again.

    Reported by @Tiippex, thanks! ;)


  • Maven | Maven framework support has been added to GPS to make handling dependencies easier.
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Oct 13, 2019

[​IMG]

  • Give Compass | You can now select whether a custom compass should be given when the CompassItem feature is enabled or rely on the player to have their own compass. The following has been added to the config.yml file:
    Code (YAML):

      # Decide whether players will be given a custom compass or not.
      # If you set this to false a compass will not be given,
      # however, the direction towards the next target will
      # still be set for all compasses the player has.
      giveCompass
    : true
     
    If you do not wish to make use of this you do not have to add the above - the default is true. If you wish to set it to false please add it as seen in the image below and set the value to false:
    [​IMG]

    Requested by @Possemaster, thanks ;)
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Oct 3, 2019

[​IMG]

  • Change | The disableArrow option will no longer automatically show the particle path. If you rely on this please enable autoShowPath.

  • Compass Item | You can no longer start the GPS or Compass if you do not have room for the Compass Item (If you have the CompassItem feature enabled). You'll get the following message:
    Code (YAML):
    Messages:
      GPS
    :
        noRoomCompassItem
    : ' %prefix% &cPlease make room for the Compass item!'
    The message is automatically added to messages.yml file.


  • Fix | Various issues regarding logging out and in with the compass item in conjunction with the quit timer have been fixed.
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Sep 29, 2019

[​IMG]

  • Compass Item | You can now give users a compass when they start the GPS or Compass. This item is added to the player's inventory when they start the GPS and removed again once they reach their destination or otherwise ends the navigation. If a player tries to drop the custom compass the navigation is ended and the item removed.

  • Config.yml | The following has been added to the config.yml regarding the above feature:
    Code (YAML):
    ############################################################
    # +------------------------------------------------------+ #
    # |                     Compass Item                     | #
    # +------------------------------------------------------+ #
    ############################################################

    # If enabled players will be given a compass when they start the compass or GPS.
    # This will set the direction of the compass item to the next target location.
    CompassItem
    :
      enabled
    : false

      # The name of the compass item.
      name
    : '&eGPS Compass'

      # The lore of the compass item.
      lore
    :
       - ''
        - '&7Points towards the next location.'
    If you want to make use of this feature you'll have to add the above and set the enabled to true.

    Suggested by @Possemaster; thanks ;)
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Sep 28, 2019

[​IMG]

  • Actionbar | The actionbar utility class has been completely rewritten. Prior to this update NMS classes, constructors, methods, and fields were all accessed directly via reflection every time a message was sent to a player; that is quite resource-intensive if used frequently.

    This update ensures that all of those code related entities are cached and reused. This means that they are only accessed during startup and then reused as needed when messages are requested. This will have a significant positive impact on performance.

    Please note that this only concerns 1.8, and 1.9 servers. 1.10 and up use the built-in method in the Spigot API for sending these kinds of messages.
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Sep 16, 2019

[​IMG]

  • Tagging | In versions after 1.10 the entity tagging has changed from being metadata-based to scoreboard-based. This means that tags on these versions will be persistent between restarts. This for an example is beneficial for the cleanup command should you in a rare case need that.
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Sep 12, 2019

[​IMG]

  • EnderPearls | You can no longer hit GPS arrows with an ender pearl. This is actually a cumbersome task. To work around the limitations of the API, GPS will detect when a player is teleporting. If the teleport is caused by an ender pearl and it is right at a GPS arrow, GPS will cancel the teleport, remove the ender pearl, and spawn a new one with the player as owner and the same velocity. This does not affect the accuracy of the ender pearl.

    Requested by @Maxito; thanks ;)


  • CleanUp | The functionality of the /gpsadmin cleanup command is now executed every time the server starts.
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Sep 9, 2019

[​IMG]

  • Flags | You can now assign flags to points. A flag is an arbitrary string you select yourself. This will have a lot of use cases in the future. E.g. compute a path that avoids any point with the flag "pvp" or includes at least one point with the flag "highway" and so on.

    You assign flags with:
    /gpsc attribute flags <add/remove> <flag>

    This update introduces flags yet without the abovementioned use cases. They'll be introduced in the coming updates.

    Suggested by @Arkobat; thanks :)
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Sep 1, 2019

[​IMG]

  • Aliases | The /gta cleanup command now has the following aliases: cleanu, cup, cu

  • Metrics | There are some issues with the old Metrics class, therefore, it has been updated. Take a look at what happened when I updated the Metrics class in Simple Elevators:
    [​IMG]
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Aug 30, 2019

[​IMG]

  • Cleanup | In very rare cases a GPS arrow can be left behind. Until the exact cause of this has been located a /gpsa cleanup command has been added. This command will remove all leftover GPS arrow components.

    Please note that this command won't work for "old" leftover arrows. Use /minecraft:kill @e[type=Armor_stand, r=10] for those.

  • Message | The following message has been added:
    Code (YAML):
    Messages:
      Admin
    :
        cleanUpSuccess
    : ' %adminPrefix% &aCleanUp successful!'
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Aug 28, 2019

[​IMG]

  • Fix | Fixed some formatting/layout in the plugin.yml regarding the recently added commands. With the previous formatting, child commands weren't recognized.
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Aug 5, 2019

[​IMG]

  • Plugin.yml | All permissions added to the plugin.yml file.
[​IMG] [​IMG]
[​IMG]
----------, Jul 28, 2019

[​IMG]

  • World Linking | It's finally here! You can now connect your points across worlds! Simply select a point in a world, teleport to another world and connect them. The GPS will resolve the shortest path across as many worlds as you have! Below is a short demonstration of teleporting to another world and back again to get past an obstacle:
    [​IMG]

  • Config Setting | The following has been added to the config.yml:
    Code (YAML):
    # Set the distance between points that are connected via a teleportation connection.
    # E.g. if two points that are 1000 blocks apart or in different worlds are connected
    # with a teleportation connection, i.e. the player is expected to teleport from one
    # point to the other, the distance the GPS resolves the path with is the value below.
    teleportConnectionDistance
    : 0
    In other words, the distance between points connected between worlds is the above distance. The in-world-teleportation link is a feature to come.

    You'll have to add the above setting manually if you want to change the default value.

  • Effect | As seen in the above example points connected between worlds have a fancy purple circle.

  • Message | The "cantConnectDimension" message has been removed.

This update took a long time and changes a lot of the logic behind the GPS. If any issues occur please let me know as soon as possible.
[​IMG] [​IMG]
[​IMG]
----------, Jul 25, 2019

[​IMG]

  • Teleportation | Prior to this update you could teleport a max of 20 blocks with the GPS/Compass enabled. If you teleported a distance longer than that the GPS/Compass was stopped. This was done as arrows would sometimes get left behind, arrows would be invisible, or some other issue would occur due to chunk loading/unloading during teleportation.

    After a lot of testing, this limitation has been removed and you can now safely teleport thousands of blocks with the GPS/Compass enabled.

    This is a limitation that I've struggled with during the process of making points link between worlds. With this issue out of the way world-linking should appear in a future update ;)
[​IMG] [​IMG]
[​IMG]
----------, Jul 22, 2019

[​IMG]

  • Fix | Prior to this update it was possible to start the compass with a target point in another world resulting in a lot of console spam. This has been fixed!

    Reported by @sklm; thanks! ;)
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Jul 18, 2019

[​IMG]

  • Toggle Command | You can now as a player use /gps toggle or /compass toggle to enable/disable gps/compass for yourself. Toggling usage off even ensures that the console can't start the gps/compass for you.

    Suggested by @vip123bmt2001 :)


  • Permission | To use the toggle command you'll need the gps.commands.toggle permission.


  • Messages | A few new messages have been added:
    Code (YAML):
    Messages:
      GPS
    :
        toggledOn
    : ' %prefix% &aGPS usage has been enabled!'
        toggledOff
    : ' %prefix% &cGPS usage has been disabled!'
    A new line has been added to the Help.GPS list after the /gps stop command:
    Code (YAML):
      - |-
        [ " &7&l● &e/gps toggle", "/gps toggle", "&eToggle the GPS.
        &eIf toggled off nothing can start the GPS for you.

        &7Click to run."
    ]
    You'll have to add the above manually.

    A new line has been added to the Help.Compass list after the /compass stop command:
    Code (YAML):
      - |-
        [ " &7&l● &e/compass toggle", "/compass toggle", "&eToggle the Compass.
        &eIf toggled off nothing can start the Compass for you.

        &7Click to run."
    ]
    You'll have to add the above manually.
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Jul 13, 2019

[​IMG]

  • Addition | The UpdateDistance attribute will now suggest the default update distance in order to provide intel in what is a "logical" value to avoid misunderstandings.
[​IMG] [​IMG]
[​IMG]
----------, Jun 24, 2019

[​IMG]
This update took quite some time; over 1300 line additions/deletions.

  • Tab Completion | All main commands will now suggest their subcommands or those that start with the current input e.g. /gps st and then pressing tab will suggest start and stop.

    All subcommands with additional parameters will suggest those. E.g. the /gps start command will suggest available points which is golden for showing available destinations!

    Preview:
    [​IMG]

    All of this is of course based on the player's permissions! If they for instance only have access to help, start, stop those are the only subcommands suggested the rest remain unsuggested. This also means that tab completion won't reveal anything that the player wasn't already able to see.


  • Lombok | GPS now make use of Project Lombok to achieve a cleaner codebase.
[​IMG] [​IMG]
[​IMG]
----------, Jun 17, 2019

[​IMG]

  • ActionBar | By prepending any message in the messages.yml file with <ActionBar> you can send the message as an ActionBar message instead of a chat message.

    Example:
    Code (YAML):
    Messages:
      Admin
    :
        configurationsReloaded
    : <ActionBar> %prefix% &aConfiguration files successfully reloaded!
[​IMG] [​IMG]
[​IMG]
----------, Jun 15, 2019

[​IMG]

  • Death World Reentry | This is a continuation of the respawn feature. If you respawned in another world than the one you died in the compass would not start. With this update, you can have it wait for the player to reenter the world in which he/she died and then start. Add the following if you wish to make use of this:
    Code (YAML):
    # If the death and respawn world as mentioned above isn't the same
    # should the compass wait for the player to reenter the death world
    # and then start. Requires startOnRespawn to be set to true.
    startOnDeathWorldReentry
    : true
    This is disabled by default.

    Suggested by @GoldenleafPI; thanks :)
[​IMG] [​IMG]
[​IMG]
----------, Jun 14, 2019

[​IMG]

  • Teleportation Fix | If you were to log out within 3 ticks after teleporting an exception was thrown - which is very rare. This update makes sure that when updating the GPS after teleporting that the player is still online.

    Reported by @Auroman; thanks! :)
[​IMG] [​IMG]
[​IMG]
----------, Jun 10, 2019

[​IMG]

  • Respawn | You can now have the compass start when a player respawns. The compass will automatically target the player's death location for them to navigate back to. To enable this you'll have to add the following to your config.yml file:
    Code (YAML):
    # When a player respawns after a death the compass is started
    # with the death location as the target. The compass won't start
    # if the death and respawn worlds aren't the same. A player is
    # required to have the 'gps.startonrespawn' permission.
    startOnRespawn
    : true
    By default this is disabled.

    Suggested by @GoldenleafPI; thanks :)

  • New Message | When the compass is started as the result of respawning the following message is sent:
    Code (YAML):
    Messages:
      Compass
    :
        startedOnRespawn
    : ' %prefix% &aFind your death location by following the compass!'
    The message is automatically added to the messages.yml file.

  • New Permission | The following permission is required for the compass to start on respawn:
    gps.startonrespawn

  • API | A new StartSource has been added: PLAYER_RESPAWN
    When the GpsStartEvent is fired due to the compass starting as a result of a player respawning this is the StartSource.

  • Refactoring | All events have been refactored and restructured for better code clarity.
[​IMG] [​IMG]
[​IMG]
----------, Jun 9, 2019

[​IMG]

  • Fix | This version fixes an issue with the logic regarding hiding the arrow for other players. On some builds, due to a missing field, the plugin wouldn't load. This has been fixed.

    Reported by @azs123cvb123; thanks :)
[​IMG] [​IMG]
[​IMG]
----------, May 24, 2019

[​IMG]

  • API | Due to some missing checks it was possible for GPS to break if a plugin was to add two or more points with the same name. This version ensures that this isn't possible and will throw an exception if done.

    This version also changes a few of the method's logic to avoid exceptions. E.g. if you tried to remove a point before adding any (illogical but might happen) you'd get an NPE.
[​IMG] [​IMG]
[​IMG]
----------, May 17, 2019

[​IMG]

  • Revision | Went through some of the path logic and refactored a few segments regarding how the GPS custom events are fired. Besides that, some of the trigger timings have been adjusted for better performance.
[​IMG] [​IMG]
[​IMG]
----------, May 5, 2019

[​IMG]

  • Fix | The height of the arrow was based on the player's block height. E.g. if you were to move from y=6 to y=5.9 the arrow would move a full block down (to y=5). This version makes it so the block is based on y and not block-y i.e. in the above example the arrow would correctly move to 5.9 and not 5.

    Reported by @vip123bmt2001; thanks ;)
[​IMG] [​IMG]
[​IMG]
----------, Apr 29, 2019

[​IMG]

  • 1.14 | GPS now support 1.14 servers!
[​IMG] [​IMG]
[​IMG]
----------, Apr 28, 2019

[​IMG]

  • Arrow Height | This versions introduces a Fixed Arrow Height. By enabling this the arrow will no longer re-position itself in accordance with the player's pitch.

    If you wish to use this feature please add the following to your config.yml file and set the value to true:
    Code (YAML):
    # If false the arrow will follow the player's pitch. Looking up will move it up, looking down will move it down.
    # If true the arrow will stay at the defaultVerticalOffset or the offset the player has chosen regardless of pitch.
    fixedArrowHeight
    : false
    This section belongs in the Arrow position settings section, however, you may add it wherever you want.

    You do not have to add the above if you do not wish to use this feature. The default is false.

    Suggested by @DefinitlyEvil; thanks ;)
[​IMG] [​IMG]
[​IMG]
----------, Apr 24, 2019

[​IMG]

  • Command | This version features the /gpsa info command. This command is useful for easily checking if you're up to date, checking versions, and quick links for new versions and support.
[​IMG] [​IMG]
[​IMG]
----------, Apr 21, 2019

[​IMG]

  • Fix | Using GPS with the Quests plugin could cause an NPE to be thrown in some cases. This update should fix that issue.

    Reported by @koneney; thanks ;)
[​IMG] [​IMG]
[​IMG]
----------, Apr 7, 2019

[​IMG]

  • Fix | Reloading your server could cause errors if using Dynmap. This has been fixed and the update logic will now correctly check whether it is possible to update the Dynmap GPS setup. The exception thrown in some cases has also been addressed and corrected.

  • Refactored | Went through some of the "older" parts of the code and refactored some of the logic to be more efficient i.e. reassessing algorithms and implementing them in a more efficient way.
[​IMG] [​IMG]
[​IMG]
----------, Apr 3, 2019

[​IMG]

  • Toggle Usage | This update introduces the /gpsa toggleusage which allows you to toggle GPS usage. When disabled it is not possible for players to either start a compass or a GPS. This can be useful when making changes to your GPS configuration setup.

  • Messages | Regarding the above feature four new messages have been added:
    Code (YAML):
    Messages:
      GPS
    :
        usageDisabled
    : ' %prefix% &cThe GPS has been disabled!'
      Compass
    :
        usageDisabled
    : ' %prefix% &cThe Compass has been disabled!'
      Admin
    :
        usageEnabled
    : ' %adminPrefix% &aGPS usage has been enabled!'
        usageDisabled
    : ' %adminPrefix% &cGPS usage has been disabled!'
    All messages are automcatically added to the messages.yml file.

  • Improvements | The selection between the compass stopped and the gps stopped message has been improved. If you e.g. have a compass running and use the /gps stop command instead of the /compass stop command you'll get the correct compass stopped message instead of the gps stopped message. This applies to other scenarios such as the message players will receive when the /gpsa stop command is executed.
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Mar 21, 2019

[​IMG]

  • Messages | The following message section has been added:
    Code (YAML):
    Messages:
      Admin
    :
        configurationsReloaded
    : ' %adminPrefix% &aConfiguration files successfully reloaded!'
        stoppedAll
    : ' %adminPrefix% &aStopped all active GPSes!'
        noActiveGPSes
    : ' %adminPrefix% &cThere are no active GPSes!'
    Note that configurationsReloaded and stoppedAll have been removed from Messages.GPS. They are not removed automatically and you do not have to remove them, however, they are no longer in use.

    Furthermore, a new prefix has been added to the messages.yml file:
    Code (YAML):
    AdminPrefix : '&7 [&4GPS Admin&7 ]'
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Mar 8, 2019

[​IMG]

  • Messages | The way messages are handled, placeholders are replaced, messages are sent, and much more has been totally reworked. The new way messages are handled internally is a lot more intuitive and results in better readability and maintainability which should allow for faster updates and easier implementation of new messages when new features are added.
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Mar 4, 2019

[​IMG]

  • Messages | This update features four new messages that are unique to the compass functionality. They are duplicates of four messages that are related to the GPS functionality, however, these messages by default specify that you're using the compass instead of shared by both the compass and the GPS:
    Code (YAML):
    Messages:
      Compass
    :
        started
    : ' %prefix% &aCompass started!'
        startedPlayer
    : ' %prefix% &aCompass started for %player%!'
        stopped
    : ' %prefix% &aCompass stopped!'
        stoppedPlayer
    : ' %prefix% &aCompass stopped for %player%!'
    The messages are automatically added to your messages.yml file.
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Feb 25, 2019

[​IMG]

  • Update Checker | You can now disable the update checker if you do not wish to receive notifications of new updates. The following has been added to the config.yml file:
    Code (YAML):
    # Enable or disable the update checker.
    updateCheckerEnabled
    : true
    The default is true. If you wish to disable the update checker you'll have to manually add the option above and set it to false.
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Feb 20, 2019

[​IMG]

  • Fix | When the GPS/Compass is started all entity UUIDs are logged to the crashSafety file. If you had the saveOnQuit option set to true the entity UUIDs where not removed from the file due to a slight execution sequence mistake. This was in no way harmful, however, the file would over time potentially contain a lot of no longer valid UUIDs that would first get removed on server restart. This update makes sure that once the arrow is removed when the player quits the entity UUIDs are as well to avoid storing invalid UUIDs.

[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Feb 8, 2019

[​IMG]

  • Improvement | The argument parser for the custom message attribute command has been updated as the old algorithm was bulky and overdone. The new implementation is a lot cleaner, more efficient and readable.

[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Feb 4, 2019

[​IMG]

  • Fix | Corrected incorrect command suggestions in the /gpsc help message.
    • Clicking /gpsc disconnect would suggest /gpsc connect. It now runs /gpsc disconnect.
    • Clicking /gpsc attribute would run /gpsc move. It now suggest /gpsc attribute.
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Feb 1, 2019

[​IMG]

  • API Fix | A part of the refactoring from the latest update inadvertently changed from where the GPSAPI class could be accessed rendering it inaccessible. This has been fixed.

    Reported by @PYRRH4; thanks! ;)
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Jan 28, 2019

[​IMG]

  • Refactoring | A lot of code style issues and general programming practices have been addressed in this update. The plugin may perform the same or better. Also, this has increased the overall readability thus resulting in better maintainability and faster updates.
[​IMG] [​IMG]
[​IMG]
[​IMG]
----------, Jan 26, 2019

[​IMG]
  • Info Command | This updates features a new command; /gpsc info. This command will show info about the point closest to you. Below is an example of what info the command will provide when executed:
    [​IMG]

    The command requires the gps.commands.configurator as with any other configurator command.

[​IMG]
----------, Jan 16, 2019

[​IMG]
  • Correction | The last update corrected some issues pertaining to executing commands. Some of the old logic that was initially supposed to control execution hadn't been completely removed. This update ensures that only the correct execution handling/logic is included in the plugin.

    Sorry for the close updates; had to get the final corrections released!

[​IMG]
----------, Jan 14, 2019

[​IMG]
  • Permission Fix | Using any command with no arguments specified would print the commands help message regardless of the player's permission. This would, for instance, reveal the admin and configurator commands. They wouldn't be able to use any of them so it is in no way harmful though those commands should only be viewable by players with the appropriate permissions. This has been fixed.

[​IMG]
----------, Jan 13, 2019

[​IMG]
  • Admin Command | A new command has been introduced. This command contains functionality for admins.
    [​IMG]

  • Reload | The reload command has been moved from the GPS command to the new GPSAdmin command. The permission for the reload command is the same shared GPSAdmin command below. One more thing to note is that you'll have to manually remove the /gps reload line from the messages file for the GPS command.

  • Permission | The GPSAdmin commands all share the same new permission: gps.commands.admin

  • Response | When the GPS is stopped by for a player from the console or by another player a message is now sent to the player indicating that it has been stopped. Previously it could seem as if something went wrong.

  • Offline Players | You can now stop the GPS and Compass for offline players. Previously this was not possible.

  • Message | A new message has been introduced for the /gpsa stop command:
    Code (YAML):
    Messages:
      GPS
    :
        stoppedAll
    : ' %prefix% &aStopped all active GPSes!'
    The message is automatically added.

  • Fix | In one of the prior updates it was made possible to start the GPS or Compass without the start parameter. A missing check resulted in an exception if done from the console. This has been fixed.

This update includes quite a few new features and changes. If there are any issues please contact me on Discord or Spigot :)
[​IMG]
----------, Jan 7, 2019

[​IMG]
  • API | It is now possible to set the maxDistanceToEntry variable in the Vars class. This will allow API users to overwrite the config setting temporarily if a certain setting is required.

    Requested by @HappyPikachu :)


  • Update Checker | The update checker task will cancel itself if it is unable to check for an update.

[​IMG]
----------, Jan 5, 2019

[​IMG]
  • Update Checker | The update checker will now check for an update once every 10 minutes instead of just on server reload/restart. The check is performed async and won't impact performance.

[​IMG]
----------, Dec 29, 2018

[​IMG]
  • Permission | A new ignore hunger permission has been implemented:
    Code (YAML):
    gps.hunger.ignore
    Players with this permission will not lose hunger when using the GPS regardless of the disableHungerWhenActive setting.

    Suggested by @ConfuseN :)

[​IMG]
----------, Dec 28, 2018

[​IMG]
  • Fix | Due to the change a while back where storing points by location and not name was implemented the API has been having some issues when working with paths. The issue had to do with some of the new section logic which took some time to figure out. This means that the "sectionPath" of all points added with the API is now the points name with "section" appended. This should not affect current API usage though I urge all users of the plugin to update.

    Thank you to @HappyPikachu for testing and providing valuable intel on the issue! :)

[​IMG]
----------, Dec 27, 2018

[​IMG]
  • Setting | You can now disable hunger loss while the GPS/Compass is active. The following has been added to the config.yml file:
    Code (YAML):
    # Disable hunger loss while the GPS or Compass is active.
    # Players may still replenish their hunger by eating.
    disableHungerWhenActive
    : false
    The default is false. If you do not wish to use this feature you do not have to add it to the file. If you do wish to use it you'll have to add it manually and set it to true.

    Suggested by @Tiippex :)

[​IMG]
----------, Dec 23, 2018

[​IMG]
  • Correction | As a result of the last update you were able to bypass the gps.commands.start permission when using the /compass command as the check was never made due to the way it was implemented. This has been corrected/fixed.

    Discovered by @Benz56; thanks, man! :)

[​IMG]
----------, Dec 17, 2018

[​IMG]
  • Syntax expansion | Up until now the GPS and Compass commands had to be followed by the "start" parameter. This is no longer the case!

    If you simply type "/gps bank" (assumes that there is an existing point named bank) the plugin will now on its own figure out that you're trying to start the GPS or Compass and do that for you.

    In other words, typing "start" is now optional.

    Suggested by @Zwoooosh; thanks :)

[​IMG]
----------, Dec 17, 2018

[​IMG]
  • Fix | Using the /gps start <point> <player> command from console resulted in an NPE. This was due to a simple statement misplacement that has been resolved in this update.

    Reported by @momoservertw; thank you! :)

[​IMG]
----------, Dec 14, 2018

[​IMG]
  • Fix | Reloading the plugin when you had another plugin utilizing the API would cause an error and create a 'null' section in your points.yml file. This has been fixed.

    Reported by @Tiippex; thanks! :)

[​IMG]
----------, Dec 12, 2018

Changelog:
  • Help Messages | You can now customize the /gps help and /compass help commands. This can be done in the messages.yml file. The message defaults remain the same as before.

    Code (YAML):
    Help:
      GPS
    :
     - '&9&m&l ----------------------------------'
      - ' &7&oBelow is a list of all GPS commands:'
      - |-
        [ " &7&l● &e/gps [help]", "/gps", "&eOpens this help page.

        &7Click to run."
    ]
      - |-
        [ " &7&l● &e/gps start <to> [from] [player]", "/gps start ", "&eStart the GPS.

        &7Click to suggest."
    , "Suggest" ]
      - |-
        [ " &7&l● &e/gps stop [player]", "/gps stop ", "&eStop the GPS.

        &7Click to suggest."
    , "Suggest" ]
      - |-
        [ " &7&l● &e/gps move", "/gps move", "&eChange the Arrows position.
        &a - Mouse scroll = forwards/backwards.
        &a - Mouse scroll + shift = up/down.

        &7Click to run."
    ]
      - |-
        [ " &7&l● &e/gps show", "/gps show", "&eShows your path with particles.

        &7Click to run."
    ]
      - |-
        [ " &7&l● &e/gps list [page]", "/gps list ", "&eShows you a list of all points.

        &7Click to suggest."
    , "Suggest" ]
      - |-
        [ " &7&l● &e/gps reload", "/gps reload", "&eReload the configuration files.

        &7Click to run."
    ]
      - ' &7&oHover over any command to see usage!'
      - '&9&m&l ----------------------------------'
      Compass
    :
     - '&9&m&l ----------------------------------'
      - ' &7&oBelow is a list of all Compass commands:'
      - |-
        [ " &7&l● &e/compass [help]", "/compass", "&eOpens this help page.

        &7Click to run."
    ]
      - |-
        [ " &7&l● &e/compass start <to> [player]", "/compass start ", "&eStart the Compass with a point as target.

        &7Click to suggest."
    , "Suggest" ]
      - |-
        [ " &7&l● &e/compass start <x> <y> <z> [player]", "/compass start ", "&eStart the Compass with a location as target.

        &7Click to suggest."
    , "Suggest" ]
      - |-
        [ " &7&l● &e/compass stop [player]", "/compass stop ", "&eStop the Compass.

        &7Click to suggest."
    , "Suggest" ]
      - |-
        [ " &7&l● &e/compass show", "/compass show", "&eShows your path with particles.

        &7Click to run."
    ]
      - ' &7&oHover over any command to see usage!'
      - '&9&m&l ----------------------------------'
    The above is automatically added.

    As with any other message you can customize it with hover and click events as you wish.

    Suggested by @momoservertw :)

[​IMG]
----------, Dec 9, 2018

Changelog:
  • Action Messages | You can now set up any message with custom hover and click events to your liking.

    Below is the syntax options for an action message:
    - ["Message","/Command"]
    - ["Message","Hover"]
    - ["Message","Command","Hover"]
    Do not add spaces between the commas and quotes. This will break the custom action event parser.

    Example message:

    Code (YAML):
    Messages :
      GPS
    :
        invalidArgs
    : ' %prefix% &cInvalid arguments! ["&c&n&oHelp","/gps help","&aClick to get help!"]'
     
    Feel free to replace the old message with this one.

    The new header in the messages.yml file contains instructions on how to create your own.
    Code (YAML):
    # This is the Message file for all GPS messages.
    #
    # All messages are fully customizable and support color codes, formatting and ASCII symbols.
    # Set the Prefix/ConfPrefix and use %prefix%/%confPrefix% to add the corresponding prefix to a message.
    # Leave a message blank ('') to disable it.
    #
    # You can also create messages with Hover and Click events. Syntax options: (Space between comma and quote is NOT allowed)
    #  - ["Message","/Command"]
    #  - ["Message","Hover"]
    #  - ["Message","Command","Hover"]
    # You can add as many events to a message as you want. Example:
    # '%prefix% &cInvalid arguments! ["&c&n&oHelp","/gps help","&aClick to get help!"]'

    This can be completely customized with any hover event or command you want. It does not only have to link to Pocket Games commands or functions. All messages are compatible with hover and click event messages.

    The next update should hopefully be customizable /gps help and /gpsc help messages!

[​IMG]
----------, Dec 6, 2018

Changelog:
  • Fix | Prior to this update it was possible to name a point with multiple words using the /gpsc attribute name [name] command. This made no sense as you can't target such a point. This has been fixed and you can no longer name points with more than 1 word.

[​IMG]
----------, Dec 1, 2018

Changelog:
  • Fix | Regarding the last update. Particle rendering was fixed for particles only spawned for the individual player; not globally. The fix now works for global particles as well.

[​IMG]
----------, Nov 26, 2018

Changelog:
  • Particle Fix | A missing check for 1.13 particle spawning resulted in ignoring the particleRenderDistance config setting. Particles would be spawned for all points and connections ignoring distance which, depending on the number of points you had configured, could impact your FPS quite drastically. This issue was noticeable when having the gps configurator enabled and many points and connections configured.

  • Alias | The main command is now globalpositioningsystem and gps is an alias. This has been done for users who want to use a menu from an external plugin accessed with /gps.

    Suggested by @Arkobat .

[​IMG]
----------, Nov 25, 2018

Changelog:
  • Improvement | Changed up the way messages are accessed and used across the functionality in GPS.

  • Message | During the above optimization I stumbled upon two redundant message. Due to a change a while back the usage of the "unknownCommand" message had been removed and replaced with an automatic help message as the response instead. The "nonexistentPoint" message has also been scrapped in an update a long time ago.

    The messages have been removed for future files; the messages are not removed from current files. You do not have to remove them.

[​IMG]
----------, Nov 23, 2018

Changelog:
  • Update Checker | Slight syntactic change to the implementation of the update checker. Won't affect your current settings regarding who receives the update notification and who doesn't.

  • Adjusted | Adjusted some timings regarding the latest update. This should allow for smoother/faster navigation startup when re-joining.

[​IMG]
----------, Nov 10, 2018

Changelog:
  • Fix | GPS features a "continue where you left" system. When you log off the GPS will resume once you log in again. The system itself works just fine, however, if you were to log in to unloaded chunks and the arrow was inside blocks when you logged off the arrow would sometimes spawn partially or not at all. This is no longer an issue and the arrow should now spawn perfectly and consistently whether you log in to unloaded chunks or if the arrow is inside other blocks.

[​IMG]
----------, Nov 1, 2018

Changelog:
  • Refactoring | Changed up a lot of the current codebase to address some code style issues as well as some logic. This should make the plugin more maintainable and allow it to run smoother on your server. It will also allow me to implement features faster and easier resulting in a better plugin in general.

[​IMG]
----------, Oct 19, 2018

Changelog:
  • Fix | Due to some recent changes the API would throw a few errors based on the functionality used. This has been fixed and API usage now works correctly again!

    Thanks to @PYRRH4 for reporting this!

[​IMG]
----------, Oct 12, 2018

Changelog:
  • Particle fix | This update concerns a very small part of you. Those who have chosen to run GPS on a 1.8 server even though it isn't officially supported will have experienced an error when spawning particles ever since the 1.13 support update. As the catch with running GPS on a 1.8 server is using a particle arrow this issue is quite major. After some tinkering particles now work correctly on 1.8 servers again.

[​IMG]
----------, Oct 3, 2018

Changelog:
  • Invalid Points | Due to a slight logic error invalidly configured points from were still added to the loaded points. This resulted in multiple random errors that could occur when performing certain activities. This has been fixed.

  • Dynmap | The above could also cause errors when loading the Dynmap GPS marker set. This version also resolves this.

  • Rare NPE | The inactivity feature could cause an NPE to spam your console very aggressively though the chance of that happening was extremely low. Nonetheless, this has been fixed.

[​IMG]
----------, Sep 28, 2018

Changelog:
  • Optimized | Changed up some of the GPS plugin disabling logic to utilize newer Java 8 features.

  • Improved | As a result of the above, the CrashSafety feature has been reviewed and adapted. It will continue to work as previously described.

  • Debug | Removed a debug message that would get sent during some GPS edge case functionality. This was not harmful nor did it affect the server other than print some info to the console which was used during testing.

[​IMG]
----------, Sep 23, 2018

Changelog:
  • Fix | Prior to this update the /compass stop player would cause an NPE to be thrown. This had to do with some internal structuring of the PlayerData. This has been fixed and the command works from console again.

    Reported by @vip123bmt2001; thanks! :)

[​IMG]
----------, Sep 16, 2018

Changelog:
  • 1.13 | GPS now supports 1.13 servers! All features, to my knowledge, are working correctly and efficiently in 1.13. If any issues do occur please let me know as soon as possible and I'll handle it/them ;)

[​IMG]
----------, Sep 9, 2018

Changelog:
  • Inactivity Timer | This update features a brand new feature; GPS inactivity. Idling with the GPS active unnecessarily keeps a number of entities loaded, runs the update task, executes the GPS path algorithm, and a few more logic based tasks. You can now have the GPS automatically shut down after a number of seconds if the player hasn't moved in that time period. This is a great feature to lower the resources used by the GPS plugin.

    The following has been added to the config.yml file:
    Code (YAML):
    # Decide how long a player can remain inactive with the GPS enabled.
    # Inactivity is based on movement. When the player moves the timer resets.
    InactivityTimer
    :
      enabled
    : true
      maxInactivitySeconds
    : 300
    You'll have to add this manually to your config.yml file. If you do not wish to change the defaults you do not have to add it. If you do not wish to use this feature you have to add it and set enabled to false.

  • Message | A new message regarding the above feature has also been added:
    Code (YAML):
    Messages:
      GPS
    :
        maxInactivity
    : ' %prefix% &cYou have been inactive for too long. Navigation ended!'
    The message is automatically added to the messages.yml file.

[​IMG]
----------, Sep 2, 2018

Changelog:
  • Auto-Connect | You can now shift & scroll to toggle a point auto-connect feature. This is only possible when the editor is activated. Essentially what this does is when you create a new point it will automatically connect the new point to the previously created point. This allows for easy path creation and road system setups.

    Here is a short preview:
    https://gyazo.com/ca61cab57744df765a4b539c04663b06


  • Message | A new message has been added:
    Code (YAML):
    Messages:
      Configurator
    :
        toggleAutoConnect
    : ' %confPrefix% &aToggled AutoConnect to: &e%state%'
    The message is added to the messages.yml automatically.

  • Fixes | Quite a few minor fixes have been corrected. This mainly had to do with "point-resurrection" when using the configurator.

[​IMG]
----------, Aug 23, 2018

Changelog:
  • API Changes | This update changes a few of the internal aspects of the API as well as some point characteristics. Previously, the API added points and configuration added points were strictly separated. This is no longer the case. Points added by different plugins may now both interact with each other as well as with configuration added points. Do note that connections made from API points and configuration points won't persist through server restarts. They'll also get reset when changes are made to the main setup i.e doing stuff with the configuration added points. Other than that they can interact with each other on a temporary basis.

    Suggested and tested by/with @Tiippex

[​IMG]
----------, Aug 17, 2018

Changelog:
  • API | A bunch of new methods have been added to the API for you developers to play around with. Below is a list of the methods added and a brief description of their purpose and functionality:
    Code (Java):
    //Get all of the locally configured points from the points.yml file.
    List <Point > getConfigurationPoints ( ) ;

    //Get all local points including externally added points from plugins using the API on the server.
    List <Point > getAllPoints ( ) ;

    //Get all points added by the plugin with the given name.
    List <Point > getPluginPoints ( String pluginName ) ;

    //Get the closest point to a given location selected from the list of locally configured points.
    void getClosestConfigurationPoint (Location location, Consumer <Point > consumer ) ;

    //Get the closest point to a given players location selected from the list of locally configured points.
    void getClosestConfigurationPoint (Player player, Consumer <Point > consumer ) ;

    //Get the closest point to a given location selected from the list of locally and externally configured points.
    void getClosestGlobalPoint (Location location, Consumer <Point > consumer ) ;

    //Get the closest point to a given players location selected from the list of locally and externally configured points.
    void getClosestGlobalPoint (Player player, Consumer <Point > consumer ) ;
    Requested by @Tiippex

[​IMG]
----------, Aug 14, 2018

Changelog:
  • Improved | Revised the update checker and improved the join listener (registration & handling) involved with the update checker code. This improvement will slightly improve the performance of the update check as well, however, as this is already done asynchronously this is not something that will be vastly noticeable during startup nor runtime.

  • Change | Improved the initial GPS startup logic using some of the more advanced Java 8 features. This should slightly improve performance.


[​IMG]
----------, Aug 9, 2018

Changelog:
  • New Attribute: You can now set a custom destination message on each individual point.
    This was only possible via the API prior to this update.

    To set a custom destination message do the following:
    1. Activate the editor with /gpsc editor
    2. Select a point with /gpsc select
    3. Add a message with /gpsc attribute message <insert your message here>

    The custom message supports color codes.

[​IMG]
----------, Jul 30, 2018

Changelog:
  • List Fix: A few updates ago the whole point implementation was changed which was by far one of the largest updates reworking the whole point framework. The /gps list command has a teleport to point click feature that was broken by that update. This has been fixed and you can once again click on the points in the list to get teleported to it.

Thank you to all 100 of you for buying GPS. I truly appreciate your support!

[​IMG]
----------, Jul 23, 2018

Changelog:
  • Path Saving: This update introduces a new path saving system. What this achieves is allowing players to leave your server while having the GPS activated and once they return the navigation is resumed from where they left off.
    This will not work between server restarts!


  • Config options: Two new config options have been added regarding the above feature:
    Code (YAML):
    # Should the GPS remember the Players current path when they leave?
    # When the player joins again the navigation is resumed.
    saveOnQuit
    : true

    # Ignore this if the above is set to false.
    # How long should the Player GPS instance be kept alive? (in seconds)
    # If the player does not join before the time has passed the GPS is stopped.
    maxQuitTime
    : 3600
    You'll have to add these options yourself. In the default config.yml, they are located last in section: GPS Settings. If you do not wish to use this feature you'll have to add the options and set saveOnQuit to false. If you do not wish to change the default settings you do not have to add the options.


  • Messages: Two new join messages have been added also regarding this new feature:
    Code (YAML):
        resuming : ' %prefix% &aResuming navigation!'
        ended
    : ' %prefix% &cYou have been gone for too long. Navigation ended!'
    If the player left with the GPS active they'll get sent one of the above messages upon rejoining. (unless there has been a server restart in between)

    Feature suggested by @vip123bmt2001.

[​IMG]
----------, Jul 17, 2018

Changelog:
  • Performance & Memory: This update improves two major wrapper classes. To keep it short and simple the wrapper classes are now referenced by UUID with the players UUID as the Map key and no longer the Player object itself. Using the Player object could cause memory leaks over long periods of time with a reasonable amount of GPS activity. This is no longer the case.

    As this update potentially frees up memory on your server I'd strongly advise that you update to this version to benefit from the improvements. This can benefit more than just the GPS as it will free up more system resources for other plugins to allow them to also perform better.

[​IMG]
----------, Jul 11, 2018

Changelog:
  • Permission: A new permission has been added to the update checker: gps.update

    Players with this permission will get notified of a new update even if they are not an OP.


  • Config option: Not all OPs on a server has to be notified of new updates as that might not be a part of their "job". Therefore the following has been added to the config.yml file:
    Code (YAML):
    # Update Checker.
    # false: All OPs are notified of a new update when they join.
    # true: OPs are only notified if they have the gps.update permission as well.
    # N.B. any user with the gps.update permission is notified; OP or not.
    updateCheckerPermissionOnly
    : false
    If you do not wish to change the default value (false) you do not have to add it to your config.yml file.

[​IMG]
----------, Jul 8, 2018

Changelog:
  • Fix: After some extensive testing with @Tiippex regarding a ProtocolLib error, I've finally found the source and hence a fix. Even though the error was completely harmless it could get spammy depending on how used the GPS plugin is on your server. The error in question is this:
    [​IMG]

    This should no longer cause any issues. If you're still experiencing this error please let me know.

[​IMG]
----------, Jul 2, 2018

Changelog:
  • Crash Safety: A new crash safety file has been added to the plugin. If the server crashed without running the disable logic, arrows could get left behind. You would have to remove them manually.

    This file stores all the entity UUIDs and when the server is started again all entities are checked. If an entity's UUID is in the list it is then removed.

    This would most commonly happen when using the Multicraft restart button for some unknown reason, however, it should no longer cause any issues.

    File:
    Code (YAML):
    # This is a crash safety storage file for GPS arrow entity UUIDs.
    #
    # Once an arrow is created the entity UUIDs are stored internally and in this file.
    # The UUIDs are then removed once the GPS arrow is stopped.
    # The UUIDs will remain in this file and is not lost should the server unexpectedly crash for whatever reason.
    # This file is checked on restart. If the server contains an entity with the given UUID it is removed.
    #
    # Do NOT edit this file manually unless you know exactly what you are doing.


    EntityUUIDs
    : { }

[​IMG]
----------, Jun 29, 2018

Changelog:
  • Update Checker: An update checker has been implemented. This will notify you in the console on startup/reloads when a new update is available on Spigot as well as OPs when they join.

    Please note that you won't get notified about this update. Once you've updated to this version you'll get notifications of following new updates and onwards.

    Join message:
    [​IMG]

    Console message:
    [​IMG]

    Suggested by @MrCreeper2011


  • BossBar Fix: The BossBar could not be disabled in the config. This was due to a slight capitalization error. This has been fixed for newly generated config.yml's, however, if you wish to disable it you'll have to change bossbarEnabled to bossBarEnabled and then the boolean value. If you do not wish to disable the BossBar then this fix won't affect you in any way.

    Discovered by @Arkobat

[​IMG]
----------, Jun 27, 2018

Changelog:
  • Fix: The list command would calculate the number of pages in the list based on the total amount of points. This did not factor in whether or not a point actually had a name; leaving you with x amount of empty pages.

    This has been fixed and is no longer an issue. The number of pages is now based on the number of points with a name.

    Discovered by @Andre_601 ; thanks!

Sorry for the double update! :)
[​IMG]
----------, Jun 24, 2018

Changelog:
  • Command: Additional command syntax has been added to the compass start command.

    /compass start <x> <y> <z> [player]

    This command will allow you to target arbitrary locations in the world the player is currently in. This was only possible via the API prior to this update. The x, y, and z parameters are required and you can optionally choose a player to start the compass for as the last parameter. The current compass start command will remain unchanged and is still available.

    Suggested by @Tiippex

  • Youtube video: A youtube video has been created for the plugin briefly going over the functionality as well as a small part of the in-game configurator.

[​IMG]
----------, Jun 24, 2018

Changelog:
  • Fix: The /compass start <point> command would throw an exception if a point in another world was selected as the destination. This is no longer an issue and the Compass will simply not start if an unreachable point is selected. The GPS commands remain unchanged as they were unaffected.

  • Revised: A few of the compass commands have been restructured during the previews fix. This should make it more firm as well as hopefully make it easier to introduce interdimensional world links in the near future.

[​IMG]
----------, Jun 21, 2018

Changes:
  • BossBar: The remaining distance is now shown in a fancy way with a BossBar.
    The bar will show how far you are on your current path in the "health bar".
    [​IMG]

    Configuration options:
    Code (YAML):
    ############################################################
    # +------------------------------------------------------+ #
    # |                   BossBar settings                   | #
    # +------------------------------------------------------+ #
    ############################################################

    # You can enable a BossBar to show how far the player is on his/her path.
    bossbarEnabled
    : true

    # Color: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/boss/BarColor.html
    bossBarColor
    : RED

    # Style: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/boss/BarStyle.html
    bossBarStyle
    : SOLID

    # Set the message above the BossBar. Supported placeholders:
    # %remaining% - Shows the remaining distance with two decimals.
    # %remainingTenth% - Shows the remaining distance with a single decimal.
    # %remainingRounded% - Shows the remaining distance without any decimals.
    # You can replace 'remaining' in any of the above with 'total' to show the total distance.
    bossBarMessage
    : '&f %remainingRounded% blocks left of %totalRounded%'
    You'll have to manually add the above to your config.yml. If you do not wish to use the BossBar you'll have to add it and disable it. If you are happy with the default settings you do not have to add it.

  • Fix: The distance calculation has been further inspected and should no longer be flawed at shorter paths. Prior to this update, it could happen that the distance between the two last points was added even if you were in between them which caused the remaining distance to go up even though you were actually getting closer.

  • Fix: The placeholder decimal formatting was actually based on your Locale which meant that it was factoring in your system Locale. This messed up the rounded placeholders based on your physical location in the real world. This has been fixed and all placeholders should now be displayed correctly.

[​IMG]
----------, Jun 17, 2018

Changes:
  • Fix: It was not possible to use the GPS nor the editor in worlds containing spaces in their name. This was caused by a small parsing error internally which purpose was to prevent misconfigurations. This has been altered slightly as to not interfere with the spaces in world names if any. The GPS will now fully function in worlds with spaces as well.

    Discovered by @xBlazeTECH.

  • Revised: Went over the attribute code and changed up a few things to allow for easier implementation of future attributes.

[​IMG]
----------, Jun 11, 2018

Changes:
  • Command Framework: The command framework has been completely redone and cleaned up. Internally this is a large amount of work which makes implementing new commands extremely easy. You as a user won't notice too much of a difference. If anything has changed regarding commands please let me know!

  • Attributes: This feature will slowly but surely be expanded and will play a huge role in how customizable each individual point is. This command is a part of the configurator commands and needs the configurator permission as any another configurator command.

    Syntax:
    /gpsc attribute <type> [value...]

    Hovering over the command will reveal all available attributes. Currently, this update introduces name and updateDistance.

    Select a point and execute the command to set a value unique to that exact point.

    Examples:
    /gpsc a name Unique Point!
    /gpsc a ud 3

    As you can see the attributes all have aliases to easily type them.

    Using the command without a value parameter will delete the attribute if any.

  • New Messages:
    Code (YAML):
        invalidAttribute : ' %confPrefix% &cUnknown attribute!'
        invalidAttributeValue
    : ' %confPrefix% &cInvalid attribute value!'
        attributeRemoved
    : ' %confPrefix% &aThe attribute has been removed. Using default if any.'
        unknownAttribute
    : ' %confPrefix% &cUnknown attribute!'
        attributeAdded
    : ' %confPrefix% &aThe attribute value has been added.'

  • Dynmap: Changing/adding/removing an attribute updates Dynmap automatically if enabled.
----------, Jun 8, 2018

Changes:
  • Start Evaluation: The GPS had a flaw where it would target the closest point on start only to make you turn back around and walk in the opposite direction again based on your location between the two points. This was caused by the GPS selecting the closest point on start without afterward evaluating if it actually is the optimal point to target after the path has been computed.

    The two pictures below demonstrate this. The red point to the right is being targeted on start.

    Prior to this update:
    [​IMG]

    This update:
    [​IMG]

    This was caused by you being closer to the green point and therefore it would be targeted, yet it is in no way optimal to go in that direction. The farther away you spaced your points the more annoying this was. Walking e.g. 100 blocks only to walk 100 blocks back again.

  • Fix: The path distance calculation was actually a bit inaccurate. This has been fixed and the distance calculation has been completely rewritten.

  • Fix: If the GPS was started and the first point targeted was also the destination and you decided to backtrack for whatever reason an NPE would get thrown until the Path update algorithm and the GPS update algorithm had been synchronized in their update intervals again. This was harmless and rare but has been taken care of.
----------, Jun 4, 2018

Changes:
  • Fix: If you started the GPS far away without defining an entry point the GPS would automatically search for the closest point nearby. However, if that point happened to be in a different web of points than the one you were targeting, you would get the "cant reach destination" error message.

    This has been fixed and the GPS will now evaluate a list of points until it finds the closest nearby that is also in the same web as the targeted point, or none if the targeted point happens to also be the closest.

    Discovered by @willz, thanks :)
----------, May 30, 2018

Changes:
  • Fix: It was not possible to use the resource pack arrow in versions other than 1.12 and 1.11. This has been fixed and the RPA is now supported in versions 1.9 and up. Thanks, @NullBlox for pointing this out :)

  • API Additions: Four new methods have been added to the API. They allow you to set a custom start message for both the Compass and GPS when used.
    Code (Java):
    void startGPS ( String customStartMessage, Player player, String start, String destination )
    void startGPS ( String customStartMessage, Player player, String destination )
    void startCompass ( String customStartMessage, Player player, String destination )
    void startCompass ( String customStartMessage, Player player, Location location )
    The methods without the custom start message parameter are still available.

    As well as the methods above you can set a custom stop message in the GPSStopEvent. The method for setting the message is:
    Code (Java):
    Event#setCustomStopMessage ( String customStopMessage )
    Suggested by @Spartan9802 :)
----------, May 25, 2018

This update changes a lot though I have made sure it is backward compatible with your current points file and will automatically migrate to the new system. However, please take a backup of your current points file before proceeding; just in case.

Changes:
  • New System: This update features a new point system. The points section key is no longer the name of the point. Instead, it is the location. This now means that you can create points that do not have a name and use it merely as a connection point, which is non-targetable via the GPS and does not show up in the list command.
    Old:
    Code (YAML):
    Points:
      A
    :
        location
    : World, -417, 4, -2203
        connections
    :
       - B
      B
    :
        location
    : World, -399, 4, -2223
        connections
    :
       - A
        - C
      C
    :
        location
    : World, -411, 4, -2252
        connections
    :
       - B
        - D
        - E
    New:
    Code (YAML):
    Points:
      World, -417, 4, -2203
    :
        name
    : A
        connections
    :
       - World, -399, 4, -2223
      World, -399, 4, -2223
    :
        name
    : B
        connections
    :
       - World, -417, 4, -2203
        - World, -411, 4, -2252
      World, -411, 4, -2252
    :
        name
    : C
        connections
    :
       - World, -399, 4, -2223
        - World, -380, 4, -2257
        - World, -369, 4, -2234
    Points without a name will as mentioned not show up in the list or be targetable with the /gps start command.

  • Configurator Stick Change: The configurator stick has been completely revamped with new features and visual effects.
    This is the new setup:
    [​IMG]

    The configurator now also shows targeted points with a particle in the center of the particle box as well as draw a particle box at the target location. This allows for creating setups with ease!
    [​IMG]


  • Case Sensitivity: Point names are no longer case-sensitive. For example, point Bank is the same as bank.

  • Fix: The create command now suggest the correct command in help menu click event.

  • Dynmap Change: The %location% placeholder has been removed and is now %point% as the location is the config section. %name% is the points name.
    Default Description:
    Code (YAML):
    # Set the clickable popup description on each point.
    # The description is written in HTML Markup.
    pointDescription
    :
    - '<h2>Point
    : %point%</h2>'
    - '<b>Name:</b> %name%<hr>'
    - '<b>Connections:</b>'
    - ' %connectionList%'

  • Delete command: The delete command now only works with the selected point as deleting a point by name is no longer possible.

As this update affects pretty much everything I urge you to contact me immediately if you stumble upon an issue. I'll do my very best to get it fixed as fast as possible. Though hopefully there won't be any issues!

[​IMG]
----------, May 23, 2018

Changes:
  • Resource Pack Arrows: It is now possible to create and use your own resource pack arrows! This is by far the lightest option regarding performance as it only uses a single entity!

    This feature was suggested by @NullBlox who is 3D Modeller. He was kind enough to provide three example arrows:
    [​IMG]
    Click to view the photo album.

    Resource pack link:
    https://www.dropbox.com/s/7xbk40foabar8vk/GPS-ARROWS-RP-A1.zip?dl=1

    The material for the three arrows is IRON_HOE and the durability is 1,2, and 3.

    In-game example: (The name is set to '' but also works for resource pack arrows)
    [​IMG]

    If you wish to use this feature you need to add the following to your configuration file:
    Code (YAML):
    # Choose to use a resource pack arrow.
    # This is an optimal choice as it only requires a single entity/armorstand.
    resourcePackArrow
    : false

    # Set the Material and Durability used for the custom item in your Resource Pack.
    resourcePackArrowMaterial
    : IRON_HOE
    resourcePackArrowDurability
    : 1
----------, May 19, 2018

Changes:
  • Movement improvements: The GPS will now track a players movement speed and update the arrows position based on the horizontal offset and speed of the player. This is most noticeable for very fast movement and isn't something a "normal" player would notice. Example of the effect of the changes can be seen in the GIFs below:
    None of the videos have been sped up. This is essentials movement speed of 10
    Before:
    [​IMG]
    Now:
    [​IMG]

  • Fix: You were able to "revive" a point if you moved a point you had selected after you deleted it. This has been fixed.
    Discovered by @tomtehtom

  • Addition: Since release, the command syntax for the delete command has been /gpsc delete [name] though it was shown in-game and on the resource page as /gpsc delete. The correct implementation has been clarified as you can delete points by name.

  • Removed: The /gpsc show command has been scrapped as it was a nuisance having to both do the /gpsc editor and the /gpsc show each time. The particle visualizer will now enable with the /gpsc editor command.

[​IMG]
----------, May 16, 2018

Changes:
  • Arrows: You can now replace the entity arrow with a particle arrow. The particle arrow can be displayed in 3D true to the size of the regular arrow or as a simple arrow. Since this has been requested I decided to implement it, however using a particle arrow looks very busy and the direction can be hard to tell especially for the 3D version. I recommend sticking to the default arrow.
    [​IMG]
    [​IMG]

  • Arrow Configuration Options:
    Add the following to your config.yml.
    If you do not wish to use the particle arrow you do not have to add this.
    Code (YAML):
    # Choose to use a Particle arrow instead of the Entity arrow.
    # This is not recommended as the particle arrow looks rather busy
    # compared to the entity-constructed arrow.
    particleArrow
    : false

    # The 3D arrow is a little heavier on performance and
    # looks a bit messy compared to the non-3D arrow.
    particleArrow3D
    : false

    # Set the color of the particle arrow.
    particleArrowColor
    : 255, 1, 1

  • New placeholder: You can now use %distanceTenth% in your arrowName setting. This placeholder will show the distance remaining as e.g 10.4.

    Overview of current placeholders:
    Use %distance% as a placeholder for the remaining distance to the target. (E.g 10.23)
    Use %distanceTenth% does the same as the above placeholder yet rounded to a tenth. (E.g 10.2)
    Use %distanceRounded% as a placeholder for the remaining rounded distance to the target. (E.g 10)
----------, May 12, 2018

Changes:
  • Fix: An Actionbar reflection issue has been fixed which mainly concerns 1.8 which is not yet officially supported though I am working towards an alternative for 1.8 as well.

  • API Methods: Added some additional methods. Check out the full method list below:
    Code (Java):
    //Start the GPS for a player with a set destination and the closest point as the starting point.
    void startGPS (Player player, String destination ) ;

    //Start the GPS for a player with a starting and destination point. (The starting point will change if another point is closer)
    void startGPS (Player player, String start, String destination ) ;

    //Start the Compass for a player with a set destination.
    void startCompass (Player player, String destination ) ;

    //Start the Compass for a player with a set location as the destination.
    void startCompass (Player player, Location location ) ;

    //Stop the GPS for a player.
    void stopGPS (Player player ) ;

    //Check whether or not the GPS is active for a specific player.
    boolean gpsIsActive (Player player ) ;

    //Add a custom point. Make sure the name is unique. E.g. add your plugin name as the first part of the name.
    void addPoint ( String name, Location location ) ;

    //Remove a point you personally added.
    void removePoint ( String name ) ;

    //Remove all points you added.
    void removeAllPoints ( ) ;

    //Connect point1 to point2. If the 'both' parameter is true; point2 is also connected to point1.
    void connect ( String point1, String point2, boolean both ) ;

    //See connect.
    void disconnect ( String point1, String point2, boolean both ) ;

    //Return the remaining GPS distance. E.g: 145,32 or 1.593,23.
    String getDistanceToTarget (Player player ) ;

    //Return the remaining GPS distance rounded. E.g: 145 or 1.593.
    String getDistanceToTargetRounded (Player player ) ;

    //Return the cardinal direction a player has to go. (N, NE, E, SE, S, SW, W, NW)
    String getCardinalDirection (Player player ) ;
  • GPS Events: This update also brings two new events for developers to mess around with.

    GPS start event:
    Code (Java):
    @EventHandler
    public void onGPSStart (GPSStartEvent e ) {
        //Get the player the GPS is being started for.
        e. getPlayer ( ) ;

        //Get the destination point. This Object contains the Location as well.
        e. getDestinationPoint ( ) ;

        //Get the StartSource / what started the GPS.
        //Enums: PLAYER_SELF, PLAYER_OTHER, CONSOLE, OTHER_PLUGIN
        e. getStartSource ( ) ;

        //The navigation type is of type compass (true) or GPS (false)
        e. isCompass ( ) ;

        //Check if the event is cancelled.
        e. isCancelled ( ) ;

        //Cancel the event based on your checks.
        e. setCancelled ( true ) ;
    }
    GPS stop event:
    Code (Java):
    @EventHandler
    public void onGPSStop (GPSStopEvent e ) {
        //Get the player the GPS is being started for.
        e. getPlayer ( ) ;
       
        //Get the StopSource / what caused the GPS to stop.
        //Enums: PLAYER_SELF, PLAYER_OTHER, CONSOLE, PLUGIN, OTHER_PLUGIN, DESTINATION_REACHED
        e. getStopSource ( ) ;

        //The navigation type is of type compass (true) or GPS (false)
        e. isCompass ( ) ;

        //Check if the event is cancelled.
        e. isCancelled ( ) ;

        //Cancel the event based on your checks. StopSource DESTINATION_REACHED and PLUGIN is not cancellable.
        e. setCancelled ( true ) ;
    }
New API methods and Events suggested by @Spartan9802 :)


Even though this update mainly adds API methods and Events it is recommended that you still update even if you are not personally going to use them. Allows for compatibility with plugins using the API.

[​IMG]
----------, May 9, 2018

Changes:
  • PlaceholderAPI: I was notified that placeholderAPI support had been requested by a user. This has now been implemented and the following placeholders are available:
    • %gps_distance%
      This placeholder will return the remaining GPS distance.
      E.g: 145,32 or 1.593,23

    • %gps_distanceRounded%
      This placeholder will return the remaining GPS distance rounded.
      E.g: 145 or 1.593

    • %gps_cardinalDirection%
      This placeholder will return the cardinal direction a player has to go. (N, NE, E, SE, S, SW, W, NW)


  • Dynmap real-time fix: Dynmap had a bug which would break the real-time updating feature when using circular markers which the GPS does. This has been fixed by @NathanWolf, thank you! This means that now the GPS will update in real-time with the changes you make to the in-game to the setup.

    Example: https://gyazo.com/0a96bc16f2f3b9665fd81880e9b6d396

    You'll have to update dynmap to this version: https://github.com/elBukkit/dynmap/releases/tag/3.0-Circle-Fix

    (I am working on some path showcasing with Dynmap which will be released in one of the following updates)


  • API methods: The GPS error messages had a few typos. These have been corrected.

    The GPSAPI has also had a few methods added:
    • getDistanceToTarget(Player player)
      This method will return the remaining GPS distance.
      E.g: 145,32 or 1.593,23

    • getDistanceToTargetRounded(Player player)
      This method will return the remaining GPS distance rounded.
      E.g: 145 or 1.593

    • getCardinalDirection(Player player)
      This method will return the cardinal direction a player has to go. (N, NE, E, SE, S, SW, W, NW)

[​IMG]
----------, May 6, 2018

Changes:
  • Dynmap Support: This update allows you to show your GPS setup in Dynmap.
    Below is the GPS setup from my test server:
    [​IMG]
    [​IMG]

    Since this feature is quite significant, an independent configuration file has been dedicated to the Dynmap setup:
    Code (YAML):
    #######################################################################################
    # +---------------------------------------------------------------------------------+ #
    # |    ____                                            _   _                _       | #
    # |   |  _ \  _   _  _ __   _ __ ___    __ _  _ __    | | | |  ___    ___  | | __   | #
    # |   | | | || | | || '_ \ | '_ ` _ \  / _` || '_ \   | |_| | / _ \  / _ \ | |/ /   | #
    # |   | |_| || |_| || | | || | | | | || (_| || |_) |  |  _  || (_) || (_) ||   <    | #
    # |   |____/  \__, ||_| |_||_| |_| |_| \__,_|| .__/   |_| |_| \___/  \___/ |_|\_\   | #
    # |           |___/                          |_|                                    | #
    # |                                                                                 | #
    # +---------------------------------------------------------------------------------+ #
    #######################################################################################

    # Enable or Disable the Dynmap GPS.
    enabled
    : false

    # Name of Marker Set.
    name
    : 'GPS'


    ############################################################
    # +------------------------------------------------------+ #
    # |                    Point settings                    | #
    # +------------------------------------------------------+ #
    ############################################################

    # Enable/Disable the circular point markers.
    pointMarkersEnabled
    : true

    # Radius. Set the radius to 0 to use the update distance as the radius.
    pointRadius
    : 0

    # Set the fill style. Color is in RGB.
    pointFillOpacity
    : 0.2
    pointFillColor
    : 85, 85, 255

    # Set the border style. Color is in RGB.
    pointBorderWeight
    : 2
    pointBorderOpacity
    : 0.7
    pointBorderColor
    : 255, 0, 0

    # Set the clickable popup description on each point.
    # The description is written in HTML Markup.
    pointDescription
    :
     - '<h2>Point
    : %point%</h2>'
     - '<b>Location:</b> %location%<hr>'
     - '<b>Connections:</b>'
     - ' %connectionList%'

    # Set how lines in the connection list appears.
    connectionListLine
    : '<i> %connection%</i>'


    ############################################################
    # +------------------------------------------------------+ #
    # |                 Connection settings                  | #
    # +------------------------------------------------------+ #
    ############################################################

    # Enable/Disable the connection line markers between the point markers.
    connectionMarkersEnabled
    : true

    # Set the connection line style. Color is in RGB.
    connectionLineWeight
    : 4
    connectionLineOpacity
    : 0.4
    connectionLineColor
    : 85, 255, 255
    The file is automatically added.

    The Dynmap feature is disabled by default.
----------, Apr 30, 2018

Changes:
  • Autoshow: A new auto show path feature has been added. Enabling this will auto-enable the visual GPS path once the GPS is started instead of having to manually enable it each time. It will however only auto-enable for players who have the gps.commands.show permission. This will not interfere with the disableArrow feature.

    Add the following to your config if you wish to use this feature:
    Code (YAML):
    # Toggle whether or not the particle path visualizer should automatically enable
    # on GPS navigation startup. It will only auto-enable if the player being navigated
    # has the gps.commands.show permission which they would need to manually start it.
    autoShowPath
    : false
    This is by default located in the GPS settings category in the config.yml.

    Suggested by @tomtehtom :)


  • Revised: The auto show method has been carefully implemented as to not interfere with other features that depend on the path being enabled or not. Some of the GPS startup code has been completely redone to make sure all features are taken into account when deciding whether or not the visualizer should enable or not based on the player's permission, the disable arrow feature, and the new auto show feature.
----------, Apr 21, 2018

Changes:
  • Optimized: Redid some of the Path update calculation. This reduces the number of checks being made in order to improve performance as well as keeping the GPS responsive. This change will not alter the current behavior; it will simply reduce system resource usage.

  • Removed: Some unneeded forgotten code from initial development has been removed as well as a clean-up of the class in which the forgotten code was located.
----------, Apr 15, 2018

Changes:
  • Enhancement: The GPS course checking has been enhanced and will now re-calculate based on the course you are going. This focuses mainly on players not following the direction they are being navigated. Take a look at the comparison below for a visual representation of this update. Note how the latest point (point prior to the target) is chosen as your distance to the target gets greater than the distance between the latest point and the target (plus the update distance):

    Prior to this update:
    [​IMG]

    Enhanced course checking:
    [​IMG]

    This update does not require you to change anything. Simply drag and drop the jar.

    Suggested by @acfuffy
----------, Apr 7, 2018

Changes:
  • Quality of life: Added the GPS Configurator Stick. This simplifies configuring the GPS by a lot!
    [​IMG]
    As seen in the GIF above you can select points at a distance of up to 100 blocks away and connect, disconnect, and move points with a few clicks.
    [​IMG]
    This tool requires the operator to have the permission: gps.commands.configurator. If a player tries to use it without said permission they will receive the invalidPermission message.

  • New command: Added the /gpsc stick command. This command will add a configurator stick to your inventory. This command requires the gps.commands.configurator permission.

  • Messages: Added two new messages to the Messages.Configurator section:
    Code (YAML):
    noPointInEyeSight : ' %confPrefix% &cNo point in eyesight.'
    addedStick
    : ' %confPrefix% &aA Configurator Stick has been added to your inventory.'

  • Placeholder: The placeholder %distanceRounded% is now supported in the GPS arrowName in the config.yml. This will show the rounded distance instead of the distance with two decimals. The %distance% placeholder is still supported and its behavior has not been changed.
----------, Apr 5, 2018

Changes:
  • New GPS mode: It is now possible to disable the arrow and instead use the particle path as the GPS. Add the following to the bottom of your config.yml file. (If you do not wish to use the feature you do not have to add it)
    Code (YAML):
    # Particle path mode.
    # This mode disables the arrow completely and instead activates the
    # particle path whenever the GPS start method is called. The /gps show
    # command will behave as the /gps stop command as well. Furthermore,
    # it will enable Actionbar mode regardless of the setting chosen earlier.
    # If you do not wish to show an Actionbar message set the arrowName to ''.
    disableArrow
    : false
    When the /gps start command is used the particle path will automatically start instead of spawning the arrow.
    Since this mode renders the /gps move command useless the following message has been added:
    Code (YAML):
    arrowDisabled : ' %prefix% &cThe GPS arrow is disabled. Move mode unavailable.'
    The new message is automatically added to the Messages.GPS section in the messages.yml file.

    This feature was suggested by @acfuffy


  • Fix: Fixed the suggested command when clicking the /gpsc tp command in the /gpsc help menu. It will now suggest the correct command.

  • Actionbar improvements: The Actionbar is now supported in all versions. Prior to this update, only 1.10 and up servers could use it. 1.8 and 1.9 servers can now use the feature as well. (1.8 is still not supported completely. Though the new GPS mode supports 1.8)

  • Reload change: From now all active GPS's are stopped when the /gps reload command is used. The following message is sent to all players with an active GPS:
    Code (YAML):
    pluginReload : ' %prefix% &cThe GPS has been reloaded! Exiting navigation.'
    The new message is automatically added to the Messages.GPS section in the messages.yml file.
----------, Apr 3, 2018

Changes:
  • Internal change: The internal point mapping has been changed to make sure the correct order of the points is kept. This has not been necessary until now. Some of the following new features rely on a consistent order hence this change.

  • List command: /gps list [page]
    The new list command allows you to see all of your defined points in a paginated chat message. The permission node to use this command is gps.commands.list. Each point has a hover message attached to it which shows the location of the point and its connections.
    The list command has another very useful feature. If you have the gps.commands.configurator permission, the list of points are all clickable and will teleport you to the location of the clicked point.
    Giving regular players permission to use this command is completely safe as long as they do not have the configurator permission. Though regular players do not really have a use for it in my opinion.

    Suggested by: @AndyYu


  • Teleport command: /gpsc teleport <point>
    The teleport command will take you to a defined point when used. This command is available to all players with the gps.commands.configurator permission.

  • New message: A new message has been added to the messages.yml file:
    Code (YAML):
    Messages:
      Configurator
    :
        teleportedToPoint
    : ' %confPrefix% &aSuccessfully teleported.'
----------, Mar 31, 2018

Changes:
  • Fix: A small syntactical error resulted in disabling the whole visibility management system. This update fixes this issue.

Next update will contain some requested features. I will try to get it out as quickly as I can :)
----------, Mar 29, 2018

Changes:
  • Fix: During my previous optimizations and performance revisions, I accidentally removed the logic that updates the closest point to you when using the configurator. This has been re-added and now works properly again; sorry for the inconvenience. Thanks to @AndyYu for spotting this issue.


  • Actionbar: You can now choose to have the arrows name/title displayed as an action bar message instead of hovering above the arrow. If you wish to use this feature simply add the section below to your config.yml: (By default it is located under the Arrow appearance settings section)
    Code (YAML):
    # Display the arrows name on the action bar instead of above the arrow.
    # This feature is not available for servers running a version older than 1.10.
    useActionbar
    : false
    This feature is not available in versions older than 1.10.

    Requested by: @kemil


  • Compass command: A whole new set of commands have been added to the plugin. They have been added to the commands section on the main resource page. The main goal of the compass is to instead of following a specific path the GPS will simply point you in the direction of one of your points. The compass can be started from anywhere in the world; even thousands of blocks away from the target point.

    Requested by: @Battlevali
----------, Mar 25, 2018

Changes:
  • Revision: The hitbox of the arrow is now smaller.

  • Performance: Improved the update method. Previously the gps arrow would update 20 times a second whenever you were moving. This has been greatly optimized and it now only updates 6 times a second only if you are moving. The new implementation allows for GPS compatibility with plugins that have vehicles not marked as a vehicle in their code. In other words the GPS supports all movement/vehicle plugins (teleportation plugins not included).

The entity rendering in 1.8.x clients are for some reason different than the rendering in 1.9 and up clients, which make the arrow appear slightly messed up for 1.8 users. I am working on a fix for this.
----------, Mar 22, 2018

Changes:
  • Better angles: The GPS arrow now looks a lot cleaner/nicer at angles as well. Previously the arrow would "staircase" at an angle and have a flat head when pointing up or down. After a lot of testing and rewriting this has been vastly improved. Take a look below:

    Previously:
    [​IMG]

    Enhanced:
    [​IMG]


  • Rotation wrap: When the arrow changes direction at high speeds the arrow will "wrap" around itself as an added cool effect:
    [​IMG]
----------, Mar 17, 2018

[​IMG]
As of version 1.2.0, an application programming interface has been added for developers to use. With this API you, the developer, can add points, connections, disconnect points, remove points, as well as start and stop the GPS for players.

Below is an example of getting an instance of the API as well as adding and connecting a few custom points:
Code (Java):
package com.live.bemmamin.example ;

import com.live.bemmamin.gps.api.GPSAPI ;
import org.bukkit.Bukkit ;
import org.bukkit.Location ;
import org.bukkit.plugin.java.JavaPlugin ;

public class Main extends JavaPlugin {

    private GPSAPI gpsapi = null ;

    @Override
    public void onEnable ( ) {
        if (Bukkit. getPluginManager ( ). getPlugin ( "GPS" ). isEnabled ( ) ) {
            gpsapi = new GPSAPI ( this ) ;

            initialiseCustomPoints ( ) ;

            gpsapi. startGPS (Bukkit. getPlayer ( "Benz56" ), "pluginName6" ) ;
        }
    }

    private void initialiseCustomPoints ( ) {
        gpsapi. addPoint ( "pluginName1", new Location (Bukkit. getWorld ( "world" ), 91, 60, 81 ) ) ;
        gpsapi. addPoint ( "pluginName2", new Location (Bukkit. getWorld ( "world" ), 76, 60, 85 ) ) ;
        gpsapi. addPoint ( "pluginName3", new Location (Bukkit. getWorld ( "world" ), 83, 60, 77 ) ) ;
        gpsapi. addPoint ( "pluginName4", new Location (Bukkit. getWorld ( "world" ), 74, 60, 73 ) ) ;
        gpsapi. addPoint ( "pluginName5", new Location (Bukkit. getWorld ( "world" ), 86, 60, 67 ) ) ;
        gpsapi. addPoint ( "pluginName6", new Location (Bukkit. getWorld ( "world" ), 84, 60, 61 ) ) ;

        gpsapi. connect ( "pluginName1", "pluginName2", true ) ;
        gpsapi. connect ( "pluginName1", "pluginName3", false ) ;
        gpsapi. connect ( "pluginName2", "pluginName3", true ) ;
        gpsapi. connect ( "pluginName3", "pluginName4", true ) ;
        gpsapi. connect ( "pluginName4", "pluginName5", true ) ;
        gpsapi. connect ( "pluginName5", "pluginName6", true ) ;
    }

    @Override
    public void onDisable ( ) {
        gpsapi. removeAllPoints ( ) ;
    }
}

Below is a list of methods you can use:
  • startGPS(Player player, String destination)
    Start the GPS for a player with a set destination and the closest point as the starting point.

  • startGPS(Player player, String start, String destination)
    Start the GPS for a player with a starting and destination point. (The starting point will change if another point is closer)

  • stopGPS(Player player)
    Stop the GPS for a player.

  • addPoint(String name, Location location)
    Add a custom point. Make sure the name is unique. E.g. add your plugin name as the first part of the name.

  • removePoint(String name)
    Remove a point you personally added.

  • removeAllPoints()
    Remove all points you added.

  • connect(String point1, String point2, boolean both)
    Connect point1 to point2. If the both parameter is true; point2 is also connected to point1.

  • disconnect(String point1, String point2, boolean both)
    See connect.
----------, Mar 12, 2018

Changes:
  • Player death event: Previously when a player died with the gps active it did not get removed. This has been fixed and the GPS is stopped correctly when a player dies.

  • Optimization: Removed manual event calls and replaced with a new custom GPS update method. This prevents calling the move event when the player is actually standing still, which could in rare cases interfere with another plugin.

  • Optimization: The vehicle move event has been permanently removed as it is redundant with the new GPS update method. As well as removing the event the methods for handling the GPS within a vehicle has been optimized.
----------, Mar 9, 2018

Changes:
  • Support - Support for entity/animal/vehicle riding/driving. This was not possible before and the GPS would simply exit upon mounting an entity or not respond correctly if started on an entity. This is no longer the case. You can now use the GPS on horses, boats, minecarts etc. (Any vehicle type in general).

  • Teleportation - Instead of exiting the navigation on any teleport, you can now teleport up to 20 blocks with the GPS enabled. Anything more will exit the navigation.

  • Support - As for the possibility of now being able to ride vanilla Minecraft entities you can also ride custom vehicles from other plugins as long as the custom plugin flags its vehicles as a vehicle. As per request from @crston, this has been tested with the plugin Craftmoto and works flawlessly.

  • Metrics - The plugin now collects basic statistics in the background.
----------, Mar 5, 2018

Changes:
  • Bugfix - Fixed a rare harmless NPE that could occur when creating points and having the path visualizer enabled. The error was harmless and did not affect anything other than logging the error message to the console.

  • Flow fix - Some of the command flow has been rearranged to change the message priority when dealing with multiple permissions and messages. E.g. the invalid permission message should always have the highest priority. Furthermore, a permission typo has been fixed for the /gps show command.
----------, Mar 5, 2018

Resource Information
Author:
----------
Total Downloads: 996
First Release: Mar 4, 2018
Last Update: Dec 17, 2024
Category: ---------------
All-Time Rating:
41 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings