mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-19 14:51:27 +01:00
Add more Witch API
== AT == public net.minecraft.world.entity.monster.Witch usingTime
This commit is contained in:
parent
473a79e490
commit
a24fb45a27
@ -17,20 +17,51 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.gameEvent(GameEvent.DRINK);
|
this.gameEvent(GameEvent.DRINK);
|
||||||
@@ -146,7 +152,11 @@
|
@@ -146,17 +152,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (holder != null) {
|
if (holder != null) {
|
||||||
- this.setItemSlot(EquipmentSlot.MAINHAND, PotionContents.createItemStack(Items.POTION, holder));
|
- this.setItemSlot(EquipmentSlot.MAINHAND, PotionContents.createItemStack(Items.POTION, holder));
|
||||||
+ // Paper start
|
- this.usingTime = this.getMainHandItem().getUseDuration(this);
|
||||||
+ ItemStack potion = PotionContents.createItemStack(Items.POTION, holder);
|
- this.setUsingItem(true);
|
||||||
+ potion = org.bukkit.craftbukkit.event.CraftEventFactory.handleWitchReadyPotionEvent(this, potion);
|
- if (!this.isSilent()) {
|
||||||
+ this.setItemSlot(EquipmentSlot.MAINHAND, potion);
|
- 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);
|
||||||
+ // Paper end
|
- }
|
||||||
this.usingTime = this.getMainHandItem().getUseDuration(this);
|
-
|
||||||
this.setUsingItem(true);
|
- AttributeInstance attributemodifiable = this.getAttribute(Attributes.MOVEMENT_SPEED);
|
||||||
if (!this.isSilent()) {
|
-
|
||||||
@@ -231,6 +241,13 @@
|
- 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -166,7 +162,24 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
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() {
|
||||||
|
@@ -231,6 +244,13 @@
|
||||||
ServerLevel worldserver = (ServerLevel) world;
|
ServerLevel worldserver = (ServerLevel) world;
|
||||||
ItemStack itemstack = PotionContents.createItemStack(Items.SPLASH_POTION, holder);
|
ItemStack itemstack = PotionContents.createItemStack(Items.SPLASH_POTION, holder);
|
||||||
|
|
||||||
|
@ -2,6 +2,13 @@ package org.bukkit.craftbukkit.entity;
|
|||||||
|
|
||||||
import org.bukkit.craftbukkit.CraftServer;
|
import org.bukkit.craftbukkit.CraftServer;
|
||||||
import org.bukkit.entity.Witch;
|
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 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) {
|
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() {
|
public boolean isDrinkingPotion() {
|
||||||
return this.getHandle().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
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user