9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-25 01:49:30 +00:00

修正贴图

This commit is contained in:
XiaoMoMi
2025-07-09 20:12:03 +08:00
parent 9fe6d69609
commit d7624f3d6f
4 changed files with 22 additions and 16 deletions

View File

@@ -43,8 +43,8 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
private static BukkitNetworkManager instance;
private static final Map<Class<?>, TriConsumer<NetWorkUser, NMSPacketEvent, Object>> NMS_PACKET_HANDLERS = new HashMap<>();
// only for game stage for the moment
private static BiConsumer<NetWorkUser, ByteBufPacketEvent>[] S2C_BYTE_BUFFER_PACKET_HANDLERS;
private static BiConsumer<NetWorkUser, ByteBufPacketEvent>[] C2S_BYTE_BUFFER_PACKET_HANDLERS;
private static BiConsumer<NetWorkUser, ByteBufPacketEvent>[] S2C_GAME_BYTE_BUFFER_PACKET_HANDLERS;
private static BiConsumer<NetWorkUser, ByteBufPacketEvent>[] C2S_GAME_BYTE_BUFFER_PACKET_HANDLERS;
private static void registerNMSPacketConsumer(final TriConsumer<NetWorkUser, NMSPacketEvent, Object> function, @Nullable Class<?> packet) {
if (packet == null) return;
@@ -53,18 +53,18 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
private static void registerS2CByteBufPacketConsumer(final BiConsumer<NetWorkUser, ByteBufPacketEvent> function, int id) {
if (id == -1) return;
if (id < 0 || id >= S2C_BYTE_BUFFER_PACKET_HANDLERS.length) {
if (id < 0 || id >= S2C_GAME_BYTE_BUFFER_PACKET_HANDLERS.length) {
throw new IllegalArgumentException("Invalid packet id: " + id);
}
S2C_BYTE_BUFFER_PACKET_HANDLERS[id] = function;
S2C_GAME_BYTE_BUFFER_PACKET_HANDLERS[id] = function;
}
private static void registerC2SByteBufPacketConsumer(final BiConsumer<NetWorkUser, ByteBufPacketEvent> function, int id) {
if (id == -1) return;
if (id < 0 || id >= C2S_BYTE_BUFFER_PACKET_HANDLERS.length) {
if (id < 0 || id >= C2S_GAME_BYTE_BUFFER_PACKET_HANDLERS.length) {
throw new IllegalArgumentException("Invalid packet id: " + id);
}
C2S_BYTE_BUFFER_PACKET_HANDLERS[id] = function;
C2S_GAME_BYTE_BUFFER_PACKET_HANDLERS[id] = function;
}
private final BiConsumer<ChannelHandler, Object> packetConsumer;
@@ -92,10 +92,10 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
@SuppressWarnings("unchecked")
public BukkitNetworkManager(BukkitCraftEngine plugin) {
instance = this;
S2C_BYTE_BUFFER_PACKET_HANDLERS = new BiConsumer[PacketIdFinder.maxS2CPacketId()];
C2S_BYTE_BUFFER_PACKET_HANDLERS = new BiConsumer[PacketIdFinder.maxC2SPacketId()];
Arrays.fill(S2C_BYTE_BUFFER_PACKET_HANDLERS, Handlers.DO_NOTHING);
Arrays.fill(C2S_BYTE_BUFFER_PACKET_HANDLERS, Handlers.DO_NOTHING);
S2C_GAME_BYTE_BUFFER_PACKET_HANDLERS = new BiConsumer[PacketIdFinder.s2cGamePackets()];
C2S_GAME_BYTE_BUFFER_PACKET_HANDLERS = new BiConsumer[PacketIdFinder.c2sGamePackets()];
Arrays.fill(S2C_GAME_BYTE_BUFFER_PACKET_HANDLERS, Handlers.DO_NOTHING);
Arrays.fill(C2S_GAME_BYTE_BUFFER_PACKET_HANDLERS, Handlers.DO_NOTHING);
hasModelEngine = Bukkit.getPluginManager().getPlugin("ModelEngine") != null;
hasViaVersion = Bukkit.getPluginManager().getPlugin("ViaVersion") != null;
this.plugin = plugin;
@@ -665,13 +665,13 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
protected void handleS2CByteBufPacket(NetWorkUser user, ByteBufPacketEvent event) {
int packetID = event.packetID();
Optional.ofNullable(S2C_BYTE_BUFFER_PACKET_HANDLERS[packetID])
Optional.ofNullable(S2C_GAME_BYTE_BUFFER_PACKET_HANDLERS[packetID])
.ifPresent(function -> function.accept(user, event));
}
protected void handleC2SByteBufPacket(NetWorkUser user, ByteBufPacketEvent event) {
int packetID = event.packetID();
Optional.ofNullable(C2S_BYTE_BUFFER_PACKET_HANDLERS[packetID])
Optional.ofNullable(C2S_GAME_BYTE_BUFFER_PACKET_HANDLERS[packetID])
.ifPresent(function -> function.accept(user, event));
}

View File

@@ -21,8 +21,8 @@ public class PacketIdFinder {
if (VersionHelper.isOrAbove1_21()) {
Object packetReport = CoreReflections.constructor$PacketReport.newInstance((Object) null);
JsonElement jsonElement = (JsonElement) CoreReflections.method$PacketReport$serializePackets.invoke(packetReport);
var play = jsonElement.getAsJsonObject().get("play");
for (var entry : play.getAsJsonObject().entrySet()) {
JsonElement play = jsonElement.getAsJsonObject().get("play");
for (Map.Entry<String, JsonElement> entry : play.getAsJsonObject().entrySet()) {
Map<String, Integer> ids = new HashMap<>();
gamePacketIdsByName.put(entry.getKey(), ids);
for (var entry2 : entry.getValue().getAsJsonObject().entrySet()) {
@@ -40,6 +40,7 @@ public class PacketIdFinder {
maxS2CPacketId = calculateMaxId("clientbound");
maxC2SPacketId = calculateMaxId("serverbound");
}
private static int calculateMaxId(String direction) {
if (VersionHelper.isOrAbove1_20_5()) {
return gamePacketIdsByName.getOrDefault(direction, Collections.emptyMap()).size();
@@ -48,11 +49,11 @@ public class PacketIdFinder {
}
}
public static int maxC2SPacketId() {
public static int c2sGamePackets() {
return maxC2SPacketId;
}
public static int maxS2CPacketId() {
public static int s2cGamePackets() {
return maxS2CPacketId;
}

View File

@@ -1561,4 +1561,9 @@ public final class NetworkReflections {
List.of("network.protocol.login.ClientboundLoginFinishedPacket", "network.protocol.login.ClientboundGameProfilePacket")
)
);
public static final Class<?> clazz$ClientboundRecipeBookAddPacket = MiscUtils.requireNonNullIf(BukkitReflectionUtils.findReobfOrMojmapClass(
"network.protocol.game.ClientboundRecipeBookAddPacket",
"network.protocol.game.ClientboundRecipeBookAddPacket"
), VersionHelper.isOrAbove1_21_2());
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB