mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-19 15:09:15 +00:00
实现禁用聊天举报
This commit is contained in:
@@ -230,13 +230,13 @@ public class BukkitFontManager extends AbstractFontManager implements Listener {
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
if (Config.allowEmojiChat()) {
|
||||
EmojiTextProcessResult result = replaceJsonEmoji(rawJsonMessage, BukkitAdaptors.adapt(player));
|
||||
if (result.replaced()) {
|
||||
rawJsonMessage = result.text();
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
// if (Config.allowEmojiChat()) {
|
||||
// EmojiTextProcessResult result = replaceJsonEmoji(rawJsonMessage, BukkitAdaptors.adapt(player));
|
||||
// if (result.replaced()) {
|
||||
// rawJsonMessage = result.text();
|
||||
// changed = true;
|
||||
// }
|
||||
// }
|
||||
if (changed) {
|
||||
PaperReflections.method$AsyncChatDecorateEvent$result.invoke(event, ComponentUtils.jsonToPaperAdventure(rawJsonMessage));
|
||||
}
|
||||
|
||||
@@ -16,12 +16,14 @@ import net.momirealms.craftengine.bukkit.item.BukkitItemManager;
|
||||
import net.momirealms.craftengine.bukkit.item.behavior.BukkitItemBehaviors;
|
||||
import net.momirealms.craftengine.bukkit.item.recipe.BukkitRecipeManager;
|
||||
import net.momirealms.craftengine.bukkit.loot.BukkitVanillaLootManager;
|
||||
import net.momirealms.craftengine.bukkit.nms.FastNMS;
|
||||
import net.momirealms.craftengine.bukkit.pack.BukkitPackManager;
|
||||
import net.momirealms.craftengine.bukkit.plugin.command.BukkitCommandManager;
|
||||
import net.momirealms.craftengine.bukkit.plugin.command.BukkitSenderFactory;
|
||||
import net.momirealms.craftengine.bukkit.plugin.gui.BukkitGuiManager;
|
||||
import net.momirealms.craftengine.bukkit.plugin.injector.*;
|
||||
import net.momirealms.craftengine.bukkit.plugin.network.BukkitNetworkManager;
|
||||
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections;
|
||||
import net.momirealms.craftengine.bukkit.plugin.scheduler.BukkitSchedulerAdapter;
|
||||
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
|
||||
import net.momirealms.craftengine.bukkit.sound.BukkitSoundManager;
|
||||
@@ -158,6 +160,14 @@ public class BukkitCraftEngine extends CraftEngine {
|
||||
} catch (Exception e) {
|
||||
throw new InjectionException("Error initializing ProtectedFieldVisitor", e);
|
||||
}
|
||||
// 关闭聊天验证
|
||||
try {
|
||||
Object settings = CoreReflections.field$DedicatedServer$settings.get(FastNMS.INSTANCE.method$MinecraftServer$getServer());
|
||||
Object properties = CoreReflections.field$DedicatedServerSettings$properties.get(settings);
|
||||
CoreReflections.methodHandle$DedicatedServerProperties$enforceSecureProfileSetter.invoke(properties, false);
|
||||
} catch (Throwable e) {
|
||||
throw new InjectionException("Error injecting secure profile", e);
|
||||
}
|
||||
// 初始化一些注册表
|
||||
super.onPluginLoad();
|
||||
BukkitBlockBehaviors.init();
|
||||
|
||||
@@ -3,6 +3,8 @@ package net.momirealms.craftengine.bukkit.plugin.network;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
import com.mojang.authlib.GameProfile;
|
||||
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||
import com.mojang.datafixers.util.Either;
|
||||
@@ -34,6 +36,7 @@ import net.momirealms.craftengine.bukkit.entity.data.BaseEntityData;
|
||||
import net.momirealms.craftengine.bukkit.entity.furniture.BukkitFurniture;
|
||||
import net.momirealms.craftengine.bukkit.entity.furniture.BukkitFurnitureManager;
|
||||
import net.momirealms.craftengine.bukkit.entity.projectile.BukkitProjectileManager;
|
||||
import net.momirealms.craftengine.bukkit.font.BukkitFontManager;
|
||||
import net.momirealms.craftengine.bukkit.item.BukkitItemManager;
|
||||
import net.momirealms.craftengine.bukkit.item.behavior.FurnitureItemBehavior;
|
||||
import net.momirealms.craftengine.bukkit.nms.FastNMS;
|
||||
@@ -64,6 +67,7 @@ import net.momirealms.craftengine.core.entity.furniture.hitbox.FurnitureHitBox;
|
||||
import net.momirealms.craftengine.core.entity.furniture.hitbox.FurnitureHitboxPart;
|
||||
import net.momirealms.craftengine.core.entity.player.InteractionHand;
|
||||
import net.momirealms.craftengine.core.entity.seat.Seat;
|
||||
import net.momirealms.craftengine.core.font.EmojiTextProcessResult;
|
||||
import net.momirealms.craftengine.core.font.FontManager;
|
||||
import net.momirealms.craftengine.core.font.IllegalCharacterProcessResult;
|
||||
import net.momirealms.craftengine.core.item.CustomItem;
|
||||
@@ -382,9 +386,9 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
|
||||
registerNMSPacketConsumer(new UpdateTagsListener(), NetworkReflections.clazz$ClientboundUpdateTagsPacket);
|
||||
registerNMSPacketConsumer(new ClientInformationListener(), VersionHelper.isOrAbove1_20_2() ? NetworkReflections.clazz$ServerboundClientInformationPacket1 : NetworkReflections.clazz$ServerboundClientInformationPacket0);
|
||||
registerNMSPacketConsumer(new ContainerClickListener1_21_5(), VersionHelper.isOrAbove1_21_5() ? NetworkReflections.clazz$ServerboundContainerClickPacket : null);
|
||||
registerNMSPacketConsumer(new StatusResponseListener(), NetworkReflections.clazz$ClientboundStatusResponsePacket);
|
||||
registerNMSPacketConsumer(new ServerDataListener(), NetworkReflections.clazz$ClientboundServerDataPacket);
|
||||
registerNMSPacketConsumer(new ChatSessionUpdateListener(), NetworkReflections.clazz$ServerboundChatSessionUpdatePacket);
|
||||
registerNMSPacketConsumer(new PlayerChatListener(), NetworkReflections.clazz$ClientboundPlayerChatPacket);
|
||||
registerNMSPacketConsumer(new LoginAcknowledgedListener(), NetworkReflections.clazz$ServerboundLoginAcknowledgedPacket);
|
||||
registerNMSPacketConsumer(new ConfigurationAcknowledgedListener(), NetworkReflections.clazz$ServerboundConfigurationAcknowledgedPacket);
|
||||
registerNMSPacketConsumer(new C2SFinishConfigurationListener(), NetworkReflections.clazz$ServerboundFinishConfigurationPacket);
|
||||
@@ -392,6 +396,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
|
||||
registerNMSPacketConsumer(new LoginFinishedListener(), NetworkReflections.clazz$ClientboundLoginFinishedPacket);
|
||||
registerNMSPacketConsumer(new StartConfigurationListener(), NetworkReflections.clazz$ClientboundStartConfigurationPacket);
|
||||
registerByteBufferPacketListener(new IntentionListener(), this.packetIds.clientIntentionPacket(), "ClientIntentionPacket", ConnectionState.HANDSHAKING, PacketFlow.SERVERBOUND);
|
||||
registerByteBufferPacketListener(new StatusResponseListener(), this.packetIds.clientboundStatusResponsePacket(), "ClientboundStatusResponsePacket", ConnectionState.STATUS, PacketFlow.CLIENTBOUND);
|
||||
registerByteBufferPacketListener(new ForgetLevelChunkListener(), this.packetIds.clientboundForgetLevelChunkPacket(), "ClientboundForgetLevelChunkPacket", ConnectionState.PLAY, PacketFlow.CLIENTBOUND);
|
||||
registerByteBufferPacketListener(new SetScoreListener1_20_3(), VersionHelper.isOrAbove1_20_3() ? this.packetIds.clientboundSetScorePacket() : -1, "ClientboundSetScorePacket", ConnectionState.PLAY, PacketFlow.CLIENTBOUND);
|
||||
registerByteBufferPacketListener(new AddRecipeBookListener(), this.packetIds.clientboundRecipeBookAddPacket(), "ClientboundRecipeBookAddPacket", ConnectionState.PLAY, PacketFlow.CLIENTBOUND);
|
||||
@@ -476,13 +481,6 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
|
||||
this.packetIds.clientboundSetObjectivePacket(), "ClientboundSetObjectivePacket",
|
||||
ConnectionState.PLAY, PacketFlow.CLIENTBOUND
|
||||
);
|
||||
registerByteBufferPacketListener(
|
||||
VersionHelper.isOrAbove1_20_3() ?
|
||||
new PlayerChatListener_1_20_3() :
|
||||
new PlayerChatListener_1_20(),
|
||||
this.packetIds.clientboundPlayerChatPacket(), "ClientboundPlayerChatPacket",
|
||||
ConnectionState.PLAY, PacketFlow.CLIENTBOUND
|
||||
);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
@@ -1508,13 +1506,6 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
|
||||
}
|
||||
}
|
||||
|
||||
public static class StatusResponseListener implements NMSPacketListener {
|
||||
|
||||
@Override
|
||||
public void onPacketSend(NetWorkUser user, NMSPacketEvent event, Object packet) {
|
||||
}
|
||||
}
|
||||
|
||||
public static class ServerDataListener implements NMSPacketListener {
|
||||
|
||||
@Override
|
||||
@@ -1538,6 +1529,33 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
|
||||
}
|
||||
}
|
||||
|
||||
public static class PlayerChatListener implements NMSPacketListener {
|
||||
|
||||
@Override
|
||||
public void onPacketSend(NetWorkUser user, NMSPacketEvent event, Object packet) {
|
||||
event.setCancelled(true);
|
||||
Object content = FastNMS.INSTANCE.field$ClientboundPlayerChatPacket$unsignedContent(packet);
|
||||
if (content == null) {
|
||||
content = FastNMS.INSTANCE.method$Component$literal(
|
||||
FastNMS.INSTANCE.field$SignedMessageBody$Packed$content(
|
||||
FastNMS.INSTANCE.field$ClientboundPlayerChatPacket$body(packet)
|
||||
)
|
||||
);
|
||||
}
|
||||
Object chatType = FastNMS.INSTANCE.field$ClientboundPlayerChatPacket$chatType(packet);
|
||||
Object decorate = FastNMS.INSTANCE.method$ChatType$Bound$decorate(chatType, content);
|
||||
if (Config.allowEmojiChat()) {
|
||||
String rawJsonMessage = ComponentUtils.minecraftToJson(decorate);
|
||||
EmojiTextProcessResult result = BukkitFontManager.instance().replaceJsonEmoji(rawJsonMessage, (BukkitServerPlayer) user);
|
||||
if (result.replaced()) {
|
||||
decorate = ComponentUtils.jsonToMinecraft(result.text());
|
||||
}
|
||||
}
|
||||
Object systemChatPacket = FastNMS.INSTANCE.constructor$ClientboundSystemChatPacket(decorate, false);
|
||||
user.sendPacket(systemChatPacket, false);
|
||||
}
|
||||
}
|
||||
|
||||
public static class RespawnListener implements NMSPacketListener {
|
||||
|
||||
@Override
|
||||
@@ -4479,192 +4497,17 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
|
||||
}
|
||||
}
|
||||
|
||||
public static class PlayerChatListener_1_20 implements ByteBufferPacketListener {
|
||||
public static class StatusResponseListener implements ByteBufferPacketListener {
|
||||
|
||||
@Override
|
||||
public void onPacketSend(NetWorkUser user, ByteBufPacketEvent event) {
|
||||
if (!Config.interceptPlayerChat()) return;
|
||||
FriendlyByteBuf buf = event.getBuffer();
|
||||
boolean changed = false;
|
||||
UUID sender = buf.readUUID();
|
||||
int index = buf.readVarInt();
|
||||
byte @Nullable [] messageSignature = buf.readNullable(b -> {
|
||||
byte[] bs = new byte[256];
|
||||
buf.readBytes(bs);
|
||||
return bs;
|
||||
});
|
||||
// SignedMessageBody.Packed start
|
||||
String content = buf.readUtf(256);
|
||||
Instant timeStamp = buf.readInstant();
|
||||
long salt = buf.readLong();
|
||||
// LastSeenMessages.Packed start
|
||||
ArrayList<Pair<Integer, byte[]>> lastSeen = buf.readCollection(FriendlyByteBuf.limitValue(ArrayList::new, 20), b -> {
|
||||
int i = b.readVarInt() - 1;
|
||||
if (i == -1) {
|
||||
byte[] bs = new byte[256];
|
||||
buf.readBytes(bs);
|
||||
return Pair.of(-1, bs);
|
||||
} else {
|
||||
return Pair.of(i, null);
|
||||
}
|
||||
});
|
||||
// LastSeenMessages.Packed end
|
||||
// SignedMessageBody.Packed end
|
||||
@Nullable String unsignedContent = buf.readNullable(FriendlyByteBuf::readUtf);
|
||||
if (unsignedContent != null) {
|
||||
Map<String, ComponentProvider> unsignedContentTokens = CraftEngine.instance().fontManager().matchTags(unsignedContent);
|
||||
if (!unsignedContentTokens.isEmpty()) {
|
||||
Tag tag = MRegistryOps.JSON.convertTo(MRegistryOps.SPARROW_NBT, GsonHelper.get().fromJson(unsignedContent, JsonElement.class));
|
||||
Component component = AdventureHelper.nbtToComponent(tag);
|
||||
component = AdventureHelper.replaceText(component, unsignedContentTokens, NetworkTextReplaceContext.of((BukkitServerPlayer) user));
|
||||
unsignedContent = MRegistryOps.SPARROW_NBT.convertTo(MRegistryOps.JSON, AdventureHelper.componentToNbt(component)).toString();
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
// FilterMask start
|
||||
int type = buf.readVarInt();
|
||||
BitSet mask = type == 2 /* PARTIALLY_FILTERED */ ? buf.readBitSet() : null;
|
||||
// FilterMask end
|
||||
// ChatType.BoundNetwork start
|
||||
int chatType = buf.readVarInt();
|
||||
String name = buf.readUtf();
|
||||
Map<String, ComponentProvider> nameTokens = CraftEngine.instance().fontManager().matchTags(name);
|
||||
if (!nameTokens.isEmpty()) {
|
||||
Tag tag = MRegistryOps.JSON.convertTo(MRegistryOps.SPARROW_NBT, GsonHelper.get().fromJson(name, JsonElement.class));
|
||||
Component component = AdventureHelper.nbtToComponent(tag);
|
||||
component = AdventureHelper.replaceText(component, nameTokens, NetworkTextReplaceContext.of((BukkitServerPlayer) user));
|
||||
name = MRegistryOps.SPARROW_NBT.convertTo(MRegistryOps.JSON, AdventureHelper.componentToNbt(component)).toString();
|
||||
changed = true;
|
||||
}
|
||||
@Nullable String targetName = buf.readNullable(FriendlyByteBuf::readUtf);
|
||||
if (targetName != null) {
|
||||
Map<String, ComponentProvider> targetNameTokens = CraftEngine.instance().fontManager().matchTags(targetName);
|
||||
if (!targetNameTokens.isEmpty()) {
|
||||
Tag tag = MRegistryOps.JSON.convertTo(MRegistryOps.SPARROW_NBT, GsonHelper.get().fromJson(targetName, JsonElement.class));
|
||||
Component component = AdventureHelper.nbtToComponent(tag);
|
||||
component = AdventureHelper.replaceText(component, targetNameTokens, NetworkTextReplaceContext.of((BukkitServerPlayer) user));
|
||||
targetName = MRegistryOps.SPARROW_NBT.convertTo(MRegistryOps.JSON, AdventureHelper.componentToNbt(component)).toString();
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
// ChatType.BoundNetwork end
|
||||
if (changed) {
|
||||
event.setChanged(true);
|
||||
buf.clear();
|
||||
buf.writeVarInt(event.packetID());
|
||||
buf.writeUUID(sender);
|
||||
buf.writeVarInt(index);
|
||||
buf.writeNullable(messageSignature, (b, bs) -> buf.writeBytes(bs));
|
||||
buf.writeUtf(content);
|
||||
buf.writeInstant(timeStamp);
|
||||
buf.writeLong(salt);
|
||||
buf.writeCollection(lastSeen, (b, pair) -> {
|
||||
b.writeVarInt(pair.left() + 1);
|
||||
if (pair.right() != null) {
|
||||
b.writeBytes(pair.right());
|
||||
}
|
||||
});
|
||||
buf.writeNullable(unsignedContent, FriendlyByteBuf::writeUtf);
|
||||
buf.writeVarInt(type);
|
||||
if (type == 2) buf.writeBitSet(mask);
|
||||
buf.writeVarInt(chatType);
|
||||
buf.writeUtf(name);
|
||||
buf.writeNullable(targetName, FriendlyByteBuf::writeUtf);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class PlayerChatListener_1_20_3 implements ByteBufferPacketListener {
|
||||
|
||||
public void onPacketSend(NetWorkUser user, ByteBufPacketEvent event) {
|
||||
if (!Config.interceptPlayerChat()) return;
|
||||
FriendlyByteBuf buf = event.getBuffer();
|
||||
boolean changed = false;
|
||||
int globalIndex = VersionHelper.isOrAbove1_21_5() ? buf.readVarInt() : -1;
|
||||
UUID sender = buf.readUUID();
|
||||
int index = buf.readVarInt();
|
||||
byte @Nullable [] messageSignature = buf.readNullable(b -> {
|
||||
byte[] bs = new byte[256];
|
||||
buf.readBytes(bs);
|
||||
return bs;
|
||||
});
|
||||
// SignedMessageBody.Packed start
|
||||
String content = buf.readUtf(256);
|
||||
Instant timeStamp = buf.readInstant();
|
||||
long salt = buf.readLong();
|
||||
// LastSeenMessages.Packed start
|
||||
ArrayList<Pair<Integer, byte[]>> lastSeen = buf.readCollection(FriendlyByteBuf.limitValue(ArrayList::new, 20), b -> {
|
||||
int i = b.readVarInt() - 1;
|
||||
if (i == -1) {
|
||||
byte[] bs = new byte[256];
|
||||
buf.readBytes(bs);
|
||||
return Pair.of(-1, bs);
|
||||
} else {
|
||||
return Pair.of(i, null);
|
||||
}
|
||||
});
|
||||
// LastSeenMessages.Packed end
|
||||
// SignedMessageBody.Packed end
|
||||
@Nullable Tag unsignedContent = buf.readNullable(b -> b.readNbt(false));
|
||||
if (unsignedContent != null) {
|
||||
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(unsignedContent);
|
||||
if (!tokens.isEmpty()) {
|
||||
Component component = AdventureHelper.tagToComponent(unsignedContent);
|
||||
component = AdventureHelper.replaceText(component, tokens, NetworkTextReplaceContext.of((BukkitServerPlayer) user));
|
||||
unsignedContent = AdventureHelper.componentToTag(component);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
// FilterMask start
|
||||
int type = buf.readVarInt();
|
||||
BitSet mask = type == 2 /* PARTIALLY_FILTERED */ ? buf.readBitSet() : null;
|
||||
// FilterMask end
|
||||
// ChatType.Bound start
|
||||
int chatType = buf.readVarInt();
|
||||
Tag name = buf.readNbt(false);
|
||||
if (name != null) {
|
||||
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(name);
|
||||
if (!tokens.isEmpty()) {
|
||||
Component component = AdventureHelper.tagToComponent(name);
|
||||
component = AdventureHelper.replaceText(component, tokens, NetworkTextReplaceContext.of((BukkitServerPlayer) user));
|
||||
name = AdventureHelper.componentToTag(component);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
@Nullable Tag targetName = buf.readNullable(b -> b.readNbt(false));
|
||||
if (targetName != null) {
|
||||
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(targetName);
|
||||
if (!tokens.isEmpty()) {
|
||||
Component component = AdventureHelper.tagToComponent(targetName);
|
||||
component = AdventureHelper.replaceText(component, tokens, NetworkTextReplaceContext.of((BukkitServerPlayer) user));
|
||||
targetName = AdventureHelper.componentToTag(component);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
// ChatType.Bound end
|
||||
if (changed) {
|
||||
event.setChanged(true);
|
||||
buf.clear();
|
||||
buf.writeVarInt(event.packetID());
|
||||
if (VersionHelper.isOrAbove1_21_5()) buf.writeVarInt(globalIndex);
|
||||
buf.writeUUID(sender);
|
||||
buf.writeVarInt(index);
|
||||
buf.writeNullable(messageSignature, (b, bs) -> buf.writeBytes(bs));
|
||||
buf.writeUtf(content);
|
||||
buf.writeInstant(timeStamp);
|
||||
buf.writeLong(salt);
|
||||
buf.writeCollection(lastSeen, (b, pair) -> {
|
||||
b.writeVarInt(pair.left() + 1);
|
||||
if (pair.right() != null) {
|
||||
b.writeBytes(pair.right());
|
||||
}
|
||||
});
|
||||
buf.writeNullable(unsignedContent, (b, tag) -> b.writeNbt(tag, false));
|
||||
buf.writeVarInt(type);
|
||||
if (type == 2) buf.writeBitSet(mask);
|
||||
buf.writeVarInt(chatType);
|
||||
buf.writeNbt(name, false);
|
||||
buf.writeNullable(targetName, (b, tag) -> b.writeNbt(tag, false));
|
||||
}
|
||||
JsonObject jsonObject = JsonParser.parseString(buf.readUtf()).getAsJsonObject();
|
||||
jsonObject.addProperty("preventsChatReports", true);
|
||||
event.setChanged(true);
|
||||
buf.clear();
|
||||
buf.writeVarInt(event.packetID());
|
||||
buf.writeUtf(jsonObject.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ public interface PacketIds {
|
||||
|
||||
int serverboundCustomPayloadPacket();
|
||||
|
||||
int clientboundPlayerChatPacket();
|
||||
|
||||
int clientIntentionPacket();
|
||||
|
||||
int clientboundStatusResponsePacket();
|
||||
}
|
||||
|
||||
@@ -192,13 +192,13 @@ public class PacketIds1_20 implements PacketIds {
|
||||
return PacketIdHelper.byClazz(NetworkReflections.clazz$ServerboundCustomPayloadPacket, PacketFlow.SERVERBOUND, ConnectionState.PLAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundPlayerChatPacket() {
|
||||
return PacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundPlayerChatPacket, PacketFlow.CLIENTBOUND, ConnectionState.PLAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientIntentionPacket() {
|
||||
return PacketIdHelper.byClazz(NetworkReflections.clazz$ClientIntentionPacket, PacketFlow.SERVERBOUND, ConnectionState.HANDSHAKING);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundStatusResponsePacket() {
|
||||
return PacketIdHelper.byClazz(NetworkReflections.clazz$ClientboundStatusResponsePacket, PacketFlow.CLIENTBOUND, ConnectionState.STATUS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -191,13 +191,13 @@ public class PacketIds1_20_5 implements PacketIds {
|
||||
return PacketIdHelper.byName("minecraft:custom_payload", PacketFlow.SERVERBOUND, ConnectionState.PLAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundPlayerChatPacket() {
|
||||
return PacketIdHelper.byName("minecraft:player_chat", PacketFlow.CLIENTBOUND, ConnectionState.PLAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientIntentionPacket() {
|
||||
return PacketIdHelper.byName("minecraft:intention", PacketFlow.SERVERBOUND, ConnectionState.HANDSHAKING);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundStatusResponsePacket() {
|
||||
return PacketIdHelper.byName("minecraft:status_response", PacketFlow.CLIENTBOUND, ConnectionState.STATUS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4675,4 +4675,25 @@ public final class CoreReflections {
|
||||
throw new ReflectionInitException("Failed to init ArmorStand", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static final Field field$DedicatedServerProperties$enforceSecureProfile = requireNonNull(
|
||||
ReflectionUtils.getDeclaredField(
|
||||
clazz$DedicatedServerProperties,
|
||||
VersionHelper.isOrAbove1_21_11()
|
||||
? new String[]{"enforceSecureProfile", "ag"}
|
||||
: VersionHelper.isOrAbove1_21_9()
|
||||
? new String[]{"enforceSecureProfile", "af"}
|
||||
: VersionHelper.isOrAbove1_21_2()
|
||||
? new String[]{"enforceSecureProfile", "X"}
|
||||
: VersionHelper.isOrAbove1_21()
|
||||
? new String[]{"enforceSecureProfile", "Y"}
|
||||
: VersionHelper.isOrAbove1_20_5()
|
||||
? new String[]{"enforceSecureProfile", "X"}
|
||||
: new String[]{"enforceSecureProfile", "W"}
|
||||
)
|
||||
);
|
||||
|
||||
public static final MethodHandle methodHandle$DedicatedServerProperties$enforceSecureProfileSetter = requireNonNull(
|
||||
ReflectionUtils.unreflectSetter(field$DedicatedServerProperties$enforceSecureProfile)
|
||||
).asType(MethodType.methodType(void.class, Object.class, boolean.class));
|
||||
}
|
||||
|
||||
@@ -6,6 +6,9 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public final class ProtocolVersion {
|
||||
private static final Map<Integer, ProtocolVersion> BY_ID = new Int2ObjectOpenHashMap<>();
|
||||
private static final Map<String, ProtocolVersion> BY_NAME = new Object2ObjectOpenHashMap<>();
|
||||
|
||||
public static final ProtocolVersion UNKNOWN = new ProtocolVersion(-1, "Unknown");
|
||||
public static final ProtocolVersion V1_20 = new ProtocolVersion(763, "1.20");
|
||||
public static final ProtocolVersion V1_20_1 = new ProtocolVersion(763, "1.20.1");
|
||||
@@ -26,8 +29,6 @@ public final class ProtocolVersion {
|
||||
public static final ProtocolVersion V1_21_9 = new ProtocolVersion(773, "1.21.9");
|
||||
public static final ProtocolVersion V1_21_10 = new ProtocolVersion(773, "1.21.10");
|
||||
public static final ProtocolVersion V1_21_11 = new ProtocolVersion(774, "1.21.11");
|
||||
private static final Map<Integer, ProtocolVersion> BY_ID = new Int2ObjectOpenHashMap<>();
|
||||
private static final Map<String, ProtocolVersion> BY_NAME = new Object2ObjectOpenHashMap<>();
|
||||
|
||||
private final int id;
|
||||
private final String name;
|
||||
|
||||
@@ -48,7 +48,7 @@ byte_buddy_version=1.18.1
|
||||
ahocorasick_version=0.6.3
|
||||
snake_yaml_version=2.5
|
||||
anti_grief_version=1.0.5
|
||||
nms_helper_version=1.0.149
|
||||
nms_helper_version=1.0.150
|
||||
evalex_version=3.5.0
|
||||
reactive_streams_version=1.0.4
|
||||
amazon_awssdk_version=2.38.7
|
||||
|
||||
Reference in New Issue
Block a user