mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-23 00:49:20 +00:00
添加拦截包相应配置文件
This commit is contained in:
@@ -152,6 +152,19 @@ image:
|
|||||||
chat: true
|
chat: true
|
||||||
command: true
|
command: true
|
||||||
sign: true
|
sign: true
|
||||||
|
# By intercepting packets, you are allowed to use <image:...> <shift:...> in other plugins
|
||||||
|
intercept-packets:
|
||||||
|
system-chat: true
|
||||||
|
tab-list: true
|
||||||
|
actionbar: true
|
||||||
|
title: true
|
||||||
|
bossbar: true
|
||||||
|
container: true
|
||||||
|
# TODO: toast: true
|
||||||
|
# TODO: name: true
|
||||||
|
# TODO: team: true
|
||||||
|
|
||||||
|
emoji: {}
|
||||||
|
|
||||||
recipe:
|
recipe:
|
||||||
# Enable the plugin's recipe system
|
# Enable the plugin's recipe system
|
||||||
|
|||||||
@@ -156,9 +156,9 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
|
|||||||
registerByteBufPacketConsumer(PacketConsumers.LEVEL_PARTICLE, this.packetIds.clientboundLevelParticlesPacket());
|
registerByteBufPacketConsumer(PacketConsumers.LEVEL_PARTICLE, this.packetIds.clientboundLevelParticlesPacket());
|
||||||
registerByteBufPacketConsumer(PacketConsumers.LEVEL_EVENT, this.packetIds.clientboundLevelEventPacket());
|
registerByteBufPacketConsumer(PacketConsumers.LEVEL_EVENT, this.packetIds.clientboundLevelEventPacket());
|
||||||
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.OPEN_SCREEN_1_20_3 : PacketConsumers.OPEN_SCREEN_1_20, this.packetIds.clientboundOpenScreenPacket());
|
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.OPEN_SCREEN_1_20_3 : PacketConsumers.OPEN_SCREEN_1_20, this.packetIds.clientboundOpenScreenPacket());
|
||||||
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.SET_TEXT_1_20_3 : PacketConsumers.SET_TEXT_1_20, this.packetIds.clientboundSetTitleTextPacket());
|
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.SET_TITLE_TEXT_1_20_3 : PacketConsumers.SET_TITLE_TEXT_1_20, this.packetIds.clientboundSetTitleTextPacket());
|
||||||
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.SET_TEXT_1_20_3 : PacketConsumers.SET_TEXT_1_20, this.packetIds.clientboundSetSubtitleTextPacket());
|
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.SET_SUBTITLE_TEXT_1_20_3 : PacketConsumers.SET_SUBTITLE_TEXT_1_20, this.packetIds.clientboundSetSubtitleTextPacket());
|
||||||
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.SET_TEXT_1_20_3 : PacketConsumers.SET_TEXT_1_20, this.packetIds.clientboundSetActionBarTextPacket());
|
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.SET_ACTIONBAR_TEXT_1_20_3 : PacketConsumers.SET_ACTIONBAR_TEXT_1_20, this.packetIds.clientboundSetActionBarTextPacket());
|
||||||
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.BOSS_EVENT_1_20_3 : PacketConsumers.BOSS_EVENT_1_20, this.packetIds.clientboundBossEventPacket());
|
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.BOSS_EVENT_1_20_3 : PacketConsumers.BOSS_EVENT_1_20, this.packetIds.clientboundBossEventPacket());
|
||||||
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.SYSTEM_CHAT_1_20_3 : PacketConsumers.SYSTEM_CHAT_1_20, this.packetIds.clientboundSystemChatPacket());
|
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.SYSTEM_CHAT_1_20_3 : PacketConsumers.SYSTEM_CHAT_1_20, this.packetIds.clientboundSystemChatPacket());
|
||||||
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.TAB_LIST_1_20_3 : PacketConsumers.TAB_LIST_1_20, this.packetIds.clientboundTabListPacket());
|
registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.TAB_LIST_1_20_3 : PacketConsumers.TAB_LIST_1_20, this.packetIds.clientboundTabListPacket());
|
||||||
|
|||||||
@@ -243,6 +243,7 @@ public class PacketConsumers {
|
|||||||
};
|
};
|
||||||
|
|
||||||
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> BOSS_EVENT_1_20 = (user, event) -> {
|
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> BOSS_EVENT_1_20 = (user, event) -> {
|
||||||
|
if (!Config.interceptBossBar()) return;
|
||||||
try {
|
try {
|
||||||
FriendlyByteBuf buf = event.getBuffer();
|
FriendlyByteBuf buf = event.getBuffer();
|
||||||
UUID uuid = buf.readUUID();
|
UUID uuid = buf.readUUID();
|
||||||
@@ -290,6 +291,7 @@ public class PacketConsumers {
|
|||||||
};
|
};
|
||||||
|
|
||||||
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> BOSS_EVENT_1_20_3 = (user, event) -> {
|
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> BOSS_EVENT_1_20_3 = (user, event) -> {
|
||||||
|
if (!Config.interceptBossBar()) return;
|
||||||
try {
|
try {
|
||||||
FriendlyByteBuf buf = event.getBuffer();
|
FriendlyByteBuf buf = event.getBuffer();
|
||||||
UUID uuid = buf.readUUID();
|
UUID uuid = buf.readUUID();
|
||||||
@@ -339,6 +341,7 @@ public class PacketConsumers {
|
|||||||
};
|
};
|
||||||
|
|
||||||
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> SYSTEM_CHAT_1_20 = (user, event) -> {
|
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> SYSTEM_CHAT_1_20 = (user, event) -> {
|
||||||
|
if (!Config.interceptSystemChat()) return;
|
||||||
try {
|
try {
|
||||||
FriendlyByteBuf buf = event.getBuffer();
|
FriendlyByteBuf buf = event.getBuffer();
|
||||||
String json = buf.readUtf();
|
String json = buf.readUtf();
|
||||||
@@ -360,6 +363,7 @@ public class PacketConsumers {
|
|||||||
};
|
};
|
||||||
|
|
||||||
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> SYSTEM_CHAT_1_20_3 = (user, event) -> {
|
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> SYSTEM_CHAT_1_20_3 = (user, event) -> {
|
||||||
|
if (!Config.interceptSystemChat()) return;
|
||||||
try {
|
try {
|
||||||
FriendlyByteBuf buf = event.getBuffer();
|
FriendlyByteBuf buf = event.getBuffer();
|
||||||
Tag nbt = buf.readNbt(false);
|
Tag nbt = buf.readNbt(false);
|
||||||
@@ -381,7 +385,8 @@ public class PacketConsumers {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> SET_TEXT_1_20 = (user, event) -> {
|
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> SET_SUBTITLE_TEXT_1_20 = (user, event) -> {
|
||||||
|
if (!Config.interceptTitle()) return;
|
||||||
try {
|
try {
|
||||||
FriendlyByteBuf buf = event.getBuffer();
|
FriendlyByteBuf buf = event.getBuffer();
|
||||||
String json = buf.readUtf();
|
String json = buf.readUtf();
|
||||||
@@ -396,11 +401,12 @@ public class PacketConsumers {
|
|||||||
buf.writeVarInt(event.packetID());
|
buf.writeVarInt(event.packetID());
|
||||||
buf.writeUtf(AdventureHelper.componentToJson(component));
|
buf.writeUtf(AdventureHelper.componentToJson(component));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
CraftEngine.instance().logger().warn("Failed to handle ClientboundSet[(Sub)Title/ActionBar]TextPacket", e);
|
CraftEngine.instance().logger().warn("Failed to handle ClientboundSetSubtitleTextPacket", e);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> SET_TEXT_1_20_3 = (user, event) -> {
|
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> SET_SUBTITLE_TEXT_1_20_3 = (user, event) -> {
|
||||||
|
if (!Config.interceptTitle()) return;
|
||||||
try {
|
try {
|
||||||
FriendlyByteBuf buf = event.getBuffer();
|
FriendlyByteBuf buf = event.getBuffer();
|
||||||
Tag nbt = buf.readNbt(false);
|
Tag nbt = buf.readNbt(false);
|
||||||
@@ -416,11 +422,94 @@ public class PacketConsumers {
|
|||||||
buf.writeVarInt(event.packetID());
|
buf.writeVarInt(event.packetID());
|
||||||
buf.writeNbt(NBTComponentSerializer.nbt().serialize(component), false);
|
buf.writeNbt(NBTComponentSerializer.nbt().serialize(component), false);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
CraftEngine.instance().logger().warn("Failed to handle ClientboundSet[(Sub)Title/ActionBar]TextPacket", e);
|
CraftEngine.instance().logger().warn("Failed to handle ClientboundSetSubtitleTextPacket", e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> SET_TITLE_TEXT_1_20 = (user, event) -> {
|
||||||
|
if (!Config.interceptTitle()) return;
|
||||||
|
try {
|
||||||
|
FriendlyByteBuf buf = event.getBuffer();
|
||||||
|
String json = buf.readUtf();
|
||||||
|
Map<String, String> tokens = CraftEngine.instance().imageManager().matchTags(json);
|
||||||
|
if (tokens.isEmpty()) return;
|
||||||
|
event.setChanged(true);
|
||||||
|
Component component = AdventureHelper.jsonToComponent(json);
|
||||||
|
for (Map.Entry<String, String> token : tokens.entrySet()) {
|
||||||
|
component = component.replaceText(b -> b.matchLiteral(token.getKey()).replacement(AdventureHelper.miniMessage().deserialize(token.getValue())));
|
||||||
|
}
|
||||||
|
buf.clear();
|
||||||
|
buf.writeVarInt(event.packetID());
|
||||||
|
buf.writeUtf(AdventureHelper.componentToJson(component));
|
||||||
|
} catch (Exception e) {
|
||||||
|
CraftEngine.instance().logger().warn("Failed to handle ClientboundSetTitleTextPacket", e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> SET_TITLE_TEXT_1_20_3 = (user, event) -> {
|
||||||
|
if (!Config.interceptTitle()) return;
|
||||||
|
try {
|
||||||
|
FriendlyByteBuf buf = event.getBuffer();
|
||||||
|
Tag nbt = buf.readNbt(false);
|
||||||
|
if (nbt == null) return;
|
||||||
|
Map<String, String> tokens = CraftEngine.instance().imageManager().matchTags(nbt.getAsString());
|
||||||
|
if (tokens.isEmpty()) return;
|
||||||
|
event.setChanged(true);
|
||||||
|
Component component = NBTComponentSerializer.nbt().deserialize(nbt);
|
||||||
|
for (Map.Entry<String, String> token : tokens.entrySet()) {
|
||||||
|
component = component.replaceText(b -> b.matchLiteral(token.getKey()).replacement(AdventureHelper.miniMessage().deserialize(token.getValue())));
|
||||||
|
}
|
||||||
|
buf.clear();
|
||||||
|
buf.writeVarInt(event.packetID());
|
||||||
|
buf.writeNbt(NBTComponentSerializer.nbt().serialize(component), false);
|
||||||
|
} catch (Exception e) {
|
||||||
|
CraftEngine.instance().logger().warn("Failed to handle ClientboundSetTitleTextPacket", e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> SET_ACTIONBAR_TEXT_1_20 = (user, event) -> {
|
||||||
|
if (!Config.interceptActionBar()) return;
|
||||||
|
try {
|
||||||
|
FriendlyByteBuf buf = event.getBuffer();
|
||||||
|
String json = buf.readUtf();
|
||||||
|
Map<String, String> tokens = CraftEngine.instance().imageManager().matchTags(json);
|
||||||
|
if (tokens.isEmpty()) return;
|
||||||
|
event.setChanged(true);
|
||||||
|
Component component = AdventureHelper.jsonToComponent(json);
|
||||||
|
for (Map.Entry<String, String> token : tokens.entrySet()) {
|
||||||
|
component = component.replaceText(b -> b.matchLiteral(token.getKey()).replacement(AdventureHelper.miniMessage().deserialize(token.getValue())));
|
||||||
|
}
|
||||||
|
buf.clear();
|
||||||
|
buf.writeVarInt(event.packetID());
|
||||||
|
buf.writeUtf(AdventureHelper.componentToJson(component));
|
||||||
|
} catch (Exception e) {
|
||||||
|
CraftEngine.instance().logger().warn("Failed to handle ClientboundSetActionBarTextPacket", e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> SET_ACTIONBAR_TEXT_1_20_3 = (user, event) -> {
|
||||||
|
if (!Config.interceptActionBar()) return;
|
||||||
|
try {
|
||||||
|
FriendlyByteBuf buf = event.getBuffer();
|
||||||
|
Tag nbt = buf.readNbt(false);
|
||||||
|
if (nbt == null) return;
|
||||||
|
Map<String, String> tokens = CraftEngine.instance().imageManager().matchTags(nbt.getAsString());
|
||||||
|
if (tokens.isEmpty()) return;
|
||||||
|
event.setChanged(true);
|
||||||
|
Component component = NBTComponentSerializer.nbt().deserialize(nbt);
|
||||||
|
for (Map.Entry<String, String> token : tokens.entrySet()) {
|
||||||
|
component = component.replaceText(b -> b.matchLiteral(token.getKey()).replacement(AdventureHelper.miniMessage().deserialize(token.getValue())));
|
||||||
|
}
|
||||||
|
buf.clear();
|
||||||
|
buf.writeVarInt(event.packetID());
|
||||||
|
buf.writeNbt(NBTComponentSerializer.nbt().serialize(component), false);
|
||||||
|
} catch (Exception e) {
|
||||||
|
CraftEngine.instance().logger().warn("Failed to handle ClientboundSetActionBarTextPacket", e);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> TAB_LIST_1_20 = (user, event) -> {
|
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> TAB_LIST_1_20 = (user, event) -> {
|
||||||
|
if (!Config.interceptTabList()) return;
|
||||||
try {
|
try {
|
||||||
FriendlyByteBuf buf = event.getBuffer();
|
FriendlyByteBuf buf = event.getBuffer();
|
||||||
String json1 = buf.readUtf();
|
String json1 = buf.readUtf();
|
||||||
@@ -455,6 +544,7 @@ public class PacketConsumers {
|
|||||||
};
|
};
|
||||||
|
|
||||||
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> TAB_LIST_1_20_3 = (user, event) -> {
|
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> TAB_LIST_1_20_3 = (user, event) -> {
|
||||||
|
if (!Config.interceptTabList()) return;
|
||||||
try {
|
try {
|
||||||
FriendlyByteBuf buf = event.getBuffer();
|
FriendlyByteBuf buf = event.getBuffer();
|
||||||
Tag nbt1 = buf.readNbt(false);
|
Tag nbt1 = buf.readNbt(false);
|
||||||
@@ -491,6 +581,7 @@ public class PacketConsumers {
|
|||||||
};
|
};
|
||||||
|
|
||||||
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> OPEN_SCREEN_1_20 = (user, event) -> {
|
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> OPEN_SCREEN_1_20 = (user, event) -> {
|
||||||
|
if (!Config.interceptContainer()) return;
|
||||||
try {
|
try {
|
||||||
FriendlyByteBuf buf = event.getBuffer();
|
FriendlyByteBuf buf = event.getBuffer();
|
||||||
int containerId = buf.readVarInt();
|
int containerId = buf.readVarInt();
|
||||||
@@ -514,6 +605,7 @@ public class PacketConsumers {
|
|||||||
};
|
};
|
||||||
|
|
||||||
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> OPEN_SCREEN_1_20_3 = (user, event) -> {
|
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> OPEN_SCREEN_1_20_3 = (user, event) -> {
|
||||||
|
if (!Config.interceptContainer()) return;
|
||||||
try {
|
try {
|
||||||
FriendlyByteBuf buf = event.getBuffer();
|
FriendlyByteBuf buf = event.getBuffer();
|
||||||
int containerId = buf.readVarInt();
|
int containerId = buf.readVarInt();
|
||||||
|
|||||||
@@ -122,6 +122,12 @@ public class Config {
|
|||||||
protected boolean image$illegal_characters_filter$anvil;
|
protected boolean image$illegal_characters_filter$anvil;
|
||||||
protected boolean image$illegal_characters_filter$sign;
|
protected boolean image$illegal_characters_filter$sign;
|
||||||
protected boolean image$illegal_characters_filter$book;
|
protected boolean image$illegal_characters_filter$book;
|
||||||
|
protected boolean image$intercept_packets$system_chat;
|
||||||
|
protected boolean image$intercept_packets$tab_list;
|
||||||
|
protected boolean image$intercept_packets$actionbar;
|
||||||
|
protected boolean image$intercept_packets$title;
|
||||||
|
protected boolean image$intercept_packets$bossbar;
|
||||||
|
protected boolean image$intercept_packets$container;
|
||||||
|
|
||||||
public Config(CraftEngine plugin) {
|
public Config(CraftEngine plugin) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
@@ -278,6 +284,12 @@ public class Config {
|
|||||||
image$illegal_characters_filter$chat = config.getBoolean("image.illegal-characters-filter.chat", true);
|
image$illegal_characters_filter$chat = config.getBoolean("image.illegal-characters-filter.chat", true);
|
||||||
image$illegal_characters_filter$command = config.getBoolean("image.illegal-characters-filter.command", true);
|
image$illegal_characters_filter$command = config.getBoolean("image.illegal-characters-filter.command", true);
|
||||||
image$illegal_characters_filter$sign = config.getBoolean("image.illegal-characters-filter.sign", true);
|
image$illegal_characters_filter$sign = config.getBoolean("image.illegal-characters-filter.sign", true);
|
||||||
|
image$intercept_packets$system_chat = config.getBoolean("image.intercept-packets.system-chat", true);
|
||||||
|
image$intercept_packets$tab_list = config.getBoolean("image.intercept-packets.tab-list", true);
|
||||||
|
image$intercept_packets$actionbar = config.getBoolean("image.intercept-packets.actionbar", true);
|
||||||
|
image$intercept_packets$title = config.getBoolean("image.intercept-packets.title", true);
|
||||||
|
image$intercept_packets$bossbar = config.getBoolean("image.intercept-packets.bossbar", true);
|
||||||
|
image$intercept_packets$container = config.getBoolean("image.intercept-packets.container", true);
|
||||||
|
|
||||||
Class<?> modClazz = ReflectionUtils.getClazz(CraftEngine.MOD_CLASS);
|
Class<?> modClazz = ReflectionUtils.getClazz(CraftEngine.MOD_CLASS);
|
||||||
if (modClazz != null) {
|
if (modClazz != null) {
|
||||||
@@ -578,6 +590,30 @@ public class Config {
|
|||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean interceptSystemChat() {
|
||||||
|
return instance.image$intercept_packets$system_chat;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean interceptTabList() {
|
||||||
|
return instance.image$intercept_packets$tab_list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean interceptActionBar() {
|
||||||
|
return instance.image$intercept_packets$actionbar;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean interceptTitle() {
|
||||||
|
return instance.image$intercept_packets$title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean interceptBossBar() {
|
||||||
|
return instance.image$intercept_packets$bossbar;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean interceptContainer() {
|
||||||
|
return instance.image$intercept_packets$container;
|
||||||
|
}
|
||||||
|
|
||||||
public YamlDocument loadOrCreateYamlData(String fileName) {
|
public YamlDocument loadOrCreateYamlData(String fileName) {
|
||||||
File file = new File(this.plugin.dataFolderFile(), fileName);
|
File file = new File(this.plugin.dataFolderFile(), fileName);
|
||||||
if (!file.exists()) {
|
if (!file.exists()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user