From cd4a36c519702f21e7ae0affc853695557cbb821 Mon Sep 17 00:00:00 2001 From: LinoxGH Date: Fri, 26 Jun 2020 23:18:27 +0300 Subject: [PATCH] Added Bee Protection to Hazmat Suit. --- .../listeners/HazmatSuitListener.java | 59 +++++++++++++++++++ .../Slimefun/SlimefunPlugin.java | 2 + 2 files changed, 61 insertions(+) create mode 100644 src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/HazmatSuitListener.java diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/HazmatSuitListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/HazmatSuitListener.java new file mode 100644 index 000000000..3af80370a --- /dev/null +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/HazmatSuitListener.java @@ -0,0 +1,59 @@ +package io.github.thebusybiscuit.slimefun4.implementation.listeners; + +import org.bukkit.entity.Bee; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.inventory.ItemStack; + +import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils; +import io.github.thebusybiscuit.slimefun4.api.MinecraftVersion; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; + +/** + * The listener for Hazmat Suit's {@link Bee} sting protection. + * Only applied if the whole set is worn. + * + * @author Linox + * + * @see Bee + * + */ +public class HazmatSuitListener implements Listener { + + public HazmatSuitListener(SlimefunPlugin plugin) { + plugin.getServer().getPluginManager().registerEvents(this, plugin); + } + + @EventHandler + public void onDamage(EntityDamageByEntityEvent e) { + if (!SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_15)) return; + + if (e.getDamager() instanceof Bee) { + if (e.getEntity() instanceof Player) { + Player p = (Player) e.getEntity(); + + int hazmatCount = 0; + for (ItemStack armor : p.getInventory().getArmorContents()) { + SlimefunItem sfItem = SlimefunItem.getByItem(armor); + if (sfItem == null) return; + + String id = sfItem.getID(); + if (id.equals("SCUBA_HELMET")) hazmatCount++; + if (id.equals("HAZMAT_CHESTPLATE")) hazmatCount++; + if (id.equals("HAZMAT_LEGGINGS")) hazmatCount++; + if (id.equals("RUBBER_BOOTS")) hazmatCount++; + } + + if (hazmatCount == 4) { + e.setDamage(0D); + for (ItemStack armor : p.getInventory().getArmorContents()) { + ItemUtils.damageItem(armor, 1, false); + } + } + } + } + } +} diff --git a/src/main/java/me/mrCookieSlime/Slimefun/SlimefunPlugin.java b/src/main/java/me/mrCookieSlime/Slimefun/SlimefunPlugin.java index 635821e44..0c5480ad8 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/SlimefunPlugin.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/SlimefunPlugin.java @@ -10,6 +10,7 @@ import java.util.Set; import java.util.logging.Level; import java.util.stream.Collectors; +import io.github.thebusybiscuit.slimefun4.implementation.listeners.HazmatSuitListener; import org.bukkit.Bukkit; import org.bukkit.Server; import org.bukkit.command.Command; @@ -237,6 +238,7 @@ public final class SlimefunPlugin extends JavaPlugin implements SlimefunAddon { new WitherListener(this); new IronGolemListener(this); new PlayerInteractEntityListener(this); + new HazmatSuitListener(this); new MobDropListener(this, (BasicCircuitBoard) SlimefunItems.BASIC_CIRCUIT_BOARD.getItem());