0
This repository has been archived on 2022-03-25. You can view files and clone it, but cannot push or open issues or pull requests.
Files
ghast-tools/src/main/java/ghast/command/CommandManager.java
2021-10-07 13:07:25 +03:00

70 lines
2.0 KiB
Java

package ghast.command;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.UtilityClass;
import org.bukkit.Bukkit;
import static org.joor.Reflect.on;
@UtilityClass
@SuppressWarnings("unused")
public class CommandManager {
public Builder create(String name) {
return new Builder(name);
}
public void register(String name, CommandExecuter executer) {
create(name).executer(executer).register();
}
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public static class Builder {
private final String name;
private CommandExecuter executer;
private ErrorConsumer errorConsumer;
private Boolean onlyPlayer;
private String deniedMessage;
public Builder executer(CommandExecuter executer) {
this.executer = executer;
return this;
}
public Builder onError(ErrorConsumer errorConsumer) {
this.errorConsumer = errorConsumer;
return this;
}
public Builder useOnlyPlayer(String deniedMessage) {
this.onlyPlayer = true;
this.deniedMessage = deniedMessage;
return this;
}
public Builder useOnlyPlayer() {
return useOnlyPlayer(null);
}
public Builder useOnlyConsole(String deniedMessage) {
this.onlyPlayer = false;
this.deniedMessage = deniedMessage;
return this;
}
public Builder useOnlyConsole() {
return useOnlyConsole(null);
}
public void register() {
//TODO для Paper такие "извращения" не требуются. Нужно продумать.
on(Bukkit.getServer())
.call("getCommandMap")
.call("register", name, new CommandWrapper(name, this.onlyPlayer, this.deniedMessage,
this.executer, this.errorConsumer));
}
}
}