Feat: multiversion NMS support#311
Conversation
Implements the NmsProvider interface with version-specific bridge factories, packet listeners, reflection initialization, and ServiceLoader discovery via @autoservice. Co-authored-by: Copilot <[email protected]> Co-authored-by: TheBjoRedCraft <[email protected]>
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 <[email protected]> Co-authored-by: TheBjoRedCraft <[email protected]>
- 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 <[email protected]>
- 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 <[email protected]>
- 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 <[email protected]>
Agent-Logs-Url: https://github.com/SLNE-Development/surf-api/sessions/360d5417-e18a-48e5-8566-1b1629da9e01 Co-authored-by: TheBjoRedCraft <[email protected]>
… 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 <[email protected]>
…ovider and related classes
… 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 <[email protected]>
… 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 <[email protected]>
…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
|
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 pushAfter 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
|
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 pushAfter 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
|
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 pushAfter updating, the CI will pass. Make sure the changes are backward compatible. |
- change implementation from NmsBridge to InternalNmsBridge for better multiversion support
|
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 pushAfter 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
|
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 pushAfter updating, the CI will pass. Make sure the changes are backward compatible. |
1 similar comment
|
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 pushAfter updating, the CI will pass. Make sure the changes are backward compatible. |
|
@copilot update the abi and verify those are not breaking changes. See #311 (comment) |
There was a problem hiding this comment.
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 insurf-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. |
Agent-Logs-Url: https://github.com/SLNE-Development/surf-api/sessions/3a0ffb0f-3b80-458c-bdd3-0594694f5cde Co-authored-by: twisti-dev <[email protected]>
Updated the ABI dumps in commit
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:
If you need me to access, download, or install something from one of these locations, you can either:
|
There was a problem hiding this comment.
💡 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".
…core/luckperms/LuckPermsAccess.kt Co-authored-by: Copilot <[email protected]>
- 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
UninitializedPropertyAccessExceptiononV1_21_11SurfPaperNmsGlowingBridgeImpl.INSTANCE