Skip to content

Feat: multiversion NMS support#311

Merged
twisti-dev merged 34 commits intoversion/26.1from
copilot/add-multiversion-support-nms
Apr 18, 2026
Merged

Feat: multiversion NMS support#311
twisti-dev merged 34 commits intoversion/26.1from
copilot/add-multiversion-support-nms

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 14, 2026

  • Diagnose the UninitializedPropertyAccessException on V1_21_11SurfPaperNmsGlowingBridgeImpl.INSTANCE
  • Fix V1_21_11NmsProvider: cache glowing bridge, ensure it's created before glowing API
  • Fix V26_1NmsProvider: same pattern
  • Implement multiversion NMS support architecture
  • Update ABI dumps and verify changes are non-breaking (additive only)

Copilot AI and others added 6 commits April 13, 2026 20:09
Implements the NmsProvider interface with version-specific bridge
factories, packet listeners, reflection initialization, and
ServiceLoader discovery via @autoservice.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Co-authored-by: TheBjoRedCraft <143264463+TheBjoRedCraft@users.noreply.github.com>
Create all 39 V26_1 versioned NMS implementation files adapted from
the paper-server source files:

- Extensions: nms-extensions.kt, AdventureNBT.kt (package change only)
- Bridge implementations: 9 bridge classes with V26_1 prefix
- Packet operations & bridges: PacketOperationImpl, PacketBridgesImpl,
  block/entity/player packet implementations
- Packet listener implementations: NmsPacketImpl, PacketRegistry,
  clientbound/serverbound packet wrappers
- Glowing system: GlowingPacketListener, TeamData, BlockGlowingData
- Packet lore: PacketLoreListener
- Reflection: Reflection object with initialize() method, 5 proxy interfaces
- Region: TickThreadGuard

All files follow the V26_1 naming convention:
- Package: dev.slne.surf.api.paper.server.nms.v26_1.*
- Class names prefixed with V26_1
- @autoservice annotations removed (registered via NmsProvider)
- checkInstantiationByServiceLoader() calls removed
- Internal cross-references updated to V26_1 prefixed names

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Co-authored-by: TheBjoRedCraft <143264463+TheBjoRedCraft@users.noreply.github.com>
- Create surf-api-paper-nms-common module with NmsVersion, NmsProvider, NmsPacketBridgeHandler
- Create surf-api-paper-nms-v26-1 module with all 26.1 NMS implementations
- Create surf-api-paper-nms-v1-21-11 module with skeleton NmsProvider (TODO implementations)
- Add proxy bridge implementations in surf-api-paper-server delegating to NmsProvider
- Register new modules in settings.gradle.kts

Agent-Logs-Url: https://github.com/SLNE-Development/surf-api/sessions/3048aef9-7f6a-422b-82bf-1b0453b10e0d

Co-authored-by: TheBjoRedCraft <143264463+TheBjoRedCraft@users.noreply.github.com>
- Fix V26_1 files to use own data classes instead of server.impl references
- Create EntityGlowingData, EntityPlayerData, BlockPlayerData in v26_1 glow packages
- Update PlayerChannelInjector to use NmsPacketBridgeHandler
- Update PacketApiLoader to use NmsProvider for packet listeners
- Update PaperInstance to remove direct Reflection init (moved to NmsProvider.initialize())
- Add PacketLoreRegistry and GlowingLifecycleHandler interfaces
- Update SurfPaperPacketApiImpl, PluginDisablePacketLoreListener, GlowingListener to use NmsProvider
- Update V26_1NmsProvider and V1_21_11NmsProvider with new factory methods

Agent-Logs-Url: https://github.com/SLNE-Development/surf-api/sessions/b4c8c86c-2741-4ab8-aae6-f9f6995c0e54

Co-authored-by: TheBjoRedCraft <143264463+TheBjoRedCraft@users.noreply.github.com>
- Remove SurfPaperNmsBridgeProxy (SurfPaperNmsBridgeImpl is version-agnostic, no proxy needed)
- Remove @autoservice from 16 old bridge implementations that now have proxies
- Keep SurfPaperNmsBridgeImpl with @autoservice as it handles listener dispatching
- Old impl classes remain as dead code for now (can be cleaned up later)

Agent-Logs-Url: https://github.com/SLNE-Development/surf-api/sessions/b4c8c86c-2741-4ab8-aae6-f9f6995c0e54

Co-authored-by: TheBjoRedCraft <143264463+TheBjoRedCraft@users.noreply.github.com>
@TheBjoRedCraft TheBjoRedCraft changed the title Implement 1.21.11 NMS module and add NMS template generator Implement 1.21.11/26.1 mutliversion support with nice generator Apr 14, 2026
… registration

The @autoservice KSP processor may not always generate the service file
correctly (e.g. due to paperweight dev bundle resolution issues). Adding
manual service files ensures V1_21_11NmsProvider and V26_1NmsProvider
are always discoverable by ServiceLoader at runtime.

Also makes ServiceLoader iteration robust against class loading failures
and updates the NMS template generator to auto-generate service files.

Agent-Logs-Url: https://github.com/SLNE-Development/surf-api/sessions/1c421ac7-9194-4697-91fd-1373913d3900

Co-authored-by: TheBjoRedCraft <143264463+TheBjoRedCraft@users.noreply.github.com>
… dead glow/packet code

The version-specific INSTANCE companions were casting from the
ServiceLoader-loaded proxy to the concrete impl type, causing
ClassCastException. Changed to lateinit var set by NmsProvider during
bridge/API creation.

Also removed old NMS-dependent dead code from surf-api-paper-server
that cannot work on 1.21.11 (compiled against 26.1 NMS):
- SurfGlowingApiImpl, GlowingPacketListener, TeamData
- BlockGlowingData, BlockPlayerData, EntityGlowingData, EntityPlayerData
- SurfPaperNmsGlowingBridgeImpl, PacketLoreListener

These are fully replaced by version-specific implementations in the
NMS modules (V1_21_11 and V26_1).

Agent-Logs-Url: https://github.com/SLNE-Development/surf-api/sessions/9e5b042e-c45e-4c65-8062-df05e010e09f

Co-authored-by: TheBjoRedCraft <143264463+TheBjoRedCraft@users.noreply.github.com>
… uses it

Cache the bridge instance in NmsProvider and call createGlowingBridge()
at the start of createGlowingApi() to guarantee the bridge INSTANCE is
always set before the API can use it. Applied to both V1_21_11NmsProvider
and V26_1NmsProvider.

Agent-Logs-Url: https://github.com/SLNE-Development/surf-api/sessions/f67fef39-1e25-4d4b-83e2-56ff14f551ac

Co-authored-by: TheBjoRedCraft <143264463+TheBjoRedCraft@users.noreply.github.com>
…dling

- eliminate fileTransformers for clearDialogs in NmsVersionConfigs.kt
- restore clearDialogs implementation in V1_21_11SurfPaperNmsCommonBridgeImpl.kt
- introduce a new Gradle plugin for generating NMS modules
- implement DSL for configuring reference and target versions
- add transformation rules for source code during generation
- create tasks for generating NMS modules with user prompts
- rename V1_21_11BlockGlowingData and V26_1BlockGlowingData to BlockGlowingData
- update references to use the unified BlockGlowingData class
- change BlockPlayerData to use ConcurrentHashMap for blocks
- refactor NmsProvider to support multiple NMS versions
@github-actions
Copy link
Copy Markdown
Contributor

⚠️ API/ABI changes detected!

This PR contains changes that modified the public API. To update the reference ABI dumps:

./gradlew updateKotlinAbi
git add **/api/**
git commit -m "Update ABI reference"
git push

After updating, the CI will pass. Make sure the changes are backward compatible.

…acket listener API

- introduce AbstractChannelInjector for handling packet injection across multiple NMS versions
- implement V1_21_11ChannelInjector and V26_1ChannelInjector for specific NMS versions
- create InternalNmsBridge and InternalPacketListenerApiBridge for packet handling
- update NmsProvider to create channel injectors and packet listener APIs
- add LibLoaderBridge interface for handling library loading across NMS versions
- implement V1_21_11LibLoaderBridgeImpl and V26_1LibLoaderBridgeImpl for respective versions
- refactor LibLoader to utilize the new bridge for compatibility management
@github-actions
Copy link
Copy Markdown
Contributor

⚠️ API/ABI changes detected!

This PR contains changes that modified the public API. To update the reference ABI dumps:

./gradlew updateKotlinAbi
git add **/api/**
git commit -m "Update ABI reference"
git push

After updating, the CI will pass. Make sure the changes are backward compatible.

- implement NmsProvider interface for version-specific operations
- add NmsProviderConfig for managing provider metadata
- create NmsProvidersCollector for collecting NMS providers at compile time
- update existing channel injectors to use NmsProvider for plugin registration
- enhance version resolution logic for better fallback handling
- rename SurfPaperNmsBridge to InternalNmsBridge for clarity
- adjust createNmsBridge method to return appropriate bridge implementations
@github-actions
Copy link
Copy Markdown
Contributor

⚠️ API/ABI changes detected!

This PR contains changes that modified the public API. To update the reference ABI dumps:

./gradlew updateKotlinAbi
git add **/api/**
git commit -m "Update ABI reference"
git push

After updating, the CI will pass. Make sure the changes are backward compatible.

- change implementation from NmsBridge to InternalNmsBridge for better multiversion support
@github-actions
Copy link
Copy Markdown
Contributor

⚠️ API/ABI changes detected!

This PR contains changes that modified the public API. To update the reference ABI dumps:

./gradlew updateKotlinAbi
git add **/api/**
git commit -m "Update ABI reference"
git push

After updating, the CI will pass. Make sure the changes are backward compatible.

…ApiBridge

- change createPacketListenerApi return type to InternalPacketListenerApiBridge
- update SurfPaperPacketListenerApiProxy to implement InternalPacketListenerApiBridge
- modify version-specific NmsProvider implementations to return InternalPacketListenerApiBridge
@github-actions
Copy link
Copy Markdown
Contributor

⚠️ API/ABI changes detected!

This PR contains changes that modified the public API. To update the reference ABI dumps:

./gradlew updateKotlinAbi
git add **/api/**
git commit -m "Update ABI reference"
git push

After updating, the CI will pass. Make sure the changes are backward compatible.

1 similar comment
@github-actions
Copy link
Copy Markdown
Contributor

⚠️ API/ABI changes detected!

This PR contains changes that modified the public API. To update the reference ABI dumps:

./gradlew updateKotlinAbi
git add **/api/**
git commit -m "Update ABI reference"
git push

After updating, the CI will pass. Make sure the changes are backward compatible.

@twisti-dev twisti-dev changed the title Implement 1.21.11/26.1 mutliversion support with nice generator Feat: multiversion NMS support Apr 18, 2026
@twisti-dev
Copy link
Copy Markdown
Contributor

@copilot update the abi and verify those are not breaking changes. See #311 (comment)

@twisti-dev twisti-dev marked this pull request as ready for review April 18, 2026 14:37
Copilot AI review requested due to automatic review settings April 18, 2026 14:37
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR implements multiversion NMS support for the Paper platform by introducing a version-resolving NmsProvider architecture, moving NMS-dependent implementations into per-version modules, and adding a Gradle plugin to generate new NMS modules from a reference version. It also adds LuckPerms API integration utilities and updates build/dependency wiring to include the new modules.

Changes:

  • Added a multiversion NMS provider system (version resolution, provider metadata collection via KSP, and runtime provider selection).
  • Split NMS-dependent logic into new version modules (v1-21-11, v26-1) with version-aware proxies in surf-api-paper-server.
  • Added LuckPerms access helpers and prefixed-name utilities for Paper and Velocity; updated dependency versions and project version.

Reviewed changes

Copilot reviewed 175 out of 176 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
surf-api-velocity/surf-api-velocity/src/main/kotlin/dev/slne/surf/api/velocity/util/velocity-util.kt Adds Velocity Player helpers for LuckPerms user access and prefixed display names.
surf-api-shared/surf-api-shared-internal/src/main/kotlin/dev/slne/surf/api/shared/internal/nms/NmsVersion.kt Introduces a shared enum of supported NMS versions.
surf-api-shared/surf-api-shared-internal/src/main/kotlin/dev/slne/surf/api/shared/internal/nms/NmsProviderMeta.kt Adds serializable metadata model for NMS provider discovery.
surf-api-shared/surf-api-shared-internal/src/main/kotlin/dev/slne/surf/api/shared/internal/nms/NmsProviderMarker.kt Adds runtime-retained annotation used by KSP to collect provider metadata.
surf-api-shared/surf-api-shared-internal/src/main/kotlin/dev/slne/surf/api/shared/internal/nms/NmsProviderConfig.kt Centralizes JSON config and resource directory for provider metadata files.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/util/bukkit-util.kt Adds Paper Player/OfflinePlayer LuckPerms helpers and prefixed-name utility.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/reflection/Reflection.kt Removes global reflection remapper setup; keeps only JavaPlugin proxy access.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/proxy/TickThreadGuardProxy.kt Adds ServiceLoader proxy delegating TickThreadGuard to the current NMS provider.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/proxy/SurfPaperPacketListenerApiProxy.kt Adds version-aware proxy for the packet listener API via NmsProvider.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/proxy/SurfPaperNmsStatsBridgeProxy.kt Adds version-aware proxy for the stats bridge via NmsProvider.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/proxy/SurfPaperNmsSpawnPacketsProxy.kt Adds version-aware proxy for spawn packet helpers via NmsProvider.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/proxy/SurfPaperNmsPlayerToastPacketsProxy.kt Adds version-aware proxy for toast packets via NmsProvider.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/proxy/SurfPaperNmsPlayerPacketsProxy.kt Adds version-aware proxy for player packets via NmsProvider.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/proxy/SurfPaperNmsPlayerChatPacketsProxy.kt Adds version-aware proxy for player chat packets via NmsProvider.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/proxy/SurfPaperNmsPacketBridgesProxy.kt Replaces a concrete impl with a provider-delegating proxy for packet bridges.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/proxy/SurfPaperNmsNbtBridgeProxy.kt Adds version-aware proxy for NBT bridge via NmsProvider.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/proxy/SurfPaperNmsLootTableBridgeProxy.kt Adds version-aware proxy for loot-table bridge via NmsProvider.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/proxy/SurfPaperNmsItemBridgeProxy.kt Adds version-aware proxy for item bridge via NmsProvider.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/proxy/SurfPaperNmsGlowingBridgeProxy.kt Adds version-aware proxy for glowing bridge via NmsProvider.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/proxy/SurfPaperNmsEntityBridgeProxy.kt Adds version-aware proxy for entity bridge via NmsProvider.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/proxy/SurfPaperNmsCommonBridgeProxy.kt Adds version-aware proxy for common NMS bridge via NmsProvider.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/proxy/SurfPaperNmsCommandArgumentTypesBridgeProxy.kt Adds version-aware proxy for command-arg bridge via NmsProvider.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/proxy/SurfPaperNmsBridgeProxy.kt Adds version-aware proxy for the main NMS bridge via NmsProvider.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/proxy/SurfPaperNmsBlockPacketsProxy.kt Adds version-aware proxy for block packets via NmsProvider.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/proxy/SurfGlowingApiProxy.kt Adds version-aware proxy for SurfGlowingApi via NmsProvider.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/packet/lore/PluginDisablePacketLoreListener.kt Switches lore unregistration to a version-provided registry.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/packet/PacketApiLoader.kt Registers version-provided packet listeners and injectors; calls provider init/shutdown.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/libs/reflection/PaperPluginClassLoaderProxy.kt Removes old reflection proxy (moved behind version bridges).
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/libs/reflection/LibReflection.kt Removes old lib reflection holder (moved behind version bridges).
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/libs/LibLoader.kt Switches library loader internals to a version-specific LibLoaderBridge.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/impl/packet/SurfPaperPacketApiImpl.kt Routes packet-lore registration through PacketLoreRegistry from the provider.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/impl/nms/listener/packets/serverbound/NmsServerboundPacketImpl.kt Removes old non-versioned packet wrapper base.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/impl/nms/listener/packets/clientbound/NmsClientboundPacketImpl.kt Removes old non-versioned packet wrapper base.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/impl/nms/bridges/SurfPaperNmsStatsBridgeImpl.kt Removes old non-versioned stats bridge impl (moved to version modules).
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/impl/glow/entity/EntityGlowingData.kt Removes old non-versioned glowing entity data (moved to version modules).
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/impl/glow/block/BlockPlayerData.kt Removes old non-versioned glowing block player data (moved to version modules).
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/impl/glow/GlowingListener.kt Delegates lifecycle behavior to a version-provided GlowingLifecycleHandler.
surf-api-paper/surf-api-paper-server/src/main/kotlin/dev/slne/surf/api/paper/server/PaperInstance.kt Logs loaded NMS version and removes eager reflection initialization hook.
surf-api-paper/surf-api-paper-server/build.gradle.kts Wires in nms-common + runtime-only version modules; merges service files in Shadow.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/region/V26_1TickThreadGuard.kt Adds v26.1 tick-thread guard implementation.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/reflection/V26_1VanillaArgumentProviderProxy.kt Adds v26.1 reflection proxy for VanillaArgumentProvider.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/reflection/V26_1VanillaArgumentProviderImplProxy.kt Adds v26.1 reflection proxy for VanillaArgumentProviderImpl.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/reflection/V26_1ServerStatsCounterProxy.kt Adds v26.1 reflection remapper proxy for stats serialization.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/reflection/V26_1ServerConnectionListenerProxy.kt Adds v26.1 reflection proxy for server connection channels.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/reflection/V26_1Reflection.kt Adds v26.1 initialization for reflection remapper proxies.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/reflection/V26_1ItemProxy.kt Adds v26.1 item proxy for component mutation.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/reflection/V26_1EntityProxy.kt Adds v26.1 entity proxy for flags/data accessors.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/packet/lore/V26_1PacketLoreRegistry.kt Adds v26.1 adapter exposing lore listener operations via a registry interface.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/packet/lore/V26_1PacketLoreListener.kt Renames/moves packet lore listener into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/packet/listener/V26_1GlowingPacketListener.kt Renames/moves glowing packet listener into v26.1 module and updates dependencies.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/listener/packets/serverbound/V26_1SignUpdatePacketImpl.kt Adds v26.1 serverbound sign-update packet wrapper.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/listener/packets/serverbound/V26_1ServerboundCustomPayloadPacketImpl.kt Adds v26.1 serverbound custom-payload wrapper and API payload mapping.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/listener/packets/serverbound/V26_1RenameItemPacketImpl.kt Adds v26.1 serverbound rename-item packet wrapper.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/listener/packets/serverbound/V26_1NmsServerboundPacketImpl.kt Adds v26.1 serverbound wrapper base.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/listener/packets/serverbound/V26_1CommandSuggestionPacketImpl.kt Adds v26.1 serverbound command-suggestion wrapper.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/listener/packets/clientbound/V26_1NmsClientboundPacketImpl.kt Adds v26.1 clientbound wrapper base.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/listener/packets/clientbound/V26_1ClientboundSystemChatPacketImpl.kt Adds v26.1 clientbound system-chat wrapper.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/listener/packets/clientbound/V26_1ClientboundDisconnectPacketImpl.kt Adds v26.1 clientbound disconnect wrapper.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/listener/packets/V26_1NmsPacketImpl.kt Adds v26.1 base wrapper implementing NmsPacket.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/glow/entity/EntityPlayerData.kt Adds v26.1 entity glow player-data container.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/glow/entity/EntityGlowingData.kt Adds v26.1 entity glowing data and packet operations.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/glow/block/BlockPlayerData.kt Adds v26.1 block glow player-data container.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/glow/block/BlockGlowingData.kt Moves glowing block logic into v26.1 module and updates bridge usage.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/glow/V26_1TeamData.kt Adds v26.1 team tracking for glow colors.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/glow/V26_1GlowingLifecycleHandler.kt Adds v26.1 lifecycle handler used by server event listener.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/extensions/nms-extensions.kt Moves v26.1 NMS extension functions into versioned package.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/extensions/AdventureNBT.kt Moves AdventureNBT conversion into versioned package.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/bridges/packets/player/V26_1SurfPaperNmsPlayerToastPacketsImpl.kt Adds v26.1 toast packet implementation.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/bridges/packets/player/V26_1SurfPaperNmsPlayerPacketsImpl.kt Adds v26.1 player packet operations (open inventory/sign, set slot, close).
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/bridges/packets/player/V26_1SurfPaperNmsPlayerChatPacketsImpl.kt Adds v26.1 player chat packet builder.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/bridges/packets/block/V26_1SurfPaperNmsBlockPacketsImpl.kt Adds v26.1 block update/reset packet operations.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/bridges/packets/V26_1SurfPaperNmsPacketBridgesImpl.kt Adds v26.1 packet bridges impl returning versioned packet operations.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/bridges/packets/V26_1PacketOperationImpl.kt Renames/versions packet operation implementation and factories.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/bridges/V26_1SurfPaperNmsStatsBridgeImpl.kt Adds v26.1 stats bridge using v26.1 reflection proxies.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/bridges/V26_1SurfPaperNmsNbtBridgeImpl.kt Moves NBT bridge to v26.1 module and updates extension imports.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/bridges/V26_1SurfPaperNmsLootTableBridgeImpl.kt Adds v26.1 loot-table bridge implementation.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/bridges/V26_1SurfPaperNmsItemBridgeImpl.kt Adds v26.1 item component mutation via reflection proxy.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/bridges/V26_1SurfPaperNmsEntityBridgeImpl.kt Adds v26.1 entity creation-by-NBT bridge with tick-thread enforcement.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/bridges/V26_1LibLoaderBridgeImpl.kt Adds v26.1 lib-loader bridge for commodore remap and classloader updates.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/V26_1NmsPacketBridgeHandler.kt Adds v26.1 packet wrap/unwrap handler used by channel injector.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/build.gradle.kts Adds v26.1 NMS module Gradle config (paperweight bundle, deps).
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/region/V1_21_11TickThreadGuard.kt Renames/moves tick-thread guard into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/reflection/V1_21_11VanillaArgumentProviderProxy.kt Renames/moves VanillaArgumentProvider proxy into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/reflection/V1_21_11VanillaArgumentProviderImplProxy.kt Renames/moves VanillaArgumentProviderImpl proxy into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/reflection/V1_21_11ServerStatsCounterProxy.kt Renames/moves stats proxy into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/reflection/V1_21_11ServerConnectionListenerProxy.kt Renames/moves connection proxy into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/reflection/V1_21_11Reflection.kt Adds v1.21.11 reflection remapper initialization.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/reflection/V1_21_11ItemProxy.kt Adds v1.21.11 item proxy for component mutation.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/reflection/V1_21_11EntityProxy.kt Renames/moves entity proxy into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/packet/lore/V1_21_11PacketLoreRegistry.kt Adds v1.21.11 lore registry adapter.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/listener/packets/serverbound/V1_21_11SignUpdatePacketImpl.kt Renames/moves sign-update wrapper into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/listener/packets/serverbound/V1_21_11ServerboundCustomPayloadPacketImpl.kt Renames/moves custom-payload wrapper into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/listener/packets/serverbound/V1_21_11RenameItemPacketImpl.kt Renames/moves rename-item wrapper into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/listener/packets/serverbound/V1_21_11NmsServerboundPacketImpl.kt Adds v1.21.11 serverbound wrapper base.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/listener/packets/serverbound/V1_21_11CommandSuggestionPacketImpl.kt Renames/moves command-suggestion wrapper into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/listener/packets/clientbound/V1_21_11NmsClientboundPacketImpl.kt Adds v1.21.11 clientbound wrapper base.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/listener/packets/clientbound/V1_21_11ClientboundSystemChatPacketImpl.kt Renames/moves system-chat wrapper into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/listener/packets/clientbound/V1_21_11ClientboundDisconnectPacketImpl.kt Renames/moves disconnect wrapper into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/listener/packets/V1_21_11NmsPacketImpl.kt Renames/moves base packet wrapper into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/glow/entity/EntityPlayerData.kt Moves entity glow player-data into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/glow/entity/EntityGlowingData.kt Adds v1.21.11 entity glowing data and operations.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/glow/block/BlockPlayerData.kt Adds v1.21.11 block glow player-data container.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/glow/block/BlockGlowingData.kt Adds v1.21.11 block glowing data and operations.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/glow/V1_21_11TeamData.kt Renames/moves team data into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/glow/V1_21_11GlowingLifecycleHandler.kt Adds v1.21.11 lifecycle handler used by server event listener.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/packets/player/V1_21_11SurfPaperNmsPlayerToastPacketsImpl.kt Renames/moves toast packets implementation into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/packets/player/V1_21_11SurfPaperNmsPlayerPacketsImpl.kt Renames/moves player packets impl into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/packets/player/V1_21_11SurfPaperNmsPlayerChatPacketsImpl.kt Renames/moves player chat packets impl into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/packets/block/V1_21_11SurfPaperNmsBlockPacketsImpl.kt Adds v1.21.11 block packets impl.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/packets/V1_21_11SurfPaperNmsPacketBridgesImpl.kt Adds v1.21.11 packet bridges impl.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/V1_21_11SurfPaperNmsStatsBridgeImpl.kt Adds v1.21.11 stats bridge using version reflection proxies.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/V1_21_11SurfPaperNmsNbtBridgeImpl.kt Adds v1.21.11 NBT bridge implementation using data components.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/V1_21_11SurfPaperNmsLootTableBridgeImpl.kt Renames/moves loot table bridge into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/V1_21_11SurfPaperNmsItemBridgeImpl.kt Renames/moves item bridge and switches to reflection proxy component updates.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/V1_21_11SurfPaperNmsGlowingBridgeImpl.kt Adds v1.21.11 glowing bridge implementation.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/V1_21_11SurfPaperNmsEntityBridgeImpl.kt Renames/moves entity bridge into version module.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/V1_21_11SurfPaperNmsCommonBridgeImpl.kt Renames/moves common bridge and redirects reflection calls to version reflection.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/V1_21_11SurfPaperNmsCommandArgumentTypesBridgeImpl.kt Renames/moves command argument bridge into version module and updates reflection usage.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/V1_21_11SurfPaperNmsBridgeImpl.kt Updates NMS bridge implementation to implement internal handler methods.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/V1_21_11LibLoaderBridgeImpl.kt Adds v1.21.11 lib-loader bridge for commodore remap and classloader updates.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/V1_21_11NmsPacketBridgeHandler.kt Adds v1.21.11 packet wrap/unwrap handler used by channel injector.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/build.gradle.kts Adds v1.21.11 NMS module Gradle config (paperweight bundle, deps).
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-common/src/main/kotlin/dev/slne/surf/api/paper/nms/common/PacketLoreRegistry.kt Adds version-agnostic lore registry interface.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-common/src/main/kotlin/dev/slne/surf/api/paper/nms/common/NmsVersionResolver.kt Adds runtime NMS version resolution from Bukkit server version string.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-common/src/main/kotlin/dev/slne/surf/api/paper/nms/common/NmsPacketBridgeHandler.kt Adds version-agnostic API for packet wrapping/unwrapping.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-common/src/main/kotlin/dev/slne/surf/api/paper/nms/common/LibLoaderBridge.kt Adds version-agnostic lib-loader bridge interface.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-common/src/main/kotlin/dev/slne/surf/api/paper/nms/common/InternalPacketListenerApiBridge.kt Adds internal interface to route packet listener handling through version impls.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-common/src/main/kotlin/dev/slne/surf/api/paper/nms/common/InternalNmsBridge.kt Adds internal interface exposing early packet handling for Netty injector.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-common/src/main/kotlin/dev/slne/surf/api/paper/nms/common/GlowingLifecycleHandler.kt Adds version-agnostic glowing lifecycle interface used by server events.
surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-common/build.gradle.kts Adds Gradle config for the new nms-common module.
surf-api-gradle-plugin/surf-api-processor/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider Registers the new KSP processor provider for collecting NMS providers.
surf-api-gradle-plugin/surf-api-processor/src/main/kotlin/dev/slne/surf/api/processor/nms/NmsProvidersCollectorProvider.kt Adds KSP provider for the NMS provider collector.
surf-api-gradle-plugin/surf-api-processor/src/main/kotlin/dev/slne/surf/api/processor/nms/NmsProvidersCollector.kt Adds KSP processor to emit provider metadata JSON into resources.
surf-api-gradle-plugin/surf-api-processor/src/main/kotlin/dev/slne/surf/api/processor/ClassNames.kt Adds NmsProviderMarker to known annotation class names for processing.
surf-api-generator/gradle-nms-module-generator/src/main/kotlin/dev/slne/surf/api/generator/nms/TransformationScope.kt Adds DSL scope for code transformations during NMS module generation.
surf-api-generator/gradle-nms-module-generator/src/main/kotlin/dev/slne/surf/api/generator/nms/NmsVersion.kt Adds generator-specific NMS version metadata (ids, prefixes, paper bundles).
surf-api-generator/gradle-nms-module-generator/src/main/kotlin/dev/slne/surf/api/generator/nms/NmsTransformation.kt Adds transformation model (rename, replace, regex, file transforms, exclusions).
surf-api-generator/gradle-nms-module-generator/src/main/kotlin/dev/slne/surf/api/generator/nms/NmsGeneratorExtension.kt Adds Gradle extension to configure reference/target and transformations.
surf-api-generator/gradle-nms-module-generator/src/main/kotlin/dev/slne/surf/api/generator/nms/NmsGeneratorDsl.kt Adds DSL marker annotation for generator extension DSL.
surf-api-generator/gradle-nms-module-generator/src/main/kotlin/dev/slne/surf/api/generator/nms/GenerateNmsModuleTask.kt Adds Gradle task to generate/overwrite NMS module sources with prompts.
surf-api-generator/gradle-nms-module-generator/src/main/kotlin/dev/slne/surf/api/generator/nms/GenerateNmsModulePlugin.kt Adds Gradle plugin registering extension + task.
surf-api-generator/gradle-nms-module-generator/settings.gradle.kts Adds settings for the included-build Gradle plugin project.
surf-api-generator/gradle-nms-module-generator/build.gradle.kts Declares the Gradle plugin id and implementation class.
surf-api-generator/build.gradle.kts Minor formatting/no-op changes around generator task helpers.
surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/luckperms/LuckPermsAccess.kt Adds LuckPerms API accessors and metadata helpers (prefix/suffix/meta/weight).
surf-api-core/surf-api-core/build.gradle.kts Adds compileOnlyApi dependency on LuckPerms API.
settings.gradle.kts Includes new plugin build and new NMS subprojects.
gradle/libs.versions.toml Adds LuckPerms API dependency entry and changes LuckPerms version value.
gradle.properties Bumps overall project version to 3.1.0.
build.gradle.kts Adds the new NMS generator plugin and configures reference/target versions.
.gitlab-ci.yml Removes legacy GitLab CI configuration.

Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 18, 2026

@copilot update the abi and verify those are not breaking changes. See #311 (comment)

Updated the ABI dumps in commit 5c15de7. All changes are additive only (no removals or modifications to existing API):

  • surf-api-core.api: Added LuckPermsAccess class and LuckPermsAccessKt extension functions
  • surf-api-paper.api: Added getLuckPermsUser, getLuckPermsUserOrNull, and getPrefixedName extensions on Player/OfflinePlayer
  • surf-api-velocity.api: Added getLuckPermsUser, getLuckPermsUserOrNull, and getPrefixedName extensions on Velocity Player

No breaking changes — existing API surface is untouched.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • piston-data.mojang.com
    • Triggering command: /usr/lib/jvm/temurin-25-jdk-amd64/bin/java /usr/lib/jvm/temurin-25-jdk-amd64/bin/java --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.xml/javax.xml.namespace=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED --enable-native-access=ALL-UNNAMED -Xmx8G -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Copilot AI requested a review from twisti-dev April 18, 2026 14:44
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 55e7a4706d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

twisti-dev and others added 4 commits April 18, 2026 20:00
…core/luckperms/LuckPermsAccess.kt

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
- move provider.initialize call before createPacketListeners to ensure proper initialization order
…in onDisable

- call provider.shutdown after unregistering listeners and terminating packet events in onDisable
- ensures shutdown occurs after all listeners and injectors are properly unregistered
…t provider access

- replace lazy delegate with property getter that calls LuckPermsProvider.get() directly
- ensures latest instance is always returned when accessing luckperms property
@twisti-dev twisti-dev merged commit c93c0c3 into version/26.1 Apr 18, 2026
4 checks passed
@twisti-dev twisti-dev deleted the copilot/add-multiversion-support-nms branch April 18, 2026 18:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants