mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-30 12:29:15 +00:00
移动方法
This commit is contained in:
@@ -2318,7 +2318,17 @@ public class PacketConsumers {
|
||||
Object packetListener = FastNMS.INSTANCE.method$Connection$getPacketListener(user.connection());
|
||||
if (!CoreReflections.clazz$ServerConfigurationPacketListenerImpl.isInstance(packetListener)) return;
|
||||
// 根据要求需要运行在主线程上
|
||||
CraftEngine.instance().scheduler().executeSync(() -> ResourcePackUtils.handleResourcePackResponse(packetListener, packet, action));
|
||||
CraftEngine.instance().scheduler().executeSync(() -> {
|
||||
try {
|
||||
NetworkReflections.methodHandle$ServerCommonPacketListener$handleResourcePackResponse.invokeExact(packetListener, packet);
|
||||
if (action != NetworkReflections.instance$ServerboundResourcePackPacket$Action$ACCEPTED
|
||||
&& action != NetworkReflections.instance$ServerboundResourcePackPacket$Action$DOWNLOADED) {
|
||||
CoreReflections.methodHandle$ServerConfigurationPacketListenerImpl$finishCurrentTask.invokeExact(packetListener, CoreReflections.instance$ServerResourcePackConfigurationTask$TYPE);
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
CraftEngine.instance().logger().warn("Failed to handle ServerboundResourcePackPacket for " + user.name(), e);
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
CraftEngine.instance().logger().warn("Failed to handle ServerboundResourcePackPacket", e);
|
||||
@@ -2401,7 +2411,12 @@ public class PacketConsumers {
|
||||
|
||||
user.setShouldProcessFinishConfiguration(false); // 防止loop
|
||||
event.setCancelled(true);
|
||||
ResourcePackUtils.finishCurrentTask(packetListener, CoreReflections.instance$JoinWorldTask$TYPE);
|
||||
try {
|
||||
CoreReflections.methodHandle$ServerConfigurationPacketListenerImpl$finishCurrentTask.invokeExact(packetListener, CoreReflections.instance$JoinWorldTask$TYPE);
|
||||
} catch (Throwable e) {
|
||||
CraftEngine.instance().logger().warn("Failed to finish current task for " + user.name(), e);
|
||||
}
|
||||
|
||||
if (VersionHelper.isOrAbove1_20_5()) {
|
||||
// 1.20.5+开始会检查是否结束需要重新设置回去,不然不会发keepAlive包
|
||||
CoreReflections.methodHandle$ServerCommonPacketListenerImpl$closedSetter.invokeExact(packetListener, false);
|
||||
@@ -2422,9 +2437,7 @@ public class PacketConsumers {
|
||||
return;
|
||||
}
|
||||
for (ResourcePackDownloadData data : dataList) {
|
||||
configurationTasks.add(FastNMS.INSTANCE.constructor$ServerResourcePackConfigurationTask(
|
||||
ResourcePackUtils.createServerResourcePackInfo(data.uuid(), data.url(), data.sha1()))
|
||||
);
|
||||
configurationTasks.add(FastNMS.INSTANCE.constructor$ServerResourcePackConfigurationTask(ResourcePackUtils.createServerResourcePackInfo(data.uuid(), data.url(), data.sha1())));
|
||||
user.addResourcePackUUID(data.uuid());
|
||||
}
|
||||
FastNMS.INSTANCE.method$ServerConfigurationPacketListenerImpl$returnToWorld(packetListener);
|
||||
|
||||
@@ -20,24 +20,4 @@ public final class ResourcePackUtils {
|
||||
public static Object createServerResourcePackInfo(UUID uuid, String url, String hash) {
|
||||
return FastNMS.INSTANCE.constructor$ServerResourcePackInfo(uuid, url, hash, Config.kickOnDeclined(), ComponentUtils.adventureToMinecraft(Config.resourcePackPrompt()));
|
||||
}
|
||||
|
||||
public static void finishCurrentTask(Object packetListener, Object type) {
|
||||
try {
|
||||
CoreReflections.methodHandle$ServerConfigurationPacketListenerImpl$finishCurrentTask.invokeExact(packetListener, type);
|
||||
} catch (Throwable e) {
|
||||
CraftEngine.instance().logger().warn("Failed to finish current task", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void handleResourcePackResponse(Object packetListener, Object packet, Object action) {
|
||||
try {
|
||||
NetworkReflections.methodHandle$ServerCommonPacketListener$handleResourcePackResponse.invokeExact(packetListener, packet);
|
||||
if (action != NetworkReflections.instance$ServerboundResourcePackPacket$Action$ACCEPTED
|
||||
&& action != NetworkReflections.instance$ServerboundResourcePackPacket$Action$DOWNLOADED) {
|
||||
ResourcePackUtils.finishCurrentTask(packetListener, CoreReflections.instance$ServerResourcePackConfigurationTask$TYPE);
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
CraftEngine.instance().logger().warn("Failed to handle ServerboundResourcePackPacket", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user