Cleanup nullabilities relating to extension commands

This commit is contained in:
Konicai 2023-09-29 20:00:18 -04:00
parent 799972d5a9
commit 24323d4e82
3 changed files with 26 additions and 21 deletions

View File

@ -115,8 +115,9 @@ public class GeyserStandaloneCommandManager extends CommandManager<GeyserCommand
return basePermissions.contains(permission);
}
@NonNull
@Override
public @NonNull CommandMeta createDefaultCommandMeta() {
public CommandMeta createDefaultCommandMeta() {
return SimpleCommandMeta.empty();
}
}

View File

@ -92,17 +92,17 @@ public abstract class GeyserCommand implements org.geysermc.geyser.api.command.C
*/
protected List<String> aliases = Collections.emptyList();
public GeyserCommand(@NonNull String name, @Nullable String description,
@Nullable String permission, @Nullable TriState permissionDefault,
public GeyserCommand(@NonNull String name, @NonNull String description,
@NonNull String permission, @Nullable TriState permissionDefault,
boolean executableOnConsole, boolean bedrockOnly) {
if (name == null || name.isBlank()) {
if (name.isBlank()) {
throw new IllegalArgumentException("Command cannot be null or blank!");
}
this.name = name;
this.description = description != null ? description : "";
this.permission = permission != null ? permission : "";
this.description = description;
this.permission = permission;
this.permissionDefault = permissionDefault;
if (bedrockOnly && executableOnConsole) {
@ -113,7 +113,7 @@ public abstract class GeyserCommand implements org.geysermc.geyser.api.command.C
this.bedrockOnly = bedrockOnly;
}
public GeyserCommand(@NonNull String name, @NonNull String description, @Nullable String permission, @Nullable TriState permissionDefault) {
public GeyserCommand(@NonNull String name, @NonNull String description, @NonNull String permission, @Nullable TriState permissionDefault) {
this(name, description, permission, permissionDefault, true, false);
}

View File

@ -50,8 +50,8 @@ public abstract class GeyserExtensionCommand extends GeyserCommand {
private final Extension extension;
private final String rootCommand;
public GeyserExtensionCommand(@NonNull Extension extension, @NonNull String name, @Nullable String description,
@Nullable String permission, @Nullable TriState permissionDefault,
public GeyserExtensionCommand(@NonNull Extension extension, @NonNull String name, @NonNull String description,
@NonNull String permission, @Nullable TriState permissionDefault,
boolean executableOnConsole, boolean bedrockOnly) {
super(name, description, permission, permissionDefault, executableOnConsole, bedrockOnly);
@ -73,17 +73,17 @@ public abstract class GeyserExtensionCommand extends GeyserCommand {
}
public static class Builder<T extends CommandSource> implements Command.Builder<T> {
private final Extension extension;
private Class<? extends T> sourceType;
private String name;
private String description;
private String permission;
private TriState permissionDefault;
private List<String> aliases;
@NonNull private final Extension extension;
@Nullable private Class<? extends T> sourceType;
@Nullable private String name;
@NonNull private String description = "";
@NonNull private String permission = "";
@Nullable private TriState permissionDefault;
@Nullable private List<String> aliases;
private boolean suggestedOpOnly = false; // deprecated for removal
private boolean executableOnConsole = true;
private boolean bedrockOnly = false;
private CommandExecutor<T> executor;
@Nullable private CommandExecutor<T> executor;
public Builder(Extension extension) {
this.extension = Objects.requireNonNull(extension);
@ -103,20 +103,20 @@ public abstract class GeyserExtensionCommand extends GeyserCommand {
@Override
public Builder<T> description(@NonNull String description) {
this.description = description;
this.description = Objects.requireNonNull(description, "command description");
return this;
}
@Override
public Builder<T> permission(@NonNull String permission) {
this.permission = permission;
this.permission = Objects.requireNonNull(permission, "command permission");
return this;
}
@Override
public Builder<T> permission(@NonNull String permission, @NonNull TriState defaultValue) {
this.permission = permission;
this.permissionDefault = Objects.requireNonNull(defaultValue, "defaultValue");
this.permission = Objects.requireNonNull(permission, "command permission");
this.permissionDefault = Objects.requireNonNull(defaultValue, "command permission defaultValue");
return this;
}
@ -157,10 +157,14 @@ public abstract class GeyserExtensionCommand extends GeyserCommand {
@NonNull
@Override
public GeyserExtensionCommand build() {
// These are captured in the anonymous lambda below and shouldn't change even if the builder does
final Class<? extends T> sourceType = this.sourceType;
final boolean suggestedOpOnly = this.suggestedOpOnly;
final CommandExecutor<T> executor = this.executor;
if (name == null) {
throw new IllegalArgumentException("name was not provided for a command in extension " + extension.name());
}
if (sourceType == null) {
throw new IllegalArgumentException("Source type was not defined for command " + name + " in extension " + extension.name());
}