Turtle API

This commit is contained in:
BillyGalbreath 2018-09-28 17:08:09 -05:00
parent 3ad277b100
commit 342e189485
4 changed files with 249 additions and 0 deletions

View File

@ -0,0 +1,53 @@
package com.destroystokyo.paper.event.entity;
import org.bukkit.entity.Turtle;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired when a Turtle decides to go home
*/
@NullMarked
public class TurtleGoHomeEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private boolean cancelled;
@ApiStatus.Internal
public TurtleGoHomeEvent(final Turtle turtle) {
super(turtle);
}
/**
* The turtle going home
*
* @return The turtle
*/
@Override
public Turtle getEntity() {
return (Turtle) super.getEntity();
}
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
}
}

View File

@ -0,0 +1,90 @@
package com.destroystokyo.paper.event.entity;
import org.bukkit.Location;
import org.bukkit.entity.Turtle;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired when a Turtle lays eggs
*/
@NullMarked
public class TurtleLayEggEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final Location location;
private int eggCount;
private boolean cancelled;
@ApiStatus.Internal
public TurtleLayEggEvent(final Turtle turtle, final Location location, final int eggCount) {
super(turtle);
this.location = location;
this.eggCount = eggCount;
}
/**
* The turtle laying the eggs
*
* @return The turtle
*/
@Override
public Turtle getEntity() {
return (Turtle) super.getEntity();
}
/**
* Get the location where the eggs are being laid
*
* @return Location of eggs
*/
public Location getLocation() {
return this.location.clone();
}
/**
* Get the number of eggs being laid
*
* @return Number of eggs
*/
public int getEggCount() {
return this.eggCount;
}
/**
* Set the number of eggs being laid
*
* @param eggCount Number of eggs
*/
public void setEggCount(final int eggCount) {
if (eggCount < 1) {
this.cancelled = true;
return;
}
this.eggCount = Math.min(eggCount, 4);
}
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
}
}

View File

@ -0,0 +1,65 @@
package com.destroystokyo.paper.event.entity;
import org.bukkit.Location;
import org.bukkit.entity.Turtle;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired when a Turtle starts digging to lay eggs
*/
@NullMarked
public class TurtleStartDiggingEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final Location location;
private boolean cancelled;
@ApiStatus.Internal
public TurtleStartDiggingEvent(final Turtle turtle, final Location location) {
super(turtle);
this.location = location;
}
/**
* The turtle digging
*
* @return The turtle
*/
@Override
public Turtle getEntity() {
return (Turtle) super.getEntity();
}
/**
* Get the location where the turtle is digging
*
* @return Location where digging
*/
public Location getLocation() {
return this.location.clone();
}
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
}
}

View File

@ -1,5 +1,8 @@
package org.bukkit.entity;
import org.bukkit.Location;
import org.jetbrains.annotations.NotNull;
/**
* Represents a turtle.
*/
@ -18,4 +21,42 @@ public interface Turtle extends Animals {
* @return Whether the turtle is laying an egg
*/
boolean isLayingEgg();
// Paper start
/**
* Get the turtle's home location
*
* @return Home location
*/
@NotNull
Location getHome();
/**
* Set the turtle's home location
*
* @param location Home location
*/
void setHome(@NotNull Location location);
/**
* Check if turtle is currently pathfinding to it's home
*
* @return True if going home
*/
boolean isGoingHome();
/**
* Get if turtle is digging to lay eggs
*
* @return True if digging
*/
boolean isDigging();
/**
* Set if turtle is carrying egg
*
* @param hasEgg True if carrying egg
*/
void setHasEgg(boolean hasEgg);
// Paper end
}