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.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)
@Target(ElementType.TYPE)
public @interface CommandInfo {
/**
* @return The name of the command.
*/
String name();
/**
* @return The description of the command.
*/
String description();
/**
* @return How the command should be used.
*/
String usage();
/**
* @return A list of aliases of the command separated by commas in a single String.
*/
String aliases() default "";
/**
* @return The permission for the command
*/
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.";
}

View File

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

View File

@ -22,7 +22,10 @@ public final class CommandLoader {
private Reflections reflections;
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;
}
@ -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) {
for (Class<? extends CommandExecutor> obj : reflections.getSubTypesOf(CommandExecutor.class)) {
if (!obj.isAnnotationPresent(CommandInfo.class)) {
@ -101,6 +111,13 @@ public final class CommandLoader {
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
public synchronized TabCompleter getTabFromName(String name) {
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;
}
/**
* 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
public Player getPlayer(String 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
public Player getPlayer(UUID 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
public Player getPlayer(CommandSender sender) {
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) {
StringBuilder builder = new StringBuilder();
Utilities.forEach(messages, builder::append);
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) {
StringBuilder builder = new StringBuilder();
Utilities.forEach(messages, builder::append);

View File

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