Skip to content

Installation

BeestoXd edited this page Aug 15, 2026 · 1 revision

Installation

Requirements

Requirement Notes
Java 21+ The plugin is compiled for Java 21. An older JVM will refuse to load it.
Paper / Spigot / Bukkit 1.21.1026.2 Or Folia 1.21.1126.2. Outside this range the plugin disables itself — see Compatibility.
Vault Optional. Only for sharing the economy with other plugins, or using an external economy.
PlaceholderAPI Optional. Registers the uvs placeholder expansion.

No database server is required — SQLite is the default and needs no setup.

Steps

  1. Download the jar Grab UltimateVirtualSpawner-<version>.jar from the releases page, or build it yourself (see Building from Source).

  2. Drop it into plugins/ Stop the server first if you prefer; hot-loading a fresh install works, but a restart is the safe path.

  3. Start the server On first start the plugin will:

    • check that the server software and version are supported,
    • download its JDBC drivers (SQLite and MySQL are declared as libraries in plugin.yml, so the jar itself stays small — this needs internet access on the first start only),
    • create plugins/UltimateVirtualSpawner/ with all five config files,
    • create the SQLite database spawners.db.
  4. Check the console A healthy start looks like this:

    [UltimateVirtualSpawner] [Compatibility] Paper 1.21.10 (supported: 1.21.10 - 26.2)
    [UltimateVirtualSpawner] [Database] Connected using SQLite.
    [UltimateVirtualSpawner] [SpawnerManager] Loaded 0 managed spawner(s) from the database.
    [UltimateVirtualSpawner] [Economy] Using the built-in economy (no external economy plugin required).
    [UltimateVirtualSpawner] UltimateVirtualSpawner v1.0 enabled on Paper.
    

    On Folia the last line ends with (region scheduler).

  5. Verify in game

    /spawner version
    

The files it creates

plugins/UltimateVirtualSpawner/
├── config.yml      compatibility gate, database, economy and currency
├── spawners.yml    spawner behaviour, anti-ESP, sell prices, drop tables
├── menus.yml       every GUI layout: sizes, slots, materials, titles, lore
├── messages.yml    every chat message
├── sounds.yml      a sound effect for each spawner action
└── spawners.db     SQLite database (only when DATABASE.TYPE is SQLITE)

See Configuration for what to change first.

Post-install checklist

The defaults are safe, but three of them are worth a decision before players get their hands on spawners:

Setting Default Why you may want to change it
ECONOMY.PROVIDER in config.yml VAULT If you have no Vault economy installed, selling will not work. Set it to INTERNAL to use the built-in economy, or AUTO to fall back automatically. See Economy.
SETTINGS.MAX_STACK_PER_BLOCK in spawners.yml 100000 Sets the ceiling for a single spawner block. Lower it if you want spawner stacks to stay meaningful on your economy.
SELL.PRICES in spawners.yml a starter list These prices define your entire spawner economy. Tune them before release; a material with no price simply cannot be sold.

Updating

  1. Stop the server.
  2. Replace the old jar with the new one.
  3. Start the server.

Your configs are not overwritten. On every load each file is compared against the packaged defaults and any missing keys are written back in, so a new option added by an update appears in your file automatically while everything you customised stays as it is.

Your database is untouched by updates. Back it up anyway before a major version jump — see Database.

Uninstalling

Delete the jar and restart. Note what happens to spawners that are already placed:

  • The blocks stay in the world as ordinary vanilla spawners.
  • Their virtual storage is not dropped — it lives in the plugin's database, so back that up if you might reinstall.
  • If CANCEL_MOB_SPAWN was true, the plugin had already switched vanilla spawn logic off inside the block itself (maxNearbyEntities = 0), so those blocks stay inert even with the plugin gone. Break and replace them, or reset them with a command block, if you want real mobs again.

Clone this wiki locally