2021-05-24 13:46:25 +02:00
|
|
|
package de.jeff_media.notridentvoid.listeners;
|
|
|
|
|
|
|
|
import de.jeff_media.notridentvoid.Main;
|
|
|
|
import de.jeff_media.notridentvoid.config.Config;
|
|
|
|
import de.jeff_media.notridentvoid.tasks.WatchTrident;
|
|
|
|
import org.bukkit.Bukkit;
|
|
|
|
import org.bukkit.Material;
|
|
|
|
import org.bukkit.enchantments.Enchantment;
|
|
|
|
import org.bukkit.entity.EntityType;
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
import org.bukkit.entity.Trident;
|
|
|
|
import org.bukkit.event.EventHandler;
|
|
|
|
import org.bukkit.event.EventPriority;
|
|
|
|
import org.bukkit.event.Listener;
|
|
|
|
import org.bukkit.event.entity.ProjectileLaunchEvent;
|
|
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
import org.bukkit.inventory.meta.ItemMeta;
|
|
|
|
|
|
|
|
public class ProjectileListener implements Listener {
|
|
|
|
|
|
|
|
private final Main main = Main.getInstance();
|
|
|
|
|
|
|
|
private boolean hasLoyalty(ItemStack item) {
|
|
|
|
if(!item.hasItemMeta()) return false;
|
|
|
|
ItemMeta meta = item.getItemMeta();
|
|
|
|
return meta.hasEnchant(Enchantment.LOYALTY);
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
|
|
|
public void onShoot(ProjectileLaunchEvent event) {
|
|
|
|
if(event.getEntityType() != EntityType.TRIDENT) return;
|
|
|
|
Trident trident = (Trident) event.getEntity();
|
|
|
|
if(main.isRegistered(trident)) return;
|
|
|
|
//if(!hasLoyalty(trident)) return;
|
|
|
|
if(!(trident.getShooter() instanceof Player)) return;
|
|
|
|
Player player = (Player) trident.getShooter();
|
|
|
|
ItemStack tridentItem = null;
|
2021-05-24 14:31:47 +02:00
|
|
|
if(player.getInventory().getItemInOffHand() != null) {
|
|
|
|
if(player.getInventory().getItemInOffHand().getType() == Material.TRIDENT) {
|
|
|
|
tridentItem = player.getInventory().getItemInOffHand();
|
|
|
|
}
|
|
|
|
}
|
2021-05-24 13:46:25 +02:00
|
|
|
if(player.getInventory().getItemInMainHand() != null) {
|
|
|
|
if(player.getInventory().getItemInMainHand().getType() == Material.TRIDENT) {
|
|
|
|
tridentItem = player.getInventory().getItemInMainHand();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(tridentItem == null) return;
|
|
|
|
if(!hasLoyalty(tridentItem)) return;
|
|
|
|
if(!main.getConfig().getBoolean(Config.VOID_SAVING)) return;
|
|
|
|
main.register(trident);
|
|
|
|
new WatchTrident(trident).runTaskTimer(main,1,1);
|
|
|
|
Bukkit.getScheduler().runTaskLater(main,() ->main.unregister(trident),20);
|
|
|
|
}
|
|
|
|
}
|