Skip to content

Direct NMS packets under net.opmasterleo.packet - #1

Merged
OPmasterLEO merged 8 commits into
mainfrom
cursor/nms-packet-optimization-d32c
Aug 12, 2026
Merged

Direct NMS packets under net.opmasterleo.packet#1
OPmasterLEO merged 8 commits into
mainfrom
cursor/nms-packet-optimization-d32c

Conversation

@OPmasterLEO

@OPmasterLEO OPmasterLEO commented Aug 12, 2026

Copy link
Copy Markdown
Owner

Removes Netty pipeline injection and does not reimplement menu/container/sign packets that PacketUxUi and SignGUI already own. Play packets whose layout actually breaks across versions are built with direct NMS (CraftPlayer.getHandle(), ServerPlayer.connection.send, Clientbound* / PacketPlayOut*) in shared adapters instead of per-bucket copies.

Package

All code lives under net.opmasterleo.packet.

Changes

  • Drop Netty channel injectors; skip PacketUxUi / SignGUI packet duplication
  • Shared modern NMS packet factory + PacketWrap
  • Spec objects for addEntity / addTextDisplay (Codacy parameter-list limits)
  • Public metadata field access only (no setAccessible)
  • Custom Bukkit events with NMS handles
  • ./gradlew publish / publishSnapshot, pinned Actions SHAs in workflows
  • Paper API version via gradle.properties (paperApiVersion)

Verification

  • ./gradlew :nms-api:test :api:compileJava :plugin:compileJava
  • ./gradlew :nms:v1_20_R4:compileJava
Open in Web Open in Cursor 

…licates

Drop Netty pipeline injection and menu/container/sign packets already
handled by PacketUxUi and SignGUI. Construct version-breaking play
packets with net.minecraft Clientbound*/PacketPlayOut* in shared
adapters, wrap handles in PacketWrap, and fire CraftBukkit/Paper-backed
custom events with ServerPlayer handles.

Co-authored-by: OPmasterLEO <OPmasterLEO@users.noreply.github.com>
@codacy-production

codacy-production Bot commented Aug 12, 2026

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 721 complexity · 30 duplication

Metric Results
Complexity 721
Duplication 30

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@github-advanced-security

Copy link
Copy Markdown

You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool.

What Enabling Code Scanning Means:

  • The 'Security' tab will display more code scanning analysis results (e.g., for the default branch).
  • Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results.
  • You will be able to see the analysis results for the pull request's branch on this overview once the scans have completed and the checks have passed.

For more information about GitHub Code Scanning, check out the documentation.

Move all sources, Gradle group, module name, plugin main, and shared
NMS package rewriting off org.mastersmp.packet.

Co-authored-by: OPmasterLEO <OPmasterLEO@users.noreply.github.com>
@cursor cursor Bot changed the title Direct NMS packets without Netty or PacketUxUi duplicates Direct NMS packets under net.opmasterleo.packet Aug 12, 2026
cursoragent and others added 6 commits August 12, 2026 21:15
Collapse addEntity/addTextDisplay into PacketViews specs, read public
metadata accessors without setAccessible, pin GitHub Actions to commit
SHAs, and load the Paper API version from gradle.properties.

Co-authored-by: OPmasterLEO <OPmasterLEO@users.noreply.github.com>
Use Gson/Legacy Adventure serializers instead of PlainText/PaperAdventure,
String getLore/setLore for Spigot ItemMeta, reflective PacketPlayOutBlockChange
construction for 1.16.1, and add legacy serializer deps to mid modules.

Co-authored-by: OPmasterLEO <OPmasterLEO@users.noreply.github.com>
Use string switches and Reflect helpers so modern shared sources compile
across STAB enum drift, SetTime constructor changes, and private ChunkPos.

Co-authored-by: OPmasterLEO <OPmasterLEO@users.noreply.github.com>
26.2 moved built-in entity type fields from EntityType to EntityTypes.
Look up ARMOR_STAND/TEXT_DISPLAY reflectively so modern shared sources
compile across both layouts.

Co-authored-by: OPmasterLEO <OPmasterLEO@users.noreply.github.com>
Split 26.1/26.2 packet bridges to use EntityType vs EntityTypes and
direct SetTime(Map) constructors, removing Class.forName entityType
lookup and high-NPath constructSetTime from Reflect.

Co-authored-by: OPmasterLEO <OPmasterLEO@users.noreply.github.com>
@OPmasterLEO
OPmasterLEO marked this pull request as ready for review August 12, 2026 22:34
Copilot AI lite review requested due to automatic review settings August 12, 2026 22:34
@OPmasterLEO
OPmasterLEO merged commit da24194 into main Aug 12, 2026
5 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

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 migrates PacketAPI to the net.opmasterleo.packet namespace and shifts packet sending/listening to a “direct NMS” model (via CraftPlayer#getHandle() and ServerPlayer.connection.send) by removing Netty pipeline injection and consolidating per-version packet building into shared NMS adapters.

Changes:

  • Remove Netty channel injection/listening and replace it with Bukkit events + direct NMS send pathways (PacketSendEvent, Nms* events).
  • Introduce shared NMS packet factories (SharedPacketBridge*) and a typed PacketWrap, plus metadata helpers for text displays.
  • Update Gradle build/publish setup (paper API version via gradle.properties, wrapper scripts, publishing tasks) and pin GitHub Actions SHAs.

Reviewed changes

Copilot reviewed 139 out of 142 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
README.md Updates documentation to reflect direct-NMS approach and non-duplication of menu/sign packet functionality.
plugin/src/main/resources/plugin.yml Updates plugin main class package and description.
plugin/src/main/java/net/opmasterleo/packet/plugin/PacketPlugin.java Migrates plugin entrypoint to new package and registers NMS player listener.
plugin/src/main/java/net/opmasterleo/packet/plugin/NmsPlayerListener.java Adds Bukkit→custom-event bridging for join/quit/swing/unknown-entity interactions.
plugin/build.gradle.kts Removes Netty dependency and uses paperApiVersion property.
nms/v26_2/src/main/java/net/opmasterleo/packet/nms/v26_2/Adapter.java Package migration for the 26.2 adapter.
nms/v26_2/build.gradle.kts Updates nmsEra to modern26_2.
nms/v26_1/src/main/java/net/opmasterleo/packet/nms/v26_1/Adapter.java Package migration for the 26.1 adapter.
nms/v1_21_R7/src/main/java/net/opmasterleo/packet/nms/v1_21_R7/Adapter.java Package migration for the 1.21 R7 adapter.
nms/v1_21_R6/src/main/java/net/opmasterleo/packet/nms/v1_21_R6/Adapter.java Package migration for the 1.21 R6 adapter.
nms/v1_21_R5/src/main/java/net/opmasterleo/packet/nms/v1_21_R5/Adapter.java Package migration for the 1.21 R5 adapter.
nms/v1_21_R4/src/main/java/net/opmasterleo/packet/nms/v1_21_R4/Adapter.java Package migration for the 1.21 R4 adapter.
nms/v1_21_R3/src/main/java/net/opmasterleo/packet/nms/v1_21_R3/Adapter.java Package migration for the 1.21 R3 adapter.
nms/v1_21_R2/src/main/java/net/opmasterleo/packet/nms/v1_21_R2/Adapter.java Package migration for the 1.21 R2 adapter.
nms/v1_21_R1/src/main/java/net/opmasterleo/packet/nms/v1_21_R1/Adapter.java Package migration for the 1.21 R1 adapter.
nms/v1_20_R4/src/main/java/net/opmasterleo/packet/nms/v1_20_R4/Adapter.java Package migration for the 1.20 R4 adapter.
nms/v1_20_R3/src/main/java/net/opmasterleo/packet/nms/v1_20_R3/Adapter.java Package migration for the 1.20 R3 adapter.
nms/v1_20_R3/build.gradle.kts Removes Netty deps and adjusts serializer dependency.
nms/v1_20_R2/src/main/java/net/opmasterleo/packet/nms/v1_20_R2/Adapter.java Package migration for the 1.20 R2 adapter.
nms/v1_20_R2/build.gradle.kts Removes Netty deps and adjusts serializer dependency.
nms/v1_20_R1/src/main/java/net/opmasterleo/packet/nms/v1_20_R1/Adapter.java Package migration for the 1.20 R1 adapter.
nms/v1_20_R1/build.gradle.kts Removes Netty deps and adjusts serializer dependency.
nms/v1_19_R3/src/main/java/net/opmasterleo/packet/nms/v1_19_R3/Adapter.java Package migration for the 1.19 R3 adapter.
nms/v1_19_R3/build.gradle.kts Removes Netty deps and adjusts serializer dependency.
nms/v1_19_R2/src/main/java/net/opmasterleo/packet/nms/v1_19_R2/Adapter.java Package migration for the 1.19 R2 adapter.
nms/v1_19_R2/build.gradle.kts Removes Netty deps and adjusts serializer dependency.
nms/v1_19_R1/src/main/java/net/opmasterleo/packet/nms/v1_19_R1/Adapter.java Package migration for the 1.19 R1 adapter.
nms/v1_19_R1/build.gradle.kts Removes Netty deps and adjusts serializer dependency.
nms/v1_18_R2/src/main/java/net/opmasterleo/packet/nms/v1_18_R2/Adapter.java Package migration for the 1.18 R2 adapter.
nms/v1_18_R2/build.gradle.kts Removes Netty deps and adjusts serializer dependency.
nms/v1_18_R1/src/main/java/net/opmasterleo/packet/nms/v1_18_R1/Adapter.java Package migration for the 1.18 R1 adapter.
nms/v1_18_R1/build.gradle.kts Removes Netty deps and adjusts serializer dependency.
nms/v1_17_R1/src/main/java/net/opmasterleo/packet/nms/v1_17_R1/Adapter.java Package migration for the 1.17 R1 adapter.
nms/v1_17_R1/build.gradle.kts Removes Netty deps and adjusts serializer dependency.
nms/v1_16_R3/src/main/java/net/opmasterleo/packet/nms/v1_16_R3/Adapter.java Package migration for the 1.16 R3 adapter.
nms/v1_16_R3/build.gradle.kts Removes Netty dependency for legacy bucket.
nms/v1_16_R2/src/main/java/net/opmasterleo/packet/nms/v1_16_R2/Adapter.java Package migration for the 1.16 R2 adapter.
nms/v1_16_R2/build.gradle.kts Removes Netty dependency for legacy bucket.
nms/v1_16_R1/src/main/java/net/opmasterleo/packet/nms/v1_16_R1/Adapter.java Package migration for the 1.16 R1 adapter.
nms/v1_16_R1/build.gradle.kts Removes Netty dependency for legacy bucket.
nms/shared-sources.gradle.kts Updates shared-source package rewriting and adds modern era variants.
nms-shared/world/modern/SharedWorldBridge.java Updates package/imports and hardens chunk position extraction.
nms-shared/world/mid/SharedWorldBridge.java Updates package/imports for mid adapters.
nms-shared/world/legacy/SharedWorldBridge.java Updates package/imports for legacy adapters.
nms-shared/Reflect.java Updates package and expands reflection helpers (field/set/construct/static invoke).
nms-shared/player/modern/SharedPlayerBridge.java Direct NMS send/connection checks; adds entityId/level helpers.
nms-shared/player/mid/SharedPlayerBridge.java Direct NMS send/connection checks; adds entityId helper.
nms-shared/player/legacy/SharedPlayerBridge.java Direct NMS send/connection checks; adds entityId/level helpers.
nms-shared/packet/modern26/SharedPacketBridge.java Adds modern26-specific packet factory implementation.
nms-shared/packet/modern26_2/SharedPacketBridge.java Adds modern26_2-specific packet factory implementation.
nms-shared/packet/modern/SharedPacketBridge.java Expands modern shared packet factory and removes container/menu packet duplication.
nms-shared/packet/mid/SharedPacketBridge.java Reworks mid shared packet factory to direct constructors for supported packets.
nms-shared/packet/legacy/SharedPacketBridge.java Reworks legacy shared packet factory to direct constructors/field sets without Netty.
nms-shared/menu/modern/SharedMenuBridge.java Package/import migration for modern menu bridge.
nms-shared/menu/mid/SharedMenuBridge.java Package/import migration for mid menu bridge.
nms-shared/menu/legacy/SharedMenuBridge.java Package/import migration for legacy menu bridge.
nms-shared/item/modern21_5/SharedItemBridge.java Package/import migration for modern21_5 item bridge.
nms-shared/item/modern/SharedItemBridge.java Package/import migration for modern item bridge.
nms-shared/item/mid/SharedItemBridge.java Changes lore handling to legacy-string serialization for mid adapters.
nms-shared/item/legacy/SharedItemBridge.java Changes lore handling to legacy-string serialization for legacy adapters.
nms-shared/connection/modern/SharedConnectionBridge.java Removes Netty channel access and exposes NMS connection/listener/latency.
nms-shared/connection/mid/SharedConnectionBridge.java Removes Netty channel access and exposes NMS connection/listener/latency with reflection fallbacks.
nms-shared/connection/legacy/SharedConnectionBridge.java Removes Netty channel access and exposes NMS connection/listener/latency.
nms-shared/adapter/modern/SharedMetadataBridge.java Adds modern metadata bridge using public Mojang-mapped accessors (no setAccessible).
nms-shared/adapter/modern/SharedComponentBridge.java Package/import migration for modern component bridge.
nms-shared/adapter/modern/AbstractNmsAdapter.java Removes PacketWrapper/Netty integration and wires in MetadataBridge.
nms-shared/adapter/mid/SharedComponentBridge.java Switches mid component conversion to JSON serializer and legacy section heuristics.
nms-shared/adapter/mid/AbstractNmsAdapter.java Package/import migration for mid adapter base.
nms-shared/adapter/legacy/SharedComponentBridge.java Adjusts legacy heuristics to legacy section serializer.
nms-shared/adapter/legacy/AbstractNmsAdapter.java Package/import migration for legacy adapter base.
nms-shared/wrapper/modern/SharedPacketWrapper.java Removes Netty-based packet wrapper/injector implementation.
nms-api/src/test/java/net/opmasterleo/packet/nms/packet/PacketWrapTest.java Adds unit tests for PacketWrap direction/type behavior.
nms-api/src/test/java/net/opmasterleo/packet/nms/AdapterLoaderTest.java Adds tests for version normalization and bucket mapping.
nms-api/src/main/java/org/mastersmp/packet/nms/PlayerBridge.java Removes old org.mastersmp PlayerBridge.
nms-api/src/main/java/org/mastersmp/packet/nms/PacketWrapper.java Removes old Netty-based PacketWrapper API.
nms-api/src/main/java/org/mastersmp/packet/nms/PacketBridge.java Removes old broad PacketBridge API.
nms-api/src/main/java/org/mastersmp/packet/nms/packet/PacketViews.java Removes old PacketViews model.
nms-api/src/main/java/org/mastersmp/packet/nms/ConnectionBridge.java Removes old ConnectionBridge that exposed Netty channel.
nms-api/src/main/java/net/opmasterleo/packet/nms/WorldBridge.java Package migration for WorldBridge.
nms-api/src/main/java/net/opmasterleo/packet/nms/RandomBridge.java Refactors weighted-pick overload to avoid nested stream/map call.
nms-api/src/main/java/net/opmasterleo/packet/nms/ProtocolProbe.java Package migration for ProtocolProbe.
nms-api/src/main/java/net/opmasterleo/packet/nms/PlayerBridge.java Adds expanded PlayerBridge API (entityId/level defaults).
nms-api/src/main/java/net/opmasterleo/packet/nms/PacketBridge.java Introduces direct-NMS packet factory interface with per-era required methods.
nms-api/src/main/java/net/opmasterleo/packet/nms/packet/PlayerActionType.java Package migration for PlayerActionType.
nms-api/src/main/java/net/opmasterleo/packet/nms/packet/PacketWrap.java Adds typed, zero-copy packet handle wrapper.
nms-api/src/main/java/net/opmasterleo/packet/nms/packet/PacketViews.java Adds new spec/view model for version-sensitive packet construction.
nms-api/src/main/java/net/opmasterleo/packet/nms/packet/InteractAction.java Package migration for InteractAction.
nms-api/src/main/java/net/opmasterleo/packet/nms/packet/Hand.java Package migration for Hand.
nms-api/src/main/java/net/opmasterleo/packet/nms/packet/BlockPosView.java Package migration for BlockPosView.
nms-api/src/main/java/net/opmasterleo/packet/nms/NmsUnsupportedException.java Package migration for NmsUnsupportedException.
nms-api/src/main/java/net/opmasterleo/packet/nms/NmsAdapter.java Removes PacketWrapper exposure and updates metadata method signature.
nms-api/src/main/java/net/opmasterleo/packet/nms/MetadataIds.java Package migration for MetadataIds.
nms-api/src/main/java/net/opmasterleo/packet/nms/MetadataBridge.java Updates text display metadata API to accept PacketViews.TextDisplayStyle.
nms-api/src/main/java/net/opmasterleo/packet/nms/MenuBridge.java Package migration for MenuBridge.
nms-api/src/main/java/net/opmasterleo/packet/nms/ItemBridge.java Package migration for ItemBridge.
nms-api/src/main/java/net/opmasterleo/packet/nms/ConnectionBridge.java Introduces new ConnectionBridge without Netty exposure (connection/listener/latency/accepting).
nms-api/src/main/java/net/opmasterleo/packet/nms/ComponentBridge.java Package migration for ComponentBridge.
nms-api/src/main/java/net/opmasterleo/packet/nms/AdapterLoader.java Package migration for AdapterLoader.
nms-api/build.gradle.kts Switches Paper API version to property and configures JUnit platform for tests.
gradlew.bat Adds Gradle wrapper script for Windows.
gradlew Adds Gradle wrapper script for POSIX.
gradle.properties Bumps plugin version and centralizes Paper API version.
build.gradle.kts Updates group/module name, centralizes Paper API version, and adjusts publish task gating.
api/src/main/java/org/mastersmp/packet/packet/Packets.java Removes old Packets facade tied to legacy PacketBridge API.
api/src/main/java/org/mastersmp/packet/event/NMSPacketSendEvent.java Removes old Netty-based packet send event model.
api/src/main/java/org/mastersmp/packet/event/NMSPacketReceiveEvent.java Removes old Netty-based packet receive event model.
api/src/main/java/org/mastersmp/packet/event/NMSPacketEvent.java Removes old base event model for Netty interception.
api/src/main/java/org/mastersmp/packet/channel/PacketView.java Removes old Netty-based packet view wrapper.
api/src/main/java/org/mastersmp/packet/channel/PacketListenerBus.java Removes Netty pipeline listener bus.
api/src/main/java/org/mastersmp/packet/channel/PacketFilter.java Removes old outbound packet filter type.
api/src/main/java/org/mastersmp/packet/channel/PacketDirection.java Removes old PacketDirection type used by Netty bus.
api/src/main/java/org/mastersmp/packet/channel/PacketChannels.java Removes Netty channel injection abstraction.
api/src/main/java/org/mastersmp/packet/channel/OutboundPacketResult.java Removes outbound filter result type used by Netty bus.
api/src/main/java/org/mastersmp/packet/channel/ChannelOps.java Removes Netty pipeline utility helpers.
api/src/main/java/net/opmasterleo/packet/world/Worlds.java Package migration for world facade.
api/src/main/java/net/opmasterleo/packet/world/Levels.java Package migration for levels facade.
api/src/main/java/net/opmasterleo/packet/world/Entities.java Package migration for entities facade.
api/src/main/java/net/opmasterleo/packet/world/Dimensions.java Package migration for dimensions facade.
api/src/main/java/net/opmasterleo/packet/world/Chunks.java Package migration for chunks facade.
api/src/main/java/net/opmasterleo/packet/schedule/TaskHandle.java Package migration for scheduling handle.
api/src/main/java/net/opmasterleo/packet/schedule/Schedulers.java Package migration for scheduler facade.
api/src/main/java/net/opmasterleo/packet/schedule/PlatformDetect.java Package migration for platform detection.
api/src/main/java/net/opmasterleo/packet/schedule/FastScheduler.java Removes Netty/event-loop coalescing and cleans up static queue maps.
api/src/main/java/net/opmasterleo/packet/schedule/DirectScheduler.java Package migration for direct scheduler.
api/src/main/java/net/opmasterleo/packet/schedule/AsyncWorkerPool.java Package migration for worker pool.
api/src/main/java/net/opmasterleo/packet/schedule/AdvancedScheduler.java Renames “off netty” helpers to entity/region thread naming.
api/src/main/java/net/opmasterleo/packet/PacketAPI.java Removes Netty channels/listeners exposure and migrates to new package imports.
api/src/main/java/net/opmasterleo/packet/packet/PacketTypeCache.java Package migration for packet type cache.
api/src/main/java/net/opmasterleo/packet/packet/Packets.java Adds new direct-NMS send facade with PacketSendEvent hook and text display spawn bundling.
api/src/main/java/net/opmasterleo/packet/menu/Menus.java Package migration for menus facade.
api/src/main/java/net/opmasterleo/packet/item/Items.java Package migration for items facade.
api/src/main/java/net/opmasterleo/packet/event/PacketSendEvent.java Adds event fired immediately before PacketAPI sends a packet via NMS.
api/src/main/java/net/opmasterleo/packet/event/PacketEvent.java Adds base cancellable packet event used by PacketSendEvent.
api/src/main/java/net/opmasterleo/packet/event/NmsUnknownEntityInteractEvent.java Adds cancellable custom event wrapping Paper unknown-entity interaction.
api/src/main/java/net/opmasterleo/packet/event/NmsSwingEvent.java Adds cancellable custom event for swing animation without Netty intercept.
api/src/main/java/net/opmasterleo/packet/event/NmsPlayerQuitEvent.java Adds NMS-handle quit event.
api/src/main/java/net/opmasterleo/packet/event/NmsPlayerJoinEvent.java Adds NMS-handle join event.
api/src/main/java/net/opmasterleo/packet/event/NmsPlayerEvent.java Adds base NMS player lifecycle event class.
api/src/main/java/net/opmasterleo/packet/component/Components.java Package migration for component bridge facade.
api/build.gradle.kts Lowers toolchain to Java 21 and centralizes deps on paperApiVersion + Adventure 4.17.0.
.github/workflows/gradle-publish.yml Adds CI workflow to build and publish snapshot artifacts with pinned action SHAs.
.github/workflows/codeql-analysis.yml Pins GitHub Actions SHAs for checkout/setup-java/codeql actions.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines 126 to 129
@Override
public ItemStack applyPotion(ItemStack item, PotionType potionType) {
ItemStack copy = item.clone();
if (copy.getItemMeta() instanceof PotionMeta meta) {
meta.setBasePotionType(potionType);
copy.setItemMeta(meta);
}
return copy;
return item.clone();
}
Comment on lines 45 to 48
public int entityId(Object packet) {
Object value = invoke(packet, "getEntityId", "id", "entityId", "getId");
if (value instanceof Integer i) {
return i;
}
Object field = get(field(packet.getClass(), "id", "entityId"), packet);
return field instanceof Integer i ? i : -1;
return value instanceof Integer i ? i : -1;
}
Comment on lines +12 to +16

private static final HandlerList HANDLER_LIST = new HandlerList();

private final Player player;
private final Object playerHandle;
@OPmasterLEO
OPmasterLEO deleted the cursor/nms-packet-optimization-d32c branch August 13, 2026 12:18
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