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); // 设置字段值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 - 清空允许和拒绝列表。将以下仓库和依赖添加到你的 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>PacketInjectorAPI 是一个用于拦截和处理 Minecraft 数据包的插件开发库。它允许开发者监听、修改或取消服务器与客户端之间传输的特定数据包,从而实现高级的自定义功能,例如聊天监控、动作拦截等。
以下是一个简单的示例,展示如何使用 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"),则取消该数据包事件,并向玩家发送警告信息。PacketInjectorPlugin 及其核心API。友情链接: 网易我的世界 | 泰拉瑞亚 | 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