McLists一周年快乐
服务器已经添加了详细介绍信息板块
服主可以在管理后台来提交自己服务器介绍信息。
服务器介绍信息提交后,管理人员会进行审核
审核通过后会在服务器详细页面进行显示
提交服务器介绍信息会让新玩家更好的了解你的服务器哦~
添加图片信息,也会让百度等搜索引擎更好的收录您的服务器哦~
管理平台地址:传送门
PacketInjectorAPI - Manage packets easily

PacketInjectorAPI - Manage packets easily - PacketInjectorAPI - 数据包管理工具

简单的数据包管理API。由LightInjector驱动!
Bukkit / Spigot 作者 fren_gor 支持版本 1.8 - 1.21
服务器使用量
未统计
服务玩家数
未统计
下载量
4,971
插件详细介绍

PacketInjector API

PacketInjector API 是一款帮助开发者轻松管理和拦截 Minecraft 网络数据包的插件。它基于 LightInjector 实现,允许你监听、修改或取消从 1.7.x 到最新版本几乎所有游戏数据包的发送与接收。

版本与链接

  • 版本选择
- 对于 **1.8.x 至最新版本** 的服务器,请使用最新的发布版本。
- 对于 **1.7.x** 版本的服务器,请使用 **1.3.2** 发布版本。
  • 相关链接
- **Javadoc**:https://frengor.com/javadocs/PacketInjectorAPI/build-server/
- **Jenkins**:https://jenkins.frengor.com/job/PacketInjectorAPI/
- **GitHub**:https://github.com/frengor/PacketInjectorAPI (用于报告Bug)

快速开始

要监听数据包,你需要创建并注册一个 PacketListener

基础监听器注册

以下是注册一个完整监听器的示例代码

PacketEventManager eventManager = PacketInjectorPlugin.getInstance().getPacketInjectorAPI().getEventManager();
eventManager.registerPacketListener(pluginInstance, new PacketListener() {
    @Override
    public void onSend(PacketSendEvent event) {
        // 处理数据包发送事件
    }

    @Override
    public void onReceive(PacketReceiveEvent event) {
        // 处理数据包接收事件
    }
});

分别注册发送/接收监听器

你也可以使用 Lambda 表达式分别注册发送或接收事件:

// 仅注册发送监听器
eventManager.registerPacketSendListener(pluginInstance, event -> {
    // 代码
});

// 仅注册接收监听器
eventManager.registerPacketReceiveListener(pluginInstance, event -> {
    // 代码
});

事件方法与使用

在事件处理器中,你可以使用以下方法操作数据包

Player player = event.getPlayer(); // 可能为null(见下方说明)
Object packet = event.getPacket();
String packetClassName = event.getPacketName();
event.setCancelled(true); // 取消此数据包
event.setPacket(newPacket); // 修改数据包
Object value = event.getValue("fieldName"); // 获取字段值
event.setValue("fieldName", value); // 设置字段值

重要说明

  • PacketInjectorAPI 使用 LightInjector 注入数据包,因此可以拦截 LightInjector 支持的所有游戏数据包和部分登录数据包。
  • 对于某些登录阶段的数据包,Player 实例可能尚不可用,此时调用 event.getPlayer() 将返回 null。更多信息请参阅 LightInjector 的 Javadoc。

使用示例:屏蔽聊天敏感词

以下示例展示了如何拦截聊天数据包并屏蔽特定词汇

public class MainClass extends JavaPlugin {
    @Override
    public void onEnable() {
        PacketEventManager eventManager = PacketInjectorPlugin.getInstance().getPacketInjectorAPI().getEventManager();
        eventManager.registerPacketReceiveListener(this, event -> {
            if (event.getPacketName().equals("PacketPlayInChat")) {
                String message = (String) event.getValue("a"); // 字段名可能随MC版本变化
                if (message.contains("bannedWord")) {
                    event.setCancelled(true);
                    event.getPlayer().sendMessage("§c禁止使用敏感词!");
                }
            }
        });
    }
}

数据包记录器命令

插件内置了一个数据包记录器,可以将数据包打印到控制台。使用以下命令管理:

基础命令

  • /packetinjectorapi packetlogger start - 启动数据包记录器。
  • /packetinjectorapi packetlogger stop - 停止数据包记录器。
  • /packetinjectorapi packetlogger status - 显示记录器状态(启用/禁用)。

过滤器命令

过滤器允许你选择要打印的数据包,防止控制台信息泛滥。

  • /packetinjectorapi packetlogger filter allow <add|remove|clear|reset> ... - 管理允许列表(只有在此列表中的数据包才会被打印,除非它们同时在拒绝列表中)。
  • /packetinjectorapi packetlogger filter deny <add|remove|clear|reset> ... - 管理拒绝列表(此列表中的数据包不会被打印)。
- 默认情况下,拒绝列表已包含一些可能刷屏的数据包。如果需要这些包,请使用 `clear` 子命令清除列表。
- 默认拒绝列表可通过 `list` 子命令查看,或在此链接找到:https://github.com/frengor/PacketInjectorAPI/blob/main/src/main/java/com/fren_gor/packetInjectorAPI/Commands.java#L50
  • /packetinjectorapi packetlogger filter list - 列出当前允许和拒绝的数据包列表。
  • /packetinjectorapi packetlogger filter reset - 将允许和拒绝列表重置为默认值。
  • /packetinjectorapi packetlogger filter clear - 清空允许和拒绝列表。

Maven 依赖

将以下仓库和依赖添加到你的 pom.xml 文件中:

<repositories>
    <repository>
        <id>fren_gor</id>
        <url>https://nexus.frengor.com/repository/public/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>com.frengor</groupId>
        <artifactId>packetinjectorapi</artifactId>
        <version>3.2.1</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

报告问题

  • 请通过 GitHub 提交 Issue 来报告 Bug。
  • 请注意:在插件评论中提交的 Bug 报告将不会被处理!

PacketInjectorAPI

PacketInjectorAPI 是一个用于拦截和处理 Minecraft 数据包的插件开发库。它允许开发者监听、修改或取消服务器与客户端之间传输的特定数据包,从而实现高级的自定义功能,例如聊天监控、动作拦截等。

资源链接

  • GitHub 源码: https://github.com/frengor/PacketInjectorAPI
  • Javadoc 文档: https://frengor.com/javadocs/PacketInjectorAPI/build-server/
  • Jenkins 构建: https://jenkins.frengor.com/job/PacketInjectorAPI/

示例用法:禁止聊天中的特定词汇

以下是一个简单的示例,展示如何使用 PacketInjectorAPI 来监听聊天数据包,并禁止包含特定词汇的消息。

代码实现

public class MainClass extends JavaPlugin {
    @Override
    public void onEnable() {
        PacketEventManager eventManager = PacketInjectorPlugin.getInstance().getPacketInjectorAPI().getEventManager();
        eventManager.registerPacketReceiveListener(this, event -> {
            if (event.getPacketName().equals("PacketPlayInChat")) {
                String message = (String) event.getValue("a"); // 字段名可能随MC版本变化
                if (message.contains("bannedWord")) {
                    event.setCancelled(true);
                    event.getPlayer().sendMessage("§c禁止使用不当词汇!");
                }
            }
        });
    }
}

代码说明

  • 首先获取 PacketEventManager 实例。
  • 注册一个数据包接收监听器 (registerPacketReceiveListener)。
  • 在监听器中,判断数据包是否为聊天包 (PacketPlayInChat)。
  • 从数据包中提取聊天消息内容。注意:字段名(本例中的 "a")可能因 Minecraft 版本不同而有所变化,请根据实际情况调整。
  • 如果消息包含禁止的词汇(例如 "bannedWord"),则取消该数据包事件,并向玩家发送警告信息。

注意事项

  • 该API依赖于主插件 PacketInjectorPlugin 及其核心API。
  • 数据包字段名和结构可能随 Minecraft 版本更新而改变,开发时请务必查阅对应版本的映射表或文档进行适配。
  • 请合理使用数据包拦截功能,避免影响服务器性能或玩家正常游戏体验。
测试支持版本
1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.20.6 1.21
版本分布
基本信息
插件名称 PacketInjectorAPI - Manage packets easily
作者 fren_gor
平台 Bukkit / Spigot
支持版本 1.8 - 1.21
点赞数 1
最近版本
暂无数据 -

友情链接: 网易我的世界 | 泰拉瑞亚 | ocent云计算 | 米饭Minecraft插件文档 | 友链合作

历史访问人次:3,102,025  |  今日访问人次:10,189  |  昨日访问人次:22,124

独立 IP:19,247  |  最近24小时独立访客:19,263

Copyright © 2019-2026 我的世界服务器列表站. All rights reserved.

Powered by GermMC 京ICP备17023959号-6