From 9796d2421fbe443352ceefb270ea7cd5f7f177c0 Mon Sep 17 00:00:00 2001 From: Luck Date: Sat, 7 Nov 2020 11:40:26 +0000 Subject: [PATCH] Player context calculator fixes, fix compat with Sponge API 7 (#2703) --- .../context/BukkitPlayerCalculator.java | 6 ++--- .../context/BungeePlayerCalculator.java | 2 +- .../common/context/WorldNameRewriter.java | 2 +- .../context/NukkitPlayerCalculator.java | 6 ++++- .../context/SpongePlayerCalculator.java | 26 +++++++++++-------- .../context/VelocityPlayerCalculator.java | 2 +- 6 files changed, 26 insertions(+), 18 deletions(-) diff --git a/bukkit/src/main/java/me/lucko/luckperms/bukkit/context/BukkitPlayerCalculator.java b/bukkit/src/main/java/me/lucko/luckperms/bukkit/context/BukkitPlayerCalculator.java index 1bdcfda2e..72e0dd27d 100644 --- a/bukkit/src/main/java/me/lucko/luckperms/bukkit/context/BukkitPlayerCalculator.java +++ b/bukkit/src/main/java/me/lucko/luckperms/bukkit/context/BukkitPlayerCalculator.java @@ -90,9 +90,9 @@ public class BukkitPlayerCalculator implements ContextCalculator, 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(); diff --git a/bungee/src/main/java/me/lucko/luckperms/bungee/context/BungeePlayerCalculator.java b/bungee/src/main/java/me/lucko/luckperms/bungee/context/BungeePlayerCalculator.java index 7c12921bb..0c670dff1 100644 --- a/bungee/src/main/java/me/lucko/luckperms/bungee/context/BungeePlayerCalculator.java +++ b/bungee/src/main/java/me/lucko/luckperms/bungee/context/BungeePlayerCalculator.java @@ -63,7 +63,7 @@ public class BungeePlayerCalculator implements ContextCalculator, 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(); } diff --git a/common/src/main/java/me/lucko/luckperms/common/context/WorldNameRewriter.java b/common/src/main/java/me/lucko/luckperms/common/context/WorldNameRewriter.java index 19a443cde..148ee01d4 100644 --- a/common/src/main/java/me/lucko/luckperms/common/context/WorldNameRewriter.java +++ b/common/src/main/java/me/lucko/luckperms/common/context/WorldNameRewriter.java @@ -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); } } } diff --git a/nukkit/src/main/java/me/lucko/luckperms/nukkit/context/NukkitPlayerCalculator.java b/nukkit/src/main/java/me/lucko/luckperms/nukkit/context/NukkitPlayerCalculator.java index 2065823d0..bffb68c43 100644 --- a/nukkit/src/main/java/me/lucko/luckperms/nukkit/context/NukkitPlayerCalculator.java +++ b/nukkit/src/main/java/me/lucko/luckperms/nukkit/context/NukkitPlayerCalculator.java @@ -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, 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(); } diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/context/SpongePlayerCalculator.java b/sponge/src/main/java/me/lucko/luckperms/sponge/context/SpongePlayerCalculator.java index 090a231f4..169974101 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/context/SpongePlayerCalculator.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/context/SpongePlayerCalculator.java @@ -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 { 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 { 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) diff --git a/velocity/src/main/java/me/lucko/luckperms/velocity/context/VelocityPlayerCalculator.java b/velocity/src/main/java/me/lucko/luckperms/velocity/context/VelocityPlayerCalculator.java index 2a9435f94..075743829 100644 --- a/velocity/src/main/java/me/lucko/luckperms/velocity/context/VelocityPlayerCalculator.java +++ b/velocity/src/main/java/me/lucko/luckperms/velocity/context/VelocityPlayerCalculator.java @@ -64,7 +64,7 @@ public class VelocityPlayerCalculator implements ContextCalculator { 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(); }