2018-02-10 16:13:21 +00:00
|
|
|
package com.ryanmichela.sshd.implementations;
|
|
|
|
|
|
|
|
import com.ryanmichela.sshd.SshdPlugin;
|
2018-02-12 01:00:42 +00:00
|
|
|
import org.bukkit.Bukkit;
|
2018-02-10 16:13:21 +00:00
|
|
|
import org.bukkit.ChatColor;
|
2018-02-12 01:00:42 +00:00
|
|
|
import org.bukkit.Server;
|
|
|
|
import org.bukkit.command.CommandSender;
|
2018-02-10 16:13:21 +00:00
|
|
|
import org.bukkit.command.ConsoleCommandSender;
|
|
|
|
import org.bukkit.conversations.Conversation;
|
|
|
|
import org.bukkit.conversations.ConversationAbandonedEvent;
|
|
|
|
import org.bukkit.conversations.ManuallyAbandonedConversationCanceller;
|
2018-02-12 01:00:42 +00:00
|
|
|
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;
|
2018-02-10 16:13:21 +00:00
|
|
|
|
2019-10-03 02:14:56 +00:00
|
|
|
import com.ryanmichela.sshd.ConsoleShellFactory;
|
|
|
|
|
2018-02-10 16:13:21 +00:00
|
|
|
import java.io.IOException;
|
|
|
|
import java.util.Arrays;
|
2018-02-12 01:00:42 +00:00
|
|
|
import java.util.Set;
|
2018-02-10 16:13:21 +00:00
|
|
|
import java.util.logging.Level;
|
|
|
|
|
2018-02-12 01:00:42 +00:00
|
|
|
public class SSHDCommandSender implements ConsoleCommandSender, CommandSender {
|
2018-02-10 16:13:21 +00:00
|
|
|
|
2018-02-12 01:00:42 +00:00
|
|
|
private final PermissibleBase perm = new PermissibleBase(this);
|
|
|
|
private final SSHDConversationTracker conversationTracker = new SSHDConversationTracker();
|
2018-02-10 16:13:21 +00:00
|
|
|
|
|
|
|
public void sendMessage(String message) {
|
|
|
|
this.sendRawMessage(message);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void sendRawMessage(String message) {
|
2018-03-01 17:19:23 +00:00
|
|
|
if(ConsoleShellFactory.ConsoleShell.consoleReader == null) return;
|
2018-02-10 16:13:21 +00:00
|
|
|
try {
|
2018-02-12 01:00:42 +00:00
|
|
|
ConsoleShellFactory.ConsoleShell.consoleReader.println(ChatColor.stripColor(message));
|
2018-02-10 16:13:21 +00:00
|
|
|
} catch (IOException e) {
|
|
|
|
SshdPlugin.instance.getLogger().log(Level.SEVERE, "Error sending message to SSHDCommandSender", e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void sendMessage(String[] messages) {
|
|
|
|
Arrays.asList(messages).forEach(this::sendMessage);
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getName() {
|
2019-10-03 02:14:56 +00:00
|
|
|
return "Console";
|
2018-02-10 16:13:21 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isOp() {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setOp(boolean value) {
|
|
|
|
throw new UnsupportedOperationException("Cannot change operator status of server console");
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean beginConversation(Conversation conversation) {
|
|
|
|
return this.conversationTracker.beginConversation(conversation);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void abandonConversation(Conversation conversation) {
|
|
|
|
this.conversationTracker.abandonConversation(conversation, new ConversationAbandonedEvent(conversation, new ManuallyAbandonedConversationCanceller()));
|
|
|
|
}
|
|
|
|
|
|
|
|
public void abandonConversation(Conversation conversation, ConversationAbandonedEvent details) {
|
|
|
|
this.conversationTracker.abandonConversation(conversation, details);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void acceptConversationInput(String input) {
|
|
|
|
this.conversationTracker.acceptConversationInput(input);
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isConversing() {
|
|
|
|
return this.conversationTracker.isConversing();
|
|
|
|
}
|
|
|
|
|
2018-02-12 01:00:42 +00:00
|
|
|
public boolean isPermissionSet(String name) {
|
|
|
|
return this.perm.isPermissionSet(name);
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isPermissionSet(Permission perm) {
|
|
|
|
return this.perm.isPermissionSet(perm);
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean hasPermission(String name) {
|
|
|
|
return this.perm.hasPermission(name);
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean hasPermission(Permission perm) {
|
|
|
|
return this.perm.hasPermission(perm);
|
|
|
|
}
|
|
|
|
|
|
|
|
public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value) {
|
|
|
|
return this.perm.addAttachment(plugin, name, value);
|
|
|
|
}
|
|
|
|
|
|
|
|
public PermissionAttachment addAttachment(Plugin plugin) {
|
|
|
|
return this.perm.addAttachment(plugin);
|
|
|
|
}
|
|
|
|
|
|
|
|
public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value, int ticks) {
|
|
|
|
return this.perm.addAttachment(plugin, name, value, ticks);
|
|
|
|
}
|
|
|
|
|
|
|
|
public PermissionAttachment addAttachment(Plugin plugin, int ticks) {
|
|
|
|
return this.perm.addAttachment(plugin, ticks);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void removeAttachment(PermissionAttachment attachment) {
|
|
|
|
this.perm.removeAttachment(attachment);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void recalculatePermissions() {
|
|
|
|
this.perm.recalculatePermissions();
|
|
|
|
}
|
|
|
|
|
|
|
|
public Set<PermissionAttachmentInfo> getEffectivePermissions() {
|
|
|
|
return this.perm.getEffectivePermissions();
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isPlayer() {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
public Server getServer() {
|
|
|
|
return Bukkit.getServer();
|
|
|
|
}
|
|
|
|
|
2018-02-10 16:13:21 +00:00
|
|
|
}
|