From ceb3762fb1eb9a4b2466a58e9318a221ad031c9e Mon Sep 17 00:00:00 2001 From: HexedHero <6012891+HexedHero@users.noreply.github.com> Date: Thu, 27 May 2021 16:14:52 +0100 Subject: [PATCH] Add PufferFishStateChangeEvent (#5606) --- .../0313-Add-PufferFishStateChangeEvent.patch | 92 +++++++++++++++++++ .../0748-Add-PufferFishStateChangeEvent.patch | 50 ++++++++++ 2 files changed, 142 insertions(+) create mode 100644 Spigot-API-Patches/0313-Add-PufferFishStateChangeEvent.patch create mode 100644 Spigot-Server-Patches/0748-Add-PufferFishStateChangeEvent.patch diff --git a/Spigot-API-Patches/0313-Add-PufferFishStateChangeEvent.patch b/Spigot-API-Patches/0313-Add-PufferFishStateChangeEvent.patch new file mode 100644 index 0000000000..c3014534d3 --- /dev/null +++ b/Spigot-API-Patches/0313-Add-PufferFishStateChangeEvent.patch @@ -0,0 +1,92 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: HexedHero <6012891+HexedHero@users.noreply.github.com> +Date: Mon, 10 May 2021 16:58:38 +0100 +Subject: [PATCH] Add PufferFishStateChangeEvent + + +diff --git a/src/main/java/io/papermc/paper/event/entity/PufferFishStateChangeEvent.java b/src/main/java/io/papermc/paper/event/entity/PufferFishStateChangeEvent.java +new file mode 100644 +index 0000000000000000000000000000000000000000..3585457b21aca2a2f1779868a0fa91f8011ad3c9 +--- /dev/null ++++ b/src/main/java/io/papermc/paper/event/entity/PufferFishStateChangeEvent.java +@@ -0,0 +1,80 @@ ++package io.papermc.paper.event.entity; ++ ++import org.bukkit.entity.PufferFish; ++import org.bukkit.event.Cancellable; ++import org.bukkit.event.HandlerList; ++import org.bukkit.event.entity.EntityEvent; ++import org.jetbrains.annotations.NotNull; ++ ++/** ++ * Called just before a {@link PufferFish} inflates or deflates. ++ */ ++public class PufferFishStateChangeEvent extends EntityEvent implements Cancellable { ++ private static final HandlerList handlers = new HandlerList(); ++ private boolean cancelled; ++ private int newPuffState; ++ ++ public PufferFishStateChangeEvent(@NotNull PufferFish entity, int newPuffState) { ++ super(entity); ++ this.newPuffState = newPuffState; ++ } ++ ++ @NotNull ++ @Override ++ public PufferFish getEntity() { ++ return (PufferFish) entity; ++ } ++ ++ /** ++ * Get the new puff state of the {@link PufferFish}. ++ *

++ * This is what the {@link PufferFish}'s new puff state will be after this event if it isn't cancelled.
++ * Refer to {@link PufferFish#getPuffState()} to get the current puff state. ++ * @return The new puff state, 0 being not inflated, 1 being slightly inflated and 2 being fully inflated ++ */ ++ public int getNewPuffState() { ++ return this.newPuffState; ++ } ++ ++ /** ++ * Get if the {@link PufferFish} is going to inflate. ++ * @return If its going to inflate ++ */ ++ public boolean isInflating() { ++ return getNewPuffState() > getEntity().getPuffState(); ++ } ++ ++ /** ++ * Get if the {@link PufferFish} is going to deflate. ++ * @return If its going to deflate ++ */ ++ public boolean isDeflating() { ++ return getNewPuffState() < getEntity().getPuffState(); ++ } ++ ++ /** ++ * Set whether or not to cancel the {@link PufferFish} (in/de)flating. ++ * ++ * @param cancel true if you wish to cancel the (in/de)flation ++ */ ++ @Override ++ public void setCancelled(boolean cancel) { ++ this.cancelled = cancel; ++ } ++ ++ @Override ++ public boolean isCancelled() { ++ return cancelled; ++ } ++ ++ @NotNull ++ @Override ++ public HandlerList getHandlers() { ++ return handlers; ++ } ++ ++ @NotNull ++ public static HandlerList getHandlerList() { ++ return handlers; ++ } ++} diff --git a/Spigot-Server-Patches/0748-Add-PufferFishStateChangeEvent.patch b/Spigot-Server-Patches/0748-Add-PufferFishStateChangeEvent.patch new file mode 100644 index 0000000000..df5245c824 --- /dev/null +++ b/Spigot-Server-Patches/0748-Add-PufferFishStateChangeEvent.patch @@ -0,0 +1,50 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: HexedHero <6012891+HexedHero@users.noreply.github.com> +Date: Mon, 10 May 2021 16:59:05 +0100 +Subject: [PATCH] Add PufferFishStateChangeEvent + + +diff --git a/src/main/java/net/minecraft/world/entity/animal/EntityPufferFish.java b/src/main/java/net/minecraft/world/entity/animal/EntityPufferFish.java +index e9f20d387ccdacfbb1a48dc31e2a6cd4843a0d7b..4e4327b3cb84367534c6f5855cf8b89763b1419d 100644 +--- a/src/main/java/net/minecraft/world/entity/animal/EntityPufferFish.java ++++ b/src/main/java/net/minecraft/world/entity/animal/EntityPufferFish.java +@@ -89,25 +89,39 @@ public class EntityPufferFish extends EntityFish { + public void tick() { + if (!this.world.isClientSide && this.isAlive() && this.doAITick()) { + if (this.c > 0) { ++ boolean increase = true; // Paper - Add PufferFishStateChangeEvent + if (this.getPuffState() == 0) { ++ if (new io.papermc.paper.event.entity.PufferFishStateChangeEvent((org.bukkit.entity.PufferFish) getBukkitEntity(), 1).callEvent()) { // Paper - Add PufferFishStateChangeEvent + this.playSound(SoundEffects.ENTITY_PUFFER_FISH_BLOW_UP, this.getSoundVolume(), this.dH()); + this.setPuffState(1); ++ } else { increase = false; } // Paper - Add PufferFishStateChangeEvent + } else if (this.c > 40 && this.getPuffState() == 1) { ++ if (new io.papermc.paper.event.entity.PufferFishStateChangeEvent((org.bukkit.entity.PufferFish) getBukkitEntity(), 2).callEvent()) { // Paper - Add PufferFishStateChangeEvent + this.playSound(SoundEffects.ENTITY_PUFFER_FISH_BLOW_UP, this.getSoundVolume(), this.dH()); + this.setPuffState(2); ++ } else { increase = false; } // Paper - Add PufferFishStateChangeEvent + } + ++ if (increase) { // Paper - Add PufferFishStateChangeEvent + ++this.c; ++ } // Paper - Add PufferFishStateChangeEvent + } else if (this.getPuffState() != 0) { ++ boolean increase = true; // Paper - Add PufferFishStateChangeEvent + if (this.d > 60 && this.getPuffState() == 2) { ++ if (new io.papermc.paper.event.entity.PufferFishStateChangeEvent((org.bukkit.entity.PufferFish) getBukkitEntity(), 1).callEvent()) { // Paper - Add PufferFishStateChangeEvent + this.playSound(SoundEffects.ENTITY_PUFFER_FISH_BLOW_OUT, this.getSoundVolume(), this.dH()); + this.setPuffState(1); ++ } else { increase = false; } // Paper - Add PufferFishStateChangeEvent + } else if (this.d > 100 && this.getPuffState() == 1) { ++ if (new io.papermc.paper.event.entity.PufferFishStateChangeEvent((org.bukkit.entity.PufferFish) getBukkitEntity(), 0).callEvent()) { // Paper - Add PufferFishStateChangeEvent + this.playSound(SoundEffects.ENTITY_PUFFER_FISH_BLOW_OUT, this.getSoundVolume(), this.dH()); + this.setPuffState(0); ++ } else { increase = false; } // Paper - Add PufferFishStateChangeEvent + } + ++ if (increase) { // Paper - Add PufferFishStateChangeEvent + ++this.d; ++ } // Paper - Add PufferFishStateChangeEvent + } + } +