start on some javadocs

This commit is contained in:
Pyrbu 2023-10-28 02:23:17 +02:00
parent 1fae5c1cf6
commit 5ee37d5436
5 changed files with 96 additions and 0 deletions

@ -11,6 +11,11 @@ public class NpcApiProvider {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
/**
* Static method that returns the api instance of the plugin
*
* @return The instance of the api for the ZNPCsPlus plugin
*/
public static NpcApi get() { public static NpcApi get() {
if (api == null) throw new IllegalStateException( if (api == null) throw new IllegalStateException(
"ZNPCsPlus plugin isn't enabled yet!\n" + "ZNPCsPlus plugin isn't enabled yet!\n" +
@ -19,11 +24,19 @@ public class NpcApiProvider {
return api; return api;
} }
/**
* Internal method used to register the main instance of the plugin as the api provider
* You probably shouldn't call this method under any circumstances
*/
public static void register(Plugin plugin, NpcApi api) { public static void register(Plugin plugin, NpcApi api) {
NpcApiProvider.api = api; NpcApiProvider.api = api;
Bukkit.getServicesManager().register(NpcApi.class, api, plugin, ServicePriority.Normal); Bukkit.getServicesManager().register(NpcApi.class, api, plugin, ServicePriority.Normal);
} }
/**
* Internal method used to unregister the plugin from the provider when the plugin shuts down
* You probably shouldn't call this method under any circumstances
*/
public static void unregister() { public static void unregister() {
Bukkit.getServicesManager().unregister(api); Bukkit.getServicesManager().unregister(api);
NpcApiProvider.api = null; NpcApiProvider.api = null;

@ -1,7 +1,25 @@
package lol.pyr.znpcsplus.api.entity; package lol.pyr.znpcsplus.api.entity;
/**
* Class that represents a unique property
* @param <T> The type of the value of this property
*/
public interface EntityProperty<T> { public interface EntityProperty<T> {
/**
* The default value of this property, if this is provided in {@link PropertyHolder#setProperty(EntityProperty, Object)}
* as the value the property will be removed from the holder
*
* @return The default value of this property
*/
T getDefaultValue(); T getDefaultValue();
/**
* @return The name of this property
*/
String getName(); String getName();
/**
* @return Whether this property can be modified by players using commands
*/
boolean isPlayerModifiable(); boolean isPlayerModifiable();
} }

@ -2,9 +2,40 @@ package lol.pyr.znpcsplus.api.entity;
import java.util.Collection; import java.util.Collection;
/**
* Class responsible for providing entity property keys
* Some property keys are only registered in certain situations for example different minecraft versions
*/
public interface EntityPropertyRegistry { public interface EntityPropertyRegistry {
/**
* @return All of the possible property keys
*/
Collection<EntityProperty<?>> getAll(); Collection<EntityProperty<?>> getAll();
/**
* Get a property key by it's name
*
* @param name The name of a property key
* @return The property key corresponding to the name or null if there is none
*/
EntityProperty<?> getByName(String name); EntityProperty<?> getByName(String name);
/**
* Get a property key by it's name and automatically cast the property to the proper type
* If you don't know the type of the property you are requesting use {@link EntityPropertyRegistry#getByName(String)} instead
*
* @param name The name of a property key
* @param type The class of the expected type of the returned property key
* @return The property key corresponding to the name
* @param <T> The expected type of the returned property key
*/
<T> EntityProperty<T> getByName(String name, Class<T> type); <T> EntityProperty<T> getByName(String name, Class<T> type);
/**
* Register a dummy property that can be used to store unique information per npc
*
* @param name The name of the new property
* @param type The type of the new property
*/
void registerDummy(String name, Class<?> type); void registerDummy(String name, Class<?> type);
} }

@ -2,9 +2,40 @@ package lol.pyr.znpcsplus.api.entity;
import java.util.Set; import java.util.Set;
/**
* Represents classes that have property values attatched to them
*/
public interface PropertyHolder { public interface PropertyHolder {
/**
* Method used to get the value of a property from a property holder
*
* @param key Unique key representing a property
* @return The value associated with the provided property key & this holder
* @param <T> The type of the property value
*/
<T> T getProperty(EntityProperty<T> key); <T> T getProperty(EntityProperty<T> key);
/**
* Method used to check if a property holder has a value set for a specific property key
*
* @param key Unique key representing a property
* @return Whether this holder has a value set for the provided key
*/
boolean hasProperty(EntityProperty<?> key); boolean hasProperty(EntityProperty<?> key);
/**
* Method used to set a value for the provided key on this property holder
*
* @param key Unique key representing a property
* @param value The value to assign to the property key on this holder
* @param <T> The type of the property value
*/
<T> void setProperty(EntityProperty<T> key, T value); <T> void setProperty(EntityProperty<T> key, T value);
/**
* Method used to get a set of all of the property keys that this holder has a value for
*
* @return List of property keys
*/
Set<EntityProperty<?>> getAppliedProperties(); Set<EntityProperty<?>> getAppliedProperties();
} }

@ -25,4 +25,7 @@ public interface Npc extends PropertyHolder {
void hide(Player player); void hide(Player player);
void show(Player player); void show(Player player);
void respawn(Player player); void respawn(Player player);
void setHeadRotation(Player player, float yaw, float pitch);
void setHeadRotation(float yaw, float pitch);
} }