mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-25 01:49:30 +00:00
修正贴图
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 |
Reference in New Issue
Block a user