PortalLock

PortalLock

Control Nether and End progression with timers, commands, and MiniMessage support.

129 downloads 1 followers

PortalLock — Nether & End Portal Control for Paper

Control when your players enter the Nether and the End. PortalLock is a server-side Minecraft Paper plugin for locking portals, scheduling dimension opening and closing, and managing SMP progression without client mods.

Keep the Nether closed during a fresh survival launch. Open the End for a community dragon fight. Close a dimension after an event, return players to the Overworld, and let everyone check the next opening with /portal.

Built for staged survival progression

Feature How it helps your server
Independent Nether and End locks Control each dimension separately.
Scheduled opening and closing Set one-time access windows for launches, seasons and events.
Public /portal command Players see dimension status and opening timers without admin permissions.
Safe Overworld returns Return players near their saved entry point when possible, with safe fallback locations.
Offline-player checks Players logging in after closure are checked too.
Discord webhook announcements Notify your community when dimensions open; optionally announce closure.
Four ready-to-use languages English, Russian, Ukrainian and German.
PlaceholderAPI timers Show opening countdowns and status in compatible TAB, scoreboard and announcement plugins.
Customizable presentation MiniMessage text, action bars, titles, sounds, particles and opening effects.

PortalLock is a focused option for SMP, survival, hardcore and seasonal Paper servers that want dimension progression instead of unrestricted day-one portal access.

Get started

Requires Paper 26.2 or Paper 26.3 and Java 25. Use the JAR matching your server version. Install only one PortalLock JAR, remove older copies, and restart the server to generate the configuration. Players do not need a mod, resource pack or special client.

Core portal controls and Discord webhooks have no required plugin dependency. Install PlaceholderAPI 2.12.3+ only if you want external %portallock_*% placeholders.

On a fresh installation both dimensions start closed until you configure a schedule or open them:

/portallock open nether
/portallock open end

Schedule your Nether opening or End event

Set opening and closing dates in config.yml. For example, give the Nether a four-hour event window:

settings:
  time-zone: "Europe/Budapest"

dimensions:
  nether:
    enabled: true
    unlock-at: "2027-01-01 18:00:00"
    close-at: "2027-01-01 22:00:00"

Replace the example dates with your own. Reload, then apply the configured schedule if commands were used previously:

/portallock reload
/portallock schedule nether

Schedules use one-shot timestamps, not recurring daily or weekly jobs. Command timers are saved as real dates, so server restarts do not reset them and offline time counts toward the countdown. Command overrides take priority over configuration dates until you restore the config schedule.

Prefer simple timers? Close the Nether for seven days, or open the End now and close it in two hours:

/portallock settime nether 7d
/portallock open end
/portallock setclosetime end 2h

Close dimensions without leaving players behind

When a dimension closes, PortalLock looks for a safe Overworld position near each player's saved entry point. If that point is unavailable, it tries saved Overworld/respawn locations and safe world spawns. It avoids placing a player directly inside the original portal.

Return points persist in player data. Login, respawn, teleport and world-change checks also cover players who were offline when a dimension closed. If a player has no recorded entry, a safe fallback is used instead.

By default everyone is returned, including operators; valid staff bypasses can be respected with evacuation.respect-bypass: true. If no safe Overworld point is available, or another plugin prevents the return teleport, the affected player is disconnected with a localized message.

Let players check portal status

/portal
/portal nether
/portal end

The public command shows status and timing information without administrator permissions. It does not give players access to opening, closing or reloading the plugin.

Admin command Purpose
/portallock open <nether|end> Open a dimension now.
/portallock close <nether|end> Close indefinitely and return affected players.
/portallock settime <nether|end> <time> Close now and open after a duration.
/portallock setclosetime <nether|end> <time> Schedule closure.
/portallock schedule <nether|end> Restore dates from the configuration.
/portallock status Show administrative status.
/portallock reload Reload configuration, messages and language.

Durations include 7d, 12h, 45m and 30s. /plock is an administrative command alias. Permissions are separated by command, with portallock.admin as the administrative umbrella. Dimension bypasses are separate and disabled by default.

Add portal timers to TAB or your scoreboard

With PlaceholderAPI installed, PortalLock registers its expansion automatically. No separate eCloud expansion download is needed. Use these placeholders in a display plugin that supports PAPI:

Nether: %portallock_nether_status%
Opens in: %portallock_nether_remaining%
End: %portallock_end_status%
Opens in: %portallock_end_remaining%

Additional placeholders include %portallock_nether_timer%, %portallock_nether_seconds%, %portallock_nether_unlock_at% and %portallock_nether_close_remaining%, with matching end versions. Numeric opening seconds return 0 for an open dimension and -1 for a closed dimension without a scheduled opening. Formatted timers use the selected language.

Announce portal openings in Discord

Create an incoming Discord channel webhook and enable it in the configuration:

discord:
  enabled: true
  webhook-url: "PASTE_YOUR_DISCORD_WEBHOOK_URL_HERE"
  announce-openings: true
  announce-closures: false

No Discord bot is required. Announcements use your selected language and customizable message text. Requests run asynchronously with a bounded queue, retries and timeouts, rather than blocking the server tick thread. Keep your webhook URL private.

Choose your language and server style

settings:
  language: ru

Choose en, ru, uk or de, then run /portallock reload. The language setting applies server-wide. Edit locales/*.yml or add custom overrides in messages.yml.

MiniMessage formatting supports a consistent look for action-bar timers, chat messages and opening announcements. You can also configure opening titles, sounds, particles, fireworks and console commands.

Compatibility and scope

PortalLock targets vanilla Nether and End access on Paper. It is not a custom-dimension manager, portal-network replacement or Folia plugin. Spigot, Fabric, Forge and custom portal systems are not supported. Automatic smoke tests cover pinned Paper 26.2 and 26.3 builds; event tests use proxy players, not connected game clients.

No gallery available for this project.

Version Minecraft Loader Download

PortalLock 1.1.0

1.1.0

26.1, 26.1.1, 26.1.2, 26.2, 26.3
paper
Download

PortalLock 1.0.0

1.0.0

26.2, 26.3
paper
Download