SideGate [ 1.20.x - 26.1.x / Bukkit ] icon

SideGate [ 1.20.x - 26.1.x / Bukkit ] -----

Securely allow authorized non-premium players to join your Online-Mode server.



SideGate Documentation
Spigot/Bukkit/Paper Setup and Usage Guide

1) Overview
SideGate is a hybrid-login plugin for servers that keep online-mode=true but still need selected non-premium usernames to join as Guest.

What SideGate does:
  • Lets premium players continue normal Mojang authentication.
  • Lets detected Floodgate/Geyser Bedrock players continue their normal Bedrock authentication flow.
  • Allows selected non-premium users through guest flow.
  • Marks guest players with tag SideGate_Guest.
  • Applies configurable guest restrictions/messages.

2) Requirements
  • Java: 17+
  • Server: Spigot / Paper / Purpur (Bukkit-compatible)
  • Dependency: ProtocolLib 5.x+
  • Optional integrations: Floodgate and/or Geyser-Spigot
  • Server property: online-mode=true

3) Installation
  1. Install ProtocolLib first.
  2. Optionally install Floodgate and/or Geyser-Spigot for automatic Bedrock detection.
  3. Place SideGate jar in /plugins.
  4. Set online-mode=true in server.properties.
  5. Start/restart server.
  6. Edit plugins/SideGate/config.yml.

4) Command & Permission
  • /sidegate reload - reload config and runtime listeners
  • sidegate.admin - required to use reload command

5) Config Reference
Code (YAML):
# SideGate Configuration

# Master switch for all guest behavior
enable-guest-mode
: true

# If true, SideGate checks Mojang API first
# Premium name => pass to normal premium login
# Non-premium name => continue guest policy
# API unavailable/error => keep normal online-mode authentication
auto-detect-premium
: true

# Guest admission mode:
# true  = allow all non-premium usernames
# false = only names listed in allowed-guests
allow-all-guests
: false

# Names always treated as premium (manual override)
premium-usernames
:
 - "TamKungZ"

# What to do when a cracked client uses a Premium-registered name
premium-session-failure
:
  # KICK_WITH_MESSAGE or FALLBACK_TO_GUEST
  action
: "KICK_WITH_MESSAGE"
  message
: "&cThis username belongs to a Premium account.\n&eChange your username and try again."

# Used only when allow-all-guests=false
allowed-guests
:
 - "FriendName1"
  - "FriendName2"

guest-settings
:
  # SURVIVAL, CREATIVE, ADVENTURE, SPECTATOR
  default-gamemode
: "SURVIVAL"
  # Prefix added only for guest-tagged players
  chat-prefix
: "&7[Guest] &r"

messages
:
  join-title
: "&cACCESS RESTRICTED"
  join-subtitle
: "&7Guest Mode"
  join-message
:
   - "&c=================================="
    - "&6 Welcome to SideGate Protocol"
    - "&7 Account Status
: &cGuest (Non-License ) "
    - "
&7 You have restricted gameplay access. "
    - "
&c================================== "
6) Behavior Details
  • Premium flow: If detected premium (or in premium-usernames), SideGate does not force guest handling.
  • Bedrock flow: If Floodgate/Geyser identifies the player as Bedrock, SideGate bypasses guest handling and removes any stale SideGate_Guest tag.
  • Kick with message: KICK_WITH_MESSAGE compares the login UUID with the official Mojang UUID before encryption and rejects a mismatch with premium-session-failure.message.
  • Guest fallback: FALLBACK_TO_GUEST treats a Premium-name UUID mismatch as Guest before encryption; it also supports same-connection fallback when an invalid encrypted session response is available.
  • Requirement: Both Premium session failure modes require auto-detect-premium=true.
  • Security: A client that spoofs the exact official UUID remains on normal online-mode authentication and must still pass Mojang session verification.
  • Guest flow: If allowed by policy, login is injected and player joins as guest.
  • Lookup failure: If Mojang API is unavailable or returns an unexpected response, SideGate leaves authentication to the server and does not grant guest access.
  • Guest tag: SideGate_Guest is added on join for guest players.
  • Guest chat: Prefix is applied only when the player has guest tag.
  • Guest mode off: When enable-guest-mode=false, guest handling is skipped.

7) Public API (for Addon Plugins)
SideGate exposes service interface me.tamkungz.sidegate.api.SideGateApi via Bukkit ServicesManager.

  • isGuestModeEnabled()
  • isAutoDetectPremiumEnabled()
  • isAllowAllGuestsEnabled()
  • isConfiguredPremium(String username)
  • isKnownPremiumCached(String username)
  • checkPremium(String username)
  • isGuest(Player player)

Example (Addon Plugin)
Code (Java):
import me.tamkungz.sidegate.api.SideGateApi ;
import me.tamkungz.sidegate.api.SideGateApiProvider ;

SideGateApi api = SideGateApiProvider. get ( ) ;
if (api != null && api. isGuest (player ) ) {
    // guest-only logic
}
8) Troubleshooting
Issue: Failed to inject guest
  • Confirm ProtocolLib is loaded and up to date.
  • Confirm server is running with online-mode=true.
  • Test with auto-detect-premium=false to isolate Mojang API influence.
  • Provide full login logs when opening issue.

Issue: Guest not allowed to join
  • Check enable-guest-mode is true.
  • If allow-all-guests=false, ensure username is in allowed-guests.
  • Verify exact username spelling and case behavior.

Issue: Cracked client uses a name that belongs to a Premium account
  • Use KICK_WITH_MESSAGE to tell the player to change their username.
  • Use FALLBACK_TO_GUEST to continue the same failed Premium session as Guest.
  • Run /sidegate reload after changing the action.
  • FALLBACK_TO_GUEST applies server-wide and permits Premium-name impersonation with Guest/offline UUIDs. Use an authentication plugin to protect identities.

Issue: Bedrock player is shown as Guest
  • Confirm Floodgate or Geyser-Spigot is installed and enabled on the Bukkit backend.
  • Check startup logs for Floodgate integration enabled or Geyser integration enabled.
  • If Geyser/Floodgate runs only on a proxy, install and configure the matching backend integration so SideGate can identify the player.
  • Include Floodgate/Geyser versions and the full login log when reporting the issue.

9) Links

10) License & Usage Policy
Closed Source
  • Normal server usage is allowed.
  • Separate addon plugins using SideGate public API are allowed.
  • Modification/redistribution/repackaging of SideGate is not allowed without permission.
  • Commercial use/monetization requires prior permission by email: [email protected]
Resource Information
Author:
----------
Total Downloads: 77
First Release: Dec 25, 2025
Last Update: Jun 19, 2026
Category: ---------------
All-Time Rating:
1 ratings
Find more info at dev.tamkungz.me...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings