Skip to content

Commit c84823c

Browse files
committed
JavaDoc improvements and other changes
1 parent 84fd87e commit c84823c

File tree

13 files changed

+122
-45
lines changed

13 files changed

+122
-45
lines changed

src/main/java/me/despical/commandframework/CommandFramework.java

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,18 @@
2121
import me.despical.commandframework.annotations.Command;
2222
import me.despical.commandframework.confirmations.ConfirmationManager;
2323
import me.despical.commandframework.cooldown.CooldownManager;
24+
import me.despical.commandframework.debug.DebugLogger;
2425
import me.despical.commandframework.options.Option;
2526
import me.despical.commandframework.options.OptionManager;
26-
import org.bukkit.command.*;
27+
import org.bukkit.command.CommandMap;
28+
import org.bukkit.command.CommandSender;
2729
import org.bukkit.plugin.Plugin;
2830
import org.jetbrains.annotations.ApiStatus;
2931
import org.jetbrains.annotations.NotNull;
3032

31-
import java.lang.reflect.*;
32-
import java.util.*;
33+
import java.lang.reflect.Method;
34+
import java.util.ArrayList;
35+
import java.util.List;
3336
import java.util.function.Function;
3437
import java.util.logging.Logger;
3538

@@ -60,14 +63,16 @@ public CommandFramework(@NotNull Plugin plugin) {
6063
this.checkIsAlreadyInitialized();
6164

6265
this.plugin = plugin;
63-
this.logger = plugin.getLogger();
6466
this.optionManager = new OptionManager();
65-
this.registry = new CommandRegistry(this);
67+
this.registry = new CommandRegistry();
6668
this.parameterHandler = new ParameterHandler();
69+
this.initializeLogger();
6770
super.setRegistry(this);
6871
}
6972

7073
private void checkRelocation() {
74+
if (this.isOptionEnabled(Option.DEBUG)) return;
75+
7176
String suppressRelocation = System.getProperty("commandframework.suppressrelocation");
7277

7378
if ("true".equals(suppressRelocation)) return;
@@ -91,6 +96,15 @@ private void checkIsAlreadyInitialized() {
9196
} else instance = this;
9297
}
9398

99+
private void initializeLogger() {
100+
if (this.isOptionEnabled(Option.DEBUG)) {
101+
this.logger = new DebugLogger();
102+
return;
103+
}
104+
105+
this.logger = plugin.getLogger();
106+
}
107+
94108
/**
95109
* Registers commands in given object's class.
96110
*
@@ -137,7 +151,7 @@ public final <A, B extends A> void addCustomParameter(@NotNull String value, @No
137151
}
138152

139153
/**
140-
* Returns the logger instance of Command Framework. By default, logger is {@code plugin}'s logger.
154+
* Returns the logger instance of Command Framework. By default, logger is {@link #plugin} 's logger.
141155
*
142156
* @return the current logger instance.
143157
* @since 1.4.8
@@ -158,26 +172,13 @@ public final void setLogger(@NotNull Logger logger) {
158172
}
159173

160174
/**
161-
* Enables the specified option.
175+
* Returns the option manager.
162176
*
163-
* @param option the {@link Option} to be enabled. Must not be {@code null}.
164-
* @throws IllegalArgumentException if the {@code option} is {@code null}.
177+
* @return the option manager.
165178
* @since 1.4.8
166179
*/
167-
public final void enableOption(Option option) {
168-
this.optionManager.enableOption(option);
169-
}
170-
171-
/**
172-
* Enables the specified options.
173-
*
174-
* @param option the {@link Option} to be enabled. Must not be {@code null}.
175-
* @param options the array of {@link Option} to be enabled. Must not be {@code null}.
176-
* @throws IllegalArgumentException if the {@code option} or {@code options} are {@code null}.
177-
* @since 1.4.8
178-
*/
179-
public final void enableOptions(Option option, Option... options) {
180-
this.optionManager.enableOptions(option, options);
180+
public final OptionManager options() {
181+
return this.optionManager;
181182
}
182183

183184
/**
@@ -254,4 +255,8 @@ public final List<Command> getAllCommands() {
254255

255256
return commands;
256257
}
258+
259+
public static CommandFramework getInstance() {
260+
return instance;
261+
}
257262
}

src/main/java/me/despical/commandframework/CommandRegistry.java

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
import me.despical.commandframework.annotations.Command;
44
import me.despical.commandframework.annotations.Completer;
5+
import me.despical.commandframework.debug.Debug;
6+
import me.despical.commandframework.options.Option;
57
import me.despical.commandframework.utils.Utils;
8+
import org.bukkit.Bukkit;
69
import org.bukkit.command.CommandMap;
710
import org.bukkit.command.PluginCommand;
811
import org.bukkit.command.SimpleCommandMap;
@@ -16,7 +19,15 @@
1619
import java.lang.reflect.Constructor;
1720
import java.lang.reflect.Field;
1821
import java.lang.reflect.Method;
19-
import java.util.*;
22+
import java.util.Arrays;
23+
import java.util.Comparator;
24+
import java.util.HashMap;
25+
import java.util.Iterator;
26+
import java.util.List;
27+
import java.util.Map;
28+
import java.util.Optional;
29+
import java.util.Set;
30+
import java.util.TreeMap;
2031
import java.util.logging.Level;
2132
import java.util.stream.Stream;
2233

@@ -39,9 +50,6 @@ public class CommandRegistry {
3950
@Nullable
4051
private CommandMap commandMap;
4152

42-
@NotNull
43-
private final CommandFramework commandFramework;
44-
4553
@NotNull
4654
private final CommandMatcher commandMatcher;
4755

@@ -51,15 +59,14 @@ public class CommandRegistry {
5159
@NotNull
5260
private final Map<Completer, Map.Entry<Method, Object>> commandCompletions, subCommandCompletions;
5361

54-
CommandRegistry(CommandFramework commandFramework) {
55-
this.commandFramework = commandFramework;
62+
CommandRegistry() {
5663
this.commandMatcher = new CommandMatcher();
5764
this.commands = new HashMap<>();
5865
this.commandCompletions = new HashMap<>();
5966
this.subCommands = new TreeMap<>(Comparator.comparing(Command::name).reversed());
6067
this.subCommandCompletions = new TreeMap<>(Comparator.comparing(Completer::name).reversed());
6168

62-
final PluginManager pluginManager = commandFramework.plugin.getServer().getPluginManager();
69+
final PluginManager pluginManager = Bukkit.getServer().getPluginManager();
6370

6471
if (pluginManager instanceof SimplePluginManager) {
6572
final SimplePluginManager manager = (SimplePluginManager) pluginManager;
@@ -95,7 +102,14 @@ public void setCommandMap(@NotNull CommandMap commandMap) {
95102
* @param instance the instance of the class from which commands will be registered. Must not be {@code null}.
96103
*/
97104
protected void registerCommands(@NotNull Object instance) {
105+
final CommandFramework commandFramework = CommandFramework.getInstance();
106+
final boolean notDebug = !commandFramework.isOptionEnabled(Option.DEBUG);
107+
98108
for (final Method method : instance.getClass().getMethods()) {
109+
if (notDebug && method.isAnnotationPresent(Debug.class)) {
110+
continue;
111+
}
112+
99113
final Command command = method.getAnnotation(Command.class);
100114

101115
if (command != null) {
@@ -140,6 +154,7 @@ protected void registerCommands(@NotNull Object instance) {
140154
* @param instance the instance of the class that contains the command method.
141155
*/
142156
protected void registerCommand(Command command, Method method, Object instance) {
157+
final CommandFramework commandFramework = CommandFramework.getInstance();
143158
final String cmdName = command.name();
144159

145160
if (cmdName.contains(".")) {
@@ -155,7 +170,7 @@ protected void registerCommand(Command command, Method method, Object instance)
155170
pluginCommand.setTabCompleter(commandFramework);
156171
pluginCommand.setExecutor(commandFramework);
157172
pluginCommand.setUsage(command.usage());
158-
pluginCommand.setPermission(!command.permission().isEmpty() ? null : command.permission());
173+
pluginCommand.setPermission(command.permission().isEmpty() ? null : command.permission());
159174
pluginCommand.setDescription(command.desc());
160175

161176
commandMap.register(cmdName, pluginCommand);
@@ -175,6 +190,7 @@ protected void unregisterCommand(@NotNull String commandName) {
175190
if (commandName.contains(".")) commandName = commandName.split("\\.")[0];
176191

177192
final Map.Entry<Command, Map.Entry<Method, Object>> entry = commandMatcher.getAssociatedCommand(commandName, new String[0]);
193+
final CommandFramework commandFramework = CommandFramework.getInstance();
178194

179195
if (entry == null) {
180196
commandFramework.plugin.getLogger().log(Level.WARNING, "Command removal is failed because there is no command named ''{0}''!", commandName);

src/main/java/me/despical/commandframework/annotations/Command.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@
1818

1919
package me.despical.commandframework.annotations;
2020

21-
import java.lang.annotation.*;
21+
import java.lang.annotation.Documented;
22+
import java.lang.annotation.ElementType;
23+
import java.lang.annotation.Retention;
24+
import java.lang.annotation.RetentionPolicy;
25+
import java.lang.annotation.Target;
2226

2327
/**
2428
* Main class of the framework to create commands in easy way.

src/main/java/me/despical/commandframework/annotations/Completer.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@
1818

1919
package me.despical.commandframework.annotations;
2020

21-
import java.lang.annotation.*;
21+
import java.lang.annotation.Documented;
22+
import java.lang.annotation.ElementType;
23+
import java.lang.annotation.Retention;
24+
import java.lang.annotation.RetentionPolicy;
25+
import java.lang.annotation.Target;
2226

2327
/**
2428
* A utility class in framework to create argument completions

src/main/java/me/despical/commandframework/annotations/Confirmation.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package me.despical.commandframework.annotations;
22

3-
import java.lang.annotation.*;
3+
import java.lang.annotation.Documented;
4+
import java.lang.annotation.ElementType;
5+
import java.lang.annotation.Retention;
6+
import java.lang.annotation.RetentionPolicy;
7+
import java.lang.annotation.Target;
48
import java.util.concurrent.TimeUnit;
59

610
/**

src/main/java/me/despical/commandframework/annotations/Cooldown.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@
1818

1919
package me.despical.commandframework.annotations;
2020

21-
import java.lang.annotation.*;
21+
import java.lang.annotation.Documented;
22+
import java.lang.annotation.ElementType;
23+
import java.lang.annotation.Retention;
24+
import java.lang.annotation.RetentionPolicy;
25+
import java.lang.annotation.Target;
2226
import java.util.concurrent.TimeUnit;
2327

2428
/**

src/main/java/me/despical/commandframework/annotations/Default.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package me.despical.commandframework.annotations;
22

3-
import java.lang.annotation.*;
3+
import java.lang.annotation.Documented;
4+
import java.lang.annotation.ElementType;
5+
import java.lang.annotation.Retention;
6+
import java.lang.annotation.RetentionPolicy;
7+
import java.lang.annotation.Target;
48

59
/**
610
* @author Despical

src/main/java/me/despical/commandframework/annotations/Param.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package me.despical.commandframework.annotations;
22

3-
import java.lang.annotation.*;
3+
import java.lang.annotation.Documented;
4+
import java.lang.annotation.ElementType;
5+
import java.lang.annotation.Retention;
6+
import java.lang.annotation.RetentionPolicy;
7+
import java.lang.annotation.Target;
48

59
/**
610
* @author Despical

src/main/java/me/despical/commandframework/cooldown/CooldownManager.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package me.despical.commandframework.cooldown;
22

3-
import me.despical.commandframework.*;
3+
import me.despical.commandframework.CommandArguments;
4+
import me.despical.commandframework.CommandFramework;
5+
import me.despical.commandframework.Message;
46
import me.despical.commandframework.annotations.Command;
57
import me.despical.commandframework.annotations.Completer;
68
import me.despical.commandframework.annotations.Cooldown;
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package me.despical.commandframework.debug;
2+
3+
import java.lang.annotation.*;
4+
5+
/**
6+
* @author Despical
7+
* <p>
8+
* Created at 8.09.2024
9+
*/
10+
@Documented
11+
@Target(ElementType.METHOD)
12+
@Retention(RetentionPolicy.RUNTIME)
13+
public @interface Debug {
14+
}

0 commit comments

Comments
 (0)