Core/src/main/java/eu/univento/core/customitems/weapons/closecombat/CloseCombatEvents.java

101 lines
3.8 KiB
Java

/*
* Copyright (c) 2017 univento.eu - All rights reserved
* You are not allowed to use, distribute or modify this code
*/
package eu.univento.core.customitems.weapons.closecombat;
import eu.univento.core.Core;
import eu.univento.core.api.customitems.CustomItems;
import eu.univento.core.api.player.CustomPlayer;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.player.*;
import java.util.LinkedList;
import java.util.List;
/**
* @author joethei
* @version 1.0
*/
public class CloseCombatEvents implements Listener{
private List<CustomPlayer> thiefsDagger = new LinkedList<>();
@EventHandler
public void onEntityDamageByEntity(EntityDamageByEntityEvent e) {
if(e.getDamager() instanceof Player && e.getEntity() instanceof Player) {
if(CustomItems.valueOf(((Player) e.getDamager()).getInventory().getItemInMainHand()) != null) {
CustomItems.valueOf(((Player) e.getDamager()).getInventory().getItemInMainHand()).getActions().getPlayerHitAction().onHit(CustomPlayer.getPlayer((Player) e.getEntity()), CustomPlayer.getPlayer((Player) e.getDamager()), e.getDamage(), e.getCause());
}
}
}
@EventHandler
public void onPlayerInteract(PlayerInteractEvent e) {
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
if(CustomItems.valueOf(e.getItem()) != null) {
CustomItems.valueOf(e.getItem()).getActions().getInteractBlockAction().onInteract(p, e.getAction(), e.getClickedBlock(), e.getBlockFace());
}
}
@EventHandler
public void onPlayerInteractEntity(PlayerInteractEntityEvent e) {
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
if(CustomItems.valueOf(p.getInventory().getItemInMainHand()) != null && e.getRightClicked() instanceof Player) {
CustomItems.valueOf(p.getInventory().getItemInMainHand()).getActions().getInteractPlayerAction().onInteract(p, CustomPlayer.getPlayer((Player) e.getRightClicked()));
}
}
@EventHandler
public void toggleSneak(PlayerToggleSneakEvent e) {
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
if(e.isSneaking()) {
if(p.getInventory().getItemInMainHand().equals(ThiefsDagger.getItemStack())) {
thiefsDagger.add(p);
p.hideToAll();
}
}else {
if(thiefsDagger.contains(p)) {
thiefsDagger.remove(p);
p.showToAll();
}
}
}
@EventHandler
public void onItemSwitch(PlayerItemHeldEvent e) {
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
if(p.getInventory().getItem(e.getNewSlot()) == ThiefsDagger.getItemStack()) {
if(p.isSneaking()) {
thiefsDagger.add(p);
p.hideToAll();
}
}
if(p.getInventory().getItem(e.getPreviousSlot()) == ThiefsDagger.getItemStack()) {
if(thiefsDagger.contains(p)) {
thiefsDagger.remove(p);
p.showToAll();
}
}
}
@EventHandler
public void onRespawn(PlayerRespawnEvent e) {
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
for(CustomPlayer player : Core.getOnlinePlayers()) {
if(thiefsDagger.contains(player)) p.hidePlayer(player);
else p.showPlayer(player);
}
}
@EventHandler
public void onItemHandSwap(PlayerSwapHandItemsEvent e) {
if(e.getPlayer().getInventory().getItemInMainHand() == ThiefsDagger.getItemStack() || e.getPlayer().getInventory().getItemInOffHand() == ThiefsDagger.getItemStack()) {
e.setCancelled(true);
}
}
}