
rStructures
Dungeons from your schematics spawn in the world on their own, with locked containers, keys, loot and a WorldGuard region
!цвфвфвфвфв
Paper 1.21.4+ Folia Java 21
How it works
- Put a schematic into the
schemfolder and run/rs spawn. - The plugin finds a flat spot in a matching biome, saves the terrain and pastes the dungeon inside a WorldGuard region.
- A player finds the dungeon with the compass and opens the shulker boxes with a key, the breaker pickaxe or a timer.
- Once the dungeon is cleared, it disappears, the terrain comes back and a new dungeon spawns in the world.
Each dungeon type is a separate file in the structures folder, so you set the schematic, biomes, placement and opening method for every type.
Features
- Dungeons on land, on water at least 3 blocks deep and in the air 30 to 60 blocks above the ground.
- Your own
.schemfiles from the WorldEdit and FastAsyncWorldEdit folders. - Biome filter: a single biome, a mask like
"*ocean*"or every biome of a datapack with"terralith:*". - Type weight: a dungeon with weight 10 spawns twice as often as one with weight 5.
- 3 ways to open a vault: a key, 12 hits with the breaker pickaxe or a 60 second countdown.
- Keys drop from 20 vanilla loot sources, from villages to the sniffer. You set the chance for each in the menu.
- The compass shows dungeon coordinates with the last 2 digits hidden. It works once every 8 hours.
- Loot for shulker boxes and barrels is set in the menu: drop an item in and set its chance from 1 to 100%.
- A WorldGuard region around each dungeon: 17 flags, 3 block padding, at least 100 blocks between dungeons.
- The plugin saves the terrain before pasting, and
/rs undorestores it block by block. - Auto removal after clearing, a countdown in the action bar and a new spawn 1 second later.
- Holograms above vaults with FancyHolograms or DecentHolograms: locked, opened, timer.
- Default texts are in Russian. Every text is editable in
messages.ymlanditems.yml. - MiniMessage, SQLite or MySQL, Folia support.
Vaults
Each dungeon type opens its own way. You set it with open-type in the dungeon file.
| Method | What the player does | Default |
|---|---|---|
key | Opens a shulker box with a key from vanilla structure loot | The key survives with a 50% chance |
pickaxe | Hits the shulker box until it opens | 12 hits, pickaxe durability 64 |
timer | Clicks the shulker box and waits for the countdown | 60 seconds |
Requirements
| Server | Java | Required plugins | Optional plugins |
|---|---|---|---|
| Paper 1.21.4+ or Folia | 21 | WorldEdit or FastAsyncWorldEdit, WorldGuard | FancyHolograms or DecentHolograms |
Commands and permissions
| Command | What it does |
|---|---|
/rs help | Shows the command list |
/rs menu | Opens the menu: loot, key chance, dungeons, types |
/rs spawn [amount] [world] | Spawns 1 to 20 dungeons |
/rs spawn cancel | Cancels a running spawn |
/rs undo [id] | Removes a dungeon and restores the terrain |
/rs give <key|compass|pickaxe> [player] [amount] | Gives a key, a compass or a pickaxe |
/rs admin <test|remove|loot> | Adds, removes or fills the shulker box you look at |
/rs reload | Reloads the configs |
Alias: /rstructures. Every command requires rstructures.admin. Players need no permissions: they find dungeons and open vaults without commands.
config.yml
debug: false # detailed console messages for troubleshooting
command:
main: rstructures # main command name
aliases: [ rs ] # extra command names
# Folders where the plugin looks for schematics, besides plugins/rStructures/schem
schematic-folders:
- "WorldEdit/schematics"
- "FastAsyncWorldEdit/schematics"
containers: # default vault blocks for dungeon files
- SHULKER_BOX
# Holograms above vaults. Needs FancyHolograms or DecentHolograms
holograms:
enabled: true
height: 1.6 # height above the block
view-distance: 32 # view distance, in blocks
closed: # vault is locked
- "<red><b>!"
opened: # vault is open
- "<green><b>✔"
timer: # countdown is running. {time}: time left
- "<yellow><b>{time}"
scale: 1.3 # text size
billboard: center # how the text turns to the player
background: none # text background
text-shadow: true # text shadow
see-through: false # visible through blocks
# Sounds. An empty key turns a sound off
sounds:
shulker-open: # vault opened
key: "minecraft:block.iron_door.open" # sound ID
volume: 1.0 # from 0.0 to 1.0
pitch: 1.0 # from 0.5 to 2.0
shulker-closed: # click on a locked vault
key: "minecraft:block.chest.locked"
volume: 1.0
pitch: 1.0
key-saved: # the key did not break
key: "minecraft:entity.experience_orb.pickup"
volume: 1.0
pitch: 1.2
compass: # the compass found a dungeon
key: "minecraft:item.lodestone_compass.lock"
volume: 1.0
pitch: 1.0
menu-click: # click in the menu
key: "minecraft:ui.button.click"
volume: 0.5
pitch: 1.0
# Particles at the vault
particles:
shulker-open:
type: HAPPY_VILLAGER # particle type
count: 30 # amount
spread: 0.5 # spread, in blocks
speed: 0.05 # speed
shulker-closed:
type: SMOKE
count: 15
spread: 0.3
speed: 0.02
config-version: 1 # internal field, leave it as is
</details>
<details>
<summary>structures/<type>.yml</summary>
Each file in the `structures` folder is a separate dungeon type. The file name is the type ID. The plugin ships with `ground.yml`, `water.yml` and `air.yml`.
```yaml
name: "<white>Наземный данж" # name in the menu and in the spawn message
schematic:
file: ground1.schem # schematic from plugins/rStructures/schem or schematic-folders
ignore-air: true # true: air from the schematic does not replace world blocks
offset: # schematic offset from the found spot, in blocks
x: 0
y: 1
z: 0
# What to clear before pasting. Players, pets and named entities stay untouched
clear:
items: true # dropped items
monsters: true # hostile mobs
animals: true # animals
vehicles: false # boats and minecarts
vegetation: true # grass, flowers, leaves
liquids: false # water and lava
snow: true # snow layers
spawn:
world: world # spawn world
placement: ground # ground: on land, water: on water at least 3 blocks deep, air: in the air
# plains: one biome. "*ocean*": every biome with ocean in its name. "*": every biome
biomes: [plains, sunflower_plains, meadow, snowy_plains]
weight: 10 # weight when picking a type
limit: -1 # dungeons of this type at once, -1 for no limit
flatness: 3 # allowed height difference under the dungeon
height: 0 # height offset from the surface
# Only for placement: air
# air:
# min: 30 # height above the surface, random from min to max
# max: 60
functions:
open-type: key # key, pickaxe or timer
open-time: 60s # countdown length for timer: 30s, 5m, 1h
pickaxe-hits: 12 # pickaxe hits for pickaxe
key-save-chance: 50 # chance from 0 to 100 that the key survives
containers: [SHULKER_BOX] # schematic blocks that become locked vaults
loot-containers: [BARREL] # blocks filled with loot without a lock
auto:
enabled: true # remove the dungeon after clearing
time: 10s # removal delay after clearing
lifetime: 0 # remove this long after spawning in any case, 0 for no limit
require: # what counts as cleared
opened: true # every vault is open
looted: true # every vault is empty
actionbar: true # removal countdown for players inside the dungeon
respawn:
enabled: true # spawn a new dungeon in the same world after removal
time: 1s # delay before the new spawn
need-players: false # true: spawn only if the world has players
world.yml
# Where the plugin looks for a dungeon spot
spawn:
min-x: -5000 # search area borders
max-x: 5000
min-z: -5000
max-z: 5000
flatness: 3 # default height difference for dungeon files
attempts: 36 # random points to check
radius: 32 # search radius around a point
step: 4 # check step, in blocks
chunks-per-tick: 12 # chunks checked per tick
generate-chunks: true # true: generate chunks that do not exist yet
urgent-chunks: false # true: load chunks with high priority
build:
layers-per-tick: 8 # schematic layers pasted per tick
config-version: 1 # internal field, leave it as is
region.yml
region:
padding: 3 # region padding around the schematic, in blocks
name: "struct_{id}" # WorldGuard region name. {id}: dungeon number
flags: # region flags: allow or deny
use: allow
block-break: deny
build: deny
mob-spawning: deny
pvp: allow
tnt: deny
chest-access: allow
creeper-explosion: deny
damage-animals: deny
ghast-fireball: deny
respawn-anchors: deny
destroy-vehicle: deny
enderdragon-block-damage: deny
mob-damage: deny
lava-fire: deny
lightning: deny
lighter: deny
limits:
distance: 100 # minimum blocks between dungeons
max: -1 # dungeons per world at once, -1 for no limit
avoid-regions: true # true: never place a dungeon over other regions
config-version: 1 # internal field, leave it as is
items.yml
# Key for a locked vault.
key:
material: TRIPWIRE_HOOK # item
texture: "" # base64 texture for PLAYER_HEAD
name: "<white>Ключ от данжа" # name, MiniMessage format
lore:
- ""
- " <#FEF06A>Ключ <white>открывает закрытый"
- " <white>шалкер в данже."
- ""
model-data: 0 # CustomModelData for a resource pack
glint: true # enchantment glint
flags: [] # item flags: HIDE_ATTRIBUTES and others
functions:
glow: true # glowing outline when dropped
drop-on-quit: false # true: the item drops when the player leaves the server
deny-craft: true # the item cannot be used in crafting
save-chance: 50 # chance that the key survives
# Compass that points to a dungeon. {cooldown} in lore shows the time left.
compass:
material: COMPASS
texture: ""
name: "<white>Компас данжей"
lore: []
model-data: 0
glint: false
flags: []
functions:
glow: true
drop-on-quit: false
deny-craft: true
encrypt: true # hide the last digits of the coordinates
encrypt-digits: 2 # how many digits to hide
pointer: false # true: the compass needle points to the dungeon
cooldown: 8h # delay between uses
consume: false # true: the compass disappears after use
target: random # random: a random dungeon, nearest: the closest one
# Breaker pickaxe.
pickaxe:
material: NETHERITE_PICKAXE
texture: ""
name: "<white>Кирка взломщика"
lore: []
model-data: 0
glint: false
flags: []
functions:
glow: true
drop-on-quit: false
deny-craft: true
hits: 12 # hits per vault
durability: 64 # pickaxe durability
config-version: 1 # internal field, leave it as is
database.yml
storage: sqlite # where dungeons, loot and saved terrain are stored: sqlite or mysql
# Read only with storage: mysql
mysql:
host: localhost # database server address
port: 3306 # port
database: rstructures # database name
user: "root" # user
password: "" # password
config-version: 1 # internal field, leave it as is
Сервер для плагина rStructures - как у профи
Плагин rStructures создан для серверов: на своём сервере вы настраиваете его под себя и решаете, кому играть. Создать сервер с плагином rStructures для друзей можно за пару минут - BungeeHost всё уже подготовил.
