1
0
mirror of https://github.com/lucko/LuckPerms.git synced 2025-08-22 14:12:48 +02:00

Update Sponge module to API 12

This commit is contained in:
Luck
2025-01-05 14:38:15 +00:00
parent 0fef481d48
commit 5b82837b80
18 changed files with 63 additions and 90 deletions

View File

@@ -29,7 +29,6 @@ import me.lucko.luckperms.common.locale.TranslationManager;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.TranslatableComponent;
import net.kyori.adventure.text.serializer.plain.PlainComponentSerializer;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import java.time.Duration;

View File

@@ -38,7 +38,7 @@ include (
'sponge',
'sponge:loader',
'sponge:sponge-service',
'sponge:sponge-service-api8',
'sponge:sponge-service-proxy',
'velocity',
'standalone',
'standalone:loader',

View File

@@ -2,6 +2,9 @@ plugins {
alias(libs.plugins.shadow)
}
sourceCompatibility = 17
targetCompatibility = 21
repositories {
maven { url 'https://repo.spongepowered.org/repository/maven-public/' }
}
@@ -9,15 +12,16 @@ repositories {
dependencies {
implementation project(':common')
implementation project(':sponge:sponge-service')
implementation project(':sponge:sponge-service-api8')
implementation project(':sponge:sponge-service-proxy')
compileOnly project(':common:loader-utils')
compileOnly('org.spongepowered:spongeapi:8.0.0') {
compileOnly('org.spongepowered:spongeapi:12.0.0') {
exclude(module: 'configurate-core')
exclude(module: 'configurate-hocon')
exclude(module: 'configurate-gson')
exclude(module: 'configurate-yaml')
}
compileOnly 'com.google.guava:guava:33.3.1-jre'
}
processResources {

View File

@@ -2,12 +2,15 @@ plugins {
alias(libs.plugins.shadow)
}
sourceCompatibility = 17
targetCompatibility = 21
repositories {
maven { url 'https://repo.spongepowered.org/repository/maven-public/' }
}
dependencies {
compileOnly 'org.spongepowered:spongeapi:8.0.0'
compileOnly 'org.spongepowered:spongeapi:12.0.0'
implementation project(':api')
implementation project(':common:loader-utils')

View File

@@ -23,7 +23,7 @@
"dependencies": [
{
"id": "spongeapi",
"version": "8.0.0"
"version": "12.0.0"
}
]
}

View File

@@ -2,11 +2,14 @@ repositories {
maven { url 'https://repo.spongepowered.org/repository/maven-public/' }
}
sourceCompatibility = 17
targetCompatibility = 21
dependencies {
implementation project(':common')
implementation project(':sponge:sponge-service')
compileOnly('org.spongepowered:spongeapi:8.0.0') {
compileOnly('org.spongepowered:spongeapi:12.0.0') {
exclude(module: 'configurate-core')
exclude(module: 'configurate-hocon')
exclude(module: 'configurate-gson')

View File

@@ -23,7 +23,7 @@
* SOFTWARE.
*/
package me.lucko.luckperms.sponge.service.proxy.api8;
package me.lucko.luckperms.sponge.service.proxy;
import me.lucko.luckperms.common.context.ImmutableContextSetImpl;
import me.lucko.luckperms.sponge.service.model.LPPermissionDescription;

View File

@@ -23,7 +23,7 @@
* SOFTWARE.
*/
package me.lucko.luckperms.sponge.service.proxy.api8;
package me.lucko.luckperms.sponge.service.proxy;
import me.lucko.luckperms.common.util.ImmutableCollectors;
import me.lucko.luckperms.sponge.service.model.LPPermissionDescription;
@@ -130,6 +130,6 @@ public final class PermissionDescriptionProxy implements PermissionDescription,
@Override
public String toString() {
return "luckperms.api8.PermissionDescriptionProxy(handle=" + this.handle + ")";
return "luckperms.PermissionDescriptionProxy(handle=" + this.handle + ")";
}
}

View File

@@ -23,7 +23,7 @@
* SOFTWARE.
*/
package me.lucko.luckperms.sponge.service.proxy.api8;
package me.lucko.luckperms.sponge.service.proxy;
import com.google.common.collect.ImmutableSet;
import me.lucko.luckperms.common.util.ImmutableCollectors;
@@ -169,6 +169,6 @@ public final class PermissionServiceProxy implements PermissionAndContextService
@Override
public String toString() {
return "luckperms.api8.PermissionServiceProxy(handle=" + this.handle + ")";
return "luckperms.PermissionServiceProxy(handle=" + this.handle + ")";
}
}

View File

@@ -23,7 +23,7 @@
* SOFTWARE.
*/
package me.lucko.luckperms.sponge.service.proxy.api8;
package me.lucko.luckperms.sponge.service.proxy;
import me.lucko.luckperms.common.util.ImmutableCollectors;
import me.lucko.luckperms.sponge.service.model.LPProxiedServiceObject;
@@ -43,7 +43,6 @@ import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.function.Predicate;
@SuppressWarnings("unchecked")
public final class SubjectCollectionProxy implements SubjectCollection, LPProxiedServiceObject {
private final LPSubjectCollection handle;
@@ -86,7 +85,7 @@ public final class SubjectCollectionProxy implements SubjectCollection, LPProxie
return this.handle.getLoadedSubjects().stream().map(LPSubject::sponge).collect(ImmutableCollectors.toSet());
}
@SuppressWarnings("rawtypes")
@SuppressWarnings({"rawtypes", "unchecked"})
@Override
public @NonNull CompletableFuture<Set<String>> allIdentifiers() {
return (CompletableFuture) this.handle.getAllIdentifiers();
@@ -102,13 +101,13 @@ public final class SubjectCollectionProxy implements SubjectCollection, LPProxie
return this.handle.getService().getReferenceFactory().obtain(identifier(), subjectIdentifier);
}
@SuppressWarnings("rawtypes")
@SuppressWarnings({"rawtypes", "unchecked"})
@Override
public @NonNull CompletableFuture<Map<SubjectReference, Boolean>> allWithPermission(@NonNull String s) {
return (CompletableFuture) this.handle.getAllWithPermission(s);
}
@SuppressWarnings("rawtypes")
@SuppressWarnings({"rawtypes", "unchecked"})
@Override
public @NonNull CompletableFuture<Map<SubjectReference, Boolean>> allWithPermission(@NonNull String s, @NonNull Cause cause) {
return (CompletableFuture) this.handle.getAllWithPermission(this.handle.getService().getContextsForCause(cause), s);
@@ -154,7 +153,7 @@ public final class SubjectCollectionProxy implements SubjectCollection, LPProxie
@Override
public String toString() {
return "luckperms.api8.SubjectCollectionProxy(handle=" + this.handle + ")";
return "luckperms.SubjectCollectionProxy(handle=" + this.handle + ")";
}
}

View File

@@ -23,7 +23,7 @@
* SOFTWARE.
*/
package me.lucko.luckperms.sponge.service.proxy.api8;
package me.lucko.luckperms.sponge.service.proxy;
import com.google.common.collect.ImmutableMap;
import me.lucko.luckperms.common.util.CompletableFutures;
@@ -49,7 +49,6 @@ import java.util.Objects;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
@SuppressWarnings("unchecked")
public final class SubjectDataProxy implements SubjectData, LPProxiedServiceObject {
private final LPPermissionService service;
private final LPSubjectReference ref;
@@ -77,7 +76,7 @@ public final class SubjectDataProxy implements SubjectData, LPProxiedServiceObje
return !this.enduring;
}
@SuppressWarnings("rawtypes")
@SuppressWarnings({"rawtypes", "unchecked"})
@Override
public @NonNull Map<Set<Context>, Map<String, Boolean>> allPermissions() {
return (Map) handle().thenApply(handle -> handle.getAllPermissions().entrySet().stream()
@@ -148,7 +147,7 @@ public final class SubjectDataProxy implements SubjectData, LPProxiedServiceObje
return handle().thenCompose(handle -> handle.clearPermissions(CompatibilityUtil.convertContexts(contexts)));
}
@SuppressWarnings("rawtypes")
@SuppressWarnings({"rawtypes", "unchecked"})
@Override
public @NonNull Map<Set<Context>, List<org.spongepowered.api.service.permission.SubjectReference>> allParents() {
return (Map) handle().thenApply(handle -> handle.getAllParents().entrySet().stream()
@@ -158,7 +157,7 @@ public final class SubjectDataProxy implements SubjectData, LPProxiedServiceObje
))).join();
}
@SuppressWarnings("rawtypes")
@SuppressWarnings({"rawtypes", "unchecked"})
@Override
public @NonNull List<org.spongepowered.api.service.permission.SubjectReference> parents(@NonNull Set<Context> contexts) {
return (List) handle().thenApply(handle -> handle.getParents(CompatibilityUtil.convertContexts(contexts))).join();
@@ -189,7 +188,7 @@ public final class SubjectDataProxy implements SubjectData, LPProxiedServiceObje
return handle().thenCompose(handle -> handle.clearParents(CompatibilityUtil.convertContexts(contexts)));
}
@SuppressWarnings("rawtypes")
@SuppressWarnings({"rawtypes", "unchecked"})
@Override
public @NonNull Map<Set<Context>, Map<String, String>> allOptions() {
return (Map) handle().thenApply(handle -> handle.getAllOptions().entrySet().stream()
@@ -253,6 +252,6 @@ public final class SubjectDataProxy implements SubjectData, LPProxiedServiceObje
@Override
public String toString() {
return "luckperms.api8.SubjectDataProxy(ref=" + this.ref + ", enduring=" + this.enduring + ")";
return "luckperms.SubjectDataProxy(ref=" + this.ref + ", enduring=" + this.enduring + ")";
}
}

View File

@@ -23,7 +23,7 @@
* SOFTWARE.
*/
package me.lucko.luckperms.sponge.service.proxy.api8;
package me.lucko.luckperms.sponge.service.proxy;
import me.lucko.luckperms.sponge.service.CompatibilityUtil;
import me.lucko.luckperms.sponge.service.model.LPPermissionService;
@@ -49,7 +49,6 @@ import java.util.Optional;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
@SuppressWarnings("unchecked")
public final class SubjectProxy implements Subject, LPProxiedSubject, LPProxiedServiceObject {
private final LPPermissionService service;
private final LPSubjectReference ref;
@@ -169,6 +168,6 @@ public final class SubjectProxy implements Subject, LPProxiedSubject, LPProxiedS
@Override
public String toString() {
return "luckperms.api8.SubjectProxy(ref=" + this.ref + ")";
return "luckperms.SubjectProxy(ref=" + this.ref + ")";
}
}

View File

@@ -2,15 +2,17 @@ repositories {
maven { url 'https://repo.spongepowered.org/repository/maven-public/' }
}
sourceCompatibility = 17
targetCompatibility = 21
dependencies {
implementation project(':common')
compileOnly('org.spongepowered:spongeapi:8.0.0') {
compileOnly('org.spongepowered:spongeapi:12.0.0') {
exclude(module: 'configurate-core')
exclude(module: 'configurate-hocon')
exclude(module: 'configurate-gson')
exclude(module: 'configurate-yaml')
}
compileOnly 'com.google.guava:guava:21.0'
}

View File

@@ -77,26 +77,20 @@ public final class CompatibilityUtil {
public static org.spongepowered.api.util.Tristate convertTristate(Tristate tristate) {
Objects.requireNonNull(tristate, "tristate");
switch (tristate) {
case TRUE:
return org.spongepowered.api.util.Tristate.TRUE;
case FALSE:
return org.spongepowered.api.util.Tristate.FALSE;
default:
return org.spongepowered.api.util.Tristate.UNDEFINED;
}
return switch (tristate) {
case TRUE -> org.spongepowered.api.util.Tristate.TRUE;
case FALSE -> org.spongepowered.api.util.Tristate.FALSE;
default -> org.spongepowered.api.util.Tristate.UNDEFINED;
};
}
public static Tristate convertTristate(org.spongepowered.api.util.Tristate tristate) {
Objects.requireNonNull(tristate, "tristate");
switch (tristate) {
case TRUE:
return Tristate.TRUE;
case FALSE:
return Tristate.FALSE;
default:
return Tristate.UNDEFINED;
}
return switch (tristate) {
case TRUE -> Tristate.TRUE;
case FALSE -> Tristate.FALSE;
default -> Tristate.UNDEFINED;
};
}
}

View File

@@ -44,8 +44,7 @@ abstract class AbstractForwardingContextSet extends AbstractSet<Context> impleme
@Override
public boolean contains(Object o) {
if (o instanceof Context) {
Context context = (Context) o;
if (o instanceof Context context) {
return !context.getKey().isEmpty() && !context.getValue().isEmpty() && delegate().contains(context.getKey(), context.getValue());
}
return false;

View File

@@ -31,6 +31,7 @@ import me.lucko.luckperms.common.locale.TranslationManager;
import me.lucko.luckperms.common.model.User;
import me.lucko.luckperms.common.plugin.util.AbstractConnectionListener;
import me.lucko.luckperms.sponge.LPSpongePlugin;
import org.spongepowered.api.entity.living.player.server.ServerPlayer;
import org.spongepowered.api.event.Listener;
import org.spongepowered.api.event.Order;
import org.spongepowered.api.event.filter.IsCancelled;
@@ -48,18 +49,6 @@ import java.util.UUID;
public class SpongeConnectionListener extends AbstractConnectionListener {
// Sponge API 11
private static final Method DISCONNECT_EVENT_PROFILE_METHOD;
static {
Method disconnectEventProfileMethod;
try {
disconnectEventProfileMethod = ServerSideConnectionEvent.Disconnect.class.getMethod("profile");
} catch (ReflectiveOperationException e) {
disconnectEventProfileMethod = null;
}
DISCONNECT_EVENT_PROFILE_METHOD = disconnectEventProfileMethod;
}
private final LPSpongePlugin plugin;
private final Set<UUID> deniedAsyncLogin = Collections.synchronizedSet(new HashSet<>());
@@ -184,28 +173,8 @@ public class SpongeConnectionListener extends AbstractConnectionListener {
@Listener(order = Order.POST)
public void onClientLeave(ServerSideConnectionEvent.Disconnect e) {
Identifiable player = null;
if (DISCONNECT_EVENT_PROFILE_METHOD == null) {
// sponge API < 11
player = e.player();
} else {
// sponge API 11+
try {
//noinspection unchecked
final Optional<GameProfile> profile = (Optional<GameProfile>) DISCONNECT_EVENT_PROFILE_METHOD.invoke(e);
if (profile.isPresent()) {
player = profile.get();
}
} catch (ReflectiveOperationException ex) {
throw new RuntimeException(ex);
}
}
if (player != null) {
handleDisconnect(player.uniqueId());
}
Optional<GameProfile> profile = e.profile();
profile.ifPresent(p -> handleDisconnect(p.uniqueId()));
}
}

View File

@@ -31,8 +31,11 @@ import me.lucko.luckperms.sponge.LPSpongePlugin;
import net.luckperms.api.messenger.IncomingMessageConsumer;
import net.luckperms.api.messenger.Messenger;
import org.spongepowered.api.ResourceKey;
import org.spongepowered.api.Server;
import org.spongepowered.api.entity.living.player.server.ServerPlayer;
import org.spongepowered.api.network.EngineConnectionSide;
import org.spongepowered.api.network.EngineConnectionState;
import org.spongepowered.api.network.ServerConnectionState;
import org.spongepowered.api.network.ServerSideConnection;
import org.spongepowered.api.network.channel.ChannelBuf;
import org.spongepowered.api.network.channel.raw.RawDataChannel;
@@ -46,7 +49,7 @@ import java.util.concurrent.TimeUnit;
/**
* An implementation of {@link Messenger} using the plugin messaging channels.
*/
public class PluginMessageMessenger extends AbstractPluginMessageMessenger implements RawPlayDataHandler<ServerSideConnection> {
public class PluginMessageMessenger extends AbstractPluginMessageMessenger implements RawPlayDataHandler<ServerConnectionState.Game> {
private static final ResourceKey CHANNEL = ResourceKey.resolve(AbstractPluginMessageMessenger.CHANNEL);
private final LPSpongePlugin plugin;
@@ -60,7 +63,7 @@ public class PluginMessageMessenger extends AbstractPluginMessageMessenger imple
public void init() {
this.channel = this.plugin.getBootstrap().getGame().channelManager().ofType(CHANNEL, RawDataChannel.class);
this.channel.play().addHandler(EngineConnectionSide.SERVER, this);
this.channel.play().addHandler(ServerConnectionState.Game.class, this);
}
@Override
@@ -102,7 +105,7 @@ public class PluginMessageMessenger extends AbstractPluginMessageMessenger imple
}
@Override
public void handlePayload(ChannelBuf channelBuf, ServerSideConnection connection) {
public void handlePayload(ChannelBuf channelBuf, ServerConnectionState.Game state) {
byte[] buf = channelBuf.readBytes(channelBuf.available());
handleIncomingMessage(buf);
}

View File

@@ -31,11 +31,11 @@ import me.lucko.luckperms.sponge.service.model.LPProxiedSubject;
import me.lucko.luckperms.sponge.service.model.LPSubject;
import me.lucko.luckperms.sponge.service.model.LPSubjectCollection;
import me.lucko.luckperms.sponge.service.model.LPSubjectData;
import me.lucko.luckperms.sponge.service.proxy.api8.PermissionDescriptionProxy;
import me.lucko.luckperms.sponge.service.proxy.api8.PermissionServiceProxy;
import me.lucko.luckperms.sponge.service.proxy.api8.SubjectCollectionProxy;
import me.lucko.luckperms.sponge.service.proxy.api8.SubjectDataProxy;
import me.lucko.luckperms.sponge.service.proxy.api8.SubjectProxy;
import me.lucko.luckperms.sponge.service.proxy.PermissionDescriptionProxy;
import me.lucko.luckperms.sponge.service.proxy.PermissionServiceProxy;
import me.lucko.luckperms.sponge.service.proxy.SubjectCollectionProxy;
import me.lucko.luckperms.sponge.service.proxy.SubjectDataProxy;
import me.lucko.luckperms.sponge.service.proxy.SubjectProxy;
import net.luckperms.api.model.data.DataType;
import org.spongepowered.api.service.permission.PermissionDescription;
import org.spongepowered.api.service.permission.SubjectCollection;