diff --git a/patches/api/0361-Dolphin-API.patch b/patches/api/0361-Dolphin-API.patch new file mode 100644 index 000000000..73beed437 --- /dev/null +++ b/patches/api/0361-Dolphin-API.patch @@ -0,0 +1,64 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> +Date: Tue, 7 Dec 2021 19:34:11 -0500 +Subject: [PATCH] Dolphin API + + +diff --git a/src/main/java/org/bukkit/entity/Dolphin.java b/src/main/java/org/bukkit/entity/Dolphin.java +index f00eaadcdde7ceef95def2d8ec6eb63a76c177bd..8ab329946daaff25646f3dd4582feb9e4c0685ca 100644 +--- a/src/main/java/org/bukkit/entity/Dolphin.java ++++ b/src/main/java/org/bukkit/entity/Dolphin.java +@@ -1,3 +1,52 @@ + package org.bukkit.entity; + +-public interface Dolphin extends WaterMob { } ++import org.bukkit.Location; ++ ++public interface Dolphin extends WaterMob { // Paper start - Dolphin API ++ ++ /** ++ * Gets the moistness level of this dolphin ++ */ ++ int getMoistness(); ++ ++ /** ++ * Sets the moistness of this dolphin, once this is less than 0 the dolphin will start to take damage. ++ * ++ * @param moistness moistness level ++ */ ++ void setMoistness(int moistness); ++ ++ /** ++ * Sets if this dolphin was fed a fish. ++ * ++ * @param hasFish has a fish ++ */ ++ void setHasFish(boolean hasFish); ++ ++ /** ++ * Gets if this dolphin has a fish. ++ * ++ * @return has a fish ++ */ ++ boolean hasFish(); ++ ++ /** ++ * Gets the treasure location this dolphin tries to guide players to. ++ *

++ * This value is calculated if the player has fed the dolphin a fish, and it tries to start the {@link com.destroystokyo.paper.entity.ai.VanillaGoal#DOLPHIN_SWIM_TO_TREASURE} goal. ++ * ++ * @return calculated closest treasure location ++ */ ++ @org.jetbrains.annotations.NotNull ++ Location getTreasureLocation(); ++ ++ /** ++ * Sets the treasure location that this dolphin will try to lead the player to. ++ * This only has an effect if the dolphin is currently leading a player, as this value is recalculated next time it leads a player. ++ *

++ * The world of the location does not matter, as the dolphin will always use the world it is currently in. ++ * ++ * @param location location to guide to ++ */ ++ void setTreasureLocation(@org.jetbrains.annotations.NotNull Location location); ++} // Paper end - Dolphin API diff --git a/patches/server/0857-Dolphin-API.patch b/patches/server/0857-Dolphin-API.patch new file mode 100644 index 000000000..4bb12a678 --- /dev/null +++ b/patches/server/0857-Dolphin-API.patch @@ -0,0 +1,45 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> +Date: Tue, 7 Dec 2021 19:34:23 -0500 +Subject: [PATCH] Dolphin API + + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftDolphin.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftDolphin.java +index 938e141f161acf5de5d3361382b514caea02c6fb..75919bf87b6f5cad06ca76888e284e2548594f00 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftDolphin.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftDolphin.java +@@ -24,4 +24,34 @@ public class CraftDolphin extends CraftWaterMob implements Dolphin { + public EntityType getType() { + return EntityType.DOLPHIN; + } ++ ++ @Override ++ public int getMoistness() { ++ return this.getHandle().getMoistnessLevel(); ++ } ++ ++ @Override ++ public void setMoistness(int moistness) { ++ this.getHandle().setMoisntessLevel(moistness); ++ } ++ ++ @Override ++ public void setHasFish(boolean hasFish) { ++ this.getHandle().setGotFish(hasFish); ++ } ++ ++ @Override ++ public boolean hasFish() { ++ return this.getHandle().gotFish(); ++ } ++ ++ @Override ++ public org.bukkit.Location getTreasureLocation() { ++ return net.minecraft.server.MCUtil.toLocation(this.getHandle().level, this.getHandle().getTreasurePos()); ++ } ++ ++ @Override ++ public void setTreasureLocation(org.bukkit.Location location) { ++ this.getHandle().setTreasurePos(net.minecraft.server.MCUtil.toBlockPosition(location)); ++ } + }