Closed FulingBing closed 2 years ago
运行环境
Minecraft版本(1.12.2/1.16.5/1.18.2): 1.12.2 构建版本(从/version指令获取): CatServer-8d58cdb8 相关模组/插件: Bukkit
描述这个BUG 在插件开发中,这两个方法一般用于判断一个方块是否是液体/空气。 [https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/block/Block.html#isEmpty()](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/block/Block.html#isEmpty()) 但是翻阅Bukkit的代码可以看出,它仅仅只会判断方块是否为水/岩浆/空气。
public boolean isEmpty() { return getType() == Material.AIR; } public boolean isLiquid() { return (getType() == Material.WATER) || (getType() == Material.STATIONARY_WATER) || (getType() == Material.LAVA) || (getType() == Material.STATIONARY_LAVA); }
这在原版mc里没有任何问题,但在模组环境下可能会导致各种异常。
导致的问题 除非插件作者在开发时刻意留意此问题, 否则开发出来的插件完全不兼容模组中的液体/空气, CatServer作为模组+插件的服务器,应该考虑插件会在非原版mc的环境下加载/运行的情况。
https://github.com/Luohuayu/CatServer/blob/1.12.2/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java#L465-L471
CraftBukkit是独立的MinecraftServer实现, 他并不会考虑任何有关于ForgeMod的事宜 依代码查看, 两个方法存在, 且实现了它该实现的功能, 并且两个方法功能正常 你应该从你的插件方面完成与模组液体交互判断,而不是从服务端,并不是任何人都会使用CatServer安装含有模组液体的模组
运行环境
Minecraft版本(1.12.2/1.16.5/1.18.2): 1.12.2 构建版本(从/version指令获取): CatServer-8d58cdb8 相关模组/插件: Bukkit
描述这个BUG 在插件开发中,这两个方法一般用于判断一个方块是否是液体/空气。 [https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/block/Block.html#isEmpty()](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/block/Block.html#isEmpty()) 但是翻阅Bukkit的代码可以看出,它仅仅只会判断方块是否为水/岩浆/空气。
这在原版mc里没有任何问题,但在模组环境下可能会导致各种异常。
导致的问题 除非插件作者在开发时刻意留意此问题, 否则开发出来的插件完全不兼容模组中的液体/空气, CatServer作为模组+插件的服务器,应该考虑插件会在非原版mc的环境下加载/运行的情况。