Skip to content

Hydraulic插件导致服务器崩溃:NotDirectoryException #63

@poisongod

Description

@poisongod

描述

当Hydraulic插件与Floodgate-Neoforge插件一起使用时,Minecraft服务器在启动过程中崩溃,错误信息显示Hydraulic插件尝试将Floodgate的jar文件当作目录处理。

错误日志

java.lang.IllegalStateException: Exception listing directories from C:\Users\yang1\Minecraft\1.21.11-neoforge-server\mods\Floodgate-Neoforge-2.2.6-b54.jar
    at FML Plugins//org.geysermc.pack.converter.util.NioDirectoryFileTreeReader.hasNext(NioDirectoryFileTreeReader.java:73)
    at FML Plugins//team.unnamed.creative.serialize.minecraft.MinecraftResourcePackReaderImpl.read(MinecraftResourcePackReaderImpl.java:92)
    at TRANSFORMER/hydraulic@1.0.0-SNAPSHOT/org.geysermc.hydraulic.pack.PackManager.lambda$initialize$0(PackManager.java:99)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
    at java.base/java.util.AbstractList$RandomAccessSpliterator.forEachRemaining(AbstractList.java:722)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575)
    at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
    at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616)
    at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622)
    at java.base/java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:627)
    at TRANSFORMER/hydraulic@1.0.0-SNAPSHOT/org.geysermc.hydraulic.pack.PackManager.initialize(PackManager.java:100)
    at TRANSFORMER/hydraulic@1.0.0-SNAPSHOT/org.geysermc.hydraulic.HydraulicImpl.onServerStarting(HydraulicImpl.java:53)
    at TRANSFORMER/hydraulic@1.0.0-SNAPSHOT/org.geysermc.hydraulic.neoforge.HydraulicNeoForgeMod.onServerStarting(HydraulicNeoForgeMod.java:22)
    at net.neoforged.bus.ConsumerEventHandler.invoke(ConsumerEventHandler.java:27)
    at net.neoforged.bus.EventBus.post(EventBus.java:360)
    at net.neoforged.bus.EventBus.post(EventBus.java:328)
    at TRANSFORMER/neoforge@21.11.31-beta/net.neoforged.neoforge.server.ServerLifecycleHooks.handleServerStarting(ServerLifecycleHooks.java:102)
    at TRANSFORMER/minecraft@1.21.11/net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:309)
    at TRANSFORMER/minecraft@1.21.11/net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:743)
    at TRANSFORMER/minecraft@1.21.11/net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:287)
    at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.nio.file.NotDirectoryException: C:\Users\yang1\Minecraft\1.21.11-neoforge-server\mods\Floodgate-Neoforge-2.2.6-b54.jar
    at java.base/sun.nio.fs.WindowsDirectoryStream.<init>(WindowsDirectoryStream.java:84)
    at java.base/sun.nio.fs.WindowsFileSystemProvider.newDirectoryStream(WindowsFileSystemProvider.java:541)
    at java.base/java.nio.file.Files.newDirectoryStream(Files.java:481)
    at java.base/java.nio.file.Files.list(Files.java:3772)
    at FML Plugins//org.geysermc.pack.converter.util.NioDirectoryFileTreeReader.hasNext(NioDirectoryFileTreeReader.java:71)
    ... 22 more

环境信息

  • Minecraft版本: 1.21.11
  • NeoForge版本: 21.11.31-beta
  • Hydraulic插件版本: 1.0.0-SNAPSHOT (hydraulic-neoforge.jar)
  • Floodgate插件版本: 2.2.6-SNAPSHOT (Floodgate-Neoforge-2.2.6-b54.jar)
  • Geyser插件版本: 2.9.2-SNAPSHOT (Geyser-NeoForge.jar)
  • 操作系统: Windows 11

重现步骤

  1. 安装NeoForge 21.11.31-beta
  2. 将以下插件放入mods目录:
    • hydraulic-neoforge.jar
    • Floodgate-Neoforge-2.2.6-b54.jar
    • Geyser-NeoForge.jar
  3. 启动服务器
  4. 服务器在启动过程中崩溃

预期行为

服务器应该正常启动,所有插件应该能够协同工作。

实际行为

服务器在启动时崩溃,错误信息显示Hydraulic插件尝试将Floodgate的jar文件当作目录处理。

可能的解决方案

Hydraulic插件的PackManager类需要修改,以正确处理jar文件而不是将它们当作目录。在initialize方法中,应该检查文件是否为目录,或者使用适当的方法来读取jar文件内容。

附加信息

  • 单独使用Hydraulic插件时服务器可以正常启动
  • 单独使用Floodgate和Geyser插件时服务器可以正常启动
  • 只有当Hydraulic与Floodgate一起使用时才会出现此问题
  • 可能还有其他同类型的问题,未找到

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions