
Pocket Dimensions
Create custom pocket dimension for you players! They can invite and kick other players and go between the real world and their pocket dimension using a special item!
Список изменений
Pocket Dimensions 0.0.7-ALPHA
A full four-way codebase audit (storage, world lifecycle, commands/GUI, compatibility) — this release fixes everything it found. Upgrade is drop-in; existing configs/data are untouched on load.
Critical
- The config auto-updater actually works now. A Bukkit quirk (
contains()resolving through jar defaults) made it a silent no-op, so upgrades never received new config keys on disk. Fixed withisSet(). - Accepting an invite while inside any pocket dimension no longer corrupts your main-world return point (which could soft-lock you out of the overworld via
/pdleave, kick, or the key item).
Economy & load order
- Removed
load: STARTUP, which silently broke the Vault economy hook on every boot — creation costs and upgrades work now. - Creation cost +
PocketDimensionCreateEventfire only when a world is genuinely created — reloading an unloaded world is free (previously each re-entry after auto-unload charged again). Failed creations are refunded.
World lifecycle
- Unloaded dimensions reload with their preset generator re-attached — VOID worlds no longer regenerate new chunks as vanilla terrain after an auto-unload or
/pdtp. - Logging out inside your own dimension now saves your exact position; rejoin restores you there (not your last exit point) and re-applies border + gamerules.
- Failed teleports say so instead of playing success feedback while not moving.
Protection hardening
- Projectiles no longer bypass mob protection (the shooter is tier-checked).
- Fire is covered (
protection.block-fire: true): visitor ignition and all non-player ignition are cancelled, and fire no longer consumes blocks inside dimensions. - Item frames / paintings / armor stands / leash knots / chested horses / chest & hopper minecarts / chest boats are protected from visitors; leashing, shearing and farmland trampling blocked below builder.
- Protection fails closed on malformed world names instead of failing open.
Mob teleporting
- Trust gate: visitors can no longer teleport mobs out of someone else's dimension into their own.
- Failed mob teleports report a message.
Storage
- Corrupt JSON files are quarantined (
*.corrupt-<timestamp>) and un-quarantineable files refuse writes — one bad file can never wipe a store. - JSON → SQL migration is complete: trusts, settings and meta flags are imported too, malformed keys no longer crash startup, and source files are renamed only after a fully successful migration (failures retry).
- Trust/settings caches no longer poison themselves after a database blip.
Commands & GUI
/pdadmin delete|reset|cleanupeach require their own permission node; admin unloads clear empty-dimension bookkeeping./pdgameruleaccepts both new (26.x) and legacy gamerule names.features.gui-menuandfeatures.admin-toolsconfig switches are honoured.- Placeholders are
%pd_in_pd%,%pd_border%,%pd_visitors%,%pd_dimension_loaded%(the expansion previously registered under a name the docs didn't match).
Smaller fixes
First-join key drops at your feet on a full inventory · malformed crafting recipes warn instead of crashing startup · the key item no longer also opens the chest behind it · /pdreload warns when storage.type needs a restart · /pdlist shows "never" instead of the epoch · MySQL driver SPI registration preserved in the shaded jar · flattened world-name fallback in kick/invite/teleport/gamerule paths · dead message keys removed.
Requires Java 17+. Full permission and config reference in the README.
