Clean up some Bukkit code
This commit is contained in:
parent
62abfa5e95
commit
a8d3fa7c5e
7 changed files with 82 additions and 6 deletions
|
|
@ -31,7 +31,7 @@ import org.bukkit.plugin.Plugin;
|
|||
import javax.annotation.Nonnull;
|
||||
import java.util.List;
|
||||
|
||||
public class BukkitCommand extends org.bukkit.command.Command implements PluginIdentifiableCommand {
|
||||
final class BukkitCommand extends org.bukkit.command.Command implements PluginIdentifiableCommand {
|
||||
|
||||
private final CommandComponent<BukkitCommandSender, ?> command;
|
||||
private final BukkitCommandManager bukkitCommandManager;
|
||||
|
|
|
|||
|
|
@ -29,10 +29,21 @@ import org.bukkit.plugin.Plugin;
|
|||
import javax.annotation.Nonnull;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* Command manager for the Bukkit platform, using {@link BukkitCommandSender} as the
|
||||
* command sender type
|
||||
*/
|
||||
public class BukkitCommandManager extends CommandManager<BukkitCommandSender> {
|
||||
|
||||
private final Plugin owningPlugin;
|
||||
|
||||
/**
|
||||
* Construct a new Bukkit command manager
|
||||
*
|
||||
* @param owningPlugin Plugin that is constructing the manager
|
||||
* @param commandExecutionCoordinator Coordinator provider
|
||||
* @throws Exception If the construction of the manager fails
|
||||
*/
|
||||
public BukkitCommandManager(@Nonnull final Plugin owningPlugin,
|
||||
@Nonnull final Function<CommandTree<BukkitCommandSender>,
|
||||
CommandExecutionCoordinator<BukkitCommandSender>> commandExecutionCoordinator)
|
||||
|
|
@ -42,6 +53,11 @@ public class BukkitCommandManager extends CommandManager<BukkitCommandSender> {
|
|||
this.owningPlugin = owningPlugin;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the plugin that owns the manager
|
||||
*
|
||||
* @return Owning plugin
|
||||
*/
|
||||
@Nonnull
|
||||
public Plugin getOwningPlugin() {
|
||||
return this.owningPlugin;
|
||||
|
|
|
|||
|
|
@ -29,6 +29,10 @@ import org.bukkit.entity.Player;
|
|||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
/**
|
||||
* Command sender that proxies {@link org.bukkit.command.CommandSender}
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public abstract class BukkitCommandSender implements CommandSender {
|
||||
|
||||
private final org.bukkit.command.CommandSender internalSender;
|
||||
|
|
@ -37,16 +41,33 @@ public abstract class BukkitCommandSender implements CommandSender {
|
|||
this.internalSender = internalSender;
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a new {@link BukkitCommandSender} for a {@link Player}
|
||||
*
|
||||
* @param player Player instance
|
||||
* @return Constructed command sender
|
||||
*/
|
||||
@Nonnull
|
||||
public static BukkitCommandSender player(@Nonnull final Player player) {
|
||||
return new BukkitPlayerSender(player);
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a new {@link BukkitCommandSender} for the Bukkit console
|
||||
*
|
||||
* @return Constructed command sender
|
||||
*/
|
||||
@Nonnull
|
||||
public static BukkitCommandSender console() {
|
||||
return new BukkitConsoleSender();
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a new {@link BukkitCommandSender} from a Bukkit {@link CommandSender}
|
||||
*
|
||||
* @param sender Bukkit command sender
|
||||
* @return Constructed command sender
|
||||
*/
|
||||
@Nonnull
|
||||
public static BukkitCommandSender of(@Nonnull final org.bukkit.command.CommandSender sender) {
|
||||
if (sender instanceof Player) {
|
||||
|
|
@ -72,13 +93,29 @@ public abstract class BukkitCommandSender implements CommandSender {
|
|||
return Objects.hashCode(internalSender);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the proxied {@link org.bukkit.command.CommandSender}
|
||||
*
|
||||
* @return Proxied command sneder
|
||||
*/
|
||||
@Nonnull
|
||||
public org.bukkit.command.CommandSender getInternalSender() {
|
||||
return this.internalSender;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if this sender represents a player
|
||||
*
|
||||
* @return {@code true} if this sender represents a player, {@code false} if not
|
||||
*/
|
||||
public abstract boolean isPlayer();
|
||||
|
||||
/**
|
||||
* Get this sender as a player. This can only safely be done if {@link #isPlayer()}}
|
||||
* returns {@code true}
|
||||
*
|
||||
* @return Player object
|
||||
*/
|
||||
@Nonnull
|
||||
public abstract Player asPlayer();
|
||||
|
||||
|
|
@ -86,4 +123,14 @@ public abstract class BukkitCommandSender implements CommandSender {
|
|||
public boolean hasPermission(@Nonnull final String permission) {
|
||||
return this.internalSender.hasPermission(permission);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a message to the command sender
|
||||
*
|
||||
* @param message Message to send
|
||||
*/
|
||||
public void sendMessage(@Nonnull final String message) {
|
||||
this.internalSender.sendMessage(message);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ import org.bukkit.entity.Player;
|
|||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class BukkitConsoleSender extends BukkitCommandSender {
|
||||
final class BukkitConsoleSender extends BukkitCommandSender {
|
||||
|
||||
BukkitConsoleSender() {
|
||||
super(Bukkit.getConsoleSender());
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ import org.bukkit.entity.Player;
|
|||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class BukkitPlayerSender extends BukkitCommandSender {
|
||||
final class BukkitPlayerSender extends BukkitCommandSender {
|
||||
|
||||
BukkitPlayerSender(@Nonnull final Player player) {
|
||||
super(player);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ import java.lang.reflect.Method;
|
|||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class BukkitPluginRegistrationHandler implements CommandRegistrationHandler {
|
||||
final class BukkitPluginRegistrationHandler implements CommandRegistrationHandler {
|
||||
|
||||
private final Map<CommandComponent<?, ?>, org.bukkit.command.Command> registeredCommands = new HashMap<>();
|
||||
|
||||
|
|
@ -71,8 +71,10 @@ public class BukkitPluginRegistrationHandler implements CommandRegistrationHandl
|
|||
} else {
|
||||
label = commandComponent.getName();
|
||||
}
|
||||
this.bukkitCommands.put(label, new BukkitCommand((CommandComponent<BukkitCommandSender, ?>) commandComponent,
|
||||
this.bukkitCommandManager));
|
||||
final BukkitCommand bukkitCommand = new BukkitCommand((CommandComponent<BukkitCommandSender, ?>) commandComponent,
|
||||
this.bukkitCommandManager);
|
||||
this.bukkitCommands.put(label, bukkitCommand);
|
||||
this.registeredCommands.put(commandComponent, bukkitCommand);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -136,4 +136,15 @@ public abstract class CommandManager<C extends CommandSender> {
|
|||
return this.commandRegistrationHandler;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new command builder
|
||||
*
|
||||
* @param name Command name
|
||||
* @return Builder instance
|
||||
*/
|
||||
@Nonnull
|
||||
public Command.Builder<C> commandBuilder(@Nonnull final String name) {
|
||||
return Command.newBuilder(name);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue