60 lines
2.2 KiB
Java
60 lines
2.2 KiB
Java
package benkralex.pvptoggle;
|
|
|
|
|
|
import org.bukkit.NamespacedKey;
|
|
import org.bukkit.entity.Entity;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.entity.Projectile;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
|
import org.bukkit.event.player.PlayerJoinEvent;
|
|
import org.bukkit.event.player.PlayerQuitEvent;
|
|
import org.bukkit.projectiles.ProjectileSource;
|
|
|
|
public class PvpEvent implements Listener {
|
|
|
|
@EventHandler(ignoreCancelled = true)
|
|
public void pvpListener(EntityDamageByEntityEvent event) {
|
|
Entity damager = event.getDamager();
|
|
Entity victim = event.getEntity();
|
|
|
|
if (victim instanceof Player) {
|
|
Player victimplayer=(Player) victim;
|
|
Player damagerplayer;
|
|
if (damager instanceof Player) {
|
|
damagerplayer=(Player) damager;
|
|
} else if (damager instanceof Projectile) {
|
|
ProjectileSource shooter =((Projectile) damager).getShooter();
|
|
if(shooter instanceof Player){
|
|
damagerplayer=(Player) shooter;
|
|
} else {
|
|
return;
|
|
}
|
|
} else {
|
|
return;
|
|
}
|
|
|
|
if (!Util.canPvP(damagerplayer, victimplayer)) {
|
|
event.setCancelled(true);
|
|
} else {
|
|
Util.savePvPData(damagerplayer,victimplayer);
|
|
}
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void playerLeaveListener(PlayerQuitEvent event){
|
|
event.getPlayer().getPersistentDataContainer().remove(new NamespacedKey(Pvptoggle.pvptoggle,"pvpdamagers"));
|
|
}
|
|
|
|
@EventHandler
|
|
public void playerJoinListener(PlayerJoinEvent event) {
|
|
if (!event.getplayer().getPersistentDataContainer().has(new NamespacedKey(Pvptoggle.pvptoggle, "pvptoggle"), PersistentDataType.BOOLEAN)) {
|
|
event.getPlayer().getPersistentDataContainer().set(new NamespacedKey(Pvptoggle.pvptoggle, "pvptoggle"), PersistentDataType.BOOLEAN, Config.getPvpProt());
|
|
} else {
|
|
event.getPlayer().sendMessage("Dein PvP-Schutz ist " + (pdc.get(new NamespacedKey(Pvptoggle.pvptoggle, "pvptoggle"), PersistentDataType.BOOLEAN)?"an":"aus"));
|
|
}
|
|
}
|
|
}
|