diff options
Diffstat (limited to 'patches/server/0257-Add-more-Witch-API.patch')
-rw-r--r-- | patches/server/0257-Add-more-Witch-API.patch | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/patches/server/0257-Add-more-Witch-API.patch b/patches/server/0257-Add-more-Witch-API.patch new file mode 100644 index 0000000000..ead3a185c6 --- /dev/null +++ b/patches/server/0257-Add-more-Witch-API.patch @@ -0,0 +1,101 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath <[email protected]> +Date: Fri, 12 Oct 2018 14:10:46 -0500 +Subject: [PATCH] Add more Witch API + +== AT == +public net.minecraft.world.entity.monster.Witch usingTime + +diff --git a/src/main/java/net/minecraft/world/entity/monster/Witch.java b/src/main/java/net/minecraft/world/entity/monster/Witch.java +index f6d01d21745391595d61b191832be4c28a3e58cb..b8ff1e3d280171378fe383bcc7c6a855d20ae5d1 100644 +--- a/src/main/java/net/minecraft/world/entity/monster/Witch.java ++++ b/src/main/java/net/minecraft/world/entity/monster/Witch.java +@@ -151,21 +151,7 @@ public class Witch extends Raider implements RangedAttackMob { + } + + if (holder != null) { +- // Paper start +- ItemStack potion = PotionContents.createItemStack(Items.POTION, holder); +- potion = org.bukkit.craftbukkit.event.CraftEventFactory.handleWitchReadyPotionEvent(this, potion); +- this.setItemSlot(EquipmentSlot.MAINHAND, potion); +- // Paper end +- this.usingTime = this.getMainHandItem().getUseDuration(this); +- this.setUsingItem(true); +- if (!this.isSilent()) { +- this.level().playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.WITCH_DRINK, this.getSoundSource(), 1.0F, 0.8F + this.random.nextFloat() * 0.4F); +- } +- +- AttributeInstance attributemodifiable = this.getAttribute(Attributes.MOVEMENT_SPEED); +- +- attributemodifiable.removeModifier(Witch.SPEED_MODIFIER_DRINKING_ID); +- attributemodifiable.addTransientModifier(Witch.SPEED_MODIFIER_DRINKING); ++ this.setDrinkingPotion(PotionContents.createItemStack(Items.POTION, holder)); // Paper - logic moved into setDrinkingPotion, copy exact impl into the method and then comment out + } + } + +@@ -177,6 +163,23 @@ public class Witch extends Raider implements RangedAttackMob { + super.aiStep(); + } + ++ // Paper start - moved to its own method ++ public void setDrinkingPotion(ItemStack potion) { ++ potion = org.bukkit.craftbukkit.event.CraftEventFactory.handleWitchReadyPotionEvent(this, potion); ++ this.setItemSlot(EquipmentSlot.MAINHAND, potion); ++ this.usingTime = this.getMainHandItem().getUseDuration(this); ++ this.setUsingItem(true); ++ if (!this.isSilent()) { ++ this.level().playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.WITCH_DRINK, this.getSoundSource(), 1.0F, 0.8F + this.random.nextFloat() * 0.4F); ++ } ++ ++ AttributeInstance attributemodifiable = this.getAttribute(Attributes.MOVEMENT_SPEED); ++ ++ attributemodifiable.removeModifier(Witch.SPEED_MODIFIER_DRINKING_ID); ++ attributemodifiable.addTransientModifier(Witch.SPEED_MODIFIER_DRINKING); ++ } ++ // Paper end ++ + @Override + public SoundEvent getCelebrateSound() { + return SoundEvents.WITCH_CELEBRATE; +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWitch.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWitch.java +index 524b5ba5995affc09eedf9a85d22e8b0b4efc156..4b3d783cabcb2de1a67d7fbfb6f525bfb493aed1 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWitch.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWitch.java +@@ -2,6 +2,13 @@ package org.bukkit.craftbukkit.entity; + + import org.bukkit.craftbukkit.CraftServer; + import org.bukkit.entity.Witch; ++// Paper start ++import com.destroystokyo.paper.entity.CraftRangedEntity; ++import com.google.common.base.Preconditions; ++import org.bukkit.Material; ++import org.bukkit.craftbukkit.inventory.CraftItemStack; ++import org.bukkit.inventory.ItemStack; ++// Paper end + + public class CraftWitch extends CraftRaider implements Witch, com.destroystokyo.paper.entity.CraftRangedEntity<net.minecraft.world.entity.monster.Witch> { // Paper + public CraftWitch(CraftServer server, net.minecraft.world.entity.monster.Witch entity) { +@@ -22,4 +29,23 @@ public class CraftWitch extends CraftRaider implements Witch, com.destroystokyo. + public boolean isDrinkingPotion() { + return this.getHandle().isDrinkingPotion(); + } ++ // Paper start ++ public int getPotionUseTimeLeft() { ++ return getHandle().usingTime; ++ } ++ ++ @Override ++ public void setPotionUseTimeLeft(int ticks) { ++ getHandle().usingTime = ticks; ++ } ++ ++ public ItemStack getDrinkingPotion() { ++ return CraftItemStack.asCraftMirror(getHandle().getMainHandItem()); ++ } ++ ++ public void setDrinkingPotion(ItemStack potion) { ++ Preconditions.checkArgument(potion == null || potion.getType().isEmpty() || potion.getType() == Material.POTION, "must be potion, air, or null"); ++ getHandle().setDrinkingPotion(CraftItemStack.asNMSCopy(potion)); ++ } ++ // Paper end + } |