928bcc8d3a
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 09943450 Update SnakeYAML version 5515734f SPIGOT-7162: Incorrect description for Entity#getVehicle javadoc 6f82b381 PR-788: Add getHand() to all relevant events CraftBukkit Changes: aaf484f6f SPIGOT-7163: CraftMerchantRecipe doesn't copy demand and specialPrice from BukkitMerchantRecipe 5329dd6fd PR-1107: Add getHand() to all relevant events 93061706e SPIGOT-7045: Ocelots never spawn with babies with spawn reason OCELOT_BABY
115 Zeilen
6.3 KiB
Diff
115 Zeilen
6.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: BillyGalbreath <Blake.Galbreath@GMail.com>
|
|
Date: Fri, 12 Oct 2018 14:10:46 -0500
|
|
Subject: [PATCH] Add more Witch API
|
|
|
|
|
|
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 1ee8fec8f9f581fa68497ebf4f90aad9d425ec71..b7bc64818387288955d0723cd071d4203bd2f121 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/monster/Witch.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/monster/Witch.java
|
|
@@ -156,21 +156,24 @@ public class Witch extends Raider implements RangedAttackMob {
|
|
}
|
|
|
|
if (potionregistry != null) {
|
|
- // Paper start
|
|
ItemStack potion = PotionUtils.setPotion(new ItemStack(Items.POTION), potionregistry);
|
|
- org.bukkit.inventory.ItemStack bukkitStack = com.destroystokyo.paper.event.entity.WitchReadyPotionEvent.process((org.bukkit.entity.Witch) this.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(potion));
|
|
- this.setItemSlot(EquipmentSlot.MAINHAND, org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(bukkitStack));
|
|
+ // Paper start - logic moved into setDrinkingPotion, copy exact impl into the method and then comment out
|
|
+ this.setDrinkingPotion(potion);
|
|
+// org.bukkit.inventory.ItemStack bukkitStack = com.destroystokyo.paper.event.entity.WitchReadyPotionEvent.process((org.bukkit.entity.Witch) this.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(potion));
|
|
+// this.setSlot(EnumItemSlot.MAINHAND, org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(bukkitStack));
|
|
+// // Paper end
|
|
+// this.bq = this.getItemInMainHand().k();
|
|
+// this.v(true);
|
|
+// if (!this.isSilent()) {
|
|
+// this.world.playSound((EntityHuman) null, this.locX(), this.locY(), this.locZ(), SoundEffects.ENTITY_WITCH_DRINK, this.getSoundCategory(), 1.0F, 0.8F + this.random.nextFloat() * 0.4F);
|
|
+// }
|
|
+//
|
|
+// AttributeModifiable attributemodifiable = this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED);
|
|
+//
|
|
+// attributemodifiable.removeModifier(EntityWitch.bo);
|
|
+// attributemodifiable.b(EntityWitch.bo);
|
|
// Paper end
|
|
- this.usingTime = this.getMainHandItem().getUseDuration();
|
|
- 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);
|
|
- attributemodifiable.addTransientModifier(Witch.SPEED_MODIFIER_DRINKING);
|
|
}
|
|
}
|
|
|
|
@@ -182,6 +185,24 @@ public class Witch extends Raider implements RangedAttackMob {
|
|
super.aiStep();
|
|
}
|
|
|
|
+ // Paper start - moved to its own method
|
|
+ public void setDrinkingPotion(ItemStack potion) {
|
|
+ org.bukkit.inventory.ItemStack bukkitStack = com.destroystokyo.paper.event.entity.WitchReadyPotionEvent.process((org.bukkit.entity.Witch) this.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(potion));
|
|
+ this.setItemSlot(EquipmentSlot.MAINHAND, org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(bukkitStack));
|
|
+ // Paper end
|
|
+ this.usingTime = this.getMainHandItem().getUseDuration();
|
|
+ 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);
|
|
+ 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 eada1f0ff10d4c00f82a6f4411fe18b7184e9901..9039db1a72009342063d4db08e18e6aee18836e8 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWitch.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWitch.java
|
|
@@ -3,6 +3,13 @@ package org.bukkit.craftbukkit.entity;
|
|
import org.bukkit.craftbukkit.CraftServer;
|
|
import org.bukkit.entity.EntityType;
|
|
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) {
|
|
@@ -28,4 +35,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
|
|
}
|