From 40764534a2ecb8cd479e278f3ec83ef0265b8fed Mon Sep 17 00:00:00 2001 From: Bjarne Koll Date: Sat, 12 Jul 2025 03:05:07 +0200 Subject: [PATCH] Specify the class loader when loading services (#12829) --- .../paper/command/brigadier/MessageComponentSerializer.java | 3 +-- .../command/brigadier/argument/VanillaArgumentProvider.java | 3 +-- .../paper/datacomponent/item/ItemComponentTypesBridge.java | 2 +- .../item/attribute/AttributeModifierDisplayBridge.java | 2 +- .../datacomponent/item/blocksattacks/BlocksAttacksBridge.java | 2 +- .../datacomponent/item/consumable/ConsumableTypesBridge.java | 2 +- .../lifecycle/event/types/LifecycleEventTypeProvider.java | 3 +-- .../java/io/papermc/paper/registry/RegistryAccessHolder.java | 2 +- .../paper/registry/data/InlinedRegistryBuilderProvider.java | 2 +- .../paper/registry/data/dialog/DialogInstancesProvider.java | 2 +- .../paper/registry/event/RegistryEventTypeProvider.java | 3 +-- .../java/io/papermc/paper/world/flag/FeatureFlagProvider.java | 2 +- 12 files changed, 12 insertions(+), 16 deletions(-) diff --git a/paper-api/src/main/java/io/papermc/paper/command/brigadier/MessageComponentSerializer.java b/paper-api/src/main/java/io/papermc/paper/command/brigadier/MessageComponentSerializer.java index ea19ba9ba7..23c7b13829 100644 --- a/paper-api/src/main/java/io/papermc/paper/command/brigadier/MessageComponentSerializer.java +++ b/paper-api/src/main/java/io/papermc/paper/command/brigadier/MessageComponentSerializer.java @@ -20,8 +20,7 @@ public interface MessageComponentSerializer extends ComponentSerializer PROVIDER = ServiceLoader.load(MessageComponentSerializer.class) - .findFirst(); + static final Optional PROVIDER = ServiceLoader.load(MessageComponentSerializer.class, MessageComponentSerializer.class.getClassLoader()).findFirst(); } return Holder.PROVIDER.orElseThrow(); } diff --git a/paper-api/src/main/java/io/papermc/paper/command/brigadier/argument/VanillaArgumentProvider.java b/paper-api/src/main/java/io/papermc/paper/command/brigadier/argument/VanillaArgumentProvider.java index b70b32a3be..f5fba07b00 100644 --- a/paper-api/src/main/java/io/papermc/paper/command/brigadier/argument/VanillaArgumentProvider.java +++ b/paper-api/src/main/java/io/papermc/paper/command/brigadier/argument/VanillaArgumentProvider.java @@ -35,8 +35,7 @@ import org.jetbrains.annotations.ApiStatus; @ApiStatus.Internal interface VanillaArgumentProvider { - Optional PROVIDER = ServiceLoader.load(VanillaArgumentProvider.class) - .findFirst(); + Optional PROVIDER = ServiceLoader.load(VanillaArgumentProvider.class, VanillaArgumentProvider.class.getClassLoader()).findFirst(); static VanillaArgumentProvider provider() { return PROVIDER.orElseThrow(); diff --git a/paper-api/src/main/java/io/papermc/paper/datacomponent/item/ItemComponentTypesBridge.java b/paper-api/src/main/java/io/papermc/paper/datacomponent/item/ItemComponentTypesBridge.java index 0589eb23bf..2a9e3b96eb 100644 --- a/paper-api/src/main/java/io/papermc/paper/datacomponent/item/ItemComponentTypesBridge.java +++ b/paper-api/src/main/java/io/papermc/paper/datacomponent/item/ItemComponentTypesBridge.java @@ -24,7 +24,7 @@ import org.jspecify.annotations.Nullable; @ApiStatus.Internal interface ItemComponentTypesBridge { - Optional BRIDGE = ServiceLoader.load(ItemComponentTypesBridge.class).findFirst(); + Optional BRIDGE = ServiceLoader.load(ItemComponentTypesBridge.class, ItemComponentTypesBridge.class.getClassLoader()).findFirst(); static ItemComponentTypesBridge bridge() { return BRIDGE.orElseThrow(); diff --git a/paper-api/src/main/java/io/papermc/paper/datacomponent/item/attribute/AttributeModifierDisplayBridge.java b/paper-api/src/main/java/io/papermc/paper/datacomponent/item/attribute/AttributeModifierDisplayBridge.java index 7eb012e854..eb3030701a 100644 --- a/paper-api/src/main/java/io/papermc/paper/datacomponent/item/attribute/AttributeModifierDisplayBridge.java +++ b/paper-api/src/main/java/io/papermc/paper/datacomponent/item/attribute/AttributeModifierDisplayBridge.java @@ -10,7 +10,7 @@ import org.jspecify.annotations.NullMarked; @ApiStatus.Internal interface AttributeModifierDisplayBridge { - Optional BRIDGE = ServiceLoader.load(AttributeModifierDisplayBridge.class).findFirst(); + Optional BRIDGE = ServiceLoader.load(AttributeModifierDisplayBridge.class, AttributeModifierDisplayBridge.class.getClassLoader()).findFirst(); static AttributeModifierDisplayBridge bridge() { return BRIDGE.orElseThrow(); diff --git a/paper-api/src/main/java/io/papermc/paper/datacomponent/item/blocksattacks/BlocksAttacksBridge.java b/paper-api/src/main/java/io/papermc/paper/datacomponent/item/blocksattacks/BlocksAttacksBridge.java index 74549d6c10..8c12e15e51 100644 --- a/paper-api/src/main/java/io/papermc/paper/datacomponent/item/blocksattacks/BlocksAttacksBridge.java +++ b/paper-api/src/main/java/io/papermc/paper/datacomponent/item/blocksattacks/BlocksAttacksBridge.java @@ -9,7 +9,7 @@ import org.jspecify.annotations.NullMarked; @ApiStatus.Internal interface BlocksAttacksBridge { - Optional BRIDGE = ServiceLoader.load(BlocksAttacksBridge.class).findFirst(); + Optional BRIDGE = ServiceLoader.load(BlocksAttacksBridge.class, BlocksAttacksBridge.class.getClassLoader()).findFirst(); static BlocksAttacksBridge bridge() { return BRIDGE.orElseThrow(); diff --git a/paper-api/src/main/java/io/papermc/paper/datacomponent/item/consumable/ConsumableTypesBridge.java b/paper-api/src/main/java/io/papermc/paper/datacomponent/item/consumable/ConsumableTypesBridge.java index e632221f36..298a8fb69b 100644 --- a/paper-api/src/main/java/io/papermc/paper/datacomponent/item/consumable/ConsumableTypesBridge.java +++ b/paper-api/src/main/java/io/papermc/paper/datacomponent/item/consumable/ConsumableTypesBridge.java @@ -14,7 +14,7 @@ import org.jspecify.annotations.NullMarked; @ApiStatus.Internal interface ConsumableTypesBridge { - Optional BRIDGE = ServiceLoader.load(ConsumableTypesBridge.class).findFirst(); + Optional BRIDGE = ServiceLoader.load(ConsumableTypesBridge.class, ConsumableTypesBridge.class.getClassLoader()).findFirst(); static ConsumableTypesBridge bridge() { return BRIDGE.orElseThrow(); diff --git a/paper-api/src/main/java/io/papermc/paper/plugin/lifecycle/event/types/LifecycleEventTypeProvider.java b/paper-api/src/main/java/io/papermc/paper/plugin/lifecycle/event/types/LifecycleEventTypeProvider.java index a52ab9e094..baeebb64e9 100644 --- a/paper-api/src/main/java/io/papermc/paper/plugin/lifecycle/event/types/LifecycleEventTypeProvider.java +++ b/paper-api/src/main/java/io/papermc/paper/plugin/lifecycle/event/types/LifecycleEventTypeProvider.java @@ -9,8 +9,7 @@ import org.jetbrains.annotations.ApiStatus; @ApiStatus.Internal interface LifecycleEventTypeProvider { - Optional INSTANCE = ServiceLoader.load(LifecycleEventTypeProvider.class) - .findFirst(); + Optional INSTANCE = ServiceLoader.load(LifecycleEventTypeProvider.class, LifecycleEventTypeProvider.class.getClassLoader()).findFirst(); static LifecycleEventTypeProvider provider() { return INSTANCE.orElseThrow(); diff --git a/paper-api/src/main/java/io/papermc/paper/registry/RegistryAccessHolder.java b/paper-api/src/main/java/io/papermc/paper/registry/RegistryAccessHolder.java index b89e19c070..e2af290c94 100644 --- a/paper-api/src/main/java/io/papermc/paper/registry/RegistryAccessHolder.java +++ b/paper-api/src/main/java/io/papermc/paper/registry/RegistryAccessHolder.java @@ -5,7 +5,7 @@ import java.util.ServiceLoader; final class RegistryAccessHolder { - static final Optional INSTANCE = ServiceLoader.load(RegistryAccess.class).findFirst(); + static final Optional INSTANCE = ServiceLoader.load(RegistryAccess.class, RegistryAccess.class.getClassLoader()).findFirst(); private RegistryAccessHolder() { } diff --git a/paper-api/src/main/java/io/papermc/paper/registry/data/InlinedRegistryBuilderProvider.java b/paper-api/src/main/java/io/papermc/paper/registry/data/InlinedRegistryBuilderProvider.java index 33257a4147..aca59e41e9 100644 --- a/paper-api/src/main/java/io/papermc/paper/registry/data/InlinedRegistryBuilderProvider.java +++ b/paper-api/src/main/java/io/papermc/paper/registry/data/InlinedRegistryBuilderProvider.java @@ -15,7 +15,7 @@ public interface InlinedRegistryBuilderProvider { static InlinedRegistryBuilderProvider instance() { final class Holder { - static final Optional INSTANCE = ServiceLoader.load(InlinedRegistryBuilderProvider.class).findFirst(); + static final Optional INSTANCE = ServiceLoader.load(InlinedRegistryBuilderProvider.class, InlinedRegistryBuilderProvider.class.getClassLoader()).findFirst(); } return Holder.INSTANCE.orElseThrow(); } diff --git a/paper-api/src/main/java/io/papermc/paper/registry/data/dialog/DialogInstancesProvider.java b/paper-api/src/main/java/io/papermc/paper/registry/data/dialog/DialogInstancesProvider.java index ae8ba50f5c..e05d4fdae1 100644 --- a/paper-api/src/main/java/io/papermc/paper/registry/data/dialog/DialogInstancesProvider.java +++ b/paper-api/src/main/java/io/papermc/paper/registry/data/dialog/DialogInstancesProvider.java @@ -36,7 +36,7 @@ public interface DialogInstancesProvider { static DialogInstancesProvider instance() { final class Holder { - static final Optional INSTANCE = ServiceLoader.load(DialogInstancesProvider.class).findFirst(); + static final Optional INSTANCE = ServiceLoader.load(DialogInstancesProvider.class, DialogInstancesProvider.class.getClassLoader()).findFirst(); } return Holder.INSTANCE.orElseThrow(); } diff --git a/paper-api/src/main/java/io/papermc/paper/registry/event/RegistryEventTypeProvider.java b/paper-api/src/main/java/io/papermc/paper/registry/event/RegistryEventTypeProvider.java index 38f10d2472..af8686038f 100644 --- a/paper-api/src/main/java/io/papermc/paper/registry/event/RegistryEventTypeProvider.java +++ b/paper-api/src/main/java/io/papermc/paper/registry/event/RegistryEventTypeProvider.java @@ -11,8 +11,7 @@ import org.jetbrains.annotations.ApiStatus; @ApiStatus.Internal interface RegistryEventTypeProvider { - Optional PROVIDER = ServiceLoader.load(RegistryEventTypeProvider.class) - .findFirst(); + Optional PROVIDER = ServiceLoader.load(RegistryEventTypeProvider.class, RegistryEventTypeProvider.class.getClassLoader()).findFirst(); static RegistryEventTypeProvider provider() { return PROVIDER.orElseThrow(() -> new IllegalStateException("Could not find a %s service implementation".formatted(RegistryEventTypeProvider.class.getSimpleName()))); diff --git a/paper-api/src/main/java/io/papermc/paper/world/flag/FeatureFlagProvider.java b/paper-api/src/main/java/io/papermc/paper/world/flag/FeatureFlagProvider.java index 388e70628f..501411bc94 100644 --- a/paper-api/src/main/java/io/papermc/paper/world/flag/FeatureFlagProvider.java +++ b/paper-api/src/main/java/io/papermc/paper/world/flag/FeatureFlagProvider.java @@ -11,7 +11,7 @@ import org.jspecify.annotations.NullMarked; @ApiStatus.Internal interface FeatureFlagProvider { - Optional PROVIDER = ServiceLoader.load(FeatureFlagProvider.class).findFirst(); + Optional PROVIDER = ServiceLoader.load(FeatureFlagProvider.class, FeatureFlagProvider.class.getClassLoader()).findFirst(); static FeatureFlagProvider provider() { return PROVIDER.orElseThrow();