rStructures

rStructures

Dungeons from your schematics spawn in the world on their own, with locked containers, keys, loot and a WorldGuard region

141 downloads 0 followers

цвфвфвфвфв

Dungeons from your own schematics placed right in your world. Players track them with a compass and break into loot vaults with a key, a pickaxe or a timer.

Paper 1.21.4+ Folia Java 21

How it works

  1. Put a schematic into the schem folder and run /rs spawn.
  2. The plugin finds a flat spot in a matching biome, saves the terrain and pastes the dungeon inside a WorldGuard region.
  3. A player finds the dungeon with the compass and opens the shulker boxes with a key, the breaker pickaxe or a timer.
  4. 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 .schem files 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 undo restores 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.yml and items.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
structures/<type>.yml

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.

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
Version Minecraft Loader Download

rStructures

2.2

1.21.10, 1.21.11, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2, 26.3
bukkit, folia, paper, purpur, spigot
Download

rStructures

2.1

1.21.10, 1.21.11, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2, 26.3
bukkit, folia, paper, purpur, spigot
Download

rStructures

2.0

1.21.10, 1.21.11, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2, 26.3
bukkit, folia, paper, purpur, spigot
Download

RDang 1.8.5

1.8.5

1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2
bukkit, paper
Download