13
0
geforkt von Mirrors/Paper

Add leash API. Adds BUKKIT-4459 and BUKKIT-4583

By: T00thpick1 <t00thpick1dirko@gmail.com>
Dieser Commit ist enthalten in:
Bukkit/Spigot 2013-07-30 15:40:12 -04:00
Ursprung 47d09288b4
Commit fcde9e65af
6 geänderte Dateien mit 194 neuen und 0 gelöschten Zeilen

Datei anzeigen

@ -26,6 +26,10 @@ public enum EntityType {
* An experience orb. * An experience orb.
*/ */
EXPERIENCE_ORB("XPOrb", ExperienceOrb.class, 2), EXPERIENCE_ORB("XPOrb", ExperienceOrb.class, 2),
/**
* A leash attached to a fencepost.
*/
LEASH_HITCH("LeashKnot", LeashHitch.class, 8),
/** /**
* A painting on a wall. * A painting on a wall.
*/ */

Datei anzeigen

@ -0,0 +1,7 @@
package org.bukkit.entity;
/**
* Represents a Leash Hitch on a fence
*/
public interface LeashHitch extends Hanging {
}

Datei anzeigen

@ -369,4 +369,31 @@ public interface LivingEntity extends Entity, Damageable {
* @return if the custom name is displayed * @return if the custom name is displayed
*/ */
public boolean isCustomNameVisible(); public boolean isCustomNameVisible();
/**
* Returns whether the entity is currently leashed.
*
* @return whether the entity is leashed
*/
public boolean isLeashed();
/**
* Gets the entity that is currently leading this entity.
*
* @return the entity holding the leash
* @throws IllegalStateException if not currently leashed
*/
public Entity getLeashHolder() throws IllegalStateException;
/**
* Sets the leash on this entity to be held by the supplied entity.
* <p>
* This method has no effect on EnderDragons, Withers, Players, or Bats.
* Non-living entities excluding leashes will not persist as leash
* holders.
*
* @param holder the entity to leash this entity to
* @return whether the operation was successful
*/
public boolean setLeashHolder(Entity holder);
} }

Datei anzeigen

@ -0,0 +1,52 @@
package org.bukkit.event.entity;
import org.bukkit.entity.Entity;
import org.bukkit.event.HandlerList;
/**
* Called immediately prior to an entity being unleashed.
*/
public class EntityUnleashEvent extends EntityEvent {
private static final HandlerList handlers = new HandlerList();
private final UnleashReason reason;
public EntityUnleashEvent(Entity entity, UnleashReason reason) {
super(entity);
this.reason = reason;
}
/**
* Returns the reason for the unleashing.
*
* @return The reason
*/
public UnleashReason getReason() {
return reason;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
public enum UnleashReason {
/**
* When the entity's leashholder has died or logged out, and so is
* unleashed
*/
HOLDER_GONE,
/**
* When the entity's leashholder attempts to unleash it
*/
PLAYER_UNLEASH,
/**
* When the entity's leashholder is more than 10 blocks away
*/
DISTANCE,
UNKNOWN;
}
}

Datei anzeigen

@ -0,0 +1,68 @@
package org.bukkit.event.entity;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
/**
* Called immediately prior to a creature being leashed by a player.
*/
public class PlayerLeashEntityEvent extends Event implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private final Entity leashHolder;
private final Entity entity;
private boolean cancelled = false;
private final Player player;
public PlayerLeashEntityEvent(Entity what, Entity leashHolder, Player leasher) {
this.leashHolder = leashHolder;
this.entity = what;
this.player = leasher;
}
/**
* Returns the entity that is holding the leash.
*
* @return The leash holder
*/
public Entity getLeashHolder() {
return leashHolder;
}
/**
* Returns the entity being leashed.
*
* @return The entity
*/
public Entity getEntity() {
return entity;
}
/**
* Returns the player involved in this event
*
* @return Player who is involved in this event
*/
public final Player getPlayer() {
return player;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
public boolean isCancelled() {
return this.cancelled;
}
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
}

Datei anzeigen

@ -0,0 +1,36 @@
package org.bukkit.event.player;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.entity.EntityUnleashEvent;
/**
* Called prior to an entity being unleashed due to a player's action.
*/
public class PlayerUnleashEntityEvent extends EntityUnleashEvent implements Cancellable {
private final Player player;
private boolean cancelled = false;
public PlayerUnleashEntityEvent(Entity entity, Player player) {
super(entity, UnleashReason.PLAYER_UNLEASH);
this.player = player;
}
/**
* Returns the player who is unleashing the entity.
*
* @return The player
*/
public Player getPlayer() {
return player;
}
public boolean isCancelled() {
return cancelled;
}
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
}