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
+ }
+ }
+