mirror of
https://github.com/LuckPerms/LuckPerms.git
synced 2025-02-16 04:21:25 +01:00
Player context calculator fixes, fix compat with Sponge API 7 (#2703)
This commit is contained in:
parent
0ea0ce9d26
commit
9796d2421f
@ -90,9 +90,9 @@ public class BukkitPlayerCalculator implements ContextCalculator<Player>, Listen
|
||||
builder.add(DefaultContextKeys.DIMENSION_TYPE_KEY, DIMENSION_TYPE_NAMER.name(env));
|
||||
}
|
||||
for (World world : this.plugin.getBootstrap().getServer().getWorlds()) {
|
||||
String name = world.getName().toLowerCase();
|
||||
if (Context.isValidValue(name)) {
|
||||
builder.add(DefaultContextKeys.WORLD_KEY, name);
|
||||
String worldName = world.getName();
|
||||
if (Context.isValidValue(worldName)) {
|
||||
builder.add(DefaultContextKeys.WORLD_KEY, worldName);
|
||||
}
|
||||
}
|
||||
return builder.build();
|
||||
|
@ -63,7 +63,7 @@ public class BungeePlayerCalculator implements ContextCalculator<ProxiedPlayer>,
|
||||
public ContextSet estimatePotentialContexts() {
|
||||
ImmutableContextSet.Builder builder = new ImmutableContextSetImpl.BuilderImpl();
|
||||
for (ServerInfo server : this.plugin.getBootstrap().getProxy().getServers().values()) {
|
||||
builder.add(DefaultContextKeys.WORLD_KEY, server.getName().toLowerCase());
|
||||
builder.add(DefaultContextKeys.WORLD_KEY, server.getName());
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
|
@ -54,7 +54,7 @@ public interface WorldNameRewriter {
|
||||
@Override
|
||||
public void rewriteAndSubmit(String worldName, ContextConsumer consumer) {
|
||||
if (Context.isValidValue(worldName)) {
|
||||
consumer.accept(DefaultContextKeys.WORLD_KEY, worldName.toLowerCase());
|
||||
consumer.accept(DefaultContextKeys.WORLD_KEY, worldName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -29,6 +29,7 @@ import me.lucko.luckperms.common.config.ConfigKeys;
|
||||
import me.lucko.luckperms.common.context.contextset.ImmutableContextSetImpl;
|
||||
import me.lucko.luckperms.nukkit.LPNukkitPlugin;
|
||||
|
||||
import net.luckperms.api.context.Context;
|
||||
import net.luckperms.api.context.ContextCalculator;
|
||||
import net.luckperms.api.context.ContextConsumer;
|
||||
import net.luckperms.api.context.ContextSet;
|
||||
@ -74,7 +75,10 @@ public class NukkitPlayerCalculator implements ContextCalculator<Player>, Listen
|
||||
builder.add(DefaultContextKeys.DIMENSION_TYPE_KEY, getDimensionName(dim));
|
||||
}
|
||||
for (Level world : this.plugin.getBootstrap().getServer().getLevels().values()) {
|
||||
builder.add(DefaultContextKeys.WORLD_KEY, world.getName().toLowerCase());
|
||||
String worldName = world.getName();
|
||||
if (Context.isValidValue(worldName)) {
|
||||
builder.add(DefaultContextKeys.WORLD_KEY, worldName);
|
||||
}
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
|
@ -29,6 +29,7 @@ import me.lucko.luckperms.common.config.ConfigKeys;
|
||||
import me.lucko.luckperms.common.context.contextset.ImmutableContextSetImpl;
|
||||
import me.lucko.luckperms.sponge.LPSpongePlugin;
|
||||
|
||||
import net.luckperms.api.context.Context;
|
||||
import net.luckperms.api.context.ContextCalculator;
|
||||
import net.luckperms.api.context.ContextConsumer;
|
||||
import net.luckperms.api.context.ContextSet;
|
||||
@ -36,7 +37,7 @@ import net.luckperms.api.context.DefaultContextKeys;
|
||||
import net.luckperms.api.context.ImmutableContextSet;
|
||||
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import org.spongepowered.api.CatalogKey;
|
||||
import org.spongepowered.api.CatalogType;
|
||||
import org.spongepowered.api.CatalogTypes;
|
||||
import org.spongepowered.api.Game;
|
||||
import org.spongepowered.api.command.CommandSource;
|
||||
@ -70,13 +71,13 @@ public class SpongePlayerCalculator implements ContextCalculator<Subject> {
|
||||
|
||||
if (source instanceof Locatable) {
|
||||
World world = ((Locatable) source).getWorld();
|
||||
consumer.accept(DefaultContextKeys.DIMENSION_TYPE_KEY, getCatalogKeyName(world.getDimension().getType().getKey()));
|
||||
consumer.accept(DefaultContextKeys.DIMENSION_TYPE_KEY, getCatalogTypeName(world.getDimension().getType()));
|
||||
this.plugin.getConfiguration().get(ConfigKeys.WORLD_REWRITES).rewriteAndSubmit(world.getName(), consumer);
|
||||
}
|
||||
|
||||
if (source instanceof ValueContainer<?>) {
|
||||
ValueContainer<?> valueContainer = (ValueContainer<?>) source;
|
||||
valueContainer.get(Keys.GAME_MODE).ifPresent(mode -> consumer.accept(DefaultContextKeys.GAMEMODE_KEY, getCatalogKeyName(mode.getKey())));
|
||||
valueContainer.get(Keys.GAME_MODE).ifPresent(mode -> consumer.accept(DefaultContextKeys.GAMEMODE_KEY, getCatalogTypeName(mode)));
|
||||
}
|
||||
}
|
||||
|
||||
@ -86,26 +87,29 @@ public class SpongePlayerCalculator implements ContextCalculator<Subject> {
|
||||
Game game = this.plugin.getBootstrap().getGame();
|
||||
|
||||
for (GameMode mode : game.getRegistry().getAllOf(CatalogTypes.GAME_MODE)) {
|
||||
builder.add(DefaultContextKeys.GAMEMODE_KEY, getCatalogKeyName(mode.getKey()));
|
||||
builder.add(DefaultContextKeys.GAMEMODE_KEY, getCatalogTypeName(mode));
|
||||
}
|
||||
for (DimensionType dim : game.getRegistry().getAllOf(CatalogTypes.DIMENSION_TYPE)) {
|
||||
builder.add(DefaultContextKeys.DIMENSION_TYPE_KEY, getCatalogKeyName(dim.getKey()));
|
||||
builder.add(DefaultContextKeys.DIMENSION_TYPE_KEY, getCatalogTypeName(dim));
|
||||
}
|
||||
if (game.isServerAvailable()) {
|
||||
for (World world : game.getServer().getWorlds()) {
|
||||
builder.add(DefaultContextKeys.WORLD_KEY, world.getName().toLowerCase());
|
||||
String worldName = world.getName();
|
||||
if (Context.isValidValue(worldName)) {
|
||||
builder.add(DefaultContextKeys.WORLD_KEY, worldName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
private static String getCatalogKeyName(CatalogKey key) {
|
||||
if (key.getNamespace().equals(CatalogKey.MINECRAFT_NAMESPACE)) {
|
||||
return key.getValue();
|
||||
} else {
|
||||
return key.toString();
|
||||
private static String getCatalogTypeName(CatalogType type) {
|
||||
String id = type.getId();
|
||||
if (id.startsWith("minecraft:")){
|
||||
return id.substring("minecraft:".length());
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
@Listener(order = Order.LAST)
|
||||
|
@ -64,7 +64,7 @@ public class VelocityPlayerCalculator implements ContextCalculator<Player> {
|
||||
public ContextSet estimatePotentialContexts() {
|
||||
ImmutableContextSet.Builder builder = new ImmutableContextSetImpl.BuilderImpl();
|
||||
for (RegisteredServer server : this.plugin.getBootstrap().getProxy().getAllServers()) {
|
||||
builder.add(DefaultContextKeys.WORLD_KEY, server.getServerInfo().getName().toLowerCase());
|
||||
builder.add(DefaultContextKeys.WORLD_KEY, server.getServerInfo().getName());
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user