From 0bad58f1e28412140342f422bced8d8403837843 Mon Sep 17 00:00:00 2001 From: Parker Hawke Date: Sat, 23 Jan 2021 12:23:20 +1100 Subject: [PATCH] #783: Expand the FishHook API --- .../craftbukkit/entity/CraftFishHook.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFishHook.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFishHook.java index bee31ee65..42b306f1a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFishHook.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFishHook.java @@ -5,6 +5,7 @@ import net.minecraft.server.EntityFishingHook; import net.minecraft.server.MathHelper; import org.apache.commons.lang.Validate; import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.FishHook; @@ -82,4 +83,39 @@ public class CraftFishHook extends CraftProjectile implements FishHook { Validate.isTrue(chance >= 0 && chance <= 1, "The bite chance must be between 0 and 1."); this.biteChance = chance; } + + @Override + public boolean isInOpenWater() { + return getHandle().isInOpenWater(); + } + + @Override + public Entity getHookedEntity() { + net.minecraft.server.Entity hooked = getHandle().hooked; + return (hooked != null) ? hooked.getBukkitEntity() : null; + } + + @Override + public void setHookedEntity(Entity entity) { + EntityFishingHook hook = getHandle(); + + hook.hooked = (entity != null) ? ((CraftEntity) entity).getHandle() : null; + hook.getDataWatcher().set(EntityFishingHook.HOOKED_ENTITY, hook.hooked != null ? hook.hooked.getId() + 1 : 0); + } + + @Override + public boolean pullHookedEntity() { + EntityFishingHook hook = getHandle(); + if (hook.hooked == null) { + return false; + } + + hook.reel(); + return true; + } + + @Override + public HookState getState() { + return HookState.values()[getHandle().hookState.ordinal()]; + } }