Java NullPointerException带有勾选实体Minecraft modding 1.8
大家好,程序员们 我正在为1.8版的Minecraft编写一个mod,遇到了一个讨厌的Java NullPointerException带有勾选实体Minecraft modding 1.8,java,minecraft,minecraft-forge,Java,Minecraft,Minecraft Forge,大家好,程序员们 我正在为1.8版的Minecraft编写一个mod,遇到了一个讨厌的NullPointerException和我的throwable。在下面的代码中,EntityThrowable使用一个外部类来获取抛出时将发生的事情的结果,BlockPos通过getBlockPos()方法传递。这个位置被传递到外部类,在那里它被转换为x、y和z坐标。但是,每当我抛出抛出这个throwable时,它都会抛出这些坐标的异常 这个问题与什么是NullPointerException的问题之间的区别
NullPointerException
和我的throwable。在下面的代码中,EntityThrowable
使用一个外部类来获取抛出时将发生的事情的结果,BlockPos
通过getBlockPos()
方法传递。这个位置被传递到外部类,在那里它被转换为x、y和z坐标。但是,每当我抛出抛出这个throwable时,它都会抛出这些坐标的异常
这个问题与什么是NullPointerException的问题之间的区别在于,我从mov.getBlockPos()
(从movingObject位置
)获取的内容的返回值未知。MovingObjectPosition
从一个随机类中分配BlockPos的坐标,而Throwable的编码器则得到结果。我正在使用外部类的结果。ints中的这些结果导致游戏因未知坐标而崩溃。如果您有任何想法,如何获得最终位置的一次性,这将不胜感激
代码如下:
可丢弃:
@Override
protected void onImpact(MovingObjectPosition mov) {
LuckyPotionItems lpi = new LuckyPotionItems();
EntityPlayer player = this.getThrower() instanceof EntityPlayer ? (EntityPlayer) this.getThrower() : null;
if(!worldObj.isRemote)
lpi.chooseUnluckyDrink(worldObj, player, mov.getBlockPos());
this.setDead();
}
外层舱:
public void chooseUnluckyDrink(World w, EntityPlayer p, BlockPos pos){
Random r = w.rand;
int number = r.nextInt(13);
int x = pos.getX();
int y = pos.getY();
int z = pos.getZ();
System.out.println("Unlucky Number = " + number);
谢谢你的帮助
number = (number == null) ? "" : number;
System.out.println("Unlucky Number = " + number);
int x = (pos.getX() == null ) ? 0 : pos.getX();
您得到的数字为空值,这意味着
r.nextInt(13)中没有输出代码>您需要修复该问题。我使用一个条件语句来检查number的值,如果它为null,那么它将为number赋值,然后可以打印出来。请尝试我的示例,这将对您有所帮助。听起来问题可以通过检查BlockPos
和EntityPlayer
是否为空来解决。如果它们不为null,则运行该方法。如果它们为null,只需阻止运行该方法即可
@Override
protected void onImpact(MovingObjectPosition mov) {
LuckyPotionItems lpi = new LuckyPotionItems();
EntityPlayer player = this.getThrower() instanceof EntityPlayer ? (EntityPlayer) this.getThrower() : null;
if(mov.getBlockPos() != null && player != null) {
if(!worldObj.isRemote)
lpi.chooseUnluckyDrink(worldObj, player, mov.getBlockPos());
this.setDead();
}
}
可能重复的“否”,它不会撞击随机零件。代码在分配整数时崩溃。您需要研究blackPos ex:getX()和getY()
的getter方法,因为抛出器可能是EntityPlayerMP或EntityPlayerSP(我没有任何实体抛出这些抛出器或抛出器),我怀疑这是否有效,但我会尝试。@TechGamer27我知道,在这种情况下,您还想检查BlockPos
是否为空,我已更新了我的答案以包含该值。我将回答此问题:-)始终检查您的空值,不要相信任何东西。有时,代码将由另一个mod提供,他只是懒洋洋地提供一个null,因为这样它就可以工作,或者它在服务器/客户端上运行,并且东西也变成null。投票给@Flibio