diff --git a/Spigot-API-Patches/0105-WitchConsumePotionEvent.patch b/Spigot-API-Patches/0105-WitchConsumePotionEvent.patch new file mode 100644 index 000000000..d3eaa8de6 --- /dev/null +++ b/Spigot-API-Patches/0105-WitchConsumePotionEvent.patch @@ -0,0 +1,119 @@ +From 4dfcc6b9a1645e9c1fa6a5581aead470c349d60f Mon Sep 17 00:00:00 2001 +From: Aikar +Date: Wed, 16 May 2018 20:26:16 -0400 +Subject: [PATCH] WitchConsumePotionEvent + +Fires when a witch consumes the potion in their hand + +diff --git a/src/main/java/com/destroystokyo/paper/event/entity/WitchConsumePotionEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/WitchConsumePotionEvent.java +new file mode 100644 +index 00000000..e3035110 +--- /dev/null ++++ b/src/main/java/com/destroystokyo/paper/event/entity/WitchConsumePotionEvent.java +@@ -0,0 +1,64 @@ ++package com.destroystokyo.paper.event.entity; ++ ++import org.bukkit.entity.Witch; ++import org.bukkit.event.Cancellable; ++import org.bukkit.event.HandlerList; ++import org.bukkit.event.entity.EntityEvent; ++import org.bukkit.inventory.ItemStack; ++ ++/** ++ * Fired when a witch consumes the potion in their hand to buff themselves. ++ */ ++public class WitchConsumePotionEvent extends EntityEvent implements Cancellable { ++ private ItemStack potion; ++ ++ public WitchConsumePotionEvent(Witch witch, ItemStack potion) { ++ super(witch); ++ this.potion = potion; ++ } ++ ++ @Override ++ public Witch getEntity() { ++ return (Witch) super.getEntity(); ++ } ++ ++ /** ++ * Gets the potion the witch will consume and have the effects applied. ++ */ ++ public ItemStack getPotion() { ++ return potion; ++ } ++ ++ /** ++ * Sets the potion to be consumed and applied to the witch. ++ * @param potion The potion ++ */ ++ public void setPotion(ItemStack potion) { ++ this.potion = potion != null ? potion.clone() : null; ++ } ++ ++ private static final HandlerList handlers = new HandlerList(); ++ ++ public HandlerList getHandlers() { ++ return handlers; ++ } ++ ++ public static HandlerList getHandlerList() { ++ return handlers; ++ } ++ ++ private boolean cancelled = false; ++ ++ /** ++ * @return Event was cancelled or potion was null ++ */ ++ @Override ++ public boolean isCancelled() { ++ return cancelled || potion == null; ++ } ++ ++ @Override ++ public void setCancelled(boolean cancel) { ++ cancelled = cancel; ++ } ++} +diff --git a/src/main/java/com/destroystokyo/paper/event/entity/WitchThrowPotionEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/WitchThrowPotionEvent.java +new file mode 100644 +index 00000000..6ef6367b +--- /dev/null ++++ b/src/main/java/com/destroystokyo/paper/event/entity/WitchThrowPotionEvent.java +@@ -0,0 +1,33 @@ ++package com.destroystokyo.paper.event.entity; ++ ++import org.bukkit.event.Cancellable; ++import org.bukkit.event.Event; ++import org.bukkit.event.HandlerList; ++ ++public class WitchThrowPotionEvent extends Event implements Cancellable { ++ public WitchThrowPotionEvent() { ++ } ++ ++ ++ private static final HandlerList handlers = new HandlerList(); ++ ++ public HandlerList getHandlers() { ++ return handlers; ++ } ++ ++ public static HandlerList getHandlerList() { ++ return handlers; ++ } ++ ++ private boolean cancelled = false; ++ ++ @Override ++ public boolean isCancelled() { ++ return cancelled; ++ } ++ ++ @Override ++ public void setCancelled(boolean cancel) { ++ cancelled = cancel; ++ } ++} +-- +2.17.0 + diff --git a/Spigot-Server-Patches/0297-WitchConsumePotionEvent.patch b/Spigot-Server-Patches/0297-WitchConsumePotionEvent.patch new file mode 100644 index 000000000..1df545700 --- /dev/null +++ b/Spigot-Server-Patches/0297-WitchConsumePotionEvent.patch @@ -0,0 +1,27 @@ +From 9e68005243fec04ecdaaaed5392473473f2e35f2 Mon Sep 17 00:00:00 2001 +From: Aikar +Date: Wed, 16 May 2018 20:35:16 -0400 +Subject: [PATCH] WitchConsumePotionEvent + +Fires when a witch consumes the potion in their hand + +diff --git a/src/main/java/net/minecraft/server/EntityWitch.java b/src/main/java/net/minecraft/server/EntityWitch.java +index ffe72e037..3a00a37eb 100644 +--- a/src/main/java/net/minecraft/server/EntityWitch.java ++++ b/src/main/java/net/minecraft/server/EntityWitch.java +@@ -71,7 +71,11 @@ public class EntityWitch extends EntityMonster implements IRangedEntity { + + this.setSlot(EnumItemSlot.MAINHAND, ItemStack.a); + if (itemstack.getItem() == Items.POTION) { +- List list = PotionUtil.getEffects(itemstack); ++ // Paper start ++ com.destroystokyo.paper.event.entity.WitchConsumePotionEvent event = new com.destroystokyo.paper.event.entity.WitchConsumePotionEvent((org.bukkit.entity.Witch) this.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack)); ++ ++ List list = event.callEvent() ? PotionUtil.getEffects(org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(event.getPotion())) : null; ++ // Paper end + + if (list != null) { + Iterator iterator = list.iterator(); +-- +2.17.0 + diff --git a/scripts/importmcdev.sh b/scripts/importmcdev.sh index 40162024e..f29ec2402 100755 --- a/scripts/importmcdev.sh +++ b/scripts/importmcdev.sh @@ -70,6 +70,7 @@ import EntityLlama import EntitySquid import EntityTypes import EntityWaterAnimal +import EntityWitch import EnumItemSlot import EULA import FileIOThread