Closed DictXiong closed 4 years ago
crash report: https://paste.ubuntu.com/p/BDWXwPhsWf/
原因: railcraft自定义了漏斗矿车类EntityCartHopper (父类CartBaseContainer从EntityMinecartContainer继承), 它在org.bukkit.craftbukkit.entity包的CraftEntity.getEntity()方法中无法被正常识别为漏斗矿车 (仅识别为普通矿车), 导致它在net.minecraft.entity.item.EntityMinecartContainer.getOwner()中的cart对象不是InventoryHolder类的实现, 所以返回了空指针, 在net.minecraft.tileentity.TileEntityHopper.java的457行的destination.getOwner().getInventory()抛出空指针异常.
EntityCartHopper
CartBaseContainer
EntityMinecartContainer
org.bukkit.craftbukkit.entity
CraftEntity.getEntity()
net.minecraft.entity.item.EntityMinecartContainer.getOwner()
cart
InventoryHolder
net.minecraft.tileentity.TileEntityHopper.java
destination.getOwner().getInventory()
解决方法: net.minecraft.entity.item.EntityMinecartContainer.getOwner() 添加一行, 具体实现如下
\\import catserver.server.inventory.CatCustomInventory;import net.minecraft.inventory.IInventory; public InventoryHolder getOwner() { org.bukkit.entity.Entity cart = getBukkitEntity(); if(cart instanceof InventoryHolder) return (InventoryHolder) cart; else if (this instanceof IInventory) return new CatCustomInventory((IInventory) this); \\new line here return null; }
已修复 https://github.com/Luohuayu/CatServer/commit/e0176d5773e7115e40b196cd6704bc96afb54a9e
crash report: https://paste.ubuntu.com/p/BDWXwPhsWf/
原因: railcraft自定义了漏斗矿车类
EntityCartHopper
(父类CartBaseContainer
从EntityMinecartContainer
继承), 它在org.bukkit.craftbukkit.entity
包的CraftEntity.getEntity()
方法中无法被正常识别为漏斗矿车 (仅识别为普通矿车), 导致它在net.minecraft.entity.item.EntityMinecartContainer.getOwner()
中的cart
对象不是InventoryHolder
类的实现, 所以返回了空指针, 在net.minecraft.tileentity.TileEntityHopper.java
的457行的destination.getOwner().getInventory()
抛出空指针异常.解决方法:
net.minecraft.entity.item.EntityMinecartContainer.getOwner()
添加一行, 具体实现如下