Skip to content

Releases: CyoriaSMP-Team/ProtocolLib2PacketEvents

ProtocolLib2PacketEvents v1.0.11 - FastLogin Channel Reflection

Choose a tag to compare

@Namnarak Namnarak released this 12 Oct 18:47
546b64b

Fix selecting Object networkManager instead of actual Netty Channel for FastLoginPlus. Confirmed with red-green tests; Maven 32 tests and GitHub CI passed. Deployed to CyoriaSMP. Pre-release pending real Java Premium login verification.

ProtocolLib2PacketEvents v1.0.10 — Pre-login Channel Fix

Choose a tag to compare

@Namnarak Namnarak released this 12 Oct 18:31
7727b5a

ProtocolLib2PacketEvents v1.0.10 — Late Pre-login Channel Binding

Pre-release: live Java Premium login regression validation still outstanding.

Reproduction

After deploying v1.0.9 on Leaf 1.21.11, a legitimate Java account's client was disconnected. FastLoginPlus logged Player NamKrub disconnected during session verification, aborting at 01:21:34 and 01:24:23 on 2026-10-13; one login timed out and another disconnected. The prior v1.0.8 client reported Received unknown packet id 49.

Fix

  • Stop requiring the native Minecraft packet_handler to exist at the exact moment PacketEvents notifies ProtocolLib2PacketEvents about LOGIN_START. A live Netty Channel is sufficient for binding the generated TemporaryPlayer to its actual connection.
  • Refresh that binding every time FastLoginPlus calls TemporaryPlayerFactory.getInjectorFromPlayer() during async Mojang session verification, so a late-installed native net.minecraft.network.Connection becomes visible for AES initialization.
  • Never bind a disconnected/non-Netty channel; keep all Mojang Premium authentication checks in FastLoginPlus and preserve previous pre-login/PacketEvents wrapper safety fixes. Do not enable cracked login fallback or bypass authentication.

Verification

  • Commit: 7727b5a3505afe60caa5b25be6fb1e4778a37fc4
  • Main CI: https://github.com/CyoriaSMP-Team/ProtocolLib2PacketEvents/actions/runs/38291091412 — passed.
  • 30 local Maven tests, 0 failures, 0 errors, 1 skipped. Includes a Netty EmbeddedChannel / PacketEvents User regression test that verifies early Channel binding and later native handler association.
  • Production: MCSManager graceful restart 2026-10-13. Leaf booted in 76.549 seconds; PacketEvents 2.13.0 bridged 437 packet types, FastLoginPlus 0.7.0 / AuthMe 6.0.1 enabled; CyoriaCore 3.0.5 / CYC 8/8 enabled. AuthMe database 91 accounts, quick_check=ok.

Do not mark this stable yet: A real Java Premium client must successfully join the server with a verified Mojang session. No successful premium login had been verified when the release was created. If the problem persists, use the exact new error/time and server log to isolate the remaining pre-login packet flow. Do not disable Premium verification as a workaround.

Rollback v1.0.9, FastLoginPlus/AuthMe config backups and AuthMe DB snapshot remain at /home/namkrub-home-server/Projects/Minecraft/P2P-LateLogin-Fix-20261013/rollback/. Restart Minecraft via MCSManager for packet transport changes; Bukkit /reload is not safe for this plug-in.

ProtocolLib2PacketEvents v1.0.9 — FastLoginPlus Channel Fix

Choose a tag to compare

@Namnarak Namnarak released this 12 Oct 18:20
9202a00

ProtocolLib2PacketEvents v1.0.9 — FastLoginPlus Login Channel Hotfix

Pre-release: for production regression DecoderException: Received unknown packet id 49 and FastLoginPlus Player ... disconnected during session verification, aborting seen with two actual Java login attempts on Leaf 1.21.11 / PacketEvents 2.13.0 after v1.0.8.

Changes

  • Associate every generated pre-login TemporaryPlayer with the Netty injector of its corresponding PacketEvents User via the existing channel map. FastLoginPlus uses TemporaryPlayerFactory.getInjectorFromPlayer() to monitor session verification and locate the encryption transport. In v1.0.8 this injector was null.
  • Resolve the actual NMS net.minecraft.network.Connection from the channel's existing packet_handler. An injector created before this handler was installed now refreshes the native connection once available; rejects channels without a valid Connection rather than fabricating one.
  • FastLoginPlus's legacy FuzzyReflection.getMethodByParameters("a", SecretKey.class) now safely finds the unique modern Leaf/Paper setEncryptionKey(SecretKey) method when the obfuscated name a is absent. If multiple candidates exist, fail explicitly.
  • Preserves v1.0.7's deferred pre-login PacketEvents User channel routing and v1.0.8's constructor-initialized ENCRYPTION_REQUEST with shouldAuthenticate=true. No AuthMe policy change or cracked login bypass.

Validation

  • Commit: 9202a004828f1cee3a47d490f6d94367f67b8a47
  • GitHub Actions: https://github.com/CyoriaSMP-Team/ProtocolLib2PacketEvents/actions/runs/38289819879 (passed)
  • 29 Maven tests (0 failures/errors; 1 skipped) and shaded JAR build passed on Java 25 locally; GitHub Java 17 CI passed.
  • Production deploy 2026-10-13 01:18-01:20: backup of v1.0.8, FLP/AuthMe configs and consistent SQLite snapshot created. Controlled MCSManager restart, Leaf ready in 77.084s, P2P enabled and bridged 437 PacketEvents packet types; AuthMe 6.0.1, FastLoginPlus 0.7.0, CyoriaCore 3.0.5, CYC 8/8 started. AuthMe database still 91 accounts with quick_check=ok.

Important: No legitimate Java Premium login had completed by the time of this release. A real authorized account must retest the end-to-end encryption/login path before calling this fully fixed or stable. If it still fails, collect client error and new server latest.log with exact time; do not disable online authentication to work around it.

Rollback files on Home Server: /home/namkrub-home-server/Projects/Minecraft/P2P-NativeLogin-Fix-20261013/rollback/. Network packet-hook JAR updates require an MCSManager restart, NOT Bukkit /reload.

ProtocolLib2PacketEvents v1.0.8 — Encryption Request Fix

Choose a tag to compare

@Namnarak Namnarak released this 12 Oct 18:02
e60fe2e

ProtocolLib2PacketEvents v1.0.8 — Premium Encryption Request Hotfix

Pre-release — authentication-sensitive: intended for the official PacketEvents 2.13.0 bridge and FastLoginPlus pre-login authentication on Leaf 1.21.11.

Fix

  • Fix NullPointerException: wrappper.bufferLock is null while FastLoginPlus sends LOGIN.SERVER.ENCRYPTION_REQUEST through ProtocolLib2PacketEvents. This previously caused Cannot send encryption packet. Falling back to cracked login.
  • PacketContainer(PacketType) uses constructor-free allocation; PacketEvents requires an initialized final bufferLock and registry holder. For the security-sensitive encryption request, use PacketEvents' own public constructor, setting shouldAuthenticate=true. For other synthesized packet wrappers, transfer mandatory per-instance runtime state from a normally initialized PacketWrapper (unique lock per packet).
  • Preserve v1.0.7's dedicated PacketEvents User + Channel transport for LOGIN_START. Does not disable FastLoginPlus, alter AuthMe policies or bypass Premium checks.

Build and verification

  • Commit: e60fe2e1ccdac4536e466c05112f18cba14c598e
  • GitHub Actions: https://github.com/CyoriaSMP-Team/ProtocolLib2PacketEvents/actions/runs/38287721460 — passed.
  • Local tests: 24 tests, 0 failed, 0 errors, 1 skipped; shaded JAR built successfully on Java 25.
  • Live CyoriaSMP Home Server deployment 2026-10-13: normal managed Minecraft restart, PacketEvents bridge enabled for 437 packet types, AuthMe 6.0.1 and FastLoginPlus detected each other, CyoriaCore 3.0.5 and 8/8 CYC modules enabled, server started successfully in 76.21s. No bufferLock exception during that startup.

Security validation still outstanding

The reported v1.0.7 exception was triggered by FishNet login, not on server startup. End-to-end legitimate Java Premium and Cracked logins, Bedrock/Floodgate cases, and session identity continuity must still be tested; no one should infer complete authentication correctness from a successful startup alone. Backups of P2P v1.0.7, FastLoginPlus/AuthMe config, and a consistent AuthMe DB snapshot are stored on the Home Server at /home/namkrub-home-server/Projects/Minecraft/P2P-BufferLock-Hotfix-20261013/rollback/.

Use a managed Minecraft restart to replace networking hooks; Bukkit /reload must not be used for this binary upgrade.

ProtocolLib2PacketEvents v1.0.7 — Pre-login Hotfix

Choose a tag to compare

@Namnarak Namnarak released this 12 Oct 17:42
93b4713

ProtocolLib2PacketEvents v1.0.7 — Deferred Pre-login Channel Hotfix

Pre-release for authentication integration validation.

  • Fixes the ClassCastException: GeneratedTemporaryPlayer$1 cannot be cast to CraftPlayer in deferred LOGIN.CLIENT.LOGIN_START when a ProtocolLib facade is replayed through PacketEvents' Bukkit PlayerManager.
  • When the player is temporary, uses the associated PacketEvents pre-login User and its real Netty channel for filtered and silent inbound/outbound packet transport.
  • Missing pre-login User or channel throws an explicit error, never silently bypassing packet listeners or authentication checks. Real CraftPlayer transport is unchanged.
  • Preserves the project's GPL-3.0 license and copyright notices; API compatibility version stays 5.4.0, implementation release is 1.0.7.

CI: https://github.com/CyoriaSMP-Team/ProtocolLib2PacketEvents/actions/runs/38285274452 — success. Commit: 93b4713f4e8d49001b3dfbcc41998f6d820ada28.

Tests: 22 tests executed, 0 failures/errors, 1 skipped, plus successful shaded build and JAR integrity checks.

Production smoke test 2026-10-13: ProtocolLib2PacketEvents enabled and bridged 437 PacketEvents packet types after the controlled Minecraft restart; no Unable to release deferred packet LOGIN_START or ClassCastException was logged immediately after startup. The prior warning recurred multiple times with the old 1.0.6 JAR. Real premium/cracked/Bedrock account login regression testing is still required before marking this hotfix stable.

One live plugin JAR (ProtocolLib2PacketEvents-1.0.7.jar) should be installed at a time. A 1.0.6 rollback JAR was backed up on the Home Server. Do not use /reload to replace packet transport hooks; use a managed restart.

v1.0.6 — UNLOAD_CHUNK compatibility fix

Choose a tag to compare

@Namnarak Namnarak released this 07 Oct 09:15

ProtocolLib2PacketEvents v1.0.6

Compatibility release for plugins that use ProtocolLib field accessors through P2P.

Fixed

  • PLAY.SERVER.UNLOAD_CHUNK: PacketContainer#getLongs().read(0) now returns the packed chunk key, and writes update the live PacketEvents chunk X/Z coordinates.
  • getChunkCoordIntPairs() now reads and writes the same live unload-chunk coordinates.
  • Supported derived modifiers, selectors, and target changes preserve write-through behavior for the projected fields.
  • LOGIN.CLIENT.LOGIN_START#getGameProfiles() writes username and UUID changes through to the PacketEvents wrapper.
  • CHUNK_DATA#getIntegers() coordinate writes now update the nested PacketEvents Column.

Validation

  • GitHub Actions Java 17 build and test passed.
  • Local Maven clean package passed: 19 tests, 0 failures, 0 errors, 1 skipped (PacketEvents server-runtime assumption).
  • SHA-256: f72586e4c495bf7c8ef3738a24dcc70226912e10376c186d8f7825ae2a55166e
  • No live Minecraft server test was included.

Upgrade

Replace ProtocolLib2PacketEvents-1.0.5.jar with ProtocolLib2PacketEvents-1.0.6.jar and fully restart the server. PacketEvents remains a required separate plugin.

v1.0.5 — CHUNK_DATA compatibility fix

Choose a tag to compare

@Namnarak Namnarak released this 05 Oct 16:24

ProtocolLib2PacketEvents v1.0.5

Compatibility hotfix for ProtocolLib consumers that inspect outgoing Minecraft chunk packets through P2P.

Fixed

  • QuickShop-Hikari CHUNK_DATA / MAP_CHUNK compatibility: PacketContainer#getIntegers() now exposes chunk X and Z at indices 0 and 1, matching the ProtocolLib field layout expected by QuickShop-Hikari.
  • Fixes:
    IndexOutOfBoundsException: No field of type int at index 0
    (found 0 matching field(s) on WrapperPlayServerChunkData)
    
  • PacketEvents keeps chunk coordinates inside WrapperPlayServerChunkData#getColumn(); P2P now provides the appropriate ProtocolLib-compatible view for intercepted chunk packets.
  • Added a regression test covering both chunk coordinate indices.

Validation

Built and tested through GitHub Actions with Java 17:

  • Maven package: passed
  • Tests: passed
  • Release JAR generated by the successful CI run

Upgrade

Replace ProtocolLib2PacketEvents-1.0.4.jar with ProtocolLib2PacketEvents-1.0.5.jar and perform a full server restart.

SHA-256:

2d0b7e4f2aa19030e49a4528bb656e48216bae12a15f2509258c5bbf64d646bb

v1.0.4 — Zero-blocking packet dispatcher

Choose a tag to compare

@Namnarak Namnarak released this 24 Aug 08:47

ProtocolLib2PacketEvents v1.0.4

A production-focused dispatcher rewrite that removes the packet-thread blocking found during burst-login testing on Leaf 1.21.11.

Highlights

  • Zero-blocking packet dispatch: removes CountDownLatch.await(...) / blocking Future.get(...) from the PacketEvents hot path.
  • Correct ProtocolLib threading semantics: inbound packets stay on the network thread by default unless ListenerOptions.SYNC requests a main-thread hop; outbound listeners preserve ProtocolLib's main-thread default unless ASYNC opts out.
  • LOGIN_START compatibility: exposes the profile view expected by ProtocolLib-style login listeners using PacketEvents' username/UUID fields.
  • Per-packet listener indexes: packets with no matching listeners return without global listener scans or unnecessary container decoding.
  • Ordered continuations: thread hops are serialized per player/direction without blocking Netty event loops.
  • ByteBuf lifetime fix: deferred PacketEvents buffers now transfer ownership correctly to Netty, eliminating the IllegalReferenceCountException: refCnt: 0 regression seen in early 1.0.4 candidates.
  • Concurrency regression tests added for direction-sensitive threading and non-blocking dispatch behavior.

Production validation

Validated on Leaf 1.21.11 + Java 25 + PacketEvents 2.13.0:

  • 25-client burst: 25/25 spawned, 0 client errors, TPS remained ~20.
  • 50-client burst: P2P remained free of packet-listener timeout, ref-count, and watchdog-freeze errors; remaining failed joins were traced to the server's separate authentication/Mojang-profile pipeline rather than P2P.
  • Latest validated server logs contained 0 occurrences of:
    • Synchronous packet listener timed out
    • IllegalReferenceCountException
    • watchdog has not responded

Upgrade

Replace the previous P2P jar and perform a full server restart. Do not hot-reload packet/auth plugins in production.

P2P continues to advertise ProtocolLib API compatibility 5.4.0; the actual P2P release version is 1.0.4.

Artifact

ProtocolLib2PacketEvents-1.0.4.jar

SHA-256: 7b7433feb6e9fe3fb16e4666134524c03b91334a95548dd7c737395856560d18

See CHANGELOG.md for the full change list.

v1.0.3 — LOGIN_START GameProfile compatibility

Choose a tag to compare

@Namnarak Namnarak released this 05 Oct 16:50

ProtocolLib2PacketEvents v1.0.3

Historical release for the 1.0.3 source state that existed between v1.0.2 and v1.0.4.

Changes

  • Added ProtocolLib-compatible LOGIN_START GameProfile exposure.
  • getGameProfiles().read(0) now works for PacketEvents login-start wrappers.
  • Supports username + optional UUID compatibility expected by ProtocolLib consumers such as FastLogin.
  • Added regression coverage for LOGIN_START profile handling.

Note

This version existed in source at commit 40ce6b2b42b6b179d41d967b30e62300efe5d1d3 but was not originally published as a GitHub Release before development moved on to v1.0.4.

The release is being backfilled to keep the version history complete. A compiled JAR may be attached separately after historical-source build validation.

v1.0.2 — ProtocolLib PacketEvents compatibility expansion

Choose a tag to compare

@Namnarak Namnarak released this 15 Aug 19:50
9effa8e

ProtocolLib2PacketEvents v1.0.2

This release expands the clean-room ProtocolLib compatibility layer powered by PacketEvents.

  • Adds the broader ProtocolLib API, wrappers, reflection/accessor utilities, NBT support, commands, timing, metrics, and updater facade.
  • Adds the hybrid PacketEvents/direct-Netty backend with packet interception, temporary players, raw packet fallback, and async hold/reinject queues.
  • Pins PacketEvents 2.13.0 and records the upstream ProtocolLib baseline at 67ce937109eb7bcc6e380ffe745d9b4a01ce1987.
  • ABI verification against the pinned upstream production jar: 428 upstream classes, 0 missing classes, 0 missing public members, and 0 descriptor mismatches.
  • Validation completed with mvn -q test and mvn -q -DskipTests package.

The MCSV Leaf 1.21.11 candidate was uploaded and its SHA-256 was verified as deaccc62b681501b0dd85190f2feb71784903443fd441cd2494404074322a19e. Live restart and client smoke certification remain a separate rollout gate.