JavaDocs!

Simple Docs
This commit is contained in:
Paldiu 2021-03-07 21:58:53 -06:00
parent 29cd81edbc
commit 2b1e9b7362
5 changed files with 75 additions and 8 deletions

View File

@ -5,18 +5,41 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; import java.lang.annotation.Target;
/**
* This annotation must be used to annotate every command class.
* Please also ensure that your commands are in their own package (ie .commands)
* This helps the {@link io.github.simplexdev.simplexcore.command.CommandLoader} to correctly load your commands.
*/
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE) @Target(ElementType.TYPE)
public @interface CommandInfo { public @interface CommandInfo {
/**
* @return The name of the command.
*/
String name(); String name();
/**
* @return The description of the command.
*/
String description(); String description();
/**
* @return How the command should be used.
*/
String usage(); String usage();
/**
* @return A list of aliases of the command separated by commas in a single String.
*/
String aliases() default ""; String aliases() default "";
/**
* @return The permission for the command
*/
String permission() default "simplex.core"; String permission() default "simplex.core";
/**
* @return The message to send if someone does not have permission to use the command.
*/
String permissionMessage() default "You do not have permission to use this command."; String permissionMessage() default "You do not have permission to use this command.";
} }

View File

@ -25,8 +25,10 @@ public final class SimplexCorePlugin extends SimplexAddon<SimplexCorePlugin> {
private TimeValues time; private TimeValues time;
private Yaml internals; private Yaml internals;
// should this just be 'new SimplexCorePlugin()' ? protected static SimplexCorePlugin instance; // = getPlugin(SimplexCorePlugin.class);
protected static final SimplexCorePlugin instance = getPlugin(SimplexCorePlugin.class); public static SimplexCorePlugin getInstance() {
return instance;
}
@Override @Override
public SimplexCorePlugin getPlugin() { public SimplexCorePlugin getPlugin() {
@ -35,6 +37,7 @@ public final class SimplexCorePlugin extends SimplexAddon<SimplexCorePlugin> {
@Override @Override
public void init() { public void init() {
instance = this;
this.dpm = new DependencyManagement(); this.dpm = new DependencyManagement();
this.config = new YamlFactory(this).setDefaultPathways(); this.config = new YamlFactory(this).setDefaultPathways();
this.time = new TimeValues(); this.time = new TimeValues();
@ -77,10 +80,6 @@ public final class SimplexCorePlugin extends SimplexAddon<SimplexCorePlugin> {
return suspended; return suspended;
} }
public static SimplexCorePlugin getInstance() {
return instance;
}
public Logger getLogger() { public Logger getLogger() {
return this.getServer().getLogger(); return this.getServer().getLogger();
} }

View File

@ -22,7 +22,10 @@ public final class CommandLoader {
private Reflections reflections; private Reflections reflections;
private static final CommandLoader instance = new CommandLoader(); private static final CommandLoader instance = new CommandLoader();
public static CommandLoader getInstance() { /**
* @return A Singleton Pattern instance of this class.
*/
public static synchronized CommandLoader getInstance() {
return instance; return instance;
} }
@ -80,6 +83,13 @@ public final class CommandLoader {
}); });
} }
/**
* Gets the command class as a child of {@link CommandExecutor} from the {@link CommandInfo#name()} annotation.
* This is for registering the CommandExecutor of the provided command with Bukkit.
* This should only be used by the CommandLoader.
* @param name The name of the command.
* @return An instance of the command class as a CommandExecutor.
*/
public synchronized CommandExecutor getExecutorFromName(String name) { public synchronized CommandExecutor getExecutorFromName(String name) {
for (Class<? extends CommandExecutor> obj : reflections.getSubTypesOf(CommandExecutor.class)) { for (Class<? extends CommandExecutor> obj : reflections.getSubTypesOf(CommandExecutor.class)) {
if (!obj.isAnnotationPresent(CommandInfo.class)) { if (!obj.isAnnotationPresent(CommandInfo.class)) {
@ -101,6 +111,13 @@ public final class CommandLoader {
throw new RuntimeException("Unable to get a command executor! Terminating!"); throw new RuntimeException("Unable to get a command executor! Terminating!");
} }
/**
* Gets the command class as a child of {@link TabCompleter} from the {@link CommandInfo#name()} annotation.
* This is for registering the TabCompleter of the provided command with Bukkit.
* This should only be used by the CommandLoader.
* @param name The name of the command
* @return The command as an instance of TabCompleter
*/
@Nullable @Nullable
public synchronized TabCompleter getTabFromName(String name) { public synchronized TabCompleter getTabFromName(String name) {
for (Class<? extends TabCompleter> obj : reflections.getSubTypesOf(TabCompleter.class)) { for (Class<? extends TabCompleter> obj : reflections.getSubTypesOf(TabCompleter.class)) {

View File

@ -20,27 +20,55 @@ public abstract class SimplexCommand implements CommandExecutor, TabCompleter {
return sender instanceof Player; return sender instanceof Player;
} }
/**
* Gets an online player from their username
* @param name The player's username
* @return An instance of {@link Player} which represents the online player in question.
*/
@Nullable @Nullable
public Player getPlayer(String name) { public Player getPlayer(String name) {
return SimplexCorePlugin.getInstance().getServer().getPlayer(name); return SimplexCorePlugin.getInstance().getServer().getPlayer(name);
} }
/**
* Gets an online player from their {@link UUID}.
* @param uuid The player's UUID
* @return An instance of {@link Player} which represents the online player in question.
*/
@Nullable @Nullable
public Player getPlayer(UUID uuid) { public Player getPlayer(UUID uuid) {
return SimplexCorePlugin.getInstance().getServer().getPlayer(uuid); return SimplexCorePlugin.getInstance().getServer().getPlayer(uuid);
} }
/**
* Gets an instance of {@link Player} based off an instance of {@link CommandSender}.
* This will be null if the condition {CommandSender instanceof Player} is false.
* @param sender The CommandSender to cast
* @return An instance of Player relating to CommandSender.
*/
@Nullable @Nullable
public Player getPlayer(CommandSender sender) { public Player getPlayer(CommandSender sender) {
return isPlayer(sender) ? (Player) sender : null; return isPlayer(sender) ? (Player) sender : null;
} }
/**
* Send a message or a group of messages to a {@link Player}.
* If you want the messages to send on new lines, put \n at the end of each message to send.
* @param player The Player to send a message to
* @param messages The messages to send.
*/
public void playerMsg(Player player, String... messages) { public void playerMsg(Player player, String... messages) {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
Utilities.forEach(messages, builder::append); Utilities.forEach(messages, builder::append);
player.sendMessage(builder.toString()); player.sendMessage(builder.toString());
} }
/**
* Send a message or a group of messages to a {@link CommandSender}
* If you want the messages to send on new lines, put \n at the end of each message to send.
* @param sender The CommandSender to send a message to.
* @param messages The messages to send.
*/
public void msg(CommandSender sender, String... messages) { public void msg(CommandSender sender, String... messages) {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
Utilities.forEach(messages, builder::append); Utilities.forEach(messages, builder::append);

View File

@ -14,7 +14,7 @@ public final class AddonRegistry {
protected AddonRegistry() { protected AddonRegistry() {
} }
public static AddonRegistry getInstance() { public static synchronized AddonRegistry getInstance() {
return instance; return instance;
} }