无意义的NullPointerException / Variable决定不存在

时间:2016-04-30 15:53:08

标签: java nullpointerexception null bukkit

我已经为Spigot开发了几天的插件,并且已经发布了几个关于它的StackOverflow帖子。然而,这是最令人困惑的。

package redempt.divinity.ability.modifier.modifiers;

import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.util.Vector;
import redempt.divinity.ability.AbilityType;
import redempt.divinity.ability.modifier.ProjectileModifier;

public class NoGravity extends ProjectileModifier {
    private Vector vector;
    Location lastpos;
    @Override
    public void onUse(Player player, Entity projectile) {
        vector = player.getLocation().getDirection().normalize().clone();
        System.out.println(vector);
        lastpos = projectile.getLocation();
    }
    @Override
    public String getName() {
        return "No gravity";
    }
    @Override
    public Material getRepresentation() {
        return Material.FEATHER;
    }
    @Override
    public AbilityType getType() {
        return AbilityType.PROJECTILE;
    }
    @Override
    public void onHit(EntityDamageByEntityEvent event) {
    }
    @Override
    public void onTick(Entity entity) {
//      if (lastpos == null || vector == null) {
//          return;
//      }
        System.out.println(vector);
        if (entity.getLocation().getBlock().getType().equals(Material.AIR)) {
            entity.setVelocity(vector);
        }
        lastpos = entity.getLocation();
    }
}

现在控制台输出:

[11:49:13 INFO]: null
[11:49:13 INFO]: null
[11:49:13 INFO]: null
[11:49:14 INFO]: 0.18347871628032447,-0.275177341220671,-0.9437229421556131
[11:49:14 INFO]: null
[11:49:14 INFO]: null
[11:49:14 INFO]: null
[11:49:14 INFO]: null
[11:49:14 INFO]: null
[11:49:14 INFO]: null
..And so on

如您所见,变量'vector'是一个私有Vector对象。但是,出于某种原因,它似乎并不像现有的那样存在,并且有时似乎只是不为空。任何人都可以解释为什么会发生这种情况吗?

1 个答案:

答案 0 :(得分:0)

事实证明,有两个完全相同的对象的实例,除了一个被调用的onUse(),另一个没有。我现在解决了这个问题。