Javaは、何らかの理由で、私にNullPointerException
を与えています。私はこれが通常簡単に修正できることを知っていますが、このケースでは、なぜそれが最初にそれを投げているのか理解できません。なぜ私はそれを理解できないのですか?まあ、それはスタックトレースがないので!それはonTick()
を呼び出しを開始する前にスタックトレースなしのNullPointerException
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 {
Vector vector;
Location lastpos;
@Override
public void onUse(Player player, Entity projectile) {
vector = player.getLocation().getDirection().normalize();
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) {
try {
if (lastpos == null) {
lastpos = entity.getLocation();
}
if (entity.getLocation().getBlock().getType().equals(Material.AIR)) {
entity.setVelocity(vector);
}
lastpos = entity.getLocation();
} catch (Exception e) {
System.out.println("Exception");
e.printStackTrace();
}
}
}
onTick()
ティックごとに呼び出され、onUse()
が呼ばれ、ここでコンソール出力です:ここに私のコードです
[11:26:52 INFO]: Exception
[11:26:52 WARN]: java.lang.NullPointerException
... this repeats often
だから、地獄は、この平均値を何、なぜそれをしませんどうしたらいいのですか?
同じポイントで十分な例外がスローされると、スタックトレースが破棄されます。あなたはあなたのログの始まりを見る必要があります。 (または、この例外が発生するブレークポイントにデバッガを使用することができます) –
lastposがnullの場合でも、あなたはまだ 'lastpos = entity.getLocation();' –