WorldChatter

![Logo](https://cdn.modrinth.com/data/cached_images/db19283d184a807a4677411d14457fb5bec24cab.png)

# Security Features

### Anti-Swear
This helps to prevent any sensitive or inappropriate words from your chat to help keep it clean.
It has the ability to customize words (BlackList / WhiteList).

### Anti-Repeat
This prevents players from repeating the same words or letters over and over again.

### Anti-ADs
It will block any type of IPs or URLs from the player.

### Anti-Caps
This helps to prevent the player from sending large uppercased messages in the chat!

# Configurations!

### Detection Messages!
If anyone triggers one of the security settings, you will be alerted, and they will be alerted as well.

“`yaml
DetectedMessage: “&c%player_name%’s message got detected by the following flags &e[%flags%] n———-> &6%message%” # Change how the detection message is sent
DetectedPlayerMessage: “&cYou have been detected by the following flags &e[%flags%]” # Changes how the message is sent to the player (set it to “” if you don’t want to send it)
“`

### Switch Messages (For Proxies)
This will notify everyone in the server or the previous and current server when a player switches from one server to another!

“`yaml
# This switch message is only available for both BungeeCord & Velocity
SwitchSettings:
enabled: true
global: true # false is just the current server & previous server / true all the servers
premessage: “&a%player_name% &ehas switched from &6%previous_server% &eto &f%current_server%”
comessage: “&a%player_name% &ehas arrived from &6%previous_server%”
“`

### Others

“`yaml
SpamMessage: “&cYour message is blocked by the &eAnti-Spamn&7Remaining time: %duration% seconds” # Changes how the anti-spam message is sent (set it to “” if you don’t want to send it)
ChatClearMessage: “&eThe Chat has been cleared by &a%sender%” # Changes how the cleared chat message gets sent
NoPermissionMessage: “&eYou’re not allowed to use this command!”
“`

# Utilities Features!

### Aliases
This feature enhances WorldChatter’s placeholders by allowing customization of player and place names using two new placeholders: `{player_name}` and `{player_place}`.

“`yaml
aliases:
enabled: true
place:
world: “&aOverworld&r”
player:
OmarOmar93: “OmarOmar93 &o&eTest Omar Yes”
“`

### Chat Locking
This allows staff or console to lock or unlock the chat using `wc lock`!

“`yaml
ChatLockMessage:
enabled: true
public: true # TRUE | Shows the message to everyone or FALSE | just the sender
locked: “&eThe Chat is now &cLOCKED &eby &a%sender%”
unlocked: “&eThe Chat is now &aUNLOCKED &eby &a%sender%”
currently: “&eThe Chat is Currently &clocked”
“`

### Clear Chat!
Clear the chat with `wc clear`!

### Custom Join and Quit Messages!
Customize join and quit messages with special permissions for certain players.

“`yaml
Join:
enabled: true
level: 1 # 1 is just current place / 2 the whole server
place: “world” # place to send the message
message: “&a%player_name% &fhas joined the game!”
permmode: true # Checks to use the permissions mode to send messages / disabled will use default message
permissions:
“admin”:
permissions: [ “worldchatter.control”, “*” ]
message: “&a%player_name% &fhas joined the gamen&e[Teleport to %player_name%]”

Quit:
enabled: true
level: 1 # 1 is just current place / 2 the whole server
place: “world” # place to send the message – type %place% to make it the last player’s place
message: “&a%player_name% &fhas left the game!”
permmode: false # Checks to use the permissions below to show a different message or no!
permissions:
“admin”:
permissions: [ “worldchatter.control”, “*” ]
message: “&a%player_name% &fhas left the game &8You have nothing to do to that player :P”
“`

### Notifications
Customize notification sounds for detections.

“`yaml
notification:
enabled: true
staff: # notification detection for staff
sound: “BLOCK_NOTE_BLOCK_PLING” # the sound to play as the notification you can find it here by https://helpch.at/docs/SERVER_VERSION_GOES_HERE/index.html?org/bukkit/Sound.html
volume: 1 # volume of the sound
pitch: 1 # pitch of the sound
player: # notification detection to the player
sound: “BLOCK_NOTE_BLOCK_PLING”
volume: 1
pitch: 1
“`

### Channels
Introducing the new **Channels** Feature!
Add Places or Players **or both if you would like!** Into each other and priortize them from top to bottom according to the importance of each channel!
“`yml
GlobalSending: true
channels:
admin:
players:
– “OmarOmar93”
– “HoneySalted”
– “Notch”
places:
– “World”
– “Lobby”
main:
places:
– “world”
– “world_nether”
– “world_the_end”
“`

### Debug Mode – (Implemented in Channels only Currently)
The New Debug mode is what prints out more information about WorldChatter! like, Warnings, Errors and infos for each action happening inside the plugin!

“`yml
debug:
enabled: true
info: “&7[&9WorldChatter Debugger &r| Info&7]&r ”
warning: “&7[&9WorldChatter Debugger &r| &eWarning&7]&e ”
error: “&7[&9WorldChatter Debugger &r| &4Error&7]&4 ”
“`

![WorldChatterAPI](https://i.ibb.co/PzZBQqM/image.png)

# WorldChatterAPI
Learn more about the API and its capabilities by [Clicking here!](https://github.com/OmarOmar93/WorldChatterAddonChecker)

# Donate!
If you’d like to support the development of WorldChatter and other projects, consider donating!
[Buy me a Coffee!](https://www.paypal.com/paypalme/omaomar93)

# Other Projects!
[WorldCaster](https://modrinth.com/plugin/worldcaster)
Standalone Broadcast Add-on

# Supported Plugins!
– PlaceholderAPI
– Multiverse-Core
– ItemsAdder (With PlaceholderAPI)
– Luckperms
– And other plug-ins that have PlaceholderAPI’s placeholder!

# Massive thank you to:
– **Abdelaziz189356** – For the help with 2.0, 2.1, and 3.0 being possible, 3.0 Tester!
– **yousife_7aloly** – The tester for 2.0!
– **FastEverlast** – The Tester for 2.4!
– **Fabrizio Santana, 4zy** – 3.0 Testers

There are lots of additional features to explore!
Thank you for taking the time to read this and use the plugin!

WorldChat

[![AshCraft](https://cdn.modrinth.com/data/cached_images/a75887d69106ed9eb2dd595176121f279523f184_0.webp)](https://www.ashcraft.cz/)

The WorldChat plugin enhances the chat functionality by ensuring that players can only send and receive chat messages within the same world. This means that if a player is in the Nether, their chat messages will only be visible to other players in the Nether. Similarly, if a player is in the End, their chat messages will only be visible to other players in the End. This feature promotes more immersive and relevant conversations based on the player’s current environment. [More detailed description here.](https://ashsource.ashkiano.com/resource-detail/19)

Check out AshSource for more plugins and resources [ashsource.ashkiano.com](https://ashsource.ashkiano.com/)

Are you a developer?
Join AshSource to share your work with a growing community! Get started now at [ashsource.ashkiano.com](https://ashsource.ashkiano.com/)

WorldBlocker

# WorldBlocker – World Access Control Plugin

**WorldBlocker** lets server admins block players and entities from entering specified worlds, with customizable messages and hot-reload support via `/worldblocker reload`.

**Join our** [**Discord**](https://discord.gg/YGzA4UxzFB) — discover other cool plugins, suggest new features, or get help with configurations.

### Features ✨

– **World Entry Blocking**
Prevent players and/or entities from entering designated worlds.

– **Immune Permissions**
Grant `worldblocker.immune` to bypass world restrictions, or ignore immunity entirely.

– **Custom Messages**
Send configurable MiniMessage alerts when entry is denied.

– **Entity Control**
Optionally block all entities (mobs, items, etc.) except players.

– **Hot Reload**
Reload the plugin config on-the-fly with `/worldblocker reload`.

### Main config (`config.yml`) ⚙️

config.yml

“`yaml
# Join our discord – https://discord.gg/YGzA4UxzFB you can find other cool plugins there.
# Permissions
# “worldblocker.reload” – permission required to use “/worldblocker reload” command

# blocks all entities except players
blockAllEntities: false

# if true, all players without immunePermission will be blocked
blockPlayers: true

# if true, all players will be blocked, even if they have immunePermission
ignoreImmunePermission: false
immunePermission: “worldblocker.immune”

# if true, player will get message when they fail to enter a blocked world
doSendMessage: true
# supports MiniMessage
canNotEnterWorld: “You can’t enter this world!”

noPermissionToReload: “You don’t have permission to reload Config!”
configReloaded: “Config reloaded!”

blockedWorlds:
# – “world”
# – “world_nether”
# – “world_the_end”
““

### Permissions 🔐

| Permission Node | Description |
| ——————— | ———————————- |
| `worldblocker.immune` | Bypass world entry restrictions |
| `worldblocker.reload` | Allows reloading the plugin config |

### Commands 📟

| Command | Description |
| ———————- | ——————————- |
| `/worldblocker reload` | Reload the plugin configuration |

WorldAccessBlocker

# 🌍 WorldAccessBlocker

[![Servers](https://img.shields.io/bstats/servers/26810?color=blue&label=Servers)](https://bstats.org/plugin/bukkit/WorldAccessBlocker/26810)
[![Players](https://img.shields.io/bstats/players/26810?color=red&label=Players)](https://bstats.org/plugin/bukkit/WorldAccessBlocker/26810)

**WorldAccessBlocker** is a lightweight and highly configurable Minecraft plugin for **Bukkit**, **Spigot**, **Paper**, and **Folia** servers that lets you **restrict access to the Nether, the End, and elytra usage** until specific dates.

Perfect for managing **progression-based survival**, **seasonal events**, or **timed unlocks** — with multi-language support, date-based control, and live reloads.

## ✨ Features

– 🔥 **Restrict Nether Access**
Prevent players from entering the Nether until a specified date.

– 🚫 **Block End Portal Activation**
Disallow activation of End portals before a configured time.

– 🛑 **Disable Elytra Usage**
Cancels gliding and disables elytra flight until allowed.

– 🌍 **Multi-Language Support**
Includes `English` and `Russian` by default — customizable via `.yml`.

– 📅 **Date-Based Restrictions**
Set unlock dates using `YYYY-MM-DD HH:MM:SS` (UTC).

– ♻️ **Live Reload**
Instantly reload configs and language files with `/wabreload`.

– ⚠️ **Folia Compatibility Notices**
Alerts admins about partial feature support on Folia servers.

## 📦 Installation

1. Download `WorldAccessBlocker.jar`.
2. Place it in your server’s `/plugins` folder.
3. Start or reload the server.
4. Configure `config.yml` and language files in:
`plugins/WorldAccessBlocker/lang/`

## ⚙️ Configuration Example

“`yaml

# ===================================================================
# WorldAccessBlocker v0.7
# ===================================================================

# Message language: “ru” or “en”
language: “ru”

# Server time zone (important for recurring!)
# List: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
time-zone: “Europe/Moscow”

# ===================================================================
# Nether
# ===================================================================
nether:
disable: true
# If recurring is NO, this date is used (until when it is blocked)
restriction-date: “2025-03-10 00:00:00”
disable-portal-creation: true
disable-teleportation: true

# NEW: schedule by day and time
# If this block is present, restriction-date is IGNORED
recurring:
periods:
# Example 1: only on Sundays from 3:00 p.m. to 5:00 p.m.
– days: [SUNDAY]
start-time: “3:00 p.m.”
end-time: “5:00 p.m.”

# Example 2: all day on weekends
– days: [SATURDAY, SUNDAY]

# Example 3: every Monday from 6:00 p.m. to 11:59 p.m.
– days: [MONDAY]
start-time: “6:00 p.m.”
end-time: “11:59 p.m.”

“`

World Randomizer

# World Randomizer

## Description:
This server plugin randomizes the blocks of new chunks when they are generated.

![Image comparing normal and shuffled world](https://cdn.modrinth.com/data/cached_images/7fe91889dc02d06d4eb00f0a7ccbd88d25f40e36_0.webp)

## Replacement Rules
– each block type is always replaced with the same random block type for the same seed.
– no unsupported blocks (like floating torches)
– air is not replaced
– solid blocks are only replaced with solid blocks
– non-occluding blocks are only replaced with non-occluding blocks
– gravity blocks are only replaced by gravity blocks
– fluids are only replaced by fluids

Excluded Blocks

Change: The block is replaced by a other random block

Place: The block is used to replace other blocks

|Block Type |change|place| Reason |
|—————————-|:-:|:-:|——————–|
| Air | x |✓| Gameplay |
| Banners | x | x |Lag |
| (Calibrated-) Sculk Sensor | x | x |Lag |
| End Portal Frame | x |✓| Gameplay |
| Heads & Skulls | x | x |Lag |
| Interactable Blocks | x | x |Lag, Loot Chest |
| Nether Portal | x | x |Lag, Gameplay |
| Observer | x | x |Lag |
| (Trial-) Spawner | x | x |Lag, Nether Fortress|

## Goal
The goal of this challenge is to kill the Ender Dragon, but players are not limited to this.

## Mapping Command
### Description: Displays how a block is shuffled
Usage: “`/mapping []“` / “`/map []“`
### Parameter:
– “`“` – Enter block type you want to check
– None – Uses the item held by executor
### Example:
“` /mapping minecraft:diamond_ore “` =>

“`
Mapping for diamond ore:
diamond ore is replaced with end stone
dirt is replaced with diamond ore
“`

## FAQ:

**Q:** My client / server is lagging

**A:** This plugin significantly slows down the world generation progress.
Additionaly some unfortunate shuffles can cause a lot of lag.

## Credits:
I wasn’t inspired by any particular source, but this has been done multiple times before

World TP Plus

**🌍 World TP Plus**
**A simple cross-dimension teleport plugin for Paper 1.21+**

**By RetroSapien**

**✨ Features**

* Extends `/tp [dimension]` with an optional 4th argument:

* `overworld` *(default)*
* `nether`
* `end`
* Fully preserves vanilla `/tp` behavior and permissions when no dimension is specified
* Tab completion for dimensions
* Friendly error message for unknown dimensions
* Works from both console and in-game

**📋 Usage Examples**

* `/tp 0 80 0`
→ Vanilla teleport in current world

* `/tp 0 80 0 nether`
→ Teleport to same coords in the Nether

* `/tp Steve 10 70 10 end`
→ Teleport player “Steve” to coords in the End

**🔐 Permissions**

* `minecraft.command.tp` *(same as vanilla)*
Requires permission level 2

**⚙️ Requirements**

* **Java 21+**
* **Paper 1.21+**
Works on forks that support the Paper API

**📦 Installation**

1. Drop the JAR into your `plugins/` folder
2. Restart or reload your server

**🔗 Links**

* Discord for support : [https://discord.gg/tHeFGB7Et4](https://discord.gg/tHeFGB7Et4)

*Crafted with ❤️ by RetroSapien*

World Reset

# WorldReset Plugin

A lightweight Minecraft (Paper/Spigot) plugin that allows you to reset a world via command or automatically after a configurable timer.

The world can be regenerated with:
– the **same seed** (default)
– or a **random new seed**

A reset always requires a **server restart**.

## Features

– Reset world via command
– Same seed or random seed (configurable via command)
– Automatic reset timer (minutes)
– Timer persists across restarts (`timer.yml`)
– Enable/disable timer via command
– Tab completion
– Permission-based access

## Commands

### Reset world manually

/worldreset now

### Change seed mode

/worldreset seed same
/worldreset seed random

### Timer control

/worldreset timer set
/worldreset timer enable
/worldreset timer disable

## Permissions

worldreset.use
(Default: OP)

## How it works

1. Players are teleported out of the world
2. World is unloaded
3. World folder is deleted
4. Server shuts down
5. On restart, the world is regenerated

World Permissions

This plugin provide to set perms to change world

USAGE
First, add your world’s name to config (plugin also can do it automatically but if it don’t, add manually).

Second, set value of world as true (if you set as false, all players can spawn that world because plugin will not check that world).

Then, reload plugin (/reloadworldperms)

Finally, give permission “worldperms.world.%WORLDNAME%” to player who you want to enter that world

World Levels

![](https://gitlab.com/ASTRELION/worldlevels/-/raw/main/assets/banner.png)

Work together to level up your multiplayer Minecraft server to unlock features and rewards!

## Features

– Level up your multiplayer server by gaining XP through normal gameplay
– **Reward your players** for leveling up the world with:
– Items
– Increasing the world border
– Permissions, groups, and currency (requires [Vault][vault])
– **Control what players can access** based on World Level:
– Building Nether or The End portals
– Mining blocks
– Placing blocks
– Crafting items
– **Trigger any command** upon world level up
– Highly [**customizable**][config] with a full config [schema][schema]
– Add custom XP sources globally or at a per-level basis
– Scale leveling exactly to your liking
– Specify groups of levels per-world or groups of worlds
– Exclude certain worlds from the plugin
– Support for infinite level scaling and rewards
– Optionally reward offline or new players for level gains
– **Customizable messages**, with [MiniMessage][minimessage]
formatting support
– Optionally add [Vault]() for **full
integration with your permission and economy plugin** of
choice

![Usage GIF](https://gitlab.com/ASTRELION/worldlevels/-/raw/main/assets/usage.gif)

*GIF showing leveling up, Nether access, and world border increases*

### Customizable Server XP Bar

![Server XP bar](https://gitlab.com/ASTRELION/worldlevels/-/raw/main/assets/bossbar.png)

### Level Up Alerts

Level up alerts

## Configuration

**This plugin likely requires configuration before it can be useful to you.**
The default configuration file will be created for you, but it can also be found
[here][config]. If your text editor
supports [JSON/YAML schemas](https://json-schema.org/understanding-json-schema/about),
you will also get configuration autocomplete suggestions and linting.

You can find a more detailed example
config [here](https://gitlab.com/ASTRELION/worldlevels/-/blob/main/src/main/resources/example.config.yml).

### Config Examples

*These are partial configurations for the `levels` section specifically.*

How level ranges and XP requirements work

“`yaml
levels:
‘1’:
# level 1 should always require 0 XP
xp: 0.0
‘2’:
# level 2 requires 100 XP to get to
xp: 100.0
‘3’:
xpStep:
# level 3 adds 50 to the previous requirement, making it 150 XP to get to
add: 50.0
‘4’:
xpStep:
# level 4 multiplies the previous requirement by 2, making it 300 XP to get to
mult: 2.0
‘5-10’:
xpStep:
# levels 5-10 adds 50 to the previous requirement, making the following for each:
# level 5 requires 350
# level 6 requires 400
# level 7 requires 450
# level 8 requires 500
# level 9 requires 550
# level 10 requires 600
add: 50.0
’11-‘:
# Level 11 and beyond (scales infinitely) requires 1000 XP to get to
xp: 1000.0
“`

Lock the Nether and The End at the start, and unlock them when the
server reaches level 2 and 3, respectively

“`yaml
levels:
‘1’:
xp: 0.0
# Prevent Nether and End portals from being used initially
allowEnd: false
allowNether: false
‘2’:
xp: 2000.0
# Unlock Nether portals at level 2
allowNether: true
titles:
– title: Nether unlocked!
‘3’:
xp: 4000.0
# Unlock End portals at level 3
allowEnd: true
titles:
– title: The End unlocked!
‘4-‘:
xp: 8000.0
“`

Award players with different items, and unlock crafting and mining

“`yaml
levels:
‘1’:
xp: 0.0
items:
IRON_INGOT: 1
levels:
crafting:
DIAMOND_HELMET: false
DIAMOND_CHESTPLATE: false
DIAMOND_LEGGINGS: false
DIAMOND_BOOTS: false
mining:
DIAMOND_ORE: false
placing:
DIAMOND_ORE: false
‘2’:
xp: 2000.0
items:
COPPER_INGOT: 1
# crafting: is omitted here because by default all crafting is allowed
# so, at level 2, players can craft diamond armor
# mining: and placing: are omitted for the same reason
‘3-4’:
xp: 4000.0
items:
# Since ‘3-4’ is a range, this awards a diamond for both levels 3 and 4
DIAMOND: 1
‘5-‘:
xp: 8000.0
items:
# Since ‘5-‘ scales infinitely, this awards a netherite ingot every single
# level from 5 onwards
NETHERITE_INGOT: 1
“`

How you can manipulate the world border for each level.

“`yaml
levels:
‘1’:
xp: 0.0
# Sets the initial world border to have a radius of 128, centered at 0,0
worldBorder:
radius: 128
center:
x: 0
z: 0
‘2’:
xp: 2000.0
# Sets the radius of the world border for achieving level 2 at 256
worldBorder:
radius: 256
‘3’:
xp: 4000.0
# Adds the radius of the world border for achieving level 3 to the previous
# radius, making it 512
worldBorder:
radiusStep:
add: 256
‘4-‘:
xp: 8000.0
# Multiplies the radius of the world border for achieving level 4 and onward
# to the previous radius, making it 768, 1152, 1728, and so on
worldBorder:
radiusStep:
mult: 1.5
“`

Award permissions, groups, and currency for certain levels (requires Vault)

“`yaml
levels:
‘1’:
xp: 0.0
‘2’:
xp: 2000.0
# Assigns ‘mypermission.one’ to all players
permissions:
– “mypermission.one”
# Gives all players 50.0 currency
currency:
add: 50.0
‘3’:
xp: 4000.0
# Assigns ‘mypermission.two’ to all players
permissions:
– “mypermission.two”
# Multiply all player’s current currency by 2
currency:
mult: 2.0
‘4’:
xp: 8000.0
# Adds all players to the ‘mygroup’ group
groups:
– “mygroup”
“`

Run commands on level up

“`yaml
levels:
‘1’:
xp: 0.0
‘2’:
xp: 2000.0
# Runs the ‘time set day’ command via the server console
commands:
– “time set day”
‘3’:
xp: 4000.0
# Runs the ‘say You leveled up!’ command via the server console
commands:
– “say You leveled up!”
“`

Require the server’s players to collectively mine a certain amount of
different tiers of ore to get to the next level.

“`yaml
levels:
‘1’:
xp: 0.0
xpWeights:
# This makes it so no vanilla XP sources contribute world level XP
DEFAULT: 0.0
customXPSources:
mineIgnoresSilkTouch: true # set this to prevent XP gains for mining with silk touch
playerMine:
COAL_ORE: 1 # Awards 1 XP for each coal ore mined
‘2’:
xp: 100.0 # requires 100 coal ore mined (defined in level 1) to get this level
xpWeights:
DEFAULT: 0.0
customXPSources:
mineIgnoresSilkTouch: true
playerMine:
COPPER_ORE: 1
‘3’:
xp: 200.0 # requires 200 copper ore mined (defined in level 2) to get this level
xpWeights:
DEFAULT: 0.0
customXPSources:
mineIgnoresSilkTouch: true
playerMine:
IRON_ORE: 1
‘4’:
xp: 300.0 # requires 300 iron ore mined (defined in level 3) to get this level
xpWeights:
DEFAULT: 0.0
customXPSources:
mineIgnoresSilkTouch: true
playerMine:
DIAMOND_ORE: 1
‘5’:
xp: 400.0 # requires 400 diamond ore mined (defined in level 4) to get this level
“`

Specify levels based on world and share rewards

“`yaml
groups:
WorldGroup:
name: The Overworld
# This group only applies to the world named “world”
worlds:
– world
# When this group levels up, it will share items and permission rewards to players in
# the groups listed
rewardOtherGroups:
– NetherGroup
– EndGroup
# Rewards players past rewards when they join the group for the first time
rewardNewPlayers: true
# Rewards players past rewards when they join the group after being offline
rewardOffline: true
levels:
“1-“:
xp: 0.0
xpStep:
add: 100.0
# Every level, this will reward every player in any of the groups a
# gold ingot, due to rewardOtherGroups
items:
GOLD_INGOT: 1
NetherGroup:
name: The Nether
worlds:
– world_nether
rewardOtherGroups:
– WorldGroup
– EndGroup
levels:
“1-“:
xp: 0.0
xpStep:
add: 100.0
EndGroup:
name: The End
worlds:
– world_the_end
rewardOtherGroups:
– NetherGroup
– WorldGroup
levels:
“1-“:
xp: 0.0
xpStep:
add: 100.0
“`

## Messages

The default messages file will be created for you, but it can also be found
[here][messages]. If your text editor
supports [JSON/YAML schemas](https://json-schema.org/understanding-json-schema/about),
you will also get configuration autocomplete suggestions and linting.

Messages support [MiniMessage][minimessage], and have the following custom replacements
available:

| Replacement | Description |
|————————————-|—————————————————————–|
| `` | Current world level |
| `` | Amount of current XP relative to the current level requirements |
| `` | XP requirement to reach the next level |
| `` | Absolute total current XP |
| `` | Name of the level group |
| `` | Plugin version |
| `` | Plugin Modrinth URL |
| `` | Makes inner text clickable for the Modrinth URL |

## Permissions

| Permission | Description |
|—————————–|————————————————————————————|
| `worldlevels.earn.exempt` | Prohibit the player from gaining World Levels XP (by default, all players earn XP) |
| `worldlevels.help` | Access to the `worldlevels help` command |
| `worldlevels.reload` | Access to the `worldlevels reload` command |
| `worldlevels.reset.all` | Access to the `worldlevels reset all` command |
| `worldlevels.reset.rewards` | Access to the `worldlevels reset rewards` command |
| `worldlevels.update` | Access to the `worldlevels update` command |
| `worldlevels.version` | Access to the `worldlevels version` command |
| `worldlevels.xp.add` | Access to the `worldlevels xp add` command |
| `worldlevels.xp.get` | Access to the `worldlevels xp` command |
| `worldlevels.xp.set` | Access to the `worldlevels xp set` command |

## Commands

All the following are prefixed with `worldlevels`. For example, `worldlevels help`.

*Arguments in `<>` are required, arguments in `[]` are optional.*

| Command | Description |
|————————–|——————————————————————————————————-|
| `help` | Shows a list of commands |
| `reload` | Reload the plugin configuration and save from file |
| `xp` | Gets the current XP total and level |
| `xp add ` | Add the given amount of XP to the total, supports negatives |
| `xp set ` | Sets the total XP to the given amount |
| `update` | Checks for plugin updates |
| `version` | Prints the plugin version |
| `reset all` | Resets total XP back to 0 and allows all players to regain rewards |
| `reset rewards [player]` | Resets rewards for the given player (or all players), allowing them to regain rewards for past levels |

## Metrics

Usage statistics

This plugin collects anonymized usage statistics via [bStats][bstats]. bStats is
used by many plugins and provides useful statistics for development, but it can
be disabled in the bStats `config.yml` for your server.

In addition to the default stats collected, World Levels also counts a few
stats to better gauge how the plugin is used. These are:

– The number of level groups your server uses
– The average number of worlds in each level group
– The average number of levels in each level group

[config]: https://gitlab.com/ASTRELION/worldlevels/-/blob/main/src/main/resources/config.yml

[messages]: https://gitlab.com/ASTRELION/worldlevels/-/blob/main/src/main/resources/messages.yml

[minimessage]: https://docs.papermc.io/adventure/minimessage/

[schema]: https://gitlab.com/ASTRELION/worldlevels/-/raw/main/src/main/resources/config-schema.json

[vault]: https://github.com/milkbowl/Vault

[bstats]: https://bstats.org/

World Download

# DownloadPlugin for Minecraft

DownloadPlugin is a Minecraft server plugin that allows players to download the world they are currently in as a ZIP file. This is especially useful for large building servers or personal worlds.

## Features

– Download any world with `/download ` command.
– Only allows downloads from worlds that are not blocked.
– Generates ZIP files named as `...zip`.
– Provides clickable download links in chat.
– Logs all downloads if enabled.
– Automatically deletes old downloads based on expiration time.
– Deletes all ZIPs on server start to prevent storage issues.
– Supports internal HTTP port and public port via tunnels (like Playit.gg).

## Commands
/download

– ``: A numeric code chosen by the player to make the ZIP filename unique. Example: `/download 12345`
– Blocked worlds cannot be downloaded.

## Configuration (`config.yml`)

“`yaml
blocked-worlds:
– world_nether
– world_the_end
log-downloads: true
log-file: downloads.log
http-port: 8100 # Internal port where the HTTP server runs
public-port: 27429 # Public port that players use to access downloads
download-expiration: 3600 # Expiration time in seconds for automatic deletion
public-ip: “147.185.221.23” # Server’s public IP address or domain