Added the ability to access offline players & more reverse lookup fixes in Permissible.

By: Dinnerbone <dinnerbone@dinnerbone.com>
This commit is contained in:
Bukkit/Spigot 2011-09-03 00:41:22 +01:00
parent 1d6801b8e6
commit 498e63dbfa
8 changed files with 43 additions and 36 deletions

View File

@ -220,7 +220,11 @@ public final class Bukkit {
server.shutdown(); server.shutdown();
} }
public int broadcast(String message, String permission) { public static int broadcast(String message, String permission) {
return server.broadcast(message, permission); return server.broadcast(message, permission);
} }
public static OfflinePlayer getOfflinePlayer(String name) {
return server.getOfflinePlayer(name);
}
} }

View File

@ -375,4 +375,14 @@ public interface Server {
* @return Amount of users who received the message * @return Amount of users who received the message
*/ */
public int broadcast(String message, String permission); public int broadcast(String message, String permission);
/**
* Gets the player by the given name, regardless if they are offline or online.
*
* This will return an object even if the player does not exist. To this method, all players will exist.
*
* @param name Name of the player to retrieve
* @return OfflinePlayer object
*/
public OfflinePlayer getOfflinePlayer(String name);
} }

View File

@ -18,4 +18,11 @@ public interface CommandSender extends Permissible {
* @return Server instance * @return Server instance
*/ */
public Server getServer(); public Server getServer();
/**
* Gets the name of this command sender
*
* @return Name of the sender
*/
public String getName();
} }

View File

@ -83,4 +83,8 @@ public class ConsoleCommandSender implements CommandSender {
public Set<PermissionAttachmentInfo> getEffectivePermissions() { public Set<PermissionAttachmentInfo> getEffectivePermissions() {
return perm.getEffectivePermissions(); return perm.getEffectivePermissions();
} }
public String getName() {
return "CONSOLE";
}
} }

View File

@ -1,31 +1,27 @@
package org.bukkit.command; package org.bukkit.command;
import org.bukkit.command.defaults.ReloadCommand;
import org.bukkit.command.defaults.PluginsCommand;
import org.bukkit.command.defaults.*; import org.bukkit.command.defaults.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.Iterator; import java.util.Iterator;
import org.bukkit.ChatColor;
import org.bukkit.Server; import org.bukkit.Server;
import org.bukkit.plugin.Plugin;
import static org.bukkit.util.Java15Compat.Arrays_copyOfRange; import static org.bukkit.util.Java15Compat.Arrays_copyOfRange;
public final class SimpleCommandMap implements CommandMap { public final class SimpleCommandMap implements CommandMap {
private final Map<String, Command> knownCommands = new HashMap<String, Command>(); private final Map<String, Command> knownCommands = new HashMap<String, Command>();
private final Set<String> aliases = new HashSet<String>(); private final Set<String> aliases = new HashSet<String>();
private final Server server; private final Server server;
private static final Set<Command> fallbackCommands = new HashSet<Command>();
static {
fallbackCommands.add(new ListCommand());
fallbackCommands.add(new StopCommand());
fallbackCommands.add(new SaveCommand());
fallbackCommands.add(new SaveOnCommand());
fallbackCommands.add(new SaveOffCommand());
fallbackCommands.add(new OpCommand());
fallbackCommands.add(new DeopCommand());
}
public SimpleCommandMap(final Server server) { public SimpleCommandMap(final Server server) {
this.server = server; this.server = server;
@ -114,16 +110,6 @@ public final class SimpleCommandMap implements CommandMap {
return registerdPassedLabel; return registerdPassedLabel;
} }
private Command getFallback(String label) {
for (Command cmd : fallbackCommands) {
if (label.startsWith(cmd.getName().toLowerCase())) {
return cmd;
}
}
return null;
}
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
@ -136,9 +122,6 @@ public final class SimpleCommandMap implements CommandMap {
String sentCommandLabel = args[0].toLowerCase(); String sentCommandLabel = args[0].toLowerCase();
Command target = getCommand(sentCommandLabel); Command target = getCommand(sentCommandLabel);
if (target == null) {
target = getFallback(sentCommandLabel);
}
if (target == null) { if (target == null) {
return false; return false;
} }

View File

@ -9,13 +9,14 @@ import org.bukkit.Material;
import org.bukkit.Note; import org.bukkit.Note;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.Statistic; import org.bukkit.Statistic;
import org.bukkit.command.CommandSender;
import org.bukkit.map.MapView; import org.bukkit.map.MapView;
/** /**
* Represents a player, connected or not * Represents a player, connected or not
* *
*/ */
public interface Player extends HumanEntity, OfflinePlayer { public interface Player extends HumanEntity, CommandSender, OfflinePlayer {
/** /**
* Gets the "friendly" name to display of this player. This may include color. * Gets the "friendly" name to display of this player. This may include color.
* *

View File

@ -159,7 +159,7 @@ public class PermissibleBase implements Permissible {
dirtyPermissions = true; dirtyPermissions = true;
} }
private synchronized void calculatePermissions() { public synchronized void calculatePermissions() {
if (dirtyPermissions) { if (dirtyPermissions) {
clearPermissions(); clearPermissions();
Set<Permission> defaults = Bukkit.getServer().getPluginManager().getDefaultPermissions(isOp()); Set<Permission> defaults = Bukkit.getServer().getPluginManager().getDefaultPermissions(isOp());

View File

@ -449,15 +449,13 @@ public final class SimplePluginManager implements PluginManager {
} }
private void calculatePermissionDefault(Permission perm) { private void calculatePermissionDefault(Permission perm) {
if (!perm.getChildren().isEmpty()) { if ((perm.getDefault() == PermissionDefault.OP) || (perm.getDefault() == PermissionDefault.TRUE)) {
if ((perm.getDefault() == PermissionDefault.OP) || (perm.getDefault() == PermissionDefault.TRUE)) { defaultPerms.get(true).add(perm);
defaultPerms.get(true).add(perm); dirtyPermissibles(true);
dirtyPermissibles(true); }
} if ((perm.getDefault() == PermissionDefault.NOT_OP) || (perm.getDefault() == PermissionDefault.TRUE)) {
if ((perm.getDefault() == PermissionDefault.NOT_OP) || (perm.getDefault() == PermissionDefault.TRUE)) { defaultPerms.get(false).add(perm);
defaultPerms.get(false).add(perm); dirtyPermissibles(false);
dirtyPermissibles(false);
}
} }
} }