mirror of
https://github.com/PaperMC/Paper.git
synced 2025-05-19 05:30:23 -07:00
Add FishHookStateChangeEvent (#12165)
This commit is contained in:
parent
a25258190b
commit
d683970d40
@ -0,0 +1,52 @@
|
||||
package io.papermc.paper.event.entity;
|
||||
|
||||
import org.bukkit.entity.FishHook;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.entity.EntityEvent;
|
||||
import org.bukkit.event.player.PlayerFishEvent;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
* Called just before a {@link FishHook}'s {@link FishHook.HookState} is changed.
|
||||
*
|
||||
* <p>If you want to monitor a player's fishing state transition, you can use {@link PlayerFishEvent}.</p>
|
||||
*/
|
||||
@NullMarked
|
||||
public final class FishHookStateChangeEvent extends EntityEvent {
|
||||
|
||||
private static final HandlerList HANDLER_LIST = new HandlerList();
|
||||
|
||||
private final FishHook.HookState newHookState;
|
||||
|
||||
@ApiStatus.Internal
|
||||
public FishHookStateChangeEvent(final FishHook entity, final FishHook.HookState newHookState) {
|
||||
super(entity);
|
||||
this.newHookState = newHookState;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the <strong>new</strong> hook state of the {@link FishHook}.
|
||||
*
|
||||
* <p>Refer to {@link FishHook#getState()} to get the current hook state.</p>
|
||||
*
|
||||
* @return the <strong>new</strong> hook state
|
||||
*/
|
||||
public FishHook.HookState getNewHookState() {
|
||||
return this.newHookState;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FishHook getEntity() {
|
||||
return (FishHook) super.getEntity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public HandlerList getHandlers() {
|
||||
return HANDLER_LIST;
|
||||
}
|
||||
|
||||
public static HandlerList getHandlerList() {
|
||||
return HANDLER_LIST;
|
||||
}
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
package org.bukkit.entity;
|
||||
|
||||
import org.bukkit.inventory.EquipmentSlot;
|
||||
import io.papermc.paper.event.entity.FishHookStateChangeEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@ -306,6 +307,7 @@ public interface FishHook extends Projectile {
|
||||
|
||||
/**
|
||||
* Represents a state in which a fishing hook may be.
|
||||
* State transitions can be listened for using {@link FishHookStateChangeEvent}
|
||||
*/
|
||||
public enum HookState {
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
package org.bukkit.event.player;
|
||||
|
||||
import io.papermc.paper.event.entity.FishHookStateChangeEvent;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.FishHook;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -12,6 +13,8 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* Thrown when a player is fishing
|
||||
*
|
||||
* <p>If you want to monitor a fishhooks state transition, you can use {@link FishHookStateChangeEvent}.</p>
|
||||
*/
|
||||
public class PlayerFishEvent extends PlayerEvent implements Cancellable {
|
||||
|
||||
|
@ -42,6 +42,29 @@
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
@@ -166,12 +_,14 @@
|
||||
if (this.currentState == FishingHook.FishHookState.FLYING) {
|
||||
if (this.hookedIn != null) {
|
||||
this.setDeltaMovement(Vec3.ZERO);
|
||||
+ new io.papermc.paper.event.entity.FishHookStateChangeEvent((org.bukkit.entity.FishHook) getBukkitEntity(), org.bukkit.entity.FishHook.HookState.HOOKED_ENTITY).callEvent(); // Paper - Add FishHookStateChangeEvent. #HOOKED_ENTITY
|
||||
this.currentState = FishingHook.FishHookState.HOOKED_IN_ENTITY;
|
||||
return;
|
||||
}
|
||||
|
||||
if (flag) {
|
||||
this.setDeltaMovement(this.getDeltaMovement().multiply(0.3, 0.2, 0.3));
|
||||
+ new io.papermc.paper.event.entity.FishHookStateChangeEvent((org.bukkit.entity.FishHook) getBukkitEntity(), org.bukkit.entity.FishHook.HookState.BOBBING).callEvent(); // Paper - Add FishHookStateChangeEvent. #BOBBING
|
||||
this.currentState = FishingHook.FishHookState.BOBBING;
|
||||
return;
|
||||
}
|
||||
@@ -184,6 +_,7 @@
|
||||
this.setPos(this.hookedIn.getX(), this.hookedIn.getY(0.8), this.hookedIn.getZ());
|
||||
} else {
|
||||
this.setHookedEntity(null);
|
||||
+ new io.papermc.paper.event.entity.FishHookStateChangeEvent((org.bukkit.entity.FishHook) getBukkitEntity(), org.bukkit.entity.FishHook.HookState.UNHOOKED).callEvent(); // Paper - Add FishHookStateChangeEvent. #UNHOOKED
|
||||
this.currentState = FishingHook.FishHookState.FLYING;
|
||||
}
|
||||
}
|
||||
@@ -247,14 +_,14 @@
|
||||
if (!player.isRemoved() && player.isAlive() && (isFishingRod || isFishingRod1) && !(this.distanceToSqr(player) > 1024.0)) {
|
||||
return false;
|
||||
|
Loading…
x
Reference in New Issue
Block a user