package net.glowstone.net.rcon;
import net.glowstone.GlowServer;
import org.bukkit.Server;
import org.bukkit.command.RemoteConsoleCommandSender;
import org.bukkit.permissions.PermissibleBase;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionAttachment;
import org.bukkit.permissions.PermissionAttachmentInfo;
import org.bukkit.plugin.Plugin;
import java.util.Set;
public class RconCommandSender implements RemoteConsoleCommandSender {
private final GlowServer server;
private final StringBuffer buffer = new StringBuffer();
private final PermissibleBase perm = new PermissibleBase(this);
public RconCommandSender(GlowServer server) {
this.server = server;
}
public String flush() {
String result = buffer.toString();
buffer.setLength(0);
return result;
}
@Override
public Server getServer() {
return server;
}
@Override
public String getName() {
return "Rcon";
}
@Override
public void sendMessage(String message) {
buffer.append(message).append("\n");
}
@Override
public void sendMessage(String[] strings) {
for (String line : strings) {
sendMessage(line);
}
}
////////////////////////////////////////////////////////////////////////
// Permissible
@Override
public boolean isPermissionSet(String name) {
return perm.isPermissionSet(name);
}
@Override
public boolean isPermissionSet(Permission perm) {
return this.perm.isPermissionSet(perm);
}
@Override
public boolean hasPermission(String name) {
return perm.hasPermission(name);
}
@Override
public boolean hasPermission(Permission perm) {
return this.perm.hasPermission(perm);
}
@Override
public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value) {
return perm.addAttachment(plugin, name, value);
}
@Override
public PermissionAttachment addAttachment(Plugin plugin) {
return perm.addAttachment(plugin);
}
@Override
public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value, int ticks) {
return perm.addAttachment(plugin, name, value, ticks);
}
@Override
public PermissionAttachment addAttachment(Plugin plugin, int ticks) {
return perm.addAttachment(plugin, ticks);
}
@Override
public void removeAttachment(PermissionAttachment attachment) {
perm.removeAttachment(attachment);
}
@Override
public void recalculatePermissions() {
perm.recalculatePermissions();
}
@Override
public Set<PermissionAttachmentInfo> getEffectivePermissions() {
return perm.getEffectivePermissions();
}
@Override
public boolean isOp() {
return true;
}
@Override
public void setOp(boolean value) {
throw new UnsupportedOperationException("Cannot change operator status of Rcon command sender");
}
}