Brings waypoints to Vanilla Minecraft with a fully immersed survival experience.
So what is this really?
If you don't know what waypoints/warps are: You mark a location in the world with a name and then you can teleport to it whenever you want. Some servers use it to get around faster, even when playing on an SMP. Most of these however, especially plugins, fail to integrate the feature into gameplay. My take on waypoints tries to do just that: Implement waypoints in Minecraft Vanilla in a way that it works cleanly with game and preserves balance.
How do you set up a waypoint?
Setting up a waypoint is quite easy to do. You require nothing more than a Book and Quill and an Enderpearl. Throwing these together on a Crafting Table will give you a new Book and Quill that you can sign to create a waypoint at your current location. You will receive a new book detailing your waypoint.
How do you teleport to a waypoint?
Getting a teleport to a waypoint is a little more difficult. In fact, it's almost impossible if you don't have a teleport book.
How do you get a teleport book?
You can craft a teleport book using a Book and Quill and 8 Echo Shards. You will need to throw them on a Crafting Table like with the Waypoint Creator.
It should be noted that this book will not contain any waypoint by default, you will have to add them yourself with the books you get from creating waypoints.
How do you put waypoints into a teleport book?
This step is quite simple. Adding a waypoint to a teleport book is done by throwing your teleport book and a waypoint book onto a Cartography Table. The waypoint book will vanish and you will have added a new waypoint.
How do I keep my waypoint books then?
Doing this is astoundingly simple, the game already implemented it for me, in fact. Just duplicate any of your books (even teleport books!) in a crafting table.
Project Status
This datapack is currently in BETA. This means the pack is functional for creative as well as survival, but lacks some optional features. See the Roadmap below for more. More features will be added in the future.
Roadmap
This roadmap shows the features I intend to include in later versions.
~~Adding waypoint descriptions~~
~~Configuring waypoint cost as an admin~~
Advancements for attaining certain items or completing certain actions.
Loadstone-connected waypoints
Variable level cost depending on distance? (May be added in the future, but probably after all the other points.)
Better configuration using a chat-based ui
Public Servers / Series
If you are reading this section, chances are you want to use my datapack on a public server or in a YouTube series. Should that be the case: I feel honoured! You are totally free to do that, but do make sure, you give me credit (e.g. a video description / a sign at spawn) and provide some sort of link to this pack's GitHub or Modrinth.
# NOTICE! THIS RELEASE IS BROKEN! USE AN EARLIER RELEASE
This release fixes one bug and one bug only!
# Changelog
## Bug Fixes
- #2 Fix waypoint and teleport books not rendering correctly when first opened by non-op users
- If you have been affected by this bug, you will unfortunately have to live with it as there is currently no way to re-resolve books. For Teleport Books, you can add a new waypoint to resolve the issue.
## Technical Changes
- Books are now being resolved immediately instead of lazily when first opening books. This should not change performance of the datapack though it should be noted that all calculation is done as the book is updated.
- Also book generation now no longer has arcane `O(-n)` time complexity. Those were unsettling times...
- The book data version is now 3. This means any users that have modified their book versions will have to generate the data anew.
# NOTICE! THIS RELEASE IS BROKEN! USE AN EARLIER RELEASE
This release fixes one bug and one bug only!
# Changelog
## Bug Fixes
- #2 Fix waypoint and teleport books not rendering correctly when first opened by non-op users
- If you have been affected by this bug, you will unfortunately have to live with it as there is currently no way to re-resolve books. For Teleport Books, you can add a new waypoint to resolve the issue.
## Technical Changes
- Books are now being resolved immediately instead of lazily when first opening books. This should not change performance of the datapack though it should be noted that all calculation is done as the book is updated.
- Also book generation now no longer has arcane `O(-n)` time complexity. Those were unsettling times...
- The book data version is now 3. This means any users that have modified their book versions will have to generate the data anew.
This datapack now supports the versions 1.20.0 - 1.20.4 (inclusive). There are no implementation changes and no bug fixes.
For more information see [v1.0-beta.3](https://modrinth.com/datapack/waypoints-vanilla/version/1.0-beta.3).
This datapack now supports the versions 1.20.0 - 1.20.4 (inclusive). There are no implementation changes and no bug fixes.
For more information see [v1.0-beta.3](https://modrinth.com/datapack/waypoints-vanilla/version/1.0-beta.3).
There's a new update preparing for 1.21.x releases! This update features a number of improvements on the technical side, but most of these don't affect player experience at all.
**DISCLAIMER** This version is a beta version and as such bugs may still occur (even if the version has been bug-tested). Known breaking changes or bugs will be included in the changelog.
# Changelog
- When using 1.20.2, this datapack now supports custom dimensions.
- Note that custom dimensions will be presented using their dimension id (e. g. `deeperdarker:otherside`) and not with a name.
- Waypoints set on non-full blocks in negative Y coordinates will now be rounded up properly.
## Technical Changes
- The waypoint format now includes dimension ids at the path `.dimension.id` in waypoint components. This change only takes effect in 1.20.2.
- Note that the old dimension indices format is still in place to preserve backwards-compatibility. This format is scheduled to be removed in 1.21.x versions.
- Function macros have been widely implemented (everywhere where they don't break compatibility)
- Teleportation now works using function macros which should decrease lag and fix potential compatibility issues with distance measurements (like the Subspace Bubble advancement)
- XP/Level reduction now uses function macros.
## Updating & Version Compatibility
This release is compatible with 1.20-1.20.2 (1.20.3 is not released as of writing this). The overlay system is also designed to allow backporting a world with this datapack installed. Swapping versions should not have any noticable effect on your experience.
If you want to update, just swap out the datapack/mod file!
## Notes for Experts
If you are for some reason inclined to interact with this project's internal functions, I should note that functions may not be present depending on the used Minecraft version due to the nature of overlays. I do not know why you would ever want to do this.
There's a new update preparing for 1.21.x releases! This update features a number of improvements on the technical side, but most of these don't affect player experience at all.
**DISCLAIMER** This version is a beta version and as such bugs may still occur (even if the version has been bug-tested). Known breaking changes or bugs will be included in the changelog.
# Changelog
- When using 1.20.2, this datapack now supports custom dimensions.
- Note that custom dimensions will be presented using their dimension id (e. g. `deeperdarker:otherside`) and not with a name.
- Waypoints set on non-full blocks in negative Y coordinates will now be rounded up properly.
## Technical Changes
- The waypoint format now includes dimension ids at the path `.dimension.id` in waypoint components. This change only takes effect in 1.20.2.
- Note that the old dimension indices format is still in place to preserve backwards-compatibility. This format is scheduled to be removed in 1.21.x versions.
- Function macros have been widely implemented (everywhere where they don't break compatibility)
- Teleportation now works using function macros which should decrease lag and fix potential compatibility issues with distance measurements (like the Subspace Bubble advancement)
- XP/Level reduction now uses function macros.
## Updating & Version Compatibility
This release is compatible with 1.20-1.20.2 (1.20.3 is not released as of writing this). The overlay system is also designed to allow backporting a world with this datapack installed. Swapping versions should not have any noticable effect on your experience.
If you want to update, just swap out the datapack/mod file!
## Notes for Experts
If you are for some reason inclined to interact with this project's internal functions, I should note that functions may not be present depending on the used Minecraft version due to the nature of overlays. I do not know why you would ever want to do this.
After summer holidays (and then some) finally a new update has arrived. This is the second version of beta and crosses off two points from the roadmap. There are **no** breaking changes.
**DISCLAIMER:** Since this is a beta version, bugs may still occur and changes may be made. However, any breaking changes or additional updating steps are noted in the changelog.
# Changelog
- You can now add descriptions to your waypoints! When using a waypoint creator, simply open page 2 and write your description there. Then, after creating the waypoint the description should appear exactly where you'd expect it.
- Admins can now configure a default cost for all newly created waypoints. This change won't apply the cost to new waypoints, so... sorry about that! Doing this is still a bit cumbersome and requires manually setting the scoreboard value using `/scoreboard players set wps_default_cost f37_waypoints_RAM <CUSTOM COST>` As before, players in creative will not lose any levels when teleporting.
- Data updates are now performed automatically.
- Teleporting now causes some nice particles to appear at your new position.
## Technical Changes
- The data version is now `2`.
- Waypoint descriptions are now interpreted as JSON components before being displayed.
# Updating
Due to the new automatic data updater, updating is as simple as replacing the datapack file!
# Notes for Experts
The methodology for editing the maximum book length has not changed at all, though the internal data has changed. Still, the process is the same as in [Alpha.2](https://github.com/Fisch37/waypoints-vanilla/releases/tag/v1.0-alpha.2)
After summer holidays (and then some) finally a new update has arrived. This is the second version of beta and crosses off two points from the roadmap. There are **no** breaking changes.
**DISCLAIMER:** Since this is a beta version, bugs may still occur and changes may be made. However, any breaking changes or additional updating steps are noted in the changelog.
# Changelog
- You can now add descriptions to your waypoints! When using a waypoint creator, simply open page 2 and write your description there. Then, after creating the waypoint the description should appear exactly where you'd expect it.
- Admins can now configure a default cost for all newly created waypoints. This change won't apply the cost to new waypoints, so... sorry about that! Doing this is still a bit cumbersome and requires manually setting the scoreboard value using `/scoreboard players set wps_default_cost f37_waypoints_RAM <CUSTOM COST>` As before, players in creative will not lose any levels when teleporting.
- Data updates are now performed automatically.
- Teleporting now causes some nice particles to appear at your new position.
## Technical Changes
- The data version is now `2`.
- Waypoint descriptions are now interpreted as JSON components before being displayed.
# Updating
Due to the new automatic data updater, updating is as simple as replacing the datapack file!
# Notes for Experts
The methodology for editing the maximum book length has not changed at all, though the internal data has changed. Still, the process is the same as in [Alpha.2](https://github.com/Fisch37/waypoints-vanilla/releases/tag/v1.0-alpha.2)
Finally in beta! The data pack is now functional, which means it can be used in survival. Future releases will add new features, but are unlikely to produce breaking changes incompatible with prior versions. Should anything of the sort be present in a new release, this will be obviously communicated in the changelog.
# Changelog
## Gameplay
+ You can now teleport using a relative teleport book.
+ Added a crafting recipe for relative teleport books. (1 Book and Quill & 8 Echo Shards on a Crafting Table)
+ Added a crafting recipe for waypoint creators. (1 Book and Quill & 1 Enderpearl on a Crafting Table)
+ Access to the `goto_waypoint` trigger has now been limited to holding an all waypoints teleport book. This effectively means general teleporting only works when using a special book unobtainable in survival.
+ (Note that you can disable this by setting the internal score `free_teleport` in the objective `f37_waypoints_RAM` to a non-zero value.)
## Fixes
+ Relative teleport books no longer have a fixed trigger value of 1. This will not update old versions of the books, unless you add another waypoint to them.
## Refactors
+ Checking for meeting level requirements has been exported to a seperate function `check_levels`.
+ Function `get_waypoint` has been generalised to exhaustively iterate over a distinct array.
+ Checking for an entity on a cartographer table has been exported to the `is_on_cartography` predicate.
## Other changes
+ A new trigger goto_waypoint_rel has been added to work with the relative teleport book.
+ The `book_generator.py` script no longer generates the redundant item modifier file.
# Updating
Should you have been using an older version of the datapack, use `/function #fisch37:waypoints/book_modifiers` after updating. If not, weirdness may occur.
# Notes for the experts
As before, you can perform some copy-and-pasting to modify the maximum book length. Nothing has changed about the process since Alpha 2.
Finally in beta! The data pack is now functional, which means it can be used in survival. Future releases will add new features, but are unlikely to produce breaking changes incompatible with prior versions. Should anything of the sort be present in a new release, this will be obviously communicated in the changelog.
# Changelog
## Gameplay
+ You can now teleport using a relative teleport book.
+ Added a crafting recipe for relative teleport books. (1 Book and Quill & 8 Echo Shards on a Crafting Table)
+ Added a crafting recipe for waypoint creators. (1 Book and Quill & 1 Enderpearl on a Crafting Table)
+ Access to the `goto_waypoint` trigger has now been limited to holding an all waypoints teleport book. This effectively means general teleporting only works when using a special book unobtainable in survival.
+ (Note that you can disable this by setting the internal score `free_teleport` in the objective `f37_waypoints_RAM` to a non-zero value.)
## Fixes
+ Relative teleport books no longer have a fixed trigger value of 1. This will not update old versions of the books, unless you add another waypoint to them.
## Refactors
+ Checking for meeting level requirements has been exported to a seperate function `check_levels`.
+ Function `get_waypoint` has been generalised to exhaustively iterate over a distinct array.
+ Checking for an entity on a cartographer table has been exported to the `is_on_cartography` predicate.
## Other changes
+ A new trigger goto_waypoint_rel has been added to work with the relative teleport book.
+ The `book_generator.py` script no longer generates the redundant item modifier file.
# Updating
Should you have been using an older version of the datapack, use `/function #fisch37:waypoints/book_modifiers` after updating. If not, weirdness may occur.
# Notes for the experts
As before, you can perform some copy-and-pasting to modify the maximum book length. Nothing has changed about the process since Alpha 2.
# THIS RELEASE IS IN ALPHA. THERE WILL BE BUGS!
Alpha 2 fixes a number of issues found since the first alpha release, refactors parts of the code, and also adds a new gameplay feature.
# Changelog
## Fixes
+ Fixed dimensions not storing properly, leading to all created waypoints being moved into the overworld.
+ Fixed book_generator.py crashing during result generation.
+ Fixed sounds being played at 0 0 0 instead of player position.
+ Fixed infinite recursion loop in level consumption, leading to command cancellation.
+ Fixed relative waypoint books not rendering properly.
+ Teleporting while in creative mode no longer uses levels.
## Refactors
+ The page purger is now generalised instead of only working for All Waypoints Books.
+ Book Modifier resets has been exported into its own function.
+ Removed unused item modifiers.
## Gameplay
+ Added Relative Waypoint Books. Relative Waypoint Books rely on their own internal waypoint storage and do not depend on the global waypoint storage. These are intended to be used rather than the All Waypoints Books which will become nearly unusable when adding too many waypoints.
+ Creating a new waypoint using a waypoint creator book now gives back a written book representing and storing the waypoint. New waypoints are still added to the global list.
+ Throwing a relative waypoint book onto a cartographer table with a waypoint will consume the waypoint and add it to the relative waypoint book.
## Other changes
+ The pack version is now 15 and the pack now only supports 1.20.x. This was expected before, but is now official.
+ All books created by the datapack now have a custom tag depending on their use. Books created before this version could potentially be incompatible with future features.
+ All Waypoints Teleport Books have the tag `AllWaypoints` set to `1b`
+ Relative Teleport Books have the tag `RelativeWaypoints` set to `1b`
+ Waypoints have the tag `IsWaypoint` set to `1b`
## Known Issues
+ Teleporting using a Relative Teleport Book does not work. This feature is coming soon.
# Updating
Updating from Alpha 1 should be as simple as running the command `/function #fisch37:waypoints/book_modifiers`. All waypoints should have preserved compatibility.
# Using this version
This version is slightly more usable than Alpha 1, but an intuitive experience should not be expected. Creating waypoints works by signing books gotten by `/function fisch37:waypoints/get_book` as before.
Getting a All Waypoints Teleport Book is still complicated and involves throwing a functional written book onto the ground (Easily aquired using `/give @s written_book{title:"",author:""}`) and running `/execute as @e[type=item,limit=1,sort=nearest] run function fisch37:waypoints/book_modifiers/on_floor_all`. Updating All Waypoints Teleport Books using the previous commmand is still required.
For the brave, increasing the maximum page count of teleport books is still possible by editing the datapack yourself, but may lead to problems. Note that you do not have to copy the json file anymore as the corresponding item modifier has been removed from the datapack.
## THIS RELEASE IS IN ALPHA. THERE *WILL* BE BUGS AND UI IS MINIMAL
First semi-usable release of the datapack. Right now, only basic ui is implemented, but the core features should be functioning as normal.
Setting a waypoint must be done by signing a Book And Quill with the waypoint name. A waypoint will then be created at your current location. Not all writable Books will create a waypoint. To get such a waypoint creator book you can call the function `fisch37:waypoints/get_book`.
Teleporting around is possible at minimum by using the trigger `goto_waypoint` and setting it to the index of the waypoint in the waypoints array (starting at 1). If you are looking for a more... usable experience teleporting, you can rely on the following steps:
1. Get a **valid** written book. This can be done by using the following command: `/give @s written_book{author:"",title:""}`
A book without author and title will not be accepted by Minecraft as valid. It cannot render.
2. Throw the book on the ground and run `/execute as @e[type=item,limit=1,sort=nearest] run function fisch37:waypoints/book_modifiers/on_floor_all`.
3. Profit
If you create a new waypoint you will have to update your teleport book. Simply repeat step 2 to do so.
The standard version of the datapack supports 128 pages of the teleport book. If you're feeling brave you can change these numbers using the `book_generator.py` script and copying some strings into some functions. Be careful.