From b6b5aab62691718d8c8d9333ca2e951633a2d79e Mon Sep 17 00:00:00 2001 From: zxq5 Date: Sat, 1 Feb 2025 03:35:59 +0000 Subject: [PATCH] made heresy impossible --- .../fantasysmp/events/StevenKillCheck.java | 58 ++++++++++++++++--- .../dev/zxq5/fantasysmp/items/Witherite.java | 4 ++ 2 files changed, 55 insertions(+), 7 deletions(-) diff --git a/src/main/java/dev/zxq5/fantasysmp/events/StevenKillCheck.java b/src/main/java/dev/zxq5/fantasysmp/events/StevenKillCheck.java index 333f9ac..e6d5ac2 100644 --- a/src/main/java/dev/zxq5/fantasysmp/events/StevenKillCheck.java +++ b/src/main/java/dev/zxq5/fantasysmp/events/StevenKillCheck.java @@ -1,25 +1,69 @@ package dev.zxq5.fantasysmp.events; -import org.bukkit.Location; +import org.bukkit.*; import org.bukkit.entity.Chicken; import org.bukkit.entity.Player; import org.bukkit.entity.Wither; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.entity.ProjectileHitEvent; +import org.bukkit.plugin.Plugin; -import static org.bukkit.Bukkit.getServer; +import static org.bukkit.Bukkit.*; public class StevenKillCheck implements Listener { @EventHandler public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { - if (event.getEntity() instanceof Chicken && event.getDamager() instanceof Player player) { - Location coords = player.getLocation(); + if (event.getEntity() instanceof Chicken) { + event.setCancelled(true); - // summon lightning at location - - getServer().getWorlds().getFirst().strikeLightning(coords); + if (event.getDamager() instanceof Player player) { + destroyHeretic(player); + } } } + + @EventHandler + public void onEntityDamage(EntityDamageEvent event) { + if (event.getEntity() instanceof Chicken) { + event.setCancelled(true); + } + } + + @EventHandler + public void onProjectileHit(ProjectileHitEvent event) { + if (event.getHitEntity() instanceof Chicken && event.getEntity().getShooter() instanceof Player player) { + event.setCancelled(true); + destroyHeretic(player); + } + } + + @EventHandler + public void onEntitySpawn(org.bukkit.event.entity.EntitySpawnEvent event) { + if (event.getEntity() instanceof Chicken steven) { + steven.setCustomName("Steven"); + } + } + + public void destroyHeretic(Player heretic) { + Location coords = heretic.getLocation(); + World world = getServer().getWorlds().getFirst(); + Plugin plugin = getPluginManager().getPlugin("fantasysmp"); + + broadcastMessage(ChatColor.DARK_RED + "HERESY!!!!"); + Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 0); + Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 1); + Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 2); + Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 3); + Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 4); + Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 5); + Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 6); + Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 7); + Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 8); + Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 9); + Bukkit.getScheduler().runTaskLater(plugin, () -> heretic.setHealth(0), 10); + } } diff --git a/src/main/java/dev/zxq5/fantasysmp/items/Witherite.java b/src/main/java/dev/zxq5/fantasysmp/items/Witherite.java index 804b16f..21fdc86 100644 --- a/src/main/java/dev/zxq5/fantasysmp/items/Witherite.java +++ b/src/main/java/dev/zxq5/fantasysmp/items/Witherite.java @@ -95,6 +95,10 @@ public class Witherite extends GenericGearSet implements Listener, CommandExecut @EventHandler public void onEntityPotionEffectEvent(org.bukkit.event.entity.EntityPotionEffectEvent event) { if (event.getEntity() instanceof Player player) { + if (event.getNewEffect().getType() != org.bukkit.potion.PotionEffectType.WITHER) { + return; + } + try { if (player.getInventory().getHelmet().getItemMeta().getLore().toString().contains(this.helmetLore) && player.getInventory().getChestplate().getItemMeta().getLore().toString().contains(this.chestplateLore)