Fix: 修复较高版本无法发送命令与聊天信息

This commit is contained in:
SerendipityR 2024-01-31 01:18:17 +08:00 committed by GitHub
parent 7015de826d
commit 4522866ff8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 33 additions and 22 deletions

View File

@ -27,9 +27,7 @@ import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.TranslatableComponent; import net.kyori.adventure.text.TranslatableComponent;
import java.util.Arrays; import java.util.*;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.MultipleVersion.Packet.PacketHandler { public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.MultipleVersion.Packet.PacketHandler {
@ -151,8 +149,13 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
@Override @Override
public void sendChatPacket(Object client, String text) { public void sendChatPacket(Object client, String text) {
TcpClientSession session = (TcpClientSession) client; TcpClientSession session = (TcpClientSession) client;
ServerboundChatPacket chatPacket = new ServerboundChatPacket(text, System.currentTimeMillis(), 0, new byte[0], false); if (text.startsWith("/")) {
session.send(chatPacket); ServerboundChatCommandPacket commandPacket = new ServerboundChatCommandPacket(text.split("/")[1], System.currentTimeMillis(), 0, new HashMap<>(), false);
session.send(commandPacket);
} else {
ServerboundChatPacket chatPacket = new ServerboundChatPacket(text, System.currentTimeMillis(), 0, new byte[0], false);
session.send(chatPacket);
}
} }
@Override @Override

View File

@ -27,10 +27,7 @@ import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.TranslatableComponent; import net.kyori.adventure.text.TranslatableComponent;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.MultipleVersion.Packet.PacketHandler { public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.MultipleVersion.Packet.PacketHandler {
@ -152,8 +149,13 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
@Override @Override
public void sendChatPacket(Object client, String text) { public void sendChatPacket(Object client, String text) {
TcpClientSession session = (TcpClientSession) client; TcpClientSession session = (TcpClientSession) client;
ServerboundChatPacket chatPacket = new ServerboundChatPacket(text, System.currentTimeMillis(), 0, new byte[0], false, new ArrayList<>(), null); if (text.startsWith("/")) {
session.send(chatPacket); ServerboundChatCommandPacket commandPacket = new ServerboundChatCommandPacket(text.split("/")[1], System.currentTimeMillis(), 0, new ArrayList<>(), false, new ArrayList<>(), null);
session.send(commandPacket);
} else {
ServerboundChatPacket chatPacket = new ServerboundChatPacket(text, System.currentTimeMillis(), 0, new byte[0], false, new ArrayList<>(), null);
session.send(chatPacket);
}
} }
@Override @Override

View File

@ -27,10 +27,7 @@ import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.TranslatableComponent; import net.kyori.adventure.text.TranslatableComponent;
import java.util.Arrays; import java.util.*;
import java.util.BitSet;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.MultipleVersion.Packet.PacketHandler { public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.MultipleVersion.Packet.PacketHandler {
@ -152,8 +149,13 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
@Override @Override
public void sendChatPacket(Object client, String text) { public void sendChatPacket(Object client, String text) {
TcpClientSession session = (TcpClientSession) client; TcpClientSession session = (TcpClientSession) client;
ServerboundChatPacket chatPacket = new ServerboundChatPacket(text, System.currentTimeMillis(), 0, null, 0, new BitSet()); if (text.startsWith("/")) {
session.send(chatPacket); ServerboundChatCommandPacket commandPacket = new ServerboundChatCommandPacket(text.split("/")[1], System.currentTimeMillis(), 0L, new ArrayList<>(), 0, new BitSet());
session.send(commandPacket);
} else {
ServerboundChatPacket chatPacket = new ServerboundChatPacket(text, System.currentTimeMillis(), 0L, null, 0, new BitSet());
session.send(chatPacket);
}
} }
@Override @Override

View File

@ -20,6 +20,7 @@ import com.github.steveice10.mc.protocol.packet.ingame.clientbound.ClientboundLo
import com.github.steveice10.mc.protocol.packet.ingame.clientbound.ClientboundSystemChatPacket; import com.github.steveice10.mc.protocol.packet.ingame.clientbound.ClientboundSystemChatPacket;
import com.github.steveice10.mc.protocol.packet.ingame.clientbound.entity.player.ClientboundPlayerPositionPacket; import com.github.steveice10.mc.protocol.packet.ingame.clientbound.entity.player.ClientboundPlayerPositionPacket;
import com.github.steveice10.mc.protocol.packet.ingame.clientbound.entity.player.ClientboundSetHealthPacket; import com.github.steveice10.mc.protocol.packet.ingame.clientbound.entity.player.ClientboundSetHealthPacket;
import com.github.steveice10.mc.protocol.packet.ingame.serverbound.ServerboundChatCommandPacket;
import com.github.steveice10.mc.protocol.packet.ingame.serverbound.ServerboundChatPacket; import com.github.steveice10.mc.protocol.packet.ingame.serverbound.ServerboundChatPacket;
import com.github.steveice10.mc.protocol.packet.ingame.serverbound.ServerboundClientCommandPacket; import com.github.steveice10.mc.protocol.packet.ingame.serverbound.ServerboundClientCommandPacket;
import com.github.steveice10.mc.protocol.packet.ingame.serverbound.ServerboundCommandSuggestionPacket; import com.github.steveice10.mc.protocol.packet.ingame.serverbound.ServerboundCommandSuggestionPacket;
@ -33,9 +34,7 @@ import net.kyori.adventure.text.ComponentLike;
import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.TranslatableComponent; import net.kyori.adventure.text.TranslatableComponent;
import java.util.Arrays; import java.util.*;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.MultipleVersion.Packet.PacketHandler { public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.MultipleVersion.Packet.PacketHandler {
@ -157,8 +156,13 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
@Override @Override
public void sendChatPacket(Object client, String text) { public void sendChatPacket(Object client, String text) {
TcpClientSession session = (TcpClientSession) client; TcpClientSession session = (TcpClientSession) client;
ServerboundChatPacket chatPacket = new ServerboundChatPacket(text, System.currentTimeMillis(), 0, new byte[0], 0, null); if (text.startsWith("/")) {
session.send(chatPacket); ServerboundChatCommandPacket commandPacket = new ServerboundChatCommandPacket(text.split("/")[1], System.currentTimeMillis(), 0L, new ArrayList<>(), 0, new BitSet());
session.send(commandPacket);
} else {
ServerboundChatPacket chatPacket = new ServerboundChatPacket(text, System.currentTimeMillis(), 0L, null, 0, new BitSet());
session.send(chatPacket);
}
} }
@Override @Override