The one and only first ever actual Global Positioning System; GPS for short for Spigot servers. Designed with both simple and advanced world mappings in mind. Create simple GPS mappings or very complex and advanced webs of connections and routes. The GPS will consistently guide you through the shortest path available.
Warping around the world/spawn is ordinary and extremely boring. It leaves everything you have built unwatched and unappreciated resulting in wasted time / wasted money spent on builders and makes your server dull. Using the GPS allows your players to explore your server as they go, and discover all the characteristics that make your server unique and intriguing. Guided by a completely customizable arrow, which is not created from boring particles, you, and your players, always know exactly where to go. Setting up the GPS is extremely easy and straightforward. With the in-game GPS configurator, you are free from messing around with clumsy yml files and having to fiddle around with misconfigurations due to typos and indentation errors. All points and connections are observable via particles whenever the configurator is enabled.
Test Server: 142.44.222.241:25602
If you wish to use this on a 1.8 server then please read the "Important for 1.8 servers" in the Versions and Support section first!
The GPS Arrow:
- Appearance:
The arrow is created from any placeable block. Above is a few examples of that. The length, arrowhead size, and density of blocks, etc. are all 100% configurable in the config.yml file. You can also set the header of the arrow.
Below are a few examples of different arrow settings. The default arrow is the one to the left. Remember; larger sizes and higher densities require more entities which require more server resources. (The default is created from just 15 entities)
You can also use a custom resource pack or particles. Take a look further down.
- Behaviour and physical properties:
The arrow can rotate and point in any direction. The direction is based on your current position and the direction towards the destination. The arrows direction is based on your location, not its own location.
Spoiler: Pre. 1.3 Arrow Appearance
The arrow will follow you around in a fixed position based on the direction you are looking and moves in a seamless and smooth manner. As seen in the gif above the arrow changes its direction instantaneously without any stuttering. - Invisibility:
Since the arrow is made from entities and not Particles, hiding it is a whole lot harder. This has been made possible with the use of ProtocolLib. If you wish to hide the arrow you will have to have PL installed on your server. Enable/disable this feature in the config.yml file.
The example below illustrates the perfectly hidden arrow. The player on the left can clearly see his GPS arrow, though it remains undetectable/invisible for the player on the right.
- Invincibility:
Using the kill command won't delete the arrow. This ensures that plugins like entity cleaners won't delete the GPS arrows and cause issues.
- Moveability:
The arrow can be moved to best suit the players needs. The move-mode is enabled via the /gps move command. In this mode, the scroll wheel on your mouse functions as the "control stick". Use the scroll wheel to move the arrow forwards and backward. Hold shift and use the scroll wheel to move the arrow up and down.
- Other arrow types:
You can also choose to use a custom resource pack for your arrow:
Click to view the photo album.
Resource pack link:
The three arrows above is created by @NullBlox. Feel free to use them.
1.8 - 1.12 download
1.13+ download
The material for the three default arrows is IRON_HOE and the durability is 1,2, and 3.
Spoiler: In-game Example
A particle variation of the arrow is also available.
A simple version and a 3D version:
Spoiler: Pictures
- Path computation:
Below is an example of a small rather complex GPS setup. The image illustrates the effectiveness of the computation algorithm. Even in a web of points and connections, the GPS will find the absolute shortest path possible; instantaneously. To ensure performance, paths are temporarily stored for as long as the player has the GPS active. This makes the GPS extremely responsive and allows it to update lightning fast without putting any strain on the server. - Path recomputation:
The GPS logic allows for players to veer off course or take alternate routes. If they should decide to do so, the GPS will update to the new shortest path as soon as they get in range of another point; as seen in the video below.
N.B. The particle paths are only shown for the player being navigated if they have it turned on. The particles are only visible for the "camera" for the purpose of this GIF. - Single direction connections:
The setup below demonstrates a single-direction connection setup. This can be used in any way you want. It is useful for making sure the player is not navigated through an "impossible" path e.g. the player is unable to jump to the next point in the picture below, yet they are able to "jump" down. (Red boxes are points, blue lines are connections, light blue particles equals connected)
The GIF below demonstrates the usage. Even though the player is closer to the center point, he is being navigated through the other points.
- World Linking
You can even connect your points across worlds! Simply select a point in one world, teleport to another world, and connect them. The GPS will compute the shortest path even if the destination is in another world! When teleporting to another point with the GPS active the destination has to be within the range of a point and you have to be able to reach the end-destination from that point.
Above is a short example of teleporting between two worlds to get past an "obstacle".
- Path visualization:
Alongside the arrow navigation, you can also enable a visualization of the current chosen path. The particles are shown only for the player being navigated. As of 1.6.0, it is possible to disable the arrow completely and solely use the particle path instead.
- In-game configurator:
The plugin also features an easy-to-use complex in-game GPS configurator. The commands and how to use it is explained in the commands section.
Using the command /gpsc show enables the particle visualization. Each connection is shown with a blue particle line, two light blue particles at the end of the line indicate the points are connected. Each point is represented with a red particle box by default. Your currently selected box is green and the closest box to you is yellow.
The in-game configurator allows you to create, delete, connect, disconnect, and move points without ever having to deal with a yml file. The configurator is very easy to use and you'll get your world mapped in no time.
Apart from using commands to set up your GPS, you can also use the built-in GPS Configurator Stick which allows you to create, select, connect, disconnect, and delete points with a single click.
- Vehicle plugin support:
The GPS supports all vehicle/movement plugins. This is made possible by updating the GPS based on the player's location at a fixed interval. This has been thoroughly tested and will 100% work for any movement not involving player teleportation above 20 blocks. - Dynmap Support:
The GPS plugin allows you to showcase your GPS setup with Dynmap. Below is an example of the setup used on my Test Server:
Spoiler: Overhead - BossBar Compass:
/GPS:
All commands below require the gps.commands permission alongside the individual command permission. The main command is /globalpositioningsystem, however, /gps is a more convenient alias.
- /gps [help]
Alias: [h]
Opens the help menu. The help menu is clickable and contains hover messages with instructions.
Permission:- gps.commands.help
- /gps [start] <to> [from] [player]
Alias: [s ]
Start the GPS.
A destination parameter is required. The from parameter specifies a starting point; it is optional. The player parameter is used to start the GPS for another player e.g. through the console.
Permissions:- gps.commands.start (Required)
- gps.commands.others (For using on other players)
- /gps stop [player]
Stop the GPS / stop the GPS for another player.
Permissions:- gps.commands.stop (Required)
- gps.commands.others (For using on other players)
- /gps toggle
Aliases: [tog, t]
Toggle GPS usage. When toggled off nothing can start the GPS for you.
Permission:- gps.commands.toggle
- /gps move
Alias: [m]
Enable the arrow manipulation feature. This allows you to move the arrow both vertically and horizontally. (Seen in the features above)
Permissions:- gps.commands.move
- /gps show
Alias: [sh]
Show your current path with particles.
Permission:- gps.commands.show
- /gps list [page]
Alias: [l]
Shows a list of all defined points, including points added by plugins using the API. All points have a hover message containing the location and connections of the point.
Permission:- gps.commands.list
- Sub permission:
If a player has the gps.commands.configurator permission all points in the list are clickable and will teleport you to the location of the point clicked.
Aliases: [compas, comp, com]
All commands below require the gps.commands permission alongside the individual command permission. The compass commands share permissions with the GPS commands. The main usage for the compass is simply pointing the player directly towards a point. The compass can be started from anywhere.
- /compass [help]
Alias: [h]
Opens the help menu. The help menu is clickable and contains hover messages with instructions.
Permission:- gps.commands.help
- /compass [start] <to> [player]
Alias: [s ]
Start the compass.
The destination parameter is required and can be any valid point. The player parameter is used to start the Compass for another player e.g. through the console.
Permissions:- gps.commands.start (Required)
- gps.commands.others (For using on other players)
- /compass [start] <x> <y> <z> [player]
Alias: [s ]
Start the compass.
The x, y, and z parameters represent the coordinates of a location in the world the player is currently in. The player parameter is used to start the Compass for another player e.g. through the console.
Permissions:
- gps.commands.start (Required)
- gps.commands.others (For using on other players)
- /compass stop [player]
Stop the compass / stop the compass for another player.
Permissions:- gps.commands.stop (Required)
- gps.commands.others (For using on other players)
- /compass toggle
Aliases: [tog, t]
Toggle compass usage. When toggled off nothing can start the compass for you.
Permission:- gps.commands.toggle
- /compass show
Alias: [sh]
Show your current compass direction with particles.
Permission:- gps.commands.show
Aliases: [gpsconfig, gpsconf, gpscon, gpsc]
All commands below share the same permission: gps.commands.configurator
- /gpsc [help]
Alias: [h]
Opens the help menu. The help menu is clickable and contains hover messages with instructions. - /gpsc editor
Aliases: [edit, e]
Enable the editor features. This command is a safety for unintentional command configurations. The editor command will also enable the configuration particle visualizer. - /gpsc stick
Aliases: [st, getStick, cfgStick]
Adds a Configurator Stick to your inventory.
To operate the stick you also need the gps.commands.configurator permission. If a regular player were to get a hold of one these they would not be able to mess anything up. - /gpsc create <name>
Alias: [c]
Create a new GPS point. - /gpsc delete
Aliases: [del, d]
Delete your selected GPS point. - /gpsc select
Aliases: [sel, s]
Select the point closest to you. - /gpsc info
Aliases: [i ]
Shows info about the point closest to you. - /gpsc connect [2-way]
Alias: [con]
Connect your selected point to the one closest to you. 2-way allows you to chose whether or not both points should be connected to each other. Setting this parameter to false will only connect the selected point to the closest, and not both ways. Both points are connected if the 2-way parameter hasn't been specified. - /gpsc disconnect
Aliases: [disc, dis]
Disconnect your selected point and closest point from each other. - /gpsc move
Alias: [m]
Move the selected point to your current location. (The location at your feet) - /gpsc attribute <attribute> [value...]
Aliases: [att, ab, a]
Set an attribute on your selected point. Available attributes can be viewed by hovering over the command in the /gpsc help message. Leave the value parameter empty to delete the attribute and use the default if any.
Aliases: [gpsad, gpsa]
All commands below share the same permission: gps.commands.admin
- /gpsa [help]
Alias: [h]
Opens the help menu. The help menu is clickable and contains hover messages with instructions. - /gpsa active [page]
Aliases: [act, a]
Shows a list of all currently active GPSes/Compasses. Each list entry has a hover message containing information about the status of the player's GPS. You can click on an entry to stop the GPS for that player. - /gpsa stop
Aliases: [st, s]
Stop all active GPSes and Compasses. - /gpsa toggleusage
Aliases: [toggleu, tusage, tu]
Toggles whether GPSes and Compasses can be started. If toggled to disabled all active GPSes and compasses are stopped as well. This command can be useful when you're making changes to your GPS setup to. - /gpsa info
Alias: [inf, i]
Displays version info and offers quick links for new versions and support. - /gpsa cleanup
Aliases: [cleanu, cup, cu]
Removes leftover GPS arrows. This can happen in rare cases. - /gpsa reload
Alias: [r]
Reload the GPS configuration files.
GPS features a smart permission based tab completer. It will suggestion commands and parameters based on the players' permissions.
Other permissions:
- gps.update
This permission will allow non-OPs to be notified of a new update. - gps.hunger.ignore
Players with this permission will not lose hunger when using the GPS or Compass. - gps.startonrespawn
The compass will start for players' with this permission when they respawn targetting their death location.
Spoiler: config.yml
Spoiler: dynmap.yml
Spoiler: messages.yml
Spoiler: points.yml
Some files might contain more options due to new updates.
1. Purchase and Download GPS.
2. Drag and drop the plugin to your plugins folder.
3. Start, restart, or reload your server.
The plugin is now ready to be configured. Follow the steps below to get started setting up the GPS.
1. Use the following commands to enable the editor and particle visualization: /gpsc editor & /gpsc show.
2. Go to a location where you would like to set a GPS point e.g. a shop.
3. Execute /gpsc create shop. (Or replace "shop" with any other name) Now you have successfully created your first point.
4. Go to another location and create a point the same way you did in the previous step.
5. Optional. Create points between the two other points to make the GPS path follow a certain route.
6. Use the /gpsc select command on one of your points. The point will change color to green. Go to the next point which will turn yellow as you get close enough. Use the /gpsc connect command to connect the two points.
7. Select this point and continue connecting all of your points.
8. When you are happy with your point and connections you can start using the GPS. You can always add more points, delete points, add/remove connections, move points etc. as you go.
If you have further questions regarding setting the GPS up; please send me a private message.
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(); //Just an example.
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();
}
}
Spoiler: Methods
Spoiler: Events
Spoiler: Events
Versions 1.9 - 1.18 are fully supported. All features are supported in all of those versions; no exceptions.
Protocol hacks are supported such as viaversion and viabackwards though 1.8.x clients are not able to correctly render compact entities which the arrow consists of.
Spoiler: Example
Tested versions:
1.8, 1.9, 1.10, 1.11.2, 1.12, 1.12.2, 1.13, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16.1, 1.17.1, 1.18.1, 1.18.2, 1.19
Important for 1.8 servers:
As mentioned above the entity arrow is not rendered correctly by a 1.8 client which also means that if you run a 1.8 server you are not able to use it. However, the Particle arrow works just fine on 1.8 servers. That is the only difference regarding 1.8 and non-1.8 servers. Everything else is supported.
Dynmap Support:
The plugin supports dynmap as well. Check out the configuration file above to check out the features that are provided with dynmap.
Recommended version: https://github.com/elBukkit/dynmap/releases/tag/3.0-Circle-Fix
PlaceholderAPI Support:
The following placeholders are available through placeholderAPI:
- %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)
Spigot.
Servers using this plugin:
Official Testserver: 142.44.222.241:25602
Secondary test server: PowerPlugins.net
CoolWill: mc.coolwill.info
Kubos: play.kubosmc.uk
By purchasing GPS you agree to the following Terms of Service:
- The resource is not obfuscated. You may decompile and take a look at the code once purchased, however, you may not distribute the code.
- You are not allowed to file a chargeback or PayPal dispute.
- You are not allowed to use the plugin on more than one server/network.
- You are not allowed to redistribute the plugin under any circumstances.
- You must have read the entire description on this page before purchasing.
- Posting bad reviews based on bugs, missing features, or similar before contacting me personally results in the immediate revocation of your access.
- I reserve the right to change these terms at any time and you agree to abide by the most recent version of the terms.
- I retain the right to revoke your access to GPS if you violate any terms above.