Java 类org.bukkit.permissions.Permissible 实例源码
项目:LuckPerms
文件:LPSubscriptionMap.java
@Override
public Map<Permissible, Boolean> get(Object key) {
if (key == null || !(key instanceof String)) {
return null;
}
String permission = ((String) key);
Map<Permissible, Boolean> result = super.get(key);
if (result == null) {
// calculate a new map - always!
result = new LPSubscriptionValueMap(permission);
super.put(permission, result);
} else if (!(result instanceof LPSubscriptionValueMap)) {
// ensure return type is a LPSubscriptionMap
result = new LPSubscriptionValueMap(permission, result);
super.put(permission, result);
}
return result;
}
项目:LuckPerms
文件:SubscriptionMapInjector.java
private void inject() throws Exception {
PluginManager pluginManager = this.plugin.getServer().getPluginManager();
if (!(pluginManager instanceof SimplePluginManager)) {
this.plugin.getLog().severe("PluginManager instance is not a 'SimplePluginManager', instead: " + pluginManager.getClass());
this.plugin.getLog().severe("Unable to inject LuckPerms Permission Subscription map.");
return;
}
Object map = PERM_SUBS_FIELD.get(pluginManager);
if (map instanceof LPSubscriptionMap) {
return; // already injected
}
//noinspection unchecked
Map<String, Map<Permissible, Boolean>> castedMap = (Map<String, Map<Permissible, Boolean>>) map;
// make a new subscription map
LPSubscriptionMap newMap = new LPSubscriptionMap(this.plugin, castedMap);
// inject it
PERM_SUBS_FIELD.set(pluginManager, newMap);
}
项目:craftinomicon
文件:UpdateChecker.java
public List<String> getUpdateText(Permissible player) {
long yesterday = System.currentTimeMillis() - 1000l * 60 * 60 * 24;
boolean isEnabled = lastNonNullGetUpdateText > yesterday;
try {
if (readerProvider == null) return null;
if (!player.hasPermission(upgradePermission)) return null;
lastNonNullGetUpdateText = System.currentTimeMillis();
isEnabled = true;
List<String> text;
synchronized (this) {
if (lastUpgradeCheck < yesterday) {
enabled.set(1);
lastUpgradeCheck = System.currentTimeMillis();
asynchronousRunnableExecutor.runTaskAsynchronously(new GetLatestVersion());
} else {
enabled.set(0);
}
text = upgradeText;
}
return text;
} finally {
enabled.set(isEnabled ? 1 : 0);
}
}
项目:craftinomicon
文件:UpdateCheckerTest.java
@Test
public void testRecentlyUpdated() throws Exception {
PluginDescriptionFile pluginDescriptionFile = new PluginDescriptionFile(new StringReader("name: craftinomicon\nmain: name.ball.joshua.craftinomicon.Craftinomicon\nversion: 0.2"));
when(plugin.getDescription()).thenReturn(pluginDescriptionFile);
updateChecker.lastUpgradeCheck = System.currentTimeMillis() - 1000l * 60 * 60 * 12;
updateChecker.upgradeText = new ArrayList<String>();
updateChecker.upgradeText.add("hello");
Permissible permissible = mock(Permissible.class);
when(permissible.hasPermission(any(Permission.class))).thenReturn(true);
List<String> updateText = updateChecker.getUpdateText(permissible);
assertEquals(1, updateText.size());
assertEquals("hello", updateText.get(0));
}
项目:craftinomicon
文件:UpdateCheckerTest.java
@Test
public void testUpdateContainsFrenchAndGerman() throws Exception {
PluginDescriptionFile pluginDescriptionFile = new PluginDescriptionFile(new StringReader("name: craftinomicon\nmain: name.ball.joshua.craftinomicon.Craftinomicon\nversion: 0.2"));
when(plugin.getDescription()).thenReturn(pluginDescriptionFile);
Permissible permissible = mock(Permissible.class);
when(permissible.hasPermission(any(Permission.class))).thenReturn(true);
setApiResponse("0.2.1.25165825");
updateChecker.afterPropertiesSet();
List<String> updateText = updateChecker.getUpdateText(permissible);
assertEquals(2, updateText.size());
assertEquals("French language option!", updateText.get(0));
assertEquals("German language option!", updateText.get(1));
}
项目:craftinomicon
文件:UpdateCheckerTest.java
@Test
public void testUpdateContainsOnlyUnpredictedFeatures() throws Exception {
PluginDescriptionFile pluginDescriptionFile = new PluginDescriptionFile(new StringReader("name: craftinomicon\nmain: name.ball.joshua.craftinomicon.Craftinomicon\nversion: 0.2"));
when(plugin.getDescription()).thenReturn(pluginDescriptionFile);
Permissible permissible = mock(Permissible.class);
when(permissible.hasPermission(any(Permission.class))).thenReturn(true);
setApiResponse("0.2.1.5");
updateChecker.afterPropertiesSet();
List<String> updateText = updateChecker.getUpdateText(permissible);
assertEquals(1, updateText.size());
assertEquals("New features!", updateText.get(0));
}
项目:craftinomicon
文件:UpdateCheckerTest.java
@Test
public void testUpdateContainsBugFixesAndUnpredictedFeatures() throws Exception {
PluginDescriptionFile pluginDescriptionFile = new PluginDescriptionFile(new StringReader("name: craftinomicon\nmain: name.ball.joshua.craftinomicon.Craftinomicon\nversion: 0.2"));
when(plugin.getDescription()).thenReturn(pluginDescriptionFile);
Permissible permissible = mock(Permissible.class);
when(permissible.hasPermission(any(Permission.class))).thenReturn(true);
setApiResponse("0.2.1.7");
updateChecker.afterPropertiesSet();
List<String> updateText = updateChecker.getUpdateText(permissible);
assertEquals(2, updateText.size());
assertEquals("Bug fixes!", updateText.get(0));
assertEquals("Additional new features not listed here!", updateText.get(1));
}
项目:craftinomicon
文件:UpdateCheckerTest.java
@Test
public void testUpdateContainsPotionsAndUnpredictedFeatures() throws Exception {
PluginDescriptionFile pluginDescriptionFile = new PluginDescriptionFile(new StringReader("name: craftinomicon\nmain: name.ball.joshua.craftinomicon.Craftinomicon\nversion: 0.2"));
when(plugin.getDescription()).thenReturn(pluginDescriptionFile);
Permissible permissible = mock(Permissible.class);
when(permissible.hasPermission(any(Permission.class))).thenReturn(true);
setApiResponse("0.2.1.37");
updateChecker.afterPropertiesSet();
List<String> updateText = updateChecker.getUpdateText(permissible);
assertEquals(2, updateText.size());
assertEquals("Potions!", updateText.get(0));
assertEquals("Additional new features not listed here!", updateText.get(1));
}
项目:craftinomicon
文件:UpdateCheckerTest.java
@Test
public void testSNAPSHOT() throws Exception {
PluginDescriptionFile pluginDescriptionFile = new PluginDescriptionFile(new StringReader("name: craftinomicon\nmain: name.ball.joshua.craftinomicon.Craftinomicon\nversion: 0.2-SNAPSHOT"));
when(plugin.getDescription()).thenReturn(pluginDescriptionFile);
Permissible permissible = mock(Permissible.class);
when(permissible.hasPermission(any(Permission.class))).thenReturn(true);
setApiResponse("0.2.1.37");
updateChecker.afterPropertiesSet();
List<String> updateText = updateChecker.getUpdateText(permissible);
assertEquals(2, updateText.size());
assertEquals("Potions!", updateText.get(0));
assertEquals("Additional new features not listed here!", updateText.get(1));
}
项目:PowerfulPerms
文件:PermissibleBaseInjector.java
public Permissible inject(Player player, Permissible permissible) throws NoSuchFieldException, IllegalAccessException {
Field permField = null;
try {
permField = getPermissibleField(player);
} catch (Exception e) {
}
if (permField == null) {
return null;
}
Permissible oldPerm = (Permissible) permField.get(player);
if (permissible instanceof PermissibleBase) {
PermissibleBase newBase = (PermissibleBase) permissible;
permField.set(player, newBase);
}
// Inject permissible
permField.set(player, permissible);
return oldPerm;
}
项目:ultrahardcore
文件:RecipeFeature.java
/**
* Is the recipe allowed?
*
* @param permissible Permissible the permissible to check against
* @param recipe the recipe to check
* @return boolean true if allowed, false if not
*/
private static boolean isRecipeAllowedForPermissible(Permissible permissible, Recipe recipe)
{
Material result = recipe.getResult().getType();
if(result == Material.SPECKLED_MELON && hasRecipeGotMaterial(recipe, Material.GOLD_NUGGET) && permissible.hasPermission(DISALLOW_OLD_GMELON)) {
return false;
}
if(result == Material.SPECKLED_MELON && hasRecipeGotMaterial(recipe, Material.GOLD_BLOCK) && permissible.hasPermission(ALLOW_NEW_GMELON)) {
return false;
}
if(result == Material.GOLDEN_CARROT && hasRecipeGotMaterial(recipe, Material.GOLD_NUGGET) && permissible.hasPermission(DISALLOW_OLD_GCARROT)) {
return false;
}
if(result == Material.GOLDEN_CARROT && hasRecipeGotMaterial(recipe, Material.GOLD_INGOT) && permissible.hasPermission(ALLOW_NEW_GCARROT)) {
return false;
}
//passed all checks
return true;
}
项目:Uranium
文件:CraftServer.java
@Override
public int broadcast(String message, String permission) {
int count = 0;
Set<Permissible> permissibles = getPluginManager().getPermissionSubscriptions(permission);
for (Permissible permissible : permissibles) {
if (permissible instanceof CommandSender && permissible.hasPermission(permission)) {
CommandSender user = (CommandSender) permissible;
user.sendMessage(message);
count++;
}
}
return count;
}
项目:MooProject
文件:PermissionInjector.java
/**
* Inject new permissible base into given commandSender
*
* @param sender The sender
* @param permissible The permissible base
* @return The result
*/
public static boolean inject(CommandSender sender, Permissible permissible) {
Field f = getPermissibleField(sender);
try {
f.set(sender, permissible);
return true;
}
catch(IllegalAccessException e) {
return false;
}
}
项目:MooProject
文件:PermissionInjector.java
/**
* Get permissible object from given sender
*
* @param sender The sender
* @return The permissible object
*/
public static Permissible getPermissible(CommandSender sender) {
Field f = getPermissibleField(sender);
if(f == null) {
return null;
}
try {
return (Permissible) f.get(sender);
}
catch(IllegalAccessException e) {
e.printStackTrace();
return null;
}
}
项目:MooProject
文件:ServerListener.java
/**
* When the player joins the server
* <p>
* SERVER JOIN
*/
@EventHandler(priority = EventPriority.HIGHEST)
public void onJoin(PlayerJoinEvent event) {
if(!Moo.getInstance().isConnected()) return;
event.setJoinMessage(null);
Player player = event.getPlayer();
PlayerData data = new PlayerData();
data.setUuid(player.getUniqueId());
data.setLastName(player.getName());
data.setLastIp(player.getAddress().getHostString());
// changes state
Permissible oldPermissible = PermissionInjector.getPermissible(player);
CustomPermissible customPermissible = new CustomPermissible(player, data.getUuid(), oldPermissible);
PermissionInjector.inject(player, customPermissible);
MooQueries.getInstance().changePlayerState(data, PacketPlayerState.State.JOIN_SERVER, response -> {
});
// UPDATE SERVER INFO
Lightning.getInstance().updateServerInfo();
// SET JOIN MESSAGE
String playerName = MooQueries.getInstance().getGroup(player.getUniqueId()).getColor() + player.getName();
Bukkit.getServer().broadcastMessage(LanguageManager.get("join-message-pattern", playerName));
}
项目:ProjectAres
文件:PermissionGroupListener.java
private void updateServer(@Nullable Server before, Server after) {
boolean dirty = false;
dirty |= updatePermission(Permissions.OBSERVER, before == null ? null : before.observer_permissions(), after.observer_permissions());
dirty |= updatePermission(Permissions.PARTICIPANT, before == null ? null : before.participant_permissions(), after.participant_permissions());
dirty |= updatePermission(Permissions.MAPMAKER, before == null ? null : before.mapmaker_permissions(), after.mapmaker_permissions());
if(dirty) {
onlinePlayers.all().forEach(Permissible::recalculatePermissions);
}
}
项目:SpigotCommandLib
文件:SubCommand.java
/**
* Check if {@code caller} has permission to execute this {@code SubCommand}
* and all super commands.
* @param caller the caller executing the sub command
* @return true iff the called has permission to execute this and all super commands.
*/
public boolean canExecute(Permissible caller) {
for (String permission : this.permissions) {
if (caller.hasPermission(permission) && (this.isBase() || this.superCommand.canExecute(caller))) return true;
}
return false;
}
项目:LuckPerms
文件:LPSubscriptionMap.java
@Override
public Map<Permissible, Boolean> put(String key, Map<Permissible, Boolean> value) {
if (value == null) {
throw new NullPointerException("Map value cannot be null");
}
// ensure values are LP subscription maps
if (!(value instanceof LPSubscriptionValueMap)) {
value = new LPSubscriptionValueMap(key, value);
}
return super.put(key, value);
}
项目:LuckPerms
文件:LPSubscriptionMap.java
/**
* Converts this map back to a standard HashMap
*
* @return a standard representation of this map
*/
public Map<String, Map<Permissible, Boolean>> detach() {
Map<String, Map<Permissible, Boolean>> ret = new HashMap<>();
for (Map.Entry<String, Map<Permissible, Boolean>> ent : entrySet()) {
if (ent.getValue() instanceof LPSubscriptionValueMap) {
ret.put(ent.getKey(), ((LPSubscriptionValueMap) ent.getValue()).backing);
} else {
ret.put(ent.getKey(), ent.getValue());
}
}
return ret;
}
项目:LuckPerms
文件:LPSubscriptionMap.java
@Nonnull
@Override
public Set<Permissible> keySet() {
// gather players (LPPermissibles)
Set<Permissible> players = LPSubscriptionMap.this.plugin.getServer().getOnlinePlayers().stream()
.filter(player -> player.isPermissionSet(this.permission))
.collect(Collectors.toSet());
// then combine the players with the backing map
return Sets.union(players, this.backing.keySet());
}
项目:LuckPerms
文件:LPSubscriptionMap.java
@Nonnull
@Override
public Set<Entry<Permissible, Boolean>> entrySet() {
return keySet().stream()
.map(p -> {
Boolean ret = get(p);
return ret != null ? Maps.immutableEntry(p, ret) : null;
})
.filter(Objects::nonNull)
.collect(ImmutableCollectors.toSet());
}
项目:GriefPreventionFlags
文件:GPFlags.java
private MessageSpecifier getFlagDefsMessage(Permissible player)
{
StringBuilder flagDefsList = new StringBuilder();
Collection<FlagDefinition> defs = this.flagManager.GetFlagDefinitions();
for(FlagDefinition def : defs)
{
if(this.playerHasPermissionForFlag(def, player))
{
flagDefsList.append(def.getName() + " ");
}
}
return new MessageSpecifier(Messages.InvalidFlagDefName, flagDefsList.toString());
}
项目:ThermosRebased
文件:CraftServer.java
@Override
public int broadcast(String message, String permission) {
int count = 0;
Set<Permissible> permissibles = getPluginManager().getPermissionSubscriptions(permission);
for (Permissible permissible : permissibles) {
if (permissible instanceof CommandSender && permissible.hasPermission(permission)) {
CommandSender user = (CommandSender) permissible;
user.sendMessage(message);
count++;
}
}
return count;
}
项目:Thermos-Bukkit
文件:SimplePluginManager.java
private void dirtyPermissibles(boolean op) {
Set<Permissible> permissibles = getDefaultPermSubscriptions(op);
for (Permissible p : permissibles) {
p.recalculatePermissions();
}
}
项目:Thermos-Bukkit
文件:SimplePluginManager.java
public void subscribeToPermission(String permission, Permissible permissible) {
String name = permission.toLowerCase();
Map<Permissible, Boolean> map = permSubs.get(name);
if (map == null) {
map = new WeakHashMap<Permissible, Boolean>();
permSubs.put(name, map);
}
map.put(permissible, true);
}
项目:Thermos-Bukkit
文件:SimplePluginManager.java
public void unsubscribeFromPermission(String permission, Permissible permissible) {
String name = permission.toLowerCase();
Map<Permissible, Boolean> map = permSubs.get(name);
if (map != null) {
map.remove(permissible);
if (map.isEmpty()) {
permSubs.remove(name);
}
}
}
项目:Thermos-Bukkit
文件:SimplePluginManager.java
public Set<Permissible> getPermissionSubscriptions(String permission) {
String name = permission.toLowerCase();
Map<Permissible, Boolean> map = permSubs.get(name);
if (map == null) {
return ImmutableSet.of();
} else {
return ImmutableSet.copyOf(map.keySet());
}
}
项目:Thermos-Bukkit
文件:SimplePluginManager.java
public void subscribeToDefaultPerms(boolean op, Permissible permissible) {
Map<Permissible, Boolean> map = defSubs.get(op);
if (map == null) {
map = new WeakHashMap<Permissible, Boolean>();
defSubs.put(op, map);
}
map.put(permissible, true);
}
项目:Thermos-Bukkit
文件:SimplePluginManager.java
public void unsubscribeFromDefaultPerms(boolean op, Permissible permissible) {
Map<Permissible, Boolean> map = defSubs.get(op);
if (map != null) {
map.remove(permissible);
if (map.isEmpty()) {
defSubs.remove(op);
}
}
}
项目:Thermos-Bukkit
文件:SimplePluginManager.java
public Set<Permissible> getDefaultPermSubscriptions(boolean op) {
Map<Permissible, Boolean> map = defSubs.get(op);
if (map == null) {
return ImmutableSet.of();
} else {
return ImmutableSet.copyOf(map.keySet());
}
}
项目:Thermos-Bukkit
文件:Command.java
public static void broadcastCommandMessage(CommandSender source, String message, boolean sendToSource) {
String result = source.getName() + ": " + message;
if (source instanceof BlockCommandSender) {
BlockCommandSender blockCommandSender = (BlockCommandSender) source;
if (blockCommandSender.getBlock().getWorld().getGameRuleValue("commandBlockOutput").equalsIgnoreCase("false")) {
Bukkit.getConsoleSender().sendMessage(result);
return;
}
} else if (source instanceof CommandMinecart) {
CommandMinecart commandMinecart = (CommandMinecart) source;
if (commandMinecart.getWorld().getGameRuleValue("commandBlockOutput").equalsIgnoreCase("false")) {
Bukkit.getConsoleSender().sendMessage(result);
return;
}
}
Set<Permissible> users = Bukkit.getPluginManager().getPermissionSubscriptions(Server.BROADCAST_CHANNEL_ADMINISTRATIVE);
String colored = ChatColor.GRAY + "" + ChatColor.ITALIC + "[" + result + ChatColor.GRAY + ChatColor.ITALIC + "]";
if (sendToSource && !(source instanceof ConsoleCommandSender)) {
source.sendMessage(message);
}
for (Permissible user : users) {
if (user instanceof CommandSender) {
CommandSender target = (CommandSender) user;
if (target instanceof ConsoleCommandSender) {
target.sendMessage(result);
} else if (target != source) {
target.sendMessage(colored);
}
}
}
}
项目:ExilePearl
文件:TestPluginManager.java
private void dirtyPermissibles(boolean op) {
Set<Permissible> permissibles = getDefaultPermSubscriptions(op);
for (Permissible p : permissibles) {
p.recalculatePermissions();
}
}
项目:ExilePearl
文件:TestPluginManager.java
@Override
public void subscribeToPermission(String permission, Permissible permissible) {
String name = permission.toLowerCase(java.util.Locale.ENGLISH);
Map<Permissible, Boolean> map = permSubs.get(name);
if (map == null) {
map = new WeakHashMap<Permissible, Boolean>();
permSubs.put(name, map);
}
map.put(permissible, true);
}
项目:ExilePearl
文件:TestPluginManager.java
@Override
public void unsubscribeFromPermission(String permission, Permissible permissible) {
String name = permission.toLowerCase(java.util.Locale.ENGLISH);
Map<Permissible, Boolean> map = permSubs.get(name);
if (map != null) {
map.remove(permissible);
if (map.isEmpty()) {
permSubs.remove(name);
}
}
}
项目:ExilePearl
文件:TestPluginManager.java
@Override
public Set<Permissible> getPermissionSubscriptions(String permission) {
String name = permission.toLowerCase(java.util.Locale.ENGLISH);
Map<Permissible, Boolean> map = permSubs.get(name);
if (map == null) {
return ImmutableSet.of();
} else {
return ImmutableSet.copyOf(map.keySet());
}
}
项目:ExilePearl
文件:TestPluginManager.java
@Override
public void subscribeToDefaultPerms(boolean op, Permissible permissible) {
Map<Permissible, Boolean> map = defSubs.get(op);
if (map == null) {
map = new WeakHashMap<Permissible, Boolean>();
defSubs.put(op, map);
}
map.put(permissible, true);
}
项目:ExilePearl
文件:TestPluginManager.java
@Override
public void unsubscribeFromDefaultPerms(boolean op, Permissible permissible) {
Map<Permissible, Boolean> map = defSubs.get(op);
if (map != null) {
map.remove(permissible);
if (map.isEmpty()) {
defSubs.remove(op);
}
}
}
项目:ExilePearl
文件:TestPluginManager.java
@Override
public Set<Permissible> getDefaultPermSubscriptions(boolean op) {
Map<Permissible, Boolean> map = defSubs.get(op);
if (map == null) {
return ImmutableSet.of();
} else {
return ImmutableSet.copyOf(map.keySet());
}
}
项目:ExilePearl
文件:TestServer.java
@Override
public int broadcast(String message, String permission) {
int count = 0;
Set<Permissible> permissibles = getPluginManager().getPermissionSubscriptions(permission);
for (Permissible permissible : permissibles) {
if (permissible instanceof CommandSender && permissible.hasPermission(permission)) {
CommandSender user = (CommandSender) permissible;
user.sendMessage(message);
count++;
}
}
return count;
}
项目:Thermos
文件:CraftServer.java
@Override
public int broadcast(String message, String permission) {
int count = 0;
Set<Permissible> permissibles = getPluginManager().getPermissionSubscriptions(permission);
for (Permissible permissible : permissibles) {
if (permissible instanceof CommandSender && permissible.hasPermission(permission)) {
CommandSender user = (CommandSender) permissible;
user.sendMessage(message);
count++;
}
}
return count;
}