WeazyLink

# **WeazyLink**

WeazyLink adds **/linkaccount** to your server and connects your Minecraft server with Discord, making it easier for moderators to manage the community. With WeazyLink, players can link their Minecraft accounts to their Discord profiles, which helps prevent impersonation and makes player identification much easier.

## Features
– Easy Account Linking: Players can use the /linkaccount command in-game to generate a unique code. This code can be used in your Discord server to link their Minecraft username with their Discord ID.

– Database support: WeazyLink uses json file by default. But for larger communities, you can use databases like MongoDB and MySQL too.

– Simple Setup: WeazyLink is easy to install and configure, so you can get started quickly without any hassle.

### Thank you!

Weavers Paradise

# Weaver’s Paradise
Weaver’s Paradise expands Minecraft’s creativity with new materials, clothing, and advanced dye systems.

This mod is actively developed – feedback is always welcome.

[GitHub Issues / Feature Requests](https://github.com/Vortianski/Weavers-Paradise/issues)

## New Crafting Stations

### Spinning Jenny
Processes raw materials into spools, which are later used to craft fabric.
![Spinning Jenny GUI](https://cdn.modrinth.com/data/Q5xngUCT/images/8bf10a91010e5e78529917ebe81e9118cb1c5a15.png)

### Clothcrafting Station
Turns spools into cloth through a short minigame. Better performance results in higher-quality output.
![New materials](https://cdn.modrinth.com/data/Q5xngUCT/images/c92133fb6b725457c33b9815c6ad70864ea115dc.png)

### Dyemaking Table
Allows you to create advanced dye types and customize how colors behave on dyed items.

Dye Core & Dye Types

A **Dye Core** defines how a dye behaves visually. Some dye types go beyond static colors and add animations, shaders, or environmental effects.

Examples include:
– **Rainbow** – cycles through colors over time
– **Ender** – end-portal-style rendering
– **Biome** – adapts to biome grass color
– **Glowstone / Redstone / Lamp** – light-emitting dyes
– **Speed / Height-based dyes** – react to player movement or position
– **Pride dyes** – apply fixed pride flag patterns

### Dyeing Table
Used to apply dyes and stencils to items. Certain stencils are limited to specific items, which is shown in tooltips.

WeatherControl

# 🌤️ WeatherControl
Give your players control over their environment with a polished, interactive voting system. No more annoying command spam—just clean visuals and fair mechanics.

## 💎 Features
* **Interactive Chat Buttons:** Clickable `[ YES ]` and `[ NO ]` buttons for easy participation.
* **Dynamic BossBar:** A real-time progress bar shows the vote percentage and time remaining.
* **Smart Threshold:** Votes only pass with a **75% majority**, preventing trolls from controlling the weather.
* **Donator Veto:** Give your ranked players the power to instantly cancel a vote with `/wvote veto`.
* **Global Cooldowns:** Prevent voting fatigue with a configurable 10-minute wait between votes.
* **Fully Configurable:** Every message and timer can be customized in the `config.yml`.

## 🛠 Commands & Permissions
* `/wvote ` – Start a vote. (`weathercontrol.vote`)
* `/wvote yes|no` – Cast your vote manually. (`weathercontrol.vote`)
* `/wvote veto` – Instantly cancel a vote. (`weathercontrol.veto`)

## ⚙️ Setup
1. Drop the JAR into your plugins folder.
2. Restart your server.
3. Configure your desired cooldowns and messages in `plugins/WeatherControl/config.yml`.

## Donate (optional)
If you enjoy my work and want to support development:
[Donate via PayPal](https://paypal.me/Marbzy) 💖

## 💬 Official Support & Community

Need help with this plugin?

Join the official **Marbzy Discord server** for:

– 🛠 Direct plugin support (ticket system)
– 🐛 Bug reports
– 💡 Feature suggestions
– 🧪 Beta testing access
– 📢 Update announcements

👉 **[Join the Discord](https://discord.gg/SRHP79Jhzt)**


*Developed by Marbzy*

Weather Watch

# Weather Watch
Weather Watch is a mod that focuses on matching the in-game weather to the real life weather in your area. If it’s stormy outside, it’ll match that in game!

# Features
## Weather Sync
Uses WeatherAPI to find the weather data at the location specified by the server’s IP, or just your IP if you’re playing singleplayer. (Wonder what cool things you could find with a VPN?)
![The weather in my area is sunny, therefore the in game weather is clear](https://cdn.modrinth.com/data/cached_images/8e01ca31a449e1efb90c6ad7d33020d394f9fbdf.png)
![The weather in my friends area in rainy, therefore it’s raining in her game](https://cdn.modrinth.com/data/cached_images/edaf924546eb7caddf402e81f9aaa35597d5841d_0.webp)
*First screenshot from my area, second screenshot from a friends area*
## Season Sync
Weather Watch supports [Serene Seasons](https://modrinth.com/mod/serene-seasons/versions), and will set the season depending on the month your system clock is set to. It works in a 3 month per season system, with December-February* being winter and so on.
![The season is late winter because it is February](https://cdn.modrinth.com/data/cached_images/59d4940aa3d0d8234cee92c1949fdff4f485fee1.png)
![The season is late spring because it is May](https://cdn.modrinth.com/data/cached_images/f326f53044d8d1a536d09efd909e3ebc5f0d6cd9.png)

The months corresponding to each season depends on the hemisphere you’re located in*
*In multiplayer, it’ll simply refer to the server clock*
## Time Sync (off by default)
Optionally, Weather Watch can also sync the day time to your system clock as well! This isn’t recommended for traditional survival, as it does remove the ability to skip to day with a bed. However, this is great for peaceful or otherwise roleplay experiences!
![Minecraft equivalent to 4:25 PM](https://cdn.modrinth.com/data/cached_images/ad015bb105b5d7961aabe77f84b268877bf82609_0.webp)
![Replace this with a description](https://cdn.modrinth.com/data/cached_images/378bf8b8bacb8b7896bd6821adccb9de445801d4_0.webp)
*In multiplayer, it’ll simply refer to the server clock*

*I did realize while writing this that time will literally just fast forward/rewind for American Daylight Savings, but that’s really funny actually*

# Config
## `syncWeather` (default: true)
Toggles the weather syncing capabilities

## `syncSeasons` (default: true)
Toggles the season syncing capabilities, does nothing if [Serene Seasons](https://modrinth.com/mod/serene-seasons/versions) is not installed

## `syncTime` (default: false)
Toggles the time syncing capabilities

## `syncMoonPhase` (default: true)
Toggles syncing moon phase with the moon phase in your area

## `ip-override` (default: “server”)
Overrides the IP fed into the location fetcher. When set to `server`, it will simply use the server’s public IP.

# FAQ
## “Doesn’t this cause privacy concerns?”
I thought of this while making it and made sure that no info is public to anyone that wouldn’t already know it. All features that rely on location tracking do so using the already public server IP, the only info connected clients recieve is if it should be raining, what season it should be, and the time of day.
## “Can I use this in singleplayer?”
As long as you’re connected to the internet, yes. This mod requires an internet connection to access WeatherAPI and to track the server location. Time and season sync should work regardless though.
## “Why isn’t this mod open source?”
As much as I would love to make this one open source, I cannot do so until I find a way to hide my WeatherAPI key from plain sight. Keeping it closed source is the easiest way I can think of to both hide my API key and not require users to provide their own for now. While the cost is small, excessive calls to the API does cost me some money, and that can be easily manipulated if someone wants to.

WearThat

# Wearthat

Why shouldn’t you be able to wear that?

[![Badge showing the amount of downloads on modrinth](https://img.shields.io/badge/dynamic/json?color=2d2d2d&colorA=5da545&label=&suffix=%20downloads%20&query=downloads&url=https://api.modrinth.com/v2/project/FT20RvJM&style=flat-square&logo=modrinth&logoColor=2d2d2d)](https://modrinth.com/mod/wearthat)
[![Badge showing the amount of downloads on curseforge](https://cf.way2muchnoise.eu/full_840388_downloads.svg?badge_style=flat)](https://www.curseforge.com/minecraft/mc-mods/wearthat)
[![Badge linking to issues on github](https://img.shields.io/badge/dynamic/json?query=value&url=https%3A%2F%2Fimg.shields.io%2Fgithub%2Fissues-raw%2Fchyzman%2Fwearthat.json&label=&logo=github&color=2d2d2d&style=flat-square&labelColor=6e5494&logoColor=2d2d2d&suffix=%20issues)](https://github.com/chyzman/wearthat/issues)

WearThat allows you wear any item in any armor slot. You heard me right. Any item. That includes tools, blocks, weapons, other armor pieces, etc. They even render!

This mod should theoretically work client side but only the rendering will work, It is required on server in order for people to actually equip any item normally.

We Need More Milk

### “Yes, you can milk your friends.”
## 📌 Description📌
**We Need More Milk** is a lightweight and intentionally absurd mod for Minecraft Forge
that lets you use an iron bucket to right-click on other players… and milk them.

Yes. Really.

This mod adds a **single**, **simple** feature:
👉 When you **right-click** another player with an empty iron bucket, you’ll get a _Milk Bucket_ in return — as if the player were a cow.
No extra items, no GUIs, and no configuration files. It’s just one function, executed cleanly.
## 🧭 Purpose & Appeal
### This mod is perfect for:
– **Meme servers**
– **Silly interactions**
– ~~Or just that one weird friend on your server who really wanted this feature.~~
It’s a humorous addition designed to encourage laughter, surprise, and chaotic multiplayer moments — while being fully compatible with vanilla gameplay and other mods.
## ✅ Features
– **Milking players with an iron bucket**
– **No extra dependencies**
– **Zero performance impact**
– **Multiplayer-friendly**
– **Works on dedicated and LAN servers**
## 🔧 Compatibility
Forge Only(The author is quite lazy XD)
## 📥 Installation
### Install like any other Forge mod:
1. **Download your mod loader**
2. **Place WeNeedMoreMilk.jar into your mods folde**
3. **Launch the game and start milking your friends**
## 🐛 Bug Reporting
If something goes wrong (unlikely, but still), you can send the feedback to my email.~~(I’m not very good at using GitHub.)~~
Don’t forget to provide your modloader version and any logs!
## ⚠️ Disclaimer
**_This mod is satire. No actual humans were harmed (or milked) in the making of this code._**

KawaMood’s Waystones

# **KawaMood’s Waystones**

**Avoid unnecessary long journeys!**

Craft and place Waystones on your points of interest.
A survival-friendly and multiplayer-friendly way to quickly travel in your world!

# 🪄Introduction

## What is Waystones?

KawaMood’s Waystones is a data pack inspired by [BlayTheNinth’s famous Waystones mod](https://www.curseforge.com/minecraft/mc-mods/waystones).
Waystones allow you to travel quickly from one point to another in your world, and within any dimension (including custom ones). Unlike the mod, waystones do not appear naturally within the world, they require to be crafted.

## How to craft and use a waystone?

Waystones can be crafted using:

– 1x **Lodestone**
– 2x **Amethyst Shards**
– 1x **Eye of Ender**
– and 3x base blocks

Base blocks to use depend on the desired variant of waystone to get:

– **Andesite** for Andesite Waystone
– **Sandstone** for Sand Waystone
– **Nether Bricks** for Nether Waystone
– **Mossy Stone Bricks** for Mossy Waystone
– **Cobbled Deepslate** for Deepslate Waystone
– **Copper Block** for Copper Waystone
– **Prismarine Bricks** for Prismarine Waystone
– **Tuff** for Tuff Waystone
– **Red Sandstone** for Red Sand Waystone
– **Quartz Block** for Quartz Waystone

![Waystones recipes](https://cdn.modrinth.com/data/cached_images/c39228a4b7442b35dfce064f78c56fc180500d28.gif)

Before placing your waystone, it is recommended to rename it within an **Anvil**. This will allow you to retrieve your points correspondance more easily within the waystones list.
Waystones icons in the list depends on the block they have been placed on, so you can also chose identifiable ones. These icons also handle NBT (meaning you can place a waystone on a custom player head to have custom icons).

Right-clicking the top part of a waystone will open it. The GUI shows you the list of other waystones that are visible to you on the two first lines, and a toolbar to edit the waystones attributes or navigate within pages in the bottom line.

By left-clicking on a waystone from the list, you will be teleported to it. Note that you will also take with you your vehicle (horse, boat…) and the mobs you currently have on leash. So wasytones also allow you to transport mobs within several locations more fastly.

I recommend you to [watch the featured video](https://youtu.be/QDvdj5lfnIY) for better explanations and examples.

# 🔖Attributes

In the toolbar of the waystones GUI, you can see three buttons in the middle. If you’re a waystone manager or the owner of the current waystone, these buttons will allow you to edit their attributes. Other players won’t of course be able to edit its attributes.

Other buttons may appear on the bottom-left and bottom-right corners if you have placed many waystones in your world. They are the pagination buttons.

![waystone gui](https://cdn.modrinth.com/data/cached_images/72f81dd3a15b06e2730298b66dce4004636aeb06.jpeg)

You can discover below the influence of each attributes.

## Visibility

The first button concerns the waystone’s visibility. There are three available values:

– If set on **discoverable**, other players won’t see it until they interact with it at least once, meaning they need to discover the waystone’s location first.
– If set on **private**, other player won’t be able to see this waystone from the list. Only you (the owner), waystones managers, and players you share this waystones with (see “Shared With” below) will be able to see it.
If set on **public**, every players will be able to see it from the list.

## Protection

The second button concerns the waystone’s protection. There are two available values:

– By default, the **protection** is **disabled**. In this mode, the waystone can be destroyed by anyone, including natural events, like explosions from creepers or TNT.
– If **enabled**, only the owner of the waystone and waystones managers will be able to remove it.

## Shared With

Finally, the third button concerns the waystone’s “**Shared With**” list.
It allows you to set a list of players with whom to share this waystone if its visibility is set on **private**.

To do this, you need to place in the slot a **Writable Book** containing your friends’ nicknames. Unfortunately, due to technical constraints from the game, you will need to write a single nickname per page in the book. But you can add as many players as you want.

Be careful, too, with case. For example, “kawamood” does not equal “KawaMood”. Be also sure to not inadvertently add extra spaces or line break at the end or the beggining of the page.

Once you’ve made your list, you can place it in the slot, and the waystone will save it
You can remove or edit it at any time by clicking on it!

# 💼 Manager Role

The **manager** role allows you to bypass most of restrictive rules introduced by waystones mechanics or settings.
It also allows you to see and edit every waystones, even private ones that you don’t own.

The role can **be given** or **removed** from any player using these commands respectively:

“`
/tag add pk.waystones.manager
/tag remove pk.waystones.manager
“`

Example – Granting the manager role to the player named “Bob”

“`
/tag Bob add pk.waystones.manager
“`

# ⚙️Settings

XP Consumption

If enabled, players will need to consume levels to travel from waystone to waystone. The cost can either be fixed, or calculated according to the distance between the used and targeted waystones. The setting can be enabled using the following command:

“`
/function pk_waystones:settings/xp_consumption/set {value:, mode:}
“`

This command use two parameters:

– **mode** waits for either “fixed”, “manhattan” or “euclidian”. Both last are method used to calculate the distance between waystones.
– [“manhattan”](https://en.wikipedia.org/wiki/Taxicab_geometry) relies on the game’s grid, meaning if a waystone is located at 0, 64, 0 and the other at 1000, 64, 1000, the setting will consider both waystone are separated by 2000 blocks.
– [“euclidian”](https://en.wikipedia.org/wiki/Euclidean_distance) refers to the distance in flight. Meaning if we took this same example above, the process will draw a vector between both waystones and calculate its length. The distance will then be around 1414 blocks.
– **value** depends on the mode.
– With the “fixed” mode, it waits for the amount of level the player would consume to teleport from a waystone to any other ones.
– With “euclidian” or “manhattan” mode, it waits as value the count of blocks you want the player to consume a level for in order to teleport. Meaning for example, if two waystones are separated by 5000 blocks, and I set a value of 1000, it will require 5 levels to teleport to it.
– In any case, if this value is set to 0 or a negative value, it will disable the setting.

_Example – Make teleportation require 5 levels no matter the targeted waystone:_

“`
/function pk_waystones:settings/xp_consumption/set {mode:”fixed”, value:5}
“`

_Example – Consume 1 level for 1000 blocks, with the euclidian calculation method:_

“`
/function pk_waystones:settings/xp_consumption/set {mode:”euclidian”, value:1000}
“`

_Example – Disable the setting completely:_

“`
/function pk_waystones:settings/xp_consumption/set {mode:”euclidian”, value:0}
“`

If needed, you can also be informed of the current mode and value using the following command:

“`
/function pk_waystones:settings/xp_consumption/get
“`

Blacklisted Dimensions

This setting lets you manage **dimensions** from the **blacklist**. The blacklist handles vanilla dimensions, but it also works with custom dimensions from data packs or [Multiverse](https://dev.bukkit.org/projects/multiverse-core) worlds.
In a blacklisted dimension, only managers will be able to place waystones, regular players will not be able to.
You can **add**, **remove** dimensions to the blacklist or get the **list** of currently blacklisted dimensions using the following commands respectively:

“`
/function pk_waystones:settings/blacklist_dimensions/add {dimension:}
/function pk_waystones:settings/blacklist_dimensions/remove {dimension:}
/function pk_waystones:settings/blacklist_dimensions/list
“`

Example – Disallow waystones placement in the Nether

“`
/function pk_waystones:settings/blacklist_dimensions/add {dimension:”minecraft:the_nether”}
“`

📜 Note: in order to see the dimension id you’re currently in, you can open the [debug screen (F3)](https://minecraft.wiki/w/Debug_screen), the dimension id is shown below the coordinates on the left side.

Display Waystones Nameplates

If enabled, floating nameplates will appear above waystones, allowing you to identify them more easily. You can **enable**, **disable** or **get** the current state of the setting using these following commands respectively:

“`
/function pk_waystones:settings/display_nameplates/true
/function pk_waystones:settings/display_nameplates/false
/function pk_waystones:settings/display_nameplates/get
“`

Render of nameplates in game:
![display_nameplates](https://cdn.modrinth.com/data/cached_images/d188c6b3313c9c6f9d80633bd21286e36dee9730.jpeg)

Ignore Monsters Nearby

If enabled, it **ignores** monsters being around the waystones. If disabled, it prevents players to use a waystone if there are monsters nearby. It is the same principle as the beds use-prevention system. Note that this setting is **enabled** by default (monsters are ignored).
You can **enable**, **disable** or **get** the current state of the setting using these following commands respectively:

“`
/function pk_waystones:settings/ignore_monsters/true
/function pk_waystones:settings/ignore_monsters/false
/function pk_waystones:settings/ignore_monsters/get
“`

Legacy Textures

If enabled, the data pack will use regular **blocks textures** for waystones instead of the custom ones.
It can be useful if you’re using high-resolution resources packs. You can **enable**, **disable** or **get** the current state of the setting using these following commands respectively:

“`
/function pk_waystones:settings/legacy_textures/true
/function pk_waystones:settings/legacy_textures/false
/function pk_waystones:settings/legacy_textures/get
“`

Render of textures in game:
![legacy textures](https://cdn.modrinth.com/data/cached_images/f03818f83a96fa339d17f794c8f4596f0a48be6b.jpeg)

Default visibility

This setting lets you change the default visibility of a waystone on placement.
Initially, the default visibility mode is “discoverable”. You can set another visibility using the following command, where visibility can be either “discoverable”, “private” or “public”:

“`
/function pk_waystones:settings/default_visibility/set {visibility:}
“`

Example – Set the default waystones visibility on “private”

“`
/function pk_waystones:settings/default_visibility/set {visibility:”private”}
“`

If needed, you can also be informed of the current default visibility using the following command:

“`
/pk_waystones:settings/default_visibility/get
“`

Default protection

This setting lets you change the default protection of a waystone on placement.
Initially, the default protection mode is “disabled”. You can change it using the following command, where the `protection` value can be either “disabled” or “enabled”.

To enabled the protection by default:

“`
/function pk_waystones:settings/default_protection/set {protection:”enabled”}
“`

Or to disable it back:

“`
/function pk_waystones:settings/default_protection/set {protection:”disabled”}
“`

If needed, you can also be informed of the current default protection using the following command:

“`
/pk_waystones:settings/default_protection/get
“`

Limit Waystones Per Player/Server

You can chose how many waystones **players** can own at most. This amount is relative to each player, meaning if you set it to 5, every players will be able to place 5 waystones each. It can be done using the following command, where “**count**” waits for the desired amount of waystones:

“`
/function pk_waystones:settings/limit_per_player/set {count:}
“`

_Example – Allow players to own a maximal amount of 5 waystones each_

“`
/function pk_waystones:settings/limit_per_player/set {count:5}
“`

You can also **disable** this setting using a **count** of -1 or less, meaning players will be able to place as many waystones as they want:

“`
/function pk_waystones:settings/limit_per_player/set {count:-1}
“`

Or **get** the current limit using the following command:

“`
/function pk_waystones:settings/limit_per_player/get
“`

Additionnally, you can also limit the amount of waystone your **server** can contain. This is the exact same principle as above, but instead of being a limit per player, it is a global limit. The commands follow the same scheme to **set**, **disable** or **get** this amount respectively:

“`
/function pk_waystones:settings/limit_per_server/set {count:}
/function pk_waystones:settings/limit_per_server/set -1
/function pk_waystones:settings/limit_per_server/get
“`

You can also combine both settings if you want to set a limit per player but also a global limit on the server.

Hide coordinates in the waystones GUI

If enabled, no player will be able to see waystones location from the GUI, unless they have the manager role. You can **enable**, **disable** or **get** the current state of the setting using these following commands respectively:

“`
/function pk_waystones:settings/hide_coordinates/true
/function pk_waystones:settings/hide_coordinates/false
/function pk_waystones:settings/hide_coordinates/get
“`

Note that another command is usable by non-op players and allow them to hide coordinates of waystones for their own character only. _Refer to the “Other commands” section below._

List public waystones first in the waystones GUI

If enabled, public waystones will be listed first in waystones GUI. By default, public waystones display after discovered and private waystones. You can **enable**, **disable** or **get** the current state of the setting using these following commands respectively:

“`
/function pk_waystones:settings/list_public_waystones_first/true
/function pk_waystones:settings/list_public_waystones_first/false
/function pk_waystones:settings/list_public_waystones_first/get
“`

Lootable Delay (for Worldguard and WG-like plugins compatiblity)

This setting allows you to adjust the minimal delay before a waystone can drop itself when broken. It is useful if you use a plugin that provides an area protection system.

For example with WorldGuard, the plugin will store and give back the last item the player tried to place. But if the player try to place a waystone, it will still exist for a single tick and drop itself while being removed by the plugin. In order to avoid that, you can set a lootable delay of 2 ticks.

By default, no delay is checked. You can **set** a delay (in ticks) with the following command:

“`
/function pk_waystones:settings/lootable_delay/set {delay:}
“`

_Example – Set a delay of 2 ticks:_

“`
/function pk_waystones:settings/lootable_delay/set {delay:2}
“`

Or **get** the current delay using the following command:

“`
/function pk_waystones:settings/lootable_delay/get
“`

Tick GUI items clear (security for non-vanilla servers)

External versions such as Paper sometimes involve weird behavior with containers.
In order to avoid potential items dupe issues with them, you can tick the system that clear items players may have managed to take from a waystone’s GUI using this setting.

You can **enable**, **disable** or **get** the current state of this setting using these following commands respectively:

“`
/function pk_waystones:settings/tick_clear_gui_items/true
/function pk_waystones:settings/tick_clear_gui_items/false
/function pk_waystones:settings/tick_clear_gui_items/get
“`

Permission: Change “Visibility” Attribute

These permissions allows you to restrict players from using specific visibility values. Note that managers are immune to this effect and will always be able to change any attributes from any waystone. By default, players are allowed to set any visibility to their waystone.

In order to **allow**, **disallow** players to set the **public visibility** on their waystones, or if you want to **get** the current state of this permission, you can use the following commands respectively:

“`
/function pk_waystones:settings/permissions/change/visibility/public/true
/function pk_waystones:settings/permissions/change/visibility/public/false
/function pk_waystones:settings/permissions/change/visibility/public/get
“`

Same as above but for the **private visibility**:

“`
/function pk_waystones:settings/permissions/change/visibility/private/true
/function pk_waystones:settings/permissions/change/visibility/private/false
/function pk_waystones:settings/permissions/change/visibility/private/get
“`

Same as above again, but for the **discover visibility**:

“`
/function pk_waystones:settings/permissions/change/visibility/private/true
/function pk_waystones:settings/permissions/change/visibility/private/false
/function pk_waystones:settings/permissions/change/visibility/private/get
“`

Finally you can also directly toggle or get all visibilily-based permissions at once:

“`
/function pk_waystones:settings/permissions/change/visibility/all/true
/function pk_waystones:settings/permissions/change/visibility/all/false
/function pk_waystones:settings/permissions/change/visibility/all/get
“`

Permission: Change “Protection” Attribute

This permission allows you to restrict players from changing the **protection** attribute of their own waystones. Note that managers are immune to this effect and will always be able to change any attributes from any waystone. By default, players are allowed to change the protection of their waystone.

In order to **allow**, **disallow** players to change their waystones **protection** attribute, or if you want to **get** the current state of this permission, you can use the following commands respectively:

“`
/function pk_waystones:settings/permissions/change/protection/true
/function pk_waystones:settings/permissions/change/protection/false
/function pk_waystones:settings/permissions/change/protection/get
“`

Permission: Change “Shared With” Attribute

This permission allows you to restrict players from changing the **shared with** attribute of their own waystones. Note that managers are immune to this effect and will always be able to change any attributes from any waystone. By default, players are allowed to change the “shared with” list of their waystones.

In order to **allow**, **disallow** players to change their waystones **shared with** attribute, or if you want to **get** the current state of this permission, you can use the following commands respectively:

“`
/function pk_waystones:settings/permissions/change/shared_with/true
/function pk_waystones:settings/permissions/change/shared_with/false
/function pk_waystones:settings/permissions/change/shared_with/get
“`

Permission: Tp In Other Dimensions

If disabled, this permission force players to only see waystones being in the same dimension as themselves from a waystone’s GUI. It can be useful if you don’t want players to be able to teleport between different [Multiverse](https://dev.bukkit.org/projects/multiverse-core) worlds.
This permission is enabled by default, meaning players can teleport in any dimensions.

You can **enable**, **disable** or **get** the current state of the permission using these following commands respectively:

“`
/function pk_waystones:settings/permissions/tp/in_other_dimensions/true
/function pk_waystones:settings/permissions/tp/in_other_dimensions/false
/function pk_waystones:settings/permissions/tp/in_other_dimensions/get
“`

Permission: Tp In Fight

If disabled, this permission prevents players to teleport if they took a damage from a living entity (as source) in the last 15 seconds. It can be useful if you don’t want players to escape a fight by using a waystone on PvP servers.
This permission is enabled by default, meaning players can teleport at any moment.

You can **enable**, **disable** or **get** the current state of the permission using these following commands respectively:

“`
/function pk_waystones:settings/permissions/tp/in_fight/true
/function pk_waystones:settings/permissions/tp/in_fight/false
/function pk_waystones:settings/permissions/tp/in_fight/get
“`

# 🧰 Other Commands

The data pack also provides some handy commands. Some of them are usable by both operators and regular players.

Give yourself a waystone

If you are an operator of your server or if cheats are enabled in your single-player world, you can give yourself a waystone of any variant using these following commands:
“`
/function pk_waystones:cmd/give/waystone/andesite
/function pk_waystones:cmd/give/waystone/sand
/function pk_waystones:cmd/give/waystone/deepslate
/function pk_waystones:cmd/give/waystone/nether
/function pk_waystones:cmd/give/waystone/mossy
“`

Place a waystone

This command allows you to directly place a waystone with a specific set of attributes.
Placing a waystone directly can be useful for data packs developers who want for example to implement natural waystones generation within their own structures.

The function waits for a `waystone` entry containing the waystone’s data.
All properties can be omitted, as they would simply get their default values if they are missing. But there are two particular contexts you need to know:

– If you don’t specify an `owner`, it will be considered as “unclaimed”. Unclaimed waystones will automatically be owned by the first player who uses it.
– Coordinates will be defined from the context of location of the command. **However**: if you don’t specify a `location` > `dimension`, the waystone will be registered in the overworld. This is due to the fact we unfortunately can’t dynamically detect in what potential custom dimension a command is ran if the executor isn’t a player.

This command must always use an already **loaded area** as context of location. You can forceload the relative chunk upstream and unload it afterwards if you want to set it at a hard location.

Here are several examples of commands:

Set a waystone with all default properties values at the current location:

“`
/function pk_waystones:cmd/setblock/waystone {waystone:{}}
“`

Set a deepslate unclaimed waystone at the current location:

“`
/function pk_waystones:cmd/setblock/waystone {waystone:{variant:”deepslate”}}
“`

Set an unclaimed, protected and public waystone at 0 80 0 in the End:

“`
/execute in minecraft:the_end positioned 0 80 0 run forceload add ~ ~
/execute in minecraft:the_end positioned 0 80 0 run function pk_waystones:cmd/setblock/waystone {waystone:{location:{dimension:”minecraft:the_end”},protected:true,visibility:”public”}}
/execute in minecraft:the_end positioned 0 80 0 run forceload remove ~ ~
“`

And here is the data structure for the `waystone` parameter:

“`
waystone (compound)
├─ id (int): The id of the Waystone
├─ variant (string): The variant of the Waystone (regular, sand, deepslate, nether…)
├─ name (text component): The name of the Waystone
├─ owner (4 int array): The UUID of the owner
├─ location (compound): Location of the Waystone.
│ └─ dimension (string): dimension id, “minecraft:overworld” by default.
├─ discovered_by (array): list of players having interacted with this Waystone
│ └─ (compound)
│ └─ uuid (4 int array): UUID of a player
├─ shared_with (array): list of players the waystone is shared with
│ └─ (compound)
│ ├─ uuid (4 int array): UUID of a player
│ └─ name (string): If the player isn’t in the database yet, store its name instead
├─ protected (boolean): Weather the waystone is protected (true) or not (false)
├─ visibility (string): Can be “public”, “private” or “discover”
└─ render_item (compound):
└─ id (string): id of item to render the Waystone in the Waystones list
└─ tag (compound) [1.20.4 or less]: optional tags of the item
└─ components (compound) [1.20.5 or more]: optional components of the item
“`

Reorder waystones in the list

This command can be used to reorganise the waystones in the list by providing a list of ids as parameter:

“`
/function pk_waystones:cmd/database/waystones/reorder {ids:}
“`

Where `` is a list of ids ordered in the new expected order.
You’re not forced to add all waystones ids in the new list: missing ones will be automatically added at the end of the list, in the order they previously were (_so you don’t need to include private and discoverable waystones of your players)_.
For example if I currently have waystones with the ids 1-2-3-4-5-6-7-8, and I want to make them appear in the order 4-2-1-3-5-6-7-8, I can use this following command:

“`
/function pk_waystones:cmd/database/waystones/reorder {ids:[4,2,1,3]}
“`

Note that regular players will still see their private waystones first, then discovered waystones, then the public ones. Players with the `pk.waystones.manager` tag will see all waystones in the order they have been created/reorder.

You can find the ids of waystones by granting yourself the manager role (using `/tag @s add pk.waystones.manager`) and hovering them in a waystone’s GUI. They will be displayed in their tooltip.

## Usable by any (non-op) player

Hide locations from the waystones list

It allows you to hide coordinates of waystones from waystones’ GUI. It can be useful if you’re a video maker who plays on a PvP server, and don’t want to leak your waystones’ location.
Of course, this setting is player-specific. Meaning by changing it, it will only apply for yourself (not for other players).
Using these following commands, if the value is set on **1**, waystones’ location will be hidden, if set on **2**, waystones’ location will show:

“`
/trigger pk.waystones.trigger.hide_coordinates set 1
/trigger pk.waystones.trigger.hide_coordinates set 2
“`

Forget a discovered or private waystone

It allows you to forget about a waystone you have discovered or a private one you have been registered on, so this same waystone won’t appear in the list anymore, until you discover it you or you are registered back in the “shared with” list.
It can be used when you want to clean your waystones list.

“`
/trigger pk.waystones.trigger.forget_waystone set
“`

Where `` expects the id of a waystone.
For example, trying to forget about the waystone with id `100`:

“`
/trigger pk.waystones.trigger.forget_waystone set 100
“`

You can see waytones id by using one to open the GUI, then hovering the waystone to forgot, the id will be shown in the tooltip. If you want to forget about the currently used waystone, its id is shown after the waystone name on the top of the GUI.

## Troubleshooting

Recreate all waystones from the database

If ever waystones have been broken accidentally (using a `kill @e` command for example) you can run the following command to recreate all waystones from the database:

“`
/function pk_waystones:cmd/debug/recreate_all_waystones
“`

The process will automatically remove all remaining entities and blocks of broken waystones before placing fresh ones. All data (id, owner, type, attributes…) will be preserved.
It may take some time for it to complete, so be sure to get the message telling the process ended successfully before interacting with or placing a waystone.

Force waystones to unlock

On server that use external tools like Paper, Spigot… some desynch can happen, and block may not update their blockstates correctly. If ever you get the message “This waystone is currently used by someone else” when no-body is actually using it, you can unlock the loaded waystones using the following command:

“`
/function pk_waystones:cmd/debug/force_waystones_to_unlock
“`

## Features for other data packs

Public hooks

Public hooks are [function tags](https://minecraft.wiki/w/Function_tag_(Java_Edition)) which allow you to run your own functions before or after a specific event happen from the waystones data pack by adding them in the corresponding tag.

They have been added to help people wanting to introduce their own features without altering the original code, so the waystones data pack can be safely updated without the need of editing it back to introduce your own features every time you install another version.

Public hooks can be found in `data/pk_waystones/tags/function/public` and follow a `_` name pattern. They must be added following these same paths (including the `pk_waystone` namespace) and names within your data pack.

Here are listed public hooks:


**gui_action_**:
Triggers after/before an action is performed by clicking an item from a Waystones GUI.
– Context: Current controller (waystone marker entity), at itself.
– The user has the `pk.current.player` tag.

**gui_button_build_**:
Triggers after/before a button (item data) is built to populate the Waystones GUI.
– Context: Current controller (waystone marker entity), at itself.
– The user has the `pk.current.player` tag.

**waystone_close_**:
Triggers after/before a player closes a waystones GUI.
– Context: Current controller (waystone marker entity), at itself.
– The user has the `pk.current.player` tag.

**waystone_open_**:
Triggers after/before a player opens a waystones GUI.
– Context: The user who oppened the waystone (also have the `pk.current.player` tag), at the waystone’s location aligned xyz.
– The marker of the opened waystone can be found using `@e[type=marker,tag=pk.waystones.waystone.controller,dx=0,limit=1]`.

**waystone_place_**:
Triggers after/before a waystone is placed.
– Context: Any, at the waystone’s location aligned xyz.
– In the case the waystone is placed by a player, the context is this player.
– In the “after” hook, the controlle of the placed waystone can be found using `@e[type=marker,tag=pk.waystones.waystone.controller,dx=0,limit=1]`.

**waystone_remove_**:
Triggers after/before a waystone is removed.
– Context: Current controller (waystone marker entity), at itself.

**waystone_replace_**:
Triggers after/before a waystone is replaced (with the “recreating” feature).
– Context: Any, at the waystone’s location aligned xyz.

# 🔧 Update from V.2

Since **V.3.2.5** (MC 1.20.3) and **V.3.3.2** (MC 1.20.5), the data pack provides a process to convert all existing waystones from **V.2** to **V.3**.
In order to do so, follow the steps written below. _I would also advice you to create a backup of your world using V.2, in case another data pack / plugin / mod accidentally breaks the updating process._

1. Remove the waystones V.2 data pack from the `/datapacks/` folder of your world, **don’t** uninstall V.2 upstream with the uninstall function, as you should keep its database.
2. Upgrade your world to the desired version of Minecraft if needed, if it isn’t already done.
3. Install Waystones V.3 by placing it in the `/datapacks/` forlder, then using `/reload` in game.
4. Use this following command: `/function pk_waystones:cmd/database/update_from_v2` and wait for the updating process to end. If it managed to do so, you should get a message “Updated all Waystones from Waystones (V.2) successfully”.

**Note**: On 1.20.3 to 1.20.4, this process can’t unfortunatelly resolve owners name from the waystones owners to set them in the V.3 database. So you would need to wait for them to join back your world to see them as owner in the waystones tooltip from the GUI.
On 1.20.5 or more, players names will be automatically added to the V.3 database.

# 💄 Optional Resources Pack

In order to embellish your experience, a **resources pack** providing models for Waystones items and GUI has been made by our graphist-artist contributor, **Lordphiphi**. You can download it from here: [Waystones Resources (for Waystones V.3) – by Lordphiphi](https://modrinth.com/resourcepack/waystones-rp).

See render

![Waystones Resources Pack Render](https://cdn.modrinth.com/data/cached_images/c920a7ebae704526da95deff72bd4100755394dd.jpeg)

# 🧹 Uninstall

Waystones comes with an automatic uninstallation process. Running it will:

– Remove all waystones that have been placed in your world, in every dimensions
– Remove all scores and storage specific to the Waystones data pack
– If there is no more KawaMood data packs installed, also remove all common scores and storages

The uninstalling process may take some seconds to complete. Be sure to wait for the message telling you that you can safely remove the data pack from your world’s folder before doing it.

The command to start the uninstalling process is the following one:

“`
/function pk_waystones:cmd/uninstall
“`

# ❓ F.A.Q

Do I need to install a resources pack?

No, this data pack doesn’t strictly require a resources pack. It provides a rather-intuitive GUI by itself, and use players heads to render custom textures.

However, a **resources pack** providing models for Waystones items and GUI has been made by our graphist-artist contributor, **Lordphiphi**. You can download it from here: [Waystones Resources (for Waystones V.3) – by Lordphiphi](https://modrinth.com/resourcepack/waystones-rp).

The texture of the block shows regular player heads, how can I fix that?

You need to be connected to the internet the first time you use a new type of waystone. The textures of the player heads that are used to create their looks are indeed loaded and cached on the client-side, from (old or current) players skins that are stored on a Mojang server.

If you accidentally used a content that required to be online the first time you use it, and now see regular players heads instead of the expected texture, you can still go in the “.minecraft/assets/skins/” folder, then sort the sub-folders by date, and delete some recent folders. Once that is done, if your game was already started, you will need to restart it to update the cached content.

⚠️ **Exceptional issue on 1.20.2**: Players heads can sometimes show default player skins (Steve & co.) rather than its actual texture although the whole cache folder are cleared. This is actually an [known issue](https://bugs.mojang.com/browse/MC-264966) from the game itself that struggle to load a texture depending on the signature’s value. This issue has been fixed on 1.20.3.

Waystones said they are already used, how to fix it?

Waystones can stay locked if their block container didn’t update their blockstate correctly when players closed them. Such issues can happen sometimes, especially on modified versions such as Paper or Spigot. In order to force waystones to unlock, there is a debug command:

“`
/function pk_waystones:cmd/debug/force_waystones_to_unlock
“`

# 🪠 Report an issue

If you encountered an issue with this data pack, preferably join the [Discord server](https://discord.com/invite/w8s9XWgN6v), and open a post in the dedicated **#data-pack-issues** channel to describe your problem. Please, don’t forget to provide all necessary informations including:

– The Minecraft version you’re using.
– The version of the concerned data pack you’re using.
– If you’re using any modified version like Forge, Paper or Spigot.
– If you do, the plugins or mods you’re using that may alter the functioning of data packs.
– The list of other data packs you’re using, if you have others.
– A clear description of your issue, and a way to reproduce it.
– If necessary, a video or a screenshot of the issue in game.

Before doing that, please read the F.A.Q. section just above. The issue you’re facing may be a common one, and a way to fix it may already have been provided in it.

# 📌 Other links

Thank you for using Waystones! It makes me happy to know people are enjoying it.
If you want to support its development and the development of other data packs, you can support me on my other social networks:

– [Youtube](https://www.youtube.com/@KawaMood/)
– [Planet Minecraft](https://www.planetminecraft.com/member/kawamood/)
– Or if you’re in a generous mood, I accept donation on [paypal](https://paypal.me/KawaMood) or [buy me a kawa](https://www.buymeacoffee.com/kawamood) (slang term for “coffee”)!

Waystone Needs Netherite

Since forever, i’ve had this idea of the waystones being unbreakable.
having them like so would make any location that has a natural one… well, prime real estate, wouldn’t it?
This isn’t exactly that, since that would take away too much of the mod’s flexibility

Instead, this is an elegant compromise.

![Example of the datapack working](https://cdn.modrinth.com/data/cached_images/4b2d82befcd5db4ed68a44e79cc5832fabf28179.png)

### This datapack makes waystones only breakable with netherite pickaxes.
That’s pretty much it.
Compatible with the forge, fabric, and neoforge versions of the mod that have [issue No. 1127](https://github.com/TwelveIterations/Waystones/issues/1127) fixed.
At release it’s only 1.20.1, 1.21.1 and 1.21.11, but all future versions should work fine and dandy as well.

The waystones aren’t mineable only with netherite of course, if any mod adds other tier 4 pickaxes, they will work just as well.

the resourcepack from screenshots is the amazing [Fresh Waystones Retexture](https://modrinth.com/resourcepack/fresh-waystones-texture).

# Hope you enjoy!

Waypoint color changer

This datapack can be used on vanilla servers for friends. Everyone can change waypoint color using command: **/trigger dpdf_menu**. Now you can choose 1 color out of 16. If you need to translate the datapack into another language, you can create a resourcepack and add translations for the following fields:
– Waypoint.color.{color name} (Use vanilla color names: red, green, light_purple, dark_red, etc)
– Color.choose

WaveBack

WaveBack is a PaperMC plugin that lets you customize join and leave messages while rewarding players for welcoming others back to the server.

Players can say greetings like wb, welcome back, wbb, or dubs after a returning player joins. WaveBack detects those greetings during a configurable time window and rewards greeters with commands, items, or Vault economy money.

### Features
– Custom join and leave messages
– MiniMessage formatting support
– Optional join and leave sounds
– Optional join and leave fireworks
– Welcome-back greeting rewards
– Configurable greeting phrases
– Reward bundles with commands, items, and Vault money
– Cooldowns and reward caps to reduce spam
– Minimum playtime checks to help prevent alt farming
– Optional Vault support
– Reload command: `/wb reload`
– Solo reward test command: `/wb testreward`

### Requirements
– PaperMC 1.21.x
– Java 21
– Vault is optional and only needed for money rewards

### Configuration
WaveBack generates a config at:

“`
plugins/WaveBack/config.yml
“`

Messages use MiniMessage formatting, so you can use colors like ``, ``, hex colors, decorations, and gradients.

Example greeting rewards can include:
– Giving money through Vault
– Giving custom-named items
– Running console commands

### Commands

“`
/waveback reload or /wb reload
/wb testreward
“`

### Permissions

“`
waveback.reload
waveback.greet
waveback.bypasscooldown
waveback.testreward
“`