Wrenchest

### Functionality

Wrenchest adds a single item, the Chest Wrench. With it you can connect and disconnect chests without having to break and place them again.
To connect two chests together, just rightclick a chest with the chest wrench on the side that is facing towards the chest you want to connect to. Both chests have to be single chests, otherwise connecting will not work. To disconnect two chests, just rightclick any of the chests with the chest wrench. Note, that you don’t have to take out any items, they will stay in the chests when you dis-/connect them.
You can control which way the connected chests will be facing by clicking the corresponding area on the respective side. This is shown in the video below. Note, that when the crosshair is placed further back on the side, the chests will be facing away from the player. When the crosshair is placed further towards the front, the chests will face towards the player.

### Showcase
Here are two short videos of the mod in action. The texture is missing in the second video, because it was created during development. The functionality of the mod is still the same, however.

### Recipe
The chest wrench can be crafted as shown below. It has 256 uses and can be repaired with iron ingots in the anvil.
![Recipe](https://i.imgur.com/oUOibGP.png)

### FAQ
**Q:** Can you backport this to xxx?
**A:** No.

**Q:** Does this work with ender chests?
**A:** No, as ender chests can only be single chests.

**Q:** Does this work with trapped chests?
**A:** Yes. In fact, it should work with any chest that extends the vanilla chest.

**Q:** Does this work with modded chests?
**A:** See previous answer.

Thanks to julian on MMD for the name.

You are allowed to use this mod in any modpack.

WorlPreGen

# WorlPreGen

**WorlPreGen** is a powerful and modern chunk pre-generation plugin for Paper servers.

It allows you to pre-generate your worlds efficiently while keeping full control over performance, monitoring, and task management.

## Features

– Multi-world chunk pre-generation
– Run multiple generation tasks simultaneously
– Circle-based generation (more shapes coming soon)
– Full task control: start, pause, resume, cancel
– Detailed real-time progress tracking
– Console monitoring with live stats:
– progress %
– chunks processed / remaining
– chunks per second
– ETA (estimated time remaining)
– TPS protection system (auto pause/resume)
– Persistent tasks (auto save & resume after restart)
– Admin GUI with:
– world overview
– task details
– quick controls
– Modrinth update checker
– Fully configurable (performance, tracking, notifications)
– Clean and optimized codebase for stability

## Why WorlPreGen?

WorlPreGen focuses on **clarity, control and performance**.

Unlike traditional tools, it provides:
– better monitoring
– cleaner admin experience
– real-time feedback
– safer generation handling

## Commands

– `/wpg ui` → Open admin GUI
– `/wpg start` → Start generation
– `/wpg pause` → Pause task
– `/wpg resume` → Resume task
– `/wpg cancel` → Cancel task
– `/wpg status` → View task status

## Permissions

– `worlpregen.admin`
– `worlpregen.notify`

**WorlPreGen is actively developed.**

WorldSystem



A plugin to give every player his own world

1.18 – 1.21.5 Support

***

About

WorldSystem is a plugin where every player can get a world.


There they can do anything they want without creating stress in a single world.

The world owner can also add other players and manage their permissions on his world.

When a player creates a new world you can also set a template which will then be cloned.

Features

Features with (option) need to be enabled in the config.yml

How to help make this resource better

Info

Many answers about optimization and installation are available on the wiki.

WorldSlim

# WorldSlim

Reduce Minecraft world file size by automatically cleaning chunks that players barely visit. Three layers of defense catch what vanilla autosave would otherwise commit to disk.

## What it does

Modern Minecraft (1.18+) keeps chunks loaded much longer than a player’s view distance, and autosave writes them all to disk regardless of activity. WorldSlim hooks every layer of that pipeline:

1. **ChunkUnloadListener** — when a chunk does unload, intercept the save if `InhabitedTime` is low.
2. **AutosaveShield** *(new in 2.0)* — every 2 seconds, pre-emptively clear the dirty flag on loaded low-`InhabitedTime` chunks so autosave skips them.
3. **ChunkCleaner** — periodically rewrite region files, removing chunks that slipped through the first two layers.

Player activity (placing blocks, attacking mobs, opening containers, picking up / dropping items) marks chunks as “force-save” so they survive cleanup.

## Highlights

– **Three-layer architecture** — unload + autosave + region rewrite. Aggressive without being unsafe.
– **File-based ChunkRegistry** — managed/force-save state stored in `plugins/WorldSlim/data/`, survives server restarts and Leaf/Moonrise’s chunk-PDC strip. Crash-safe (lost marks degrade to “leave it alone”).
– **Aggressive mode** *(`cleanup.aggressive: true`)* — restores the pre-1.0.6 cleanup logic, achieves 90%+ cleanup rate on fresh servers. Off by default to protect builds on established worlds.
– **Diagnostics** — `/worldslim diagnose` for runtime counters, `/worldslim scan` for raw-NBT inspection of any region file, `/worldslim chunk` for full decision-tree of the chunk you’re standing in.
– **Daily-rotating file logger** at `plugins/WorldSlim/logs/`, configurable level.
– **Config migration** *(new in 2.0.1)* — new fields auto-injected on upgrade, preserving your edits and comments.
– **Async + bounded** — every disk operation runs off the main thread, with a 5-second timeout that safely skips when the server is busy.

## Compatibility

| Server | PDC Persistence | Registry | AutosaveShield |
|——–|—————–|———-|—————-|
| Paper 1.21.x | Yes | Yes | Yes |
| Purpur 1.21.x | Yes | Yes | Yes |
| Folia 1.21.x | Yes | Yes | Partial |
| Leaves 1.21.x | Yes | Yes | Yes |
| Leaf 1.21.x | Stripped | **Load-bearing** | Limited |

Requires Minecraft 1.21.x and Java 21.

## Commands

| Command | Description |
|———|————-|
| `/worldslim status` | Show plugin status and active configuration |
| `/worldslim stats` | Total chunks scanned/cleaned and space saved |
| `/worldslim chunk` | Full decision tree for the chunk you’re standing in |
| `/worldslim cleanup` | Run a cleanup pass immediately |
| `/worldslim diagnose [here]` | Runtime diagnostic snapshot. Append `here` for current-chunk details |
| `/worldslim scan` | Parse the current region file’s raw NBT and report what tags survived |
| `/worldslim reload` | Reload `config.yml` (also runs config migration) |
| `/worldslim reset` | Reset cleanup statistics |

Aliased to `/ws`. Permission: `worldslim.admin` for mutating commands; `worldslim.use` for the read-only ones.

## Quick start

1. Drop the jar in `plugins/`, restart.
2. Default config is conservative (preserves any chunks that look pre-existing). Works without configuration on most servers.
3. **On a fresh server** — set `cleanup.aggressive: true` for the best cleanup rate.
4. **On an established server with builds** — leave `aggressive: false` (default) and let the registry track new chunks going forward.

## Configuration highlights

“`yaml
# Chunk lifetime threshold. Below this, chunks may be cleaned.
# Default 1200 ticks = 60 seconds.
min-inhabited-time: 1200

cleanup:
interval-minutes: 30
run-on-startup: false
# Pre-1.0.6 cleanup behavior. Highly recommended for fresh servers.
aggressive: false

autosave-shield:
enabled: true
interval-ticks: 40 # 2s

logging:
file-enabled: true
level: INFO # DEBUG / INFO / WARN / ERROR

worlds:
enabled: [] # if non-empty, ONLY these worlds are managed
disabled: [] # always-skipped worlds
“`

Full default config (with all comments) is generated on first run.

## Reporting issues

Please include:
– `/worldslim diagnose` screenshot
– Latest log from `plugins/WorldSlim/logs/`
– Server type and version

世界存档优化器(自动异步保存)

# WorldSaveOptimizer

## 概述Overview
专为bukkit 1.21+服务器设计的插件,优化世界保存功能。
A plugin designed specifically for Bukkit 1.21 servers, optimizing world-saving functionality.

## 功能特性Features
– 异步自动保存:每5分钟自动保存,减少卡顿
– 可禁用原版自动保存机制
– 手动保存支持
– 灵活配置系统
– 完整命令和权限系统
– Asynchronous auto-save: automatically saves every 5 minutes to reduce lag
– Option to disable the original auto-save mechanism
– Manual save supported
– Flexible configuration system
– Complete command and permission system

## 系统要求System Requirements
– bukkit 1.21+
– Java 21+
– 建议2GB RAM Recommended 2GB RAM

## 安装方法Installation method
1. 将WorldSaveOptimizer.jar放入plugins目录-Place WorldSaveOptimizer.jar into the plugins directory
2. 重启服务器或使用/reload命令-Restart the server or use the /reload command

## 配置文件Configuration File
首次启动后在plugins/WorldSaveOptimizer/config.yml生成配置The configuration will be generated in plugins/WorldSaveOptimizer/config.yml after the first launch:

`yaml
save-interval-minutes: 5
save-message: “&aWorld has been auto-saved”
disable-default-autosave: true
log-saves: true
save-on-stop: true
`

可能出现配置文件不生成、内容空白等错误,这时,你只需到
“`
https://github.com/ABC114514114514114514/WorldSaveOptimizer/blob/main/%E7%A4%BA%E4%BE%8B%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.yml
“`
_
复制初始配置内容到**config.yml**

Errors such as the configuration file not being generated or appearing empty may occur. In this case, you just need to go to
“`
https://github.com/ABC114514114514114514/WorldSaveOptimizer/blob/main/ExampleConfig.yml
“`
and copy the initial configuration content into **config.yml**

## 命令使用
需要worldsaveoptimizer.admin权限(OP默认拥有)

| 命令 | 说明 |
|——|——|
| /s reload | 重载插件配置 |
| /s save | 手动保存世界 |
| /s status | 查看保存状态 |
| /s info | 查看插件信息 |

## Command Usage
Requires worldsaveoptimizer.admin permission (OPs have it by default)

| Command | Description |
|———|————|
| /s reload | Reload the plugin configuration |
| /s save | Manually save the world |
| /s status | Check the save status |
| /s info | View plugin information |

**注意**:使用前请备份世界数据。
**Note**: Please back up your world data before use.

Worlds-Inventories-Folia

# Worlds-Inventories

Worlds-Inventories is an addon for the [Worlds plugin](https://modrinth.com/plugin/worlds-1) that lets you use different player stats per world group. It can separate inventories, health, hunger, experience, potion effects, and gamemode between groups of worlds.

Requires Java 21. See [here](https://docs.papermc.io/misc/java-install) how to update your installed Java version.

## Features
– Per-world (or per-group) player state separation
– Auto-add new worlds to the default group
– Configurable options per group
– Optional debug logging
– Folia compatible

## Requirements
– Java 21
– Paper/Folia 1.21.x
– [Worlds plugin](https://modrinth.com/plugin/worlds-1)

## Installation
1. Build the plugin or download the jar.
2. Place the jar into your server `plugins/` folder.
3. Start the server to generate `plugins/WorldsInventories/config.yml`.
4. Edit the config and restart or use the reload command.

## Default config.yml:

“`yaml
default_group: default
default_group_per_world: true
auto_add_to_default: true
debug: false

groups:
default:
worlds:
– world
– world_nether
– world_the_end
options:
inventory: true
enderchest: true
health: true
hunger: true
experience: true
potion_effects: true
gamemode: true
“`

### Key options
– `default_group`: Group name used for worlds without a mapping.
– `default_group_per_world`: If true, each world under the default group gets its own sub-group.
– `auto_add_to_default`: Auto-adds new worlds into the default group list.
– `debug`: Enables debug logs.

## Commands
– `/worldsinv reload` – Reloads configuration.
– `/worldsinv debug ` – Toggle debug logging at runtime.
– `/worldsinv group ` – Manage groups and world mappings.

## Permissions
– `worldsinventories.admin` – Access to all admin commands (default: op)
– `worldsinventories.reload` – Reload config
– `worldsinventories.debug` – Toggle debug logs
– `worldsinventories.group` – Manage groups

Worlds

## Worlds – World Management for Paper & Folia

Worlds is a modern, lightweight world management plugin designed for **Paper** and **Folia** servers.
It brings seamless world handling with **customization presets**, eliminating the need for extra plugins just to create
void or custom flat maps. Simply pick a predefined preset, or create your own!

### Why Choose Worlds?

**Vanilla Flat World Preset** – No more extra plugins for void or flat maps
**No Extra Data Files** – Worlds doesn’t store extra files, no more messy file syncing when sharing worlds
**Drag & Drop Import** – Just place the world in the folder & use /world import
**Full World Regeneration** – Reset any world (even the Overworld!) with one command
**Modern & Efficient** – Uses up-to-date server mechanics, not outdated methods
**World Keys** – Worlds are referenced by unique keys, improving compatibility with client mods
**World Linking** – Restore vanilla Nether and End portal behavior for custom worlds

### What’s Next?

**Custom Dimension Creation** – Like datapacks, but usable from commands and API!

[Download now on Modrinth](https://modrinth.com/project/gBIw3Gvy)

[Latest version supporting 1.20.6 (Java 21)](https://github.com/TheNextLvl-net/worlds/releases/tag/v1.2.5)
[Latest version supporting 1.19/1.20.4 (Java 19)](https://github.com/TheNextLvl-net/worlds/releases/tag/v1.1.6)
[Latest version supporting 1.19/1.20.4 (Java 17)](https://github.com/TheNextLvl-net/worlds/releases/tag/v1.1.3)

For further information check out the [Wiki](https://thenextlvl.net/docs/worlds)

[![Usage](https://faststats.dev/embed/default:a9a9dede-a7fb-48cb-ac06-3a1bbdcdbcf7:servers-and-players?w=1012)](https://faststats.dev/project/worlds)

WorldProtection

# WorldProtection

A comprehensive world protection plugin for Paper/Spigot servers that allows administrators to protect specific worlds with a whitelist system. Even operators are blocked from accessing protected worlds unless explicitly whitelisted.

## Features

### Core Features
– **World Protection Toggle**: Enable or disable protection on any world
– **Whitelist System**: Only whitelisted players can access protected worlds
– **Operator Blocking**: Blocks operators from accessing protected worlds (unless whitelisted)
– **Case-Insensitive World Lookup**: World names are matched case-insensitively for convenience
– **Player Teleport Command**: `/wp go ` allows players to teleport to worlds (blocks if not whitelisted)
– **Multiple Access Methods Blocked**: Prevents access via:
– World changes
– Teleportation commands
– Portal usage (nether portals, end portals, etc.)
– Direct world joining
– **Data Persistence**: Protected worlds and whitelists are saved automatically
– **Config Reload**: Reload configuration without restarting server
– **Multiverse Support**: Compatible with Multiverse-Core (soft dependency)

### Security Features
– Operators are blocked by default (configurable)
– Operators are always teleported away (kicks may not work on ops)
– Bypass permission available but still respects operator blocking
– Automatic teleportation to safe world when access is denied
– Configurable safe world for teleportation
– Optional kick on access denial (default: enabled)
– Customizable kick message

## Requirements

– Paper 1.21.x or compatible
– Java 21
– Multiverse-Core (optional, for Multiverse world management)

## Installation

1. Download the latest JAR from the releases page
2. Place `WorldProtection-1.0.0.jar` in your server’s `plugins/` folder
3. Start or restart your server
4. Configure `plugins/WorldProtection/config.yml` to your preferences
5. Use `/wp toggle ` to protect worlds
6. Use `/wp whitelist add ` to whitelist players

## Configuration

### config.yml

“`yaml
# World Protection Configuration

# Default message when access is denied
messages:
prefix: “&c[WorldProtection]&f ”
access_denied: “&cYou do not have permission to access this world!”
world_protected: “&eWorld &6%world% &eis protected. Only whitelisted players can access it.”
world_unprotected: “&aWorld &6%world% &ais now unprotected.”
world_protected_enabled: “&aWorld &6%world% &ais now protected.”
player_whitelisted: “&aPlayer &e%player% &ahas been whitelisted for world &6%world%&a.”
player_unwhitelisted: “&cPlayer &e%player% &ahas been removed from whitelist for world &6%world%&c.”
not_whitelisted: “&cYou are not whitelisted for world &6%world%&c.”
world_not_found: “&cWorld &6%world% &cnot found!”
no_worlds_protected: “&7No worlds are currently protected.”
teleport_success: “&aTeleported to world &6%world%&a.”
teleport_denied: “&cYou do not have permission to teleport to world &6%world%&c.”

# Block operators from accessing protected worlds (unless whitelisted)
block_operators: true

# Kick players who try to access protected worlds
kick_on_deny: true

# Safe world to teleport players to when access is denied (if kick_on_deny is false)
# Leave empty to auto-find a safe world
safe_world: “”

# Kick message when player is not whitelisted
kick_message: “&4You are not whitelisted on this world”
“`

### Configuration Options

**messages**
– All messages can be customized with color codes
– Use `%world%` placeholder for world names
– Use `%player%` placeholder for player names

**block_operators**
– `true`: Operators are blocked from protected worlds (unless whitelisted)
– `false`: Operators can access protected worlds (not recommended)

**kick_on_deny**
– `true`: Players are kicked when they try to access a protected world (default)
– `false`: Players are teleported back to a safe world
– Note: Operators are always teleported (kicks may not work on ops)

**safe_world**
– Name of the world to teleport players to when access is denied and `kick_on_deny` is `false`
– Leave empty (`””`) to automatically find a safe world
– Must be a valid world name

**kick_message**
– Custom message shown when a player is kicked for accessing a protected world
– Supports color codes (use `&` prefix)
– Default: `”&4You are not whitelisted on this world”`

## Commands

### Player Commands

**/worldprotection go ** or **/wp go **
– Teleport to a world (available to all players)
– Blocks teleportation if the world is protected and you’re not whitelisted
– Example: `/wp go creative`
– Note: World names are case-insensitive

### Admin Commands

All admin commands require `worldprotection.admin` permission (default: OP).

**/worldprotection toggle ** or **/wp toggle **
– Enable or disable protection on a world
– Example: `/wp toggle creative`
– Note: World names are case-insensitive

**/worldprotection whitelist add ** or **/wp whitelist add **
– Add a player to the whitelist for a protected world
– Example: `/wp whitelist creative add PlayerName`
– Note: World names are case-insensitive

**/worldprotection whitelist remove ** or **/wp whitelist remove **
– Remove a player from the whitelist for a protected world
– Example: `/wp whitelist creative remove PlayerName`
– Note: World names are case-insensitive

**/worldprotection list** or **/wp list**
– List all currently protected worlds
– Shows the number of whitelisted players per world

**/worldprotection info ** or **/wp info **
– Show detailed information about a world’s protection status
– Displays protection status and whitelisted players
– Note: World names are case-insensitive

**/worldprotection reload** or **/wp reload**
– Reload the configuration file and data
– Requires admin permission
– Example: `/wp reload`

## Permissions

**worldprotection.admin**
– Full admin access to all world protection commands
– Default: `op` (operators only)
– Allows: toggle protection, manage whitelist, view info

**worldprotection.bypass**
– Bypass world protection (not recommended)
– Default: `op` (operators only)
– Note: Still blocked if `block_operators: true` in config

## Usage Examples

### Protecting a World

1. Protect a world:
“`
/wp toggle creative
“`
Output: `[WorldProtection] World creative is now protected.`

2. Whitelist players:
“`
/wp whitelist creative add PlayerName
/wp whitelist creative add AnotherPlayer
“`

3. Check protection status:
“`
/wp info creative
“`

### Unprotecting a World

1. Remove protection:
“`
/wp toggle creative
“`
Output: `[WorldProtection] World creative is now unprotected.`

2. Note: Whitelist is preserved but not enforced when world is unprotected

### Managing Whitelist

**Add a player:**
“`
/wp whitelist creative add PlayerName
“`

**Remove a player:**
“`
/wp whitelist creative remove PlayerName
“`

**View all protected worlds:**
“`
/wp list
“`

## How It Works

### Protection Mechanism

When a player attempts to access a protected world, the plugin:

1. **Checks if world is protected**
– If not protected, access is allowed

2. **Checks if player is whitelisted**
– If whitelisted, access is allowed

3. **Checks bypass permission**
– If player has `worldprotection.bypass`, access is allowed
– Exception: If `block_operators: true` and player is OP, still blocked

4. **Blocks access if all checks fail**
– If `kick_on_deny: true`: Kicks player with configured kick message
– If `kick_on_deny: false`: Teleports player to safe world (configured or auto-found)
– Operators are always teleported away (kicks may not work on ops)
– Sends access denied message
– Multiple event handlers ensure blocking works regardless of access method

### Access Methods Blocked

The plugin blocks access through:

– **World Changes**: When a player changes worlds (via any method)
– **Player Join**: When a player joins the server in a protected world
– **Teleportation**: All teleportation commands and events (including `/wp go`)
– **Portals**: Nether portals, end portals, and other portal types

### Operator Blocking

Operators are handled specially:
– They are always blocked from protected worlds (when `block_operators: true`)
– They are always teleported away (kicks may not work on operators)
– Multiple event handlers ensure operators cannot stay in protected worlds
– Even if a kick fails, operators are immediately teleported to a safe world

### Data Storage

Protected worlds and whitelists are stored in:
“`
plugins/WorldProtection/data.yml
“`

This file is automatically created and updated when:
– Worlds are protected/unprotected
– Players are added/removed from whitelists

## File Structure

“`
plugins/WorldProtection/
├── config.yml # Configuration file
└── data.yml # Protected worlds and whitelists (auto-generated)
“`

## Troubleshooting

**Operators can still access protected worlds:**
– Check `block_operators` in config.yml (should be `true`)
– Ensure operators are not whitelisted
– Verify they don’t have `worldprotection.bypass` permission
– Operators should be teleported away immediately – if not, check server logs
– Try using `/wp go ` as an operator – you should be blocked and teleported away

**Players can still access protected worlds:**
– Check if world is actually protected: `/wp list`
– Verify player is not whitelisted: `/wp info `
– Check if player has bypass permission

**Whitelist not working:**
– Ensure world is protected: `/wp toggle `
– Verify player was added correctly: `/wp info `
– Check data.yml file for correct UUIDs

**Players getting stuck:**
– If a player is in a protected world when protection is enabled, they will be teleported out immediately
– Use `/wp whitelist add ` to allow them access
– Or temporarily unprotect the world: `/wp toggle `
– Players can use `/wp go ` to attempt teleportation (will be blocked if not whitelisted)

**Multiverse worlds not working:**
– Ensure Multiverse-Core is installed (optional but recommended)
– World names are matched case-insensitively, so you can use any case
– Use `/mv list` to see world names, but you can use any case variation

## Security Considerations

### Operator Blocking

By default, operators are blocked from accessing protected worlds. This is intentional and provides additional security:

– Prevents accidental access by admins
– Ensures only explicitly whitelisted players can access
– Maintains strict access control
– Operators are always teleported away (kicks may not work on operators)
– Multiple event handlers ensure operators cannot bypass protection

To allow operators access, you must:
1. Whitelist them: `/wp whitelist add `
2. Or set `block_operators: false` in config.yml (not recommended)

**Important**: Even if `kick_on_deny` is enabled, operators are teleported instead of kicked, as server protections may prevent kicking operators.

### Bypass Permission

The `worldprotection.bypass` permission exists for special cases but:
– Still respects `block_operators` setting
– Should be used sparingly
– Consider whitelisting instead for better tracking

## API

### Public Methods

“`java
// Check if a world is protected
boolean isWorldProtected(String worldName)

// Check if a player is whitelisted for a world
boolean isPlayerWhitelisted(UUID playerUUID, String worldName)

// Check if a player can access a world
boolean canAccessWorld(Player player, String worldName)
“`

### Events

The plugin listens to and handles:
– `PlayerJoinEvent` – Blocks players joining in protected worlds
– `PlayerChangedWorldEvent` – Blocks world changes
– `PlayerTeleportEvent` – Blocks teleportation
– `PlayerPortalEvent` – Blocks portal usage

## Version

Current Version: 1.0.0

## Support

For issues, feature requests, or questions, please open an issue on the project repository.

## License

This plugin is provided as-is for use on Minecraft servers.

## Credits

Developed for Paper 1.21.x servers with optional Multiverse-Core integration.

WorldListTrashCan

## Allows players to customize their home world’s trash bin.

This cleaning plugin operates within a specific world (the player’s home) and, when cleaning items, gathers them into a trash bin that the player has personally set up in their home. It combines various features, supports Folia, boasts highly configurable settings, and is compatible with multiple languages.
(This plugin is more suitable for pairing a world with a team’s server, such as the Home server (using the PlayerWorldsPro plugin or other Home plugin servers). If you close the World Garbage can, its functions can also completely replace other cleaning plugins)

**Now, here’s a hellish joke for you:**
**Player** : Hey, my quantum solar panels got swept away by the cleaning plugin. Can you compensate me?
**OP** : No way, you can’t prove it, and my cleaning plugin doesn’t keep records.
**Player** : I just bought them!
**OP** : What if you hid them, and I compensate you, essentially doubling them?
**Player** : ***
**OP** : Even if there were public trash bins on the server, someone would snatch up those solar panels.
**OP** : What should I do?

And there you have it, this plugin was born.

When Foila supports multiple worlds, this cleaning plugin will benefit everyone

### Features:

– **Fully customizable tip**
Support multiple prompt messages
You can achieve fully customized prompts
For example, when there are three seconds left, let “bossbar”, “actionbar”, “chat”,and “title” prompt together,
Alternatively, you can have the bossbar change its style every second (solid, non solid, including its color, can be different every second)
After version 5.7.0, it supports switching between different prompt sounds per second, as well as setting different volumes and tones per second

![Replace this with a description](https://cdn.modrinth.com/data/cached_images/24b3e1462757b7a96cb6a7344788f75b3b903a60.png)

– Thank you to QQ 1664907770 (“笑脸猫”) for providing the material package for the “itemsadder” plugin (applicable to public trash cans) [Click here to download](https://www.hostize.com/zh/v/3TE06XKXx8) (IteamsAdder/WorldTrashCan config and resource)

![public trash can itemsadder plugin resource](https://cdn.modrinth.com/data/nILG1dtG/images/1cbdd4a92d00b0637e130cd87c412970e23ec533.png)

– **Player-Created World Trash Bin:**
Players have the ability to create a trash bin in their world.
Similar to the mechanics of previous sign-locked chests, the font on the sign will undergo a
transformation after creation.
When the cleaning process is initiated, items will be automatically added to the home trash bin.
Configurable settings allow players to specify detection names and transformed names after cleaning.
“To meet the demands of a small number of people, here is a reminder”
How to create a world trash can:
Place the chest on the ground, hold the signboard and right-click on the chest. Enter [世界垃圾桶] in the configuration file (configured in Set. SighCheckName), and once the font is converted, it is created. Every time the garbage is cleaned, it will be placed in the marked chest
In the default configuration file, the names of the three worlds “world, dim-1, dim1” are disabled, creating a “world trash can” (excluding op)

![REPLACE ME WITH YOUR ALT TEXT](https://cdn.modrinth.com/data/nILG1dtG/images/69ae92502becde7a7a2f033815fa420c28cb6957.gif)

– **Support for Multiple Home Trash Bins:**
Players can use commands to grant special players the ability to place additional home trash bins.
Default quantities for home trash bins are configurable.
![REPLACE ME WITH YOUR ALT TEXT](https://cdn.modrinth.com/data/nILG1dtG/images/609be599004c03b52ec244c68437bd33b3de0f9d.gif)
– **Home Trash Bin Overflow to Public Trash Bin:**
Items from home trash bins overflow into the public trash bin.
Public trash bins can have a configurable maximum page count and a blacklist.
![REPLACE ME WITH YOUR ALT TEXT](https://cdn.modrinth.com/data/nILG1dtG/images/11c25510bcd38cd87445f3241d44707424e8dbb9.gif)
– **Item Exclusion and Public Trash Bin Handling:**
Players can add items to the home trash bin blacklist to prevent their recycling.
Excluded items go directly to the public trash bin.
Configuration includes support for excluding items with special lore (e.g., items from the QS shop with
showLocation).
Public trash bins can either clear new items during each sweep or accumulate all trash without clearing.
![REPLACE ME WITH YOUR ALT TEXT](https://cdn.modrinth.com/data/nILG1dtG/images/05e44d7c3286d7daa0d0222338b780168b423f94.gif)
– **The public trash can can enable logging:**
Record what items the player took away
![public trash can log](https://cdn.modrinth.com/data/nILG1dtG/images/eff1bc89a24efa7115cd15670a60d15c7b42d643.png)
– **Entity Cleanup:**
Optional cleanup of all animals/monsters.
Command (/WorldListTrashCan Look) to view entity types and configure entity blacklists/whitelists.
Support for cleaning special entities from mod.
![REPLACE ME WITH YOUR ALT TEXT](https://cdn.modrinth.com/data/nILG1dtG/images/897ed52ff78147da390920cb895e68a65811ed18.png)
– **Dense Entity Cleanup:**
Configurable radius, target quantity, kill or remove options, and player notifications for dense entity
cleanup.
![REPLACE ME WITH YOUR ALT TEXT](https://cdn.modrinth.com/data/nILG1dtG/images/3c34031e1638855ab24b51c3aff80e05e68ca62b.gif)
– **Spam/Command Limitations:**
Configurable chat/command intervals, whitelist commands, and informative messages.
Defense against item dropping.
Players can manually enable or disable the item-drop defense mode.

– **Performance Optimization:**
All optimizations have configurable options in the settings.
1. Quick removal of uncollectible arrows (e.g., arrows from skeletons or bows with infinite
enchantments).
2. Prohibit players from trampling on farmland

### How to Install

– **Throw it into the Plugins folder**

### Commands:

– **/wtc reload**
Reloads the plugin.
– **/wtc GlobalTrash**
Opens the public trash bin.
– **/wtc help**
Displays help information.
– **/wtc ban**
Opens the local world trash blacklist GUI.
– **/wtc Look**
Right-click to get entity type (useful for adding to the configuration blacklist/whitelist).
– **/wtc GlobalBan**
Opens the global world trash blacklist GUI.
– **/wtc add [WorldName] [Quantity]**
Sets the maximum quantity for the trash bin in the specified world (defaults to the world at your feet if not specified).
– **/wtc DropMode**
Opens or closes drop mode.

### Placeholders

– **%WTC_ClearTime%**:
Time until the next cleaning.

### Permission

– **WorldListTrashCan.BanGui**:
Permission to open the GUI for adding items to the player’s home trash bin blacklist.
– **WorldListTrashCan.GlobalTrashOpen**:
Permission to open the global trash bin.
– **WorldListTrashCan.help**:
Permission to access command help.
– **WorldListTrashCan.DropMode**:
Permission to open or close drop mode.
***(The above is available by default)***
– **WorldListTrashCan.GlobalBan**:
Permission to open the global trash bin blacklist GUI.
– **WorldListTrashCan.Look**:
Permission to right-click and query the entity type.
***(The above is not available by default)***

World In a Jar

# Warning (Read This!)
**Do not use versions marked as “BlanketCon”!** These **will not** work in your world.

1.20.1 is also not supported and does not resemble the mod in its current state. That is, do not use the 1.20.1 version.

# World In a Jar
This mod squeezes entire worlds into jars for your enjoyment. Play god or go home.

You can put blocks in a jar block with a lot of room! All of your storage issues are solved!
Make little snow globes, make a cool redstone contraption; The possibilities are endless.

[![Showcased at BlanketCon ’25](https://raw.githubusercontent.com/worldwidepixel/badges/refs/heads/main/bc25/featured_in/cozy.svg)](https://modfest.net/bc25)
[![Showcased at BlanketCon ’23](https://badger-api-staging.worldwidepixel.ca/cozy?gradientStart=361222&gradientEnd=34002D&lineOne=Featured%20in&lineTwo=BlanketCon%20%2723&colourOne=FFFFFF&colourTwo=E365C1&iconUrl=https://raw.githubusercontent.com/ModFest/art/refs/heads/v2/icon/1024w/bc23/transparent.png&format=svg)](https://modfest.net/bc23)
[![Created for ModFest: Singularity](https://raw.githubusercontent.com/VulpixelMC/world-in-a-jar/refs/heads/1.21.x/images/made%20at%20singularity.svg)](https://modfest.net/singularity)

## How To Use
### Mine Bedrock
Start by mining bedrock using a Netherite Pickaxe. This may take a few tries before a shard drops.
![A Netherite Pickaxe mining a Bedrock block.](https://raw.githubusercontent.com/VulpixelMC/world-in-a-jar/refs/heads/1.21.x/images/step_1-1.png)
![A player holding Bedrock Shards.](https://raw.githubusercontent.com/VulpixelMC/world-in-a-jar/refs/heads/1.21.x/images/step_1-2.png)
### Upgrade To a Bedrock Pickaxe
Upgrade your Netherite Pickaxe to a Bedrock Pickaxe using a Smithing Table.
![A Smithing Table screen with input (left to right) Netherite Upgrade Smithing Template, Netherite Pickaxe, and Bedrock Shard.](https://raw.githubusercontent.com/VulpixelMC/world-in-a-jar/refs/heads/1.21.x/images/step_2-1.png)
### Mine More Bedrock
Mine more Bedrock with your Bedrock Pickaxe. You will need 28 Bedrock Shards.
![A Bedrock Pickaxe mining a Bedrock block.](https://raw.githubusercontent.com/VulpixelMC/world-in-a-jar/refs/heads/1.21.x/images/step_3-1.png)
### Obtain Ingredients And Craft Reinforced Echnoplast
Obtain 7 Glass and 28 Amethyst Shards to craft 7 Reinforced Echnoplast.
![A player crafting 7 Reinforced Echnoplast.](https://raw.githubusercontent.com/VulpixelMC/world-in-a-jar/refs/heads/1.21.x/images/step_4-1.png)
### Strip Logs To Obtain Bark
Strip logs to obtain their bark. You will need 9 bark of any type.
### Craft a World Jar
Craft a World Jar using a Cork Block, Eye of Ender, and 7 Reinforced Echnoplast.
### Enter the World Jar
Place the World Jar and interact with (right-click) the jar to enter it. You can interact with the jar again to exit.

## Video Demonstration

## Permissions (Not Working)
**This does not currently work.**

The number stated after the permission ID is the minimum OP level that users will need to have the permission. This mod can also use permissions with mods compatible with Fabric Permissions API (such as LuckPerms). The permission ID and OP level are written respectively (in that order).
– `worldinajar.lock_jar` `2`
– Allows a user to lock/unlock a jar. A locked jar cannot be edited. When right-clicked, a locked jar simply teleports the player if they do not have this permission.

## FAQ
– ### Port to NeoForge? Quilt? ?
– no
– ### Port to 1.12.2? ? Update to version *X*?
– no
– ### There is a bug and I need to report it!
– Please go to [the issue tracker](https://github.com/CursedMC/world-in-a-jar/issues/new) and create a bug report.
– ### Please add *X* feature.
– yesn’t (feel free to [open an issue](https://github.com/CursedMC/world-in-a-jar/issues/new))
– ### Can I port this mod to *X*?
– Please ask for permission before doing so. I also ask that you credit the original mod and state that it is an unofficial fork, however. Forks claiming to be official will be taken down.

## Redistribution 🖍️
VulpixelMC does not sanction any redistributions not hosted on its website, GitHub, or Modrinth. Do not upload this software to any other services without due credit and links to the original file from which the redistributed software was downloaded.
You may use this software in Modpacks, given due credit and a link to download the original software.

## License
World In a Jar is licensed under `LGPL-3.0-only`. See `COPYING` and `COPYING.LESSER` for details.