more javadocs
This commit is contained in:
parent
1d6c6a7bb7
commit
1ddf509f89
16 changed files with 364 additions and 0 deletions
|
@ -5,9 +5,31 @@ import lol.pyr.znpcsplus.api.npc.NpcRegistry;
|
|||
import lol.pyr.znpcsplus.api.npc.NpcTypeRegistry;
|
||||
import lol.pyr.znpcsplus.api.skin.SkinDescriptorFactory;
|
||||
|
||||
/**
|
||||
* Main API class for ZNPCsPlus.
|
||||
*/
|
||||
public interface NpcApi {
|
||||
/**
|
||||
* Gets the NPC registry.
|
||||
* @return the NPC registry
|
||||
*/
|
||||
NpcRegistry getNpcRegistry();
|
||||
|
||||
/**
|
||||
* Gets the NPC type registry.
|
||||
* @return the NPC type registry
|
||||
*/
|
||||
NpcTypeRegistry getNpcTypeRegistry();
|
||||
|
||||
/**
|
||||
* Gets the entity property registry.
|
||||
* @return the entity property registry
|
||||
*/
|
||||
EntityPropertyRegistry getPropertyRegistry();
|
||||
|
||||
/**
|
||||
* Gets the skin descriptor factory.
|
||||
* @return the skin descriptor factory
|
||||
*/
|
||||
SkinDescriptorFactory getSkinDescriptorFactory();
|
||||
}
|
||||
|
|
|
@ -4,6 +4,9 @@ import org.bukkit.Bukkit;
|
|||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.ServicePriority;
|
||||
|
||||
/**
|
||||
* Provider for the registered api instance
|
||||
*/
|
||||
public class NpcApiProvider {
|
||||
private static NpcApi api = null;
|
||||
|
||||
|
|
|
@ -6,9 +6,17 @@ import org.bukkit.entity.Player;
|
|||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
/**
|
||||
* Event called when an NPC is despawned for a player
|
||||
* Note: This event is async
|
||||
*/
|
||||
public class NpcDespawnEvent extends CancellableNpcEvent implements Cancellable {
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
|
||||
/**
|
||||
* @param player The player involved in the event
|
||||
* @param entry The NPC entry involved in the event
|
||||
*/
|
||||
public NpcDespawnEvent(Player player, NpcEntry entry) {
|
||||
super(player, entry);
|
||||
}
|
||||
|
|
|
@ -7,11 +7,20 @@ import org.bukkit.entity.Player;
|
|||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
/**
|
||||
* Event called when an NPC is interacted with by a player
|
||||
* Note: This event is async
|
||||
*/
|
||||
public class NpcInteractEvent extends CancellableNpcEvent implements Cancellable {
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
|
||||
private final InteractionType clickType;
|
||||
|
||||
/**
|
||||
* @param player The player involved in the event
|
||||
* @param entry The NPC entry involved in the event
|
||||
* @param clickType The type of interaction. See {@link InteractionType}
|
||||
*/
|
||||
public NpcInteractEvent(Player player, NpcEntry entry, InteractionType clickType) {
|
||||
super(player, entry);
|
||||
this.clickType = clickType;
|
||||
|
@ -22,6 +31,10 @@ public class NpcInteractEvent extends CancellableNpcEvent implements Cancellable
|
|||
return handlers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the type of interaction. See {@link InteractionType}
|
||||
* @return The type of interaction
|
||||
*/
|
||||
public InteractionType getClickType() {
|
||||
return clickType;
|
||||
}
|
||||
|
|
|
@ -6,9 +6,17 @@ import org.bukkit.entity.Player;
|
|||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
/**
|
||||
* Event called when an NPC is spawned for a player
|
||||
* Note: This event is async
|
||||
*/
|
||||
public class NpcSpawnEvent extends CancellableNpcEvent implements Cancellable {
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
|
||||
/**
|
||||
* @param player The player involved in the event
|
||||
* @param entry The NPC entry involved in the event
|
||||
*/
|
||||
public NpcSpawnEvent(Player player, NpcEntry entry) {
|
||||
super(player, entry);
|
||||
}
|
||||
|
|
|
@ -4,9 +4,16 @@ import lol.pyr.znpcsplus.api.npc.NpcEntry;
|
|||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
/**
|
||||
* Base class for all NPC events that can be cancelled
|
||||
*/
|
||||
public abstract class CancellableNpcEvent extends NpcEvent implements Cancellable {
|
||||
private boolean cancelled = false;
|
||||
|
||||
/**
|
||||
* @param player The player involved in the event
|
||||
* @param entry The NPC entry involved in the event
|
||||
*/
|
||||
public CancellableNpcEvent(Player player, NpcEntry entry) {
|
||||
super(player, entry);
|
||||
}
|
||||
|
|
|
@ -5,24 +5,43 @@ import lol.pyr.znpcsplus.api.npc.NpcEntry;
|
|||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Event;
|
||||
|
||||
/**
|
||||
* Base class for all NPC events
|
||||
*/
|
||||
public abstract class NpcEvent extends Event {
|
||||
private final NpcEntry entry;
|
||||
private final Player player;
|
||||
|
||||
/**
|
||||
* @param player The player involved in the event
|
||||
* @param entry The NPC entry involved in the event
|
||||
*/
|
||||
public NpcEvent(Player player, NpcEntry entry) {
|
||||
super(true); // All events are async since 99% of the plugin is async
|
||||
this.entry = entry;
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the player involved in the event
|
||||
* @return The player involved in the event
|
||||
*/
|
||||
public Player getPlayer() {
|
||||
return player;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the NPC entry involved in the event
|
||||
* @return The NPC entry involved in the event
|
||||
*/
|
||||
public NpcEntry getEntry() {
|
||||
return entry;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the NPC involved in the event
|
||||
* @return The NPC involved in the event
|
||||
*/
|
||||
public Npc getNpc() {
|
||||
return entry.getNpc();
|
||||
}
|
||||
|
|
|
@ -1,10 +1,44 @@
|
|||
package lol.pyr.znpcsplus.api.hologram;
|
||||
|
||||
/**
|
||||
* Represents a hologram
|
||||
*/
|
||||
public interface Hologram {
|
||||
/**
|
||||
* Adds a line to the hologram
|
||||
* Note: to add an item line, pass "item:<item>" as the line
|
||||
* @param line The line to add
|
||||
*/
|
||||
void addLine(String line);
|
||||
|
||||
/**
|
||||
* Gets a line from the hologram
|
||||
* @param index The index of the line to get
|
||||
* @return The line at the index
|
||||
*/
|
||||
String getLine(int index);
|
||||
|
||||
/**
|
||||
* Removes a line from the hologram
|
||||
* @param index The index of the line to remove
|
||||
*/
|
||||
void removeLine(int index);
|
||||
|
||||
/**
|
||||
* Clears all lines from the hologram
|
||||
*/
|
||||
void clearLines();
|
||||
|
||||
/**
|
||||
* Inserts a line into the hologram
|
||||
* @param index The index to insert the line at
|
||||
* @param line The line to insert
|
||||
*/
|
||||
void insertLine(int index, String line);
|
||||
|
||||
/**
|
||||
* Gets the number of lines in the hologram
|
||||
* @return The number of lines in the hologram
|
||||
*/
|
||||
int lineCount();
|
||||
}
|
||||
|
|
|
@ -4,12 +4,35 @@ import org.bukkit.entity.Player;
|
|||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Base class for all NPC interactions
|
||||
*/
|
||||
public abstract class InteractionAction {
|
||||
/**
|
||||
* The unique ID of this interaction
|
||||
*/
|
||||
private final UUID id;
|
||||
|
||||
/**
|
||||
* The cooldown of this interaction in seconds
|
||||
*/
|
||||
private final long cooldown;
|
||||
|
||||
/**
|
||||
* The delay of this interaction in ticks
|
||||
*/
|
||||
private final long delay;
|
||||
|
||||
/**
|
||||
* The type of this interaction
|
||||
*/
|
||||
private final InteractionType interactionType;
|
||||
|
||||
/**
|
||||
* @param cooldown The cooldown of this interaction in seconds
|
||||
* @param delay The delay of this interaction in ticks
|
||||
* @param interactionType The type of this interaction
|
||||
*/
|
||||
protected InteractionAction(long cooldown, long delay, InteractionType interactionType) {
|
||||
this.interactionType = interactionType;
|
||||
this.id = UUID.randomUUID();
|
||||
|
@ -17,21 +40,37 @@ public abstract class InteractionAction {
|
|||
this.delay = delay;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The unique ID of this interaction
|
||||
*/
|
||||
public UUID getUuid() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The cooldown of this interaction in seconds
|
||||
*/
|
||||
public long getCooldown() {
|
||||
return cooldown;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The delay of this interaction in ticks
|
||||
*/
|
||||
public long getDelay() {
|
||||
return delay;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The type of this interaction
|
||||
*/
|
||||
public InteractionType getInteractionType() {
|
||||
return interactionType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs this interaction
|
||||
* @param player The player that triggered this interaction
|
||||
*/
|
||||
public abstract void run(Player player);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,11 @@
|
|||
package lol.pyr.znpcsplus.api.interaction;
|
||||
|
||||
/**
|
||||
* The type of interaction
|
||||
* ANY_CLICK: Any click type
|
||||
* LEFT_CLICK: Only left clicks
|
||||
* RIGHT_CLICK: Only right clicks
|
||||
*/
|
||||
public enum InteractionType {
|
||||
ANY_CLICK,
|
||||
LEFT_CLICK,
|
||||
|
|
|
@ -10,22 +10,107 @@ import org.bukkit.entity.Player;
|
|||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Base class for all NPCs
|
||||
*/
|
||||
public interface Npc extends PropertyHolder {
|
||||
/**
|
||||
* Sets the npc type of this NPC
|
||||
* @param type The {@link NpcType} to set
|
||||
*/
|
||||
void setType(NpcType type);
|
||||
|
||||
/**
|
||||
* @return The {@link NpcType} of this NPC
|
||||
*/
|
||||
NpcType getType();
|
||||
|
||||
/**
|
||||
* Gets the location of this NPC
|
||||
* @return The {@link NpcLocation} of this NPC
|
||||
*/
|
||||
NpcLocation getLocation();
|
||||
|
||||
/**
|
||||
* Sets the location of this NPC
|
||||
* @param location The {@link NpcLocation} to set
|
||||
*/
|
||||
void setLocation(NpcLocation location);
|
||||
|
||||
/**
|
||||
* Gets the hologram of this NPC
|
||||
* @return The {@link Hologram} of this NPC
|
||||
*/
|
||||
Hologram getHologram();
|
||||
|
||||
/**
|
||||
* Sets if the npc is enabled or not, i.e. if it should be visible to players
|
||||
* @param enabled If the npc should be enabled
|
||||
*/
|
||||
void setEnabled(boolean enabled);
|
||||
|
||||
/**
|
||||
* Gets if the npc is enabled or not, i.e. if it should be visible to players
|
||||
* @return If the npc is enabled or not
|
||||
*/
|
||||
boolean isEnabled();
|
||||
|
||||
/**
|
||||
* Gets the unique ID of this NPC
|
||||
* @return The unique ID of this NPC
|
||||
*/
|
||||
UUID getUuid();
|
||||
|
||||
/**
|
||||
* Gets the {@link World} this NPC is in
|
||||
* Note: can be null if the world is unloaded or does not exist
|
||||
* @return The {@link World} this NPC is in
|
||||
*/
|
||||
World getWorld();
|
||||
|
||||
/**
|
||||
* Gets the list of actions for this NPC
|
||||
* @return The {@link List} of {@link InteractionAction}s for this NPC
|
||||
*/
|
||||
List<? extends InteractionAction> getActions();
|
||||
|
||||
/**
|
||||
* Gets if this NPC is visible to a player
|
||||
* @param player The {@link Player} to check
|
||||
* @return If this NPC is visible to the player
|
||||
*/
|
||||
boolean isVisibleTo(Player player);
|
||||
|
||||
/**
|
||||
* Hides this NPC from a player
|
||||
* @param player The {@link Player} to hide from
|
||||
*/
|
||||
void hide(Player player);
|
||||
|
||||
/**
|
||||
* Shows this NPC to a player
|
||||
* @param player The {@link Player} to show to
|
||||
*/
|
||||
void show(Player player);
|
||||
|
||||
/**
|
||||
* Respawns this NPC for a player
|
||||
* @param player The {@link Player} to respawn for
|
||||
*/
|
||||
void respawn(Player player);
|
||||
|
||||
/**
|
||||
* Sets the head rotation of this NPC for a player
|
||||
* @param player The {@link Player} to set the head rotation for
|
||||
* @param yaw The yaw to set
|
||||
* @param pitch The pitch to set
|
||||
*/
|
||||
void setHeadRotation(Player player, float yaw, float pitch);
|
||||
|
||||
/**
|
||||
* Sets the head rotation of this NPC for all players/viewers
|
||||
* @param yaw The yaw to set
|
||||
* @param pitch The pitch to set
|
||||
*/
|
||||
void setHeadRotation(float yaw, float pitch);
|
||||
}
|
||||
|
|
|
@ -1,17 +1,56 @@
|
|||
package lol.pyr.znpcsplus.api.npc;
|
||||
|
||||
/**
|
||||
* Base class for all NPC entries
|
||||
* An NPC entry is a wrapper around an NPC that contains additional information
|
||||
*/
|
||||
public interface NpcEntry {
|
||||
/**
|
||||
* Gets the ID of this NPC entry
|
||||
* @return The ID of this NPC entry
|
||||
*/
|
||||
String getId();
|
||||
/**
|
||||
* Gets the NPC of this NPC entry
|
||||
* @return The {@link Npc} of this NPC entry
|
||||
*/
|
||||
Npc getNpc();
|
||||
|
||||
/**
|
||||
* Gets if this NPC entry is processed or not
|
||||
* @return If this NPC entry is processed or not
|
||||
*/
|
||||
boolean isProcessed();
|
||||
/**
|
||||
* Sets if this NPC entry is processed or not
|
||||
* @param value If this NPC entry is processed or not
|
||||
*/
|
||||
void setProcessed(boolean value);
|
||||
|
||||
/**
|
||||
* @return If this NPC entry SHOULD be saved into the storage or not
|
||||
*/
|
||||
boolean isSave();
|
||||
/**
|
||||
* Sets if this NPC should be saved or not
|
||||
* @param value If this NPC entry should be saved or not
|
||||
*/
|
||||
void setSave(boolean value);
|
||||
|
||||
/**
|
||||
* Gets if this NPC can be modified by commands
|
||||
* @return {@code true} if this NPC can be modified by commands, {@code false} otherwise
|
||||
*/
|
||||
boolean isAllowCommandModification();
|
||||
/**
|
||||
* Sets if this NPC can be modified by commands
|
||||
* @param value {@code true} if this NPC can be modified by commands, {@code false} otherwise
|
||||
*/
|
||||
void setAllowCommandModification(boolean value);
|
||||
|
||||
/**
|
||||
* Enables everything for this NPC entry
|
||||
* That is, it makes the NPC processed, saveable, and allows command modification
|
||||
*/
|
||||
void enableEverything();
|
||||
}
|
||||
|
|
|
@ -6,13 +6,62 @@ import org.bukkit.World;
|
|||
import java.util.Collection;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Base class for all NPC registries
|
||||
*/
|
||||
public interface NpcRegistry {
|
||||
|
||||
/**
|
||||
* Gets all NPC entries
|
||||
* @return All NPC entries
|
||||
*/
|
||||
Collection<? extends NpcEntry> getAll();
|
||||
|
||||
/**
|
||||
* Gets all NPC IDs
|
||||
* @return All NPC IDs
|
||||
*/
|
||||
Collection<String> getAllIds();
|
||||
|
||||
/**
|
||||
* Gets all NPC entries that are player made
|
||||
* @return All player made NPC entries
|
||||
*/
|
||||
Collection<? extends NpcEntry> getAllPlayerMade();
|
||||
|
||||
/**
|
||||
* Gets IDs of all player made NPCs
|
||||
* @return IDs of all player made NPCs
|
||||
*/
|
||||
Collection<String> getAllPlayerMadeIds();
|
||||
|
||||
/**
|
||||
* Creates a new NPC entry
|
||||
* @param id The ID of the NPC entry
|
||||
* @param world The {@link World} of the NPC entry
|
||||
* @param type The {@link NpcType} of the NPC entry
|
||||
* @param location The {@link NpcLocation} of the NPC entry
|
||||
* @return
|
||||
*/
|
||||
NpcEntry create(String id, World world, NpcType type, NpcLocation location);
|
||||
|
||||
/**
|
||||
* Gets an NPC entry by its ID
|
||||
* @param id The ID of the NPC entry
|
||||
* @return The NPC entry
|
||||
*/
|
||||
NpcEntry getById(String id);
|
||||
|
||||
/**
|
||||
* Gets an NPC entry by its UUID
|
||||
* @param uuid The UUID of the NPC entry
|
||||
* @return The NPC entry
|
||||
*/
|
||||
NpcEntry getByUuid(UUID uuid);
|
||||
|
||||
/**
|
||||
* Deletes an NPC entry by its ID
|
||||
* @param id The ID of the NPC entry
|
||||
*/
|
||||
void delete(String id);
|
||||
}
|
||||
|
|
|
@ -4,8 +4,26 @@ import lol.pyr.znpcsplus.api.entity.EntityProperty;
|
|||
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Represents a type of NPC.
|
||||
* This defines the {@link org.bukkit.entity.EntityType} of the NPC, as well as the properties that are allowed to be set on the NPC.
|
||||
*/
|
||||
public interface NpcType {
|
||||
/**
|
||||
* The name of the NPC type.
|
||||
* @return The name of the NPC type.
|
||||
*/
|
||||
String getName();
|
||||
|
||||
/**
|
||||
* The offset of the hologram above the NPC.
|
||||
* @return the offset
|
||||
*/
|
||||
double getHologramOffset();
|
||||
|
||||
/**
|
||||
* Set of properties that are allowed to be set on the NPC.
|
||||
* @return allowed properties
|
||||
*/
|
||||
Set<EntityProperty<?>> getAllowedProperties();
|
||||
}
|
||||
|
|
|
@ -2,7 +2,18 @@ package lol.pyr.znpcsplus.api.npc;
|
|||
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* Base for NpcType registries.
|
||||
*/
|
||||
public interface NpcTypeRegistry {
|
||||
/**
|
||||
* Gets a NPC type by name.
|
||||
* @param name The name of the NPC type.
|
||||
*/
|
||||
NpcType getByName(String name);
|
||||
|
||||
/**
|
||||
* Gets all NPC types.
|
||||
*/
|
||||
Collection<NpcType> getAll();
|
||||
}
|
||||
|
|
|
@ -2,6 +2,9 @@ package lol.pyr.znpcsplus.api.skin;
|
|||
|
||||
import java.net.URL;
|
||||
|
||||
/**
|
||||
* Factory for creating skin descriptors.
|
||||
*/
|
||||
public interface SkinDescriptorFactory {
|
||||
SkinDescriptor createMirrorDescriptor();
|
||||
SkinDescriptor createRefreshingDescriptor(String playerName);
|
||||
|
|
Loading…
Reference in a new issue