5

どんなプレイヤーでも無敵にできるコマンドを作ろうとしています。つまり、神モードです。

これはこれまでの私のコードです(ただし、すべて定型文です)

@EventHandler
public void onEntityDamage(EntityDamageEvent event) {
    if(event.getEntity() instaceof Player) {
        if(godModed.containsKey(event.getPlayer())) {
            //This is where I need the code to go - something to cancel the damage.
        }
    }
}

godModedは、HashMap godModed現在ゴッドモードになっているすべてのプレイヤーを含む です。ゴッドモードをオフにすると、マップから削除されます。

コマンド自体は正常に動作しています。現在、それをトリガーしたプレーヤーにメッセージを送信するようにしています。また、プレーヤーがまだオンになっていない場合は、godModed に追加するようにしています。しかし、実際にプレイヤーへのダメージを防ぐ方法がわかりません。後で治すだけでなく、完全に止めたいです。後者は機能する可能性がありますが、他のモッドonEntityDamageがゴッドモードのプレイヤーが遭遇してはならないものをトリガーするように見える場合、予期しない結果につながる可能性もあります.

4

1 に答える 1

4

を使用する必要がありますevent.setCancelled(true)

現在使用しているコードが機能している場合は、古いイベントAPI(および古いバージョンのbukkit)を使用している必要があります。bukkitをアップグレードすることをお勧めします。新しいイベントAPIを使用するコードは、次のようになります。

@EventHandler
public void onPlayerDamage(EntityDamageEvent event) {
    if(godModed.containsKey(event.getEntity())) {
        event.setCancelled(true);
    }
}
于 2012-11-29T18:57:52.777 に答える