Your Items Are Safe

Requires the library mod Collective.
This mod is part of The Vanilla Experience modpack and Serilum’s Quality of Life Bundle mod.
Your Items Are Safe is a mod which can function as an alternative to the existing gravestone mods, by using only vanilla blocks. When a player dies, it will keep their items from despawning. It does this by creating an armor stand with equiped gear and a chest with the items from the inventory. A sign will be placed on the chest with the player’s name. If the inventory does not fit into one chest, another one above it is generated. The armor stand stands above the chest. All features can be turned on/off via the config. If a player dies in the void, the chest will be placed above the death coordinates.
To keep it balanced the chests and armor stand can only be created if the player has enough wood in its inventory. A chest requires either 2 logs, 8 planks or an actual chest. The armor stand requires 1 log or 3 planks. The mod searches for logs first, then planks, then chests. If it can’t find the raw material needed, the chest and armor stand is not generated. If you’d like to always generate them, even without raw materials, this can be set in the config file as well.
The mod also contains the functionality to generate a player head and put it on the armor stand. This makes it easier to identify which player has died where. If the player had a helmet equiped, it is placed inside the chest. Enabled by default. But again, this can be disabled in the config.
Configurable: ( how do I configure? )
mustHaveItemsInInventoryForCreation (default = true): When enabled and a player dies without any items in their inventory, no chest or armor stand is generated.
addPlayerHeadToArmorStand (default = true): If a player head should be added to the armor stand. If a helmet is worn, this will be placed into the chest.
createArmorStand (default = true): Whether an armor stand should be created on death. If disabled, the player’s gear will be placed inside the chest.
createSignWithPlayerName (default = true): Whether a sign should be placed on the chest with the name of the player who died there.
needChestMaterials (default = true): Whether materials are needed for the chest which spawns on death. This can be the actual chest or the costs in raw materials.
needArmorStandMaterials (default = true): Whether materials are needed for the armor stand to spawn on death. This can be the actual armor stand or the costs in raw materials.
needSignMaterials (default = false): Whether materials are needed for the creation of the sign when ‘createSignWithPlayerName’ is enabled.
ignoreStoneMaterialNeed (default = true): Only relevant if ‘needChestAndArmorStandMaterials’ is enabled. An armor stand needs 1 stone slab to be created, but I think it’s alright to ignore that requirement. If enabled, no stone is needed in the inventory on death.
createChestAboveVoid (default = true): If a chest should be placed right above the minimum build height when a player dies in the void.
createVoidPlatform (default = true): If a 3×3 platform should be created below the chest above the void. ‘createChestAboveVoid’ must be enabled.
sendMessageOnCreationFailure (default = true): If a message should be sent if the chest or armor stand can’t be created due to missing materials.
sendMessageOnCreationSuccess (default = true): If a message should be sent on successful creation of the chest(s) and armor stand.
sendDeathCoordinatesInChat (default = true): If the player’s death coordinates should be sent in the chat below the ‘sendMessageOnCreationFailure’/’sendMessageOnCreationSuccess’ message.
creationFailureMessage (default = “Your items are not safe due to having insufficient materials. Missing: %plankamount% planks.”): The message sent on creation failure with ‘sendMessageOnCreationFailure’ enabled. Possible replacement values: %plankamount%, %stoneamount%.
creationSuccessMessage (default = “Your items are safe at your death location.”): The message sent on creation success with ‘sendMessageOnCreationSuccess’ enabled.
Some examples:
An armor stand and chest generated after death:

Two chests generated after death, because the inventory didn’t fit in a single one:

One chest and an armor stand created after death:
Show Spoiler

The previous death results in the following:
Show Spoiler

Here the player has no wood in its inventory. The chest/armor stand is not generated:
Show Spoiler

The player does have some planks in its inventory, but not enough. This is shown in the chat via a message:
Show Spoiler

The inventory is completely full, so 2 chests are needed to store everything. Luckily the player has more than 19 planks:
Show Spoiler

When a player dies in the void, the chest is placed on the initial position above it with a cobblestone platform.

Death coordinates are sent in the chat. Can be disabled in the config.

——————
You may freely use this mod in any modpack, as long as the download remains hosted within the Modrinth ecosystem.
Serilum.com contains an overview and more information on all mods available.
Comments are disabled as I’m unable to keep track of all the separate pages on each mod.
For issues, ideas, suggestions or anything else there is the Github repo. Thanks!
YoTPA

# YoTPA
YoTPA is a lightweight and powerful teleport request plugin with adaptive performance optimization. Simple to use, easy to configure, and built for modern Minecraft servers.
## Features
### Adaptive Performance System
The plugin automatically detects your server’s available RAM and optimizes itself accordingly – zero configuration needed!
**4 Performance Modes:**
– **ULTRA_LIGHT** – For 512 MB – 1 GB RAM (Free/Cheap VPS)
– Best for: 5-10 players, minimal plugins
– **LIGHT** – For 1-2 GB RAM (Low-end servers)
– Best for: 10-15 players, light plugins
– **BALANCED** – For 2-4 GB RAM (Mid-range servers)
– Best for: 15-25 players, moderate plugins
– **HIGH_PERFORMANCE** – For 4+ GB RAM (High-end servers)
– Best for: 25+ players, any plugins
**Performance Benefits:**
– 30-70% less memory usage
– 25-60% less CPU usage
– Up to 83% faster maintenance tasks
– Dynamic optimization based on your server specs
### Core Features
– **Simple TPA System** – Request to teleport to other players or invite them to you
– **Countdown Timer** – Configurable delay before teleporting with visual feedback
– **Title Display** – Clear visual indication of teleport countdown
– **Movement Detection** – Teleport cancels if player moves during countdown
– **Custom Sound Effects** – Fully customizable audio feedback using Minecraft’s sound registry
– **Config Validation** – Prevents server crashes from broken configs with detailed error messages
– **Permission System** – Fine-grained access control
– **Request Management** – Toggle receiving requests, cancel outgoing requests
– **Multi-Threading Support** – Thread-safe for more concurrent players
– **Customizable Messages** – Fully localizable and configurable messages
### Internationalization (NEW in 1.4.0)
Customize all plugin messages in any language with full MiniMessage support:
“`yaml
prefix: “[YoTPA] ”
commands:
tpa:
sent: “Teleport request sent to {target}”
received: “{requester} wants to teleport to you.”
“`
**MiniMessage Features:**
– Rich text formatting (bold, italic, underlined)
– Color gradients: `text`
– Rainbow effect: `text`
– Hex colors: `<#FF5733>text#FF5733>`
### Custom Sound Effects
Customize all plugin sounds using Minecraft’s sound IDs:
“`yaml
sounds:
countdown: “block.note_block.pling”
success: “entity.enderman.teleport”
cancel: “entity.villager.no”
request: “entity.experience_orb.pickup”
“`
Test sounds in-game: `/playsound minecraft:block.note_block.pling master @s`
## Configuration
YoTPA’s `config.yml` file allows you to customize various aspects of the plugin:
– Request timeout duration
– Cooldown between requests
– Teleport delay countdown
– Performance mode settings
– Sound effects for different actions
– Feature toggles (statistics, bStats, titles, sounds)
### Configuration File
“`yaml
# YoTPA Configuration v1.3.0-Adaptive
# Smart Auto-Optimization for All Server Sizes
# Request timeout in seconds (how long before a request expires)
# Recommended: 30-120 seconds
request-timeout: 60
# Request cooldown in seconds (how long before sending another request)
# Recommended: 15-60 seconds
request-cooldown: 30
# Teleport delay in seconds (countdown before actual teleport)
# Recommended: 3-10 seconds
teleport-delay: 5
# Performance mode settings
performance:
# Options: AUTO, ULTRA_LIGHT, LIGHT, BALANCED, HIGH_PERFORMANCE
mode: AUTO
# Sound effects (use Minecraft sound names)
sounds:
countdown: “block.note_block.pling”
success: “entity.enderman.teleport”
cancel: “entity.villager.no”
request: “entity.experience_orb.pickup”
# Feature toggles
features:
statistics: true
bstats: true
titles: true
sounds: true
“`
### Messages Configuration (messages.yml)
“`yaml
# Customize your prefix
prefix: “[YoTPA] ”
# All messages are customizable
commands:
tpa:
usage: “Usage: /tpa ”
sent: “Teleport request sent to {target}”
received: “{requester} wants to teleport to you.”
teleport:
countdown:
title: “Teleporting…”
subtitle: “Don’t move!”
message: “Teleporting in {seconds} seconds”
“`
## Customization Examples
### Change Language to Spanish
Edit `messages.yml`:
“`yaml
prefix: “[YoTPA] ”
commands:
tpa:
usage: “Uso: /tpa ”
sent: “Solicitud enviada a {target}”
received: “{requester} quiere teletransportarse a ti.”
“`
Then use `/tpareload` to apply changes!
### Add Beautiful Gradients
“`yaml
prefix: “✦ YoTPA ✦ ”
teleport:
countdown:
title: “Teleporting…”
message: “Teleporting in {seconds} seconds”
“`
### Customize Colors
“`yaml
prefix: “[TPA] ”
commands:
tpa:
sent: “Request sent to {target}”
“`
### Use Hex Colors
“`yaml
prefix: “[YoTPA] ”
teleport:
success: “Teleported to {target} successfully!”
“`
**Placeholders:**
– `{player}` – Player name
– `{target}` – Target player name
– `{requester}` – Requester player name
– `{seconds}` – Number of seconds
– `{cooldown}` – Cooldown duration
### Configuration Sections Explained
**General Settings:**
– `request-timeout` – How long (in seconds) teleport requests remain valid (recommended: 30-120)
– `request-cooldown` – Time (in seconds) before a player can send another request (recommended: 15-60)
– `teleport-delay` – Countdown time (in seconds) before teleportation happens (minimum: 1)
**Performance Settings:**
– `performance.mode` – AUTO (recommended), ULTRA_LIGHT, LIGHT, BALANCED, or HIGH_PERFORMANCE
– AUTO automatically detects your server’s RAM and selects the best mode
**Sound Settings:**
– All sounds use Minecraft’s sound registry format (lowercase with dots)
– The plugin validates sounds on config reload
– Full sound list: https://minecraft.wiki/w/Sounds.json
**Feature Toggles:**
– `statistics` – Enable or disable statistics tracking
– `bstats` – Enable or disable bStats metrics
– `titles` – Enable or disable title animations during countdown
– `sounds` – Enable or disable all sound effects
### Config Validation
When reloading with `/tpareload`, the plugin validates:
– YAML syntax
– All values are in valid ranges
– Sounds exist in Minecraft’s registry
– Shows detailed error messages if invalid
Example validation output:
“`
Configuration validation failed!
✗ teleport-delay must be at least 1 second
✗ Sound ‘countdown’ (invalid.sound) not found in registry
Warnings:
• request-timeout (5) is very low, recommended: 30-120
Config not applied. Fix errors and try again.
Using previous configuration.
“`
## How to Edit and Reload
1. Edit the `plugins/YoTPA/config.yml` file
2. Save your changes
3. Use `/tpareload` in-game to apply changes with validation
## Commands Overview
| Command | Description | Permission |
| :—— | :———- | :——— |
| `/tpa ` | Request to teleport to another player | `yotpa.tpa` |
| `/tpaccept` | Accept a pending teleport request | `yotpa.tpaccept` |
| `/tpadeny` | Deny a pending teleport request | `yotpa.tpadeny` |
| `/tpahere ` | Request a player to teleport to you | `yotpa.tpahere` |
| `/tpacancel` | Cancel your outgoing teleport request | `yotpa.tpacancel` |
| `/tpatoggle` | Toggle receiving teleport requests | `yotpa.tpatoggle` |
| `/tpareload` | Reload the plugin configuration | `yotpa.reload` |
| `/tpainfo` | View plugin information and statistics | `yotpa.info` |
| `/tpastats` | View teleport statistics | `yotpa.stats` |
**Default:** All permissions are granted to all players by default.
## Detailed Commands
### TPA Command
Send a request to teleport to another player.
“`
/tpa
“`
| Parameter | Type | Description |
| :——– | :— | :———- |
| `player` | `string` | **Required**. The player name you want to teleport to |
**Examples:**
“`
/tpa Steve # Request to teleport to player named Steve
/tpa Alex123 # Request to teleport to player named Alex123
“`

**Notes:**
– You cannot send a request to yourself
– There is a configurable cooldown between sending requests (default: 30 seconds)
– Request will expire after a configurable time (default: 60 seconds)
– Target player will receive a notification with clickable accept/deny buttons
—
### TPAccept Command
Accept a pending teleport request from another player.
“`
/tpaccept
“`
No parameters required – accepts the most recent teleport request.
**Examples:**
“`
/tpaccept # Accept the pending teleport request
“`

**Notes:**
– Only works if you have a pending teleport request
– After accepting, the teleportation will begin with a countdown
– The player must stay still during the countdown or it will be cancelled
– If accepting a `/tpa` request, the requester will teleport to you
– If accepting a `/tpahere` request, you will teleport to the requester
—
### TPADeny Command
Deny a pending teleport request from another player.
“`
/tpadeny
“`
No parameters required – denies the most recent teleport request.
**Examples:**
“`
/tpadeny # Deny the pending teleport request
“`

**Notes:**
– Only works if you have a pending teleport request
– The requester will be notified that their request was denied
– Request is immediately removed from the system
—
### TPAHere Command
Request another player to teleport to your location.
“`
/tpahere
“`
| Parameter | Type | Description |
| :——– | :— | :———- |
| `player` | `string` | **Required**. The player name you want to request to teleport to you |
**Examples:**
“`
/tpahere Steve # Request Steve to teleport to you
/tpahere Alex123 # Request Alex123 to teleport to you
“`

**Notes:**
– You cannot send a request to yourself
– There is a configurable cooldown between sending requests (default: 30 seconds)
– Request will expire after a configurable time (default: 60 seconds)
– The target player must accept with `/tpaccept`
—
### TPACancel Command
Cancel your outgoing teleport request.
“`
/tpacancel
“`
No parameters required – cancels your most recent outgoing request.
**Examples:**
“`
/tpacancel # Cancel your pending request
“`
**Notes:**
– Only works if you have an active outgoing request
– The target player will be notified that the request was cancelled
– Useful if you sent a request by mistake
—
### TPAToggle Command
Toggle whether you want to receive teleport requests.
“`
/tpatoggle
“`
No parameters required – toggles your request reception status.
**Examples:**
“`
/tpatoggle # Toggle receiving teleport requests on/off
“`
**Notes:**
– When toggled off, other players cannot send you teleport requests
– You will receive a message showing your current status
– Your setting persists across server restarts
—
### TPAReload Command
Reload the plugin configuration with validation.
“`
/tpareload
“`
No parameters required – reloads and validates the configuration file.
**Examples:**
“`
/tpareload # Reload the plugin configuration
“`

**Notes:**
– Requires the `yotpa.reload` permission (default: op only)
– Validates YAML syntax and all configuration values
– Checks that all sounds exist in Minecraft’s registry
– Shows detailed errors if config is invalid
– Only applies config if all validation passes
– Useful after making changes to the config.yml file
—
### TPAInfo Command
View plugin information and real-time statistics.
“`
/tpainfo
“`
No parameters required – displays plugin information.
**Examples:**
“`
/tpainfo # View plugin info and stats
“`
**Shows:**
– Current performance mode (auto-detected based on RAM)
– Optimization level and settings
– Active teleport requests
– Ongoing teleports
– Memory usage statistics
– Plugin version
**Notes:**
– Useful for monitoring plugin performance
– Helps diagnose issues
– Shows how the plugin has optimized itself for your server
—
### TPAStats Command
View teleport statistics and usage data.
“`
/tpastats
“`
No parameters required – displays teleport statistics.
**Examples:**
“`
/tpastats # View teleport statistics
“`
**Shows:**
– Total teleport requests sent
– Total teleport requests received
– Success rate
– Most active players
– Other usage metrics
**Notes:**
– Requires `features.statistics: true` in config
– Statistics are tracked per player
– Data persists across server restarts
## Optimization Tips
### For FREE/LOW-SPEC servers (512 MB – 1 GB):
– Keep mode as AUTO or ULTRA_LIGHT
– Limit total plugins to 5-8
– Set view-distance to 4 in server.properties
– Use Paper instead of Spigot
– Limit players to 5-10 concurrent
### For MID-RANGE servers (2-4 GB):
– Use AUTO or BALANCED mode
– Can run 10-15 plugins
– view-distance 6-8
– 15-25 players should be fine
### For HIGH-END servers (4+ GB):
– Use AUTO or HIGH_PERFORMANCE mode
– No significant plugin limitations
– view-distance 10-12
– 25+ players supported
## Performance
YoTPA is built with performance in mind:
– **Lightweight** – Minimal impact on server TPS
– **Thread-Safe** – No lag from concurrent operations
– **Memory Efficient** – Adapts to your server’s resources automatically
– **Async Operations** – Non-blocking task execution
– **Lock-Free** – No race conditions or deadlocks
## Installation
1. Download the latest JAR from the releases
2. Place the JAR in your server’s `plugins` folder
3. Restart your server
4. That’s it! The plugin will auto-configure based on your server’s specs
—

**Note:** This is my first plugin project!.