From c391d8cc6289d36e68b667b83e28c072cf1660db Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 25 Mar 2026 11:29:37 -0400 Subject: [PATCH 1/4] Fix service not being loadable --- .../jikoo/planarenchanting/util/DelegateEnchantProvider.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/enchanting-bundler/src/main/java/com/github/jikoo/planarenchanting/util/DelegateEnchantProvider.java b/enchanting-bundler/src/main/java/com/github/jikoo/planarenchanting/util/DelegateEnchantProvider.java index a778e25..2d1c1f1 100644 --- a/enchanting-bundler/src/main/java/com/github/jikoo/planarenchanting/util/DelegateEnchantProvider.java +++ b/enchanting-bundler/src/main/java/com/github/jikoo/planarenchanting/util/DelegateEnchantProvider.java @@ -2,10 +2,12 @@ import com.github.jikoo.planarenchanting.util.EnchantData.Provider; import org.bukkit.enchantments.Enchantment; +import org.jetbrains.annotations.ApiStatus.Internal; import org.jspecify.annotations.NullMarked; +@Internal @NullMarked -class DelegateEnchantProvider implements Provider { +public class DelegateEnchantProvider implements Provider { private final Provider delegate = ServerCapabilities.DATA_COMPONENT ? new ComponentEnchantProvider() : new MetaEnchantProvider(); From 6f80f44f57f735e4431e6ffa2f23537c6dcfd2d7 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 25 Mar 2026 11:31:09 -0400 Subject: [PATCH 2/4] Allow direct replacement of service API consumers can select a specific service to load for the purpose of minimizing required classes. --- .../jikoo/planarenchanting/util/ComponentEnchantProvider.java | 4 +++- .../jikoo/planarenchanting/util/MetaEnchantProvider.java | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/util/ComponentEnchantProvider.java b/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/util/ComponentEnchantProvider.java index f2c41a8..374ac80 100644 --- a/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/util/ComponentEnchantProvider.java +++ b/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/util/ComponentEnchantProvider.java @@ -3,10 +3,12 @@ import com.github.jikoo.planarenchanting.util.EnchantData.Provider; import io.papermc.paper.registry.keys.ItemTypeKeys; import org.bukkit.enchantments.Enchantment; +import org.jetbrains.annotations.ApiStatus.Internal; import org.jspecify.annotations.NullMarked; +@Internal @NullMarked -class ComponentEnchantProvider implements Provider { +public class ComponentEnchantProvider implements Provider { @Override public EnchantData of(Enchantment enchantment) { diff --git a/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/util/MetaEnchantProvider.java b/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/util/MetaEnchantProvider.java index 2d273aa..225d7b7 100644 --- a/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/util/MetaEnchantProvider.java +++ b/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/util/MetaEnchantProvider.java @@ -8,10 +8,12 @@ import org.bukkit.NamespacedKey; import org.bukkit.Registry; import org.bukkit.enchantments.Enchantment; +import org.jetbrains.annotations.ApiStatus.Internal; import org.jspecify.annotations.NullMarked; +@Internal @NullMarked -class MetaEnchantProvider implements Provider { +public class MetaEnchantProvider implements Provider { private final Map data = new HashMap<>(); From 632f18487a24fac6d948a7ee18f597f95b40fa8d Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 25 Mar 2026 11:32:41 -0400 Subject: [PATCH 3/4] Expose temperers and states Allows consumers to skip AnvilCreator inclusion to minimize required classes. --- .../jikoo/planarenchanting/anvil/ComponentTemperer.java | 4 ++-- .../jikoo/planarenchanting/anvil/ComponentViewState.java | 4 ++-- .../com/github/jikoo/planarenchanting/anvil/MetaTemperer.java | 4 ++-- .../github/jikoo/planarenchanting/anvil/MetaViewState.java | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/anvil/ComponentTemperer.java b/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/anvil/ComponentTemperer.java index 36723bd..701cd2b 100644 --- a/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/anvil/ComponentTemperer.java +++ b/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/anvil/ComponentTemperer.java @@ -6,9 +6,9 @@ import org.jspecify.annotations.NullMarked; @NullMarked -class ComponentTemperer implements Temperer { +public class ComponentTemperer implements Temperer { - static final ComponentTemperer INSTANCE = new ComponentTemperer(); + public static final ComponentTemperer INSTANCE = new ComponentTemperer(); @Override public boolean hasChanged(ItemStack base, ItemStack addition, ItemStack result) { diff --git a/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/anvil/ComponentViewState.java b/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/anvil/ComponentViewState.java index e05182c..889f374 100644 --- a/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/anvil/ComponentViewState.java +++ b/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/anvil/ComponentViewState.java @@ -5,13 +5,13 @@ import org.jspecify.annotations.NullMarked; @NullMarked -class ComponentViewState implements ViewState { +public class ComponentViewState implements ViewState { private final AnvilView view; private final ItemStack base; private final ItemStack addition; - ComponentViewState(AnvilView view) { + public ComponentViewState(AnvilView view) { this.view = view; ItemStack stack = view.getItem(0); this.base = stack != null ? stack : ItemStack.empty(); diff --git a/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/anvil/MetaTemperer.java b/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/anvil/MetaTemperer.java index f14f6a2..c5249e4 100644 --- a/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/anvil/MetaTemperer.java +++ b/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/anvil/MetaTemperer.java @@ -8,9 +8,9 @@ import org.jspecify.annotations.NullMarked; @NullMarked -class MetaTemperer implements Temperer { +public class MetaTemperer implements Temperer { - static final MetaTemperer INSTANCE = new MetaTemperer(); + public static final MetaTemperer INSTANCE = new MetaTemperer(); @Override public boolean hasChanged( diff --git a/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/anvil/MetaViewState.java b/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/anvil/MetaViewState.java index dfb3eec..cc31db8 100644 --- a/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/anvil/MetaViewState.java +++ b/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/anvil/MetaViewState.java @@ -4,13 +4,13 @@ import org.jspecify.annotations.NullMarked; @NullMarked -class MetaViewState implements ViewState { +public class MetaViewState implements ViewState { private final AnvilView view; private final MetaCachedStack base; private final MetaCachedStack addition; - MetaViewState(AnvilView view) { + public MetaViewState(AnvilView view) { this.view = view; this.base = new MetaCachedStack(view.getItem(0)); this.addition = new MetaCachedStack(view.getItem(1)); From 0ec6be4e855b6af780942a5c5ec2622b90c77e41 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 25 Mar 2026 12:02:53 -0400 Subject: [PATCH 4/4] Basic docs --- .../jikoo/planarenchanting/util/DelegateEnchantProvider.java | 3 +++ .../jikoo/planarenchanting/anvil/ComponentTemperer.java | 3 +++ .../jikoo/planarenchanting/anvil/ComponentViewState.java | 3 +++ .../jikoo/planarenchanting/util/ComponentEnchantProvider.java | 4 ++++ .../com/github/jikoo/planarenchanting/anvil/MetaTemperer.java | 3 +++ .../github/jikoo/planarenchanting/anvil/MetaViewState.java | 4 ++++ .../jikoo/planarenchanting/util/MetaEnchantProvider.java | 4 ++++ 7 files changed, 24 insertions(+) diff --git a/enchanting-bundler/src/main/java/com/github/jikoo/planarenchanting/util/DelegateEnchantProvider.java b/enchanting-bundler/src/main/java/com/github/jikoo/planarenchanting/util/DelegateEnchantProvider.java index 2d1c1f1..c426dee 100644 --- a/enchanting-bundler/src/main/java/com/github/jikoo/planarenchanting/util/DelegateEnchantProvider.java +++ b/enchanting-bundler/src/main/java/com/github/jikoo/planarenchanting/util/DelegateEnchantProvider.java @@ -5,6 +5,9 @@ import org.jetbrains.annotations.ApiStatus.Internal; import org.jspecify.annotations.NullMarked; +/** + * An {@link Provider EnchantData.Provider} wrapping a platform-dependent provider. + */ @Internal @NullMarked public class DelegateEnchantProvider implements Provider { diff --git a/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/anvil/ComponentTemperer.java b/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/anvil/ComponentTemperer.java index 701cd2b..ecbd436 100644 --- a/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/anvil/ComponentTemperer.java +++ b/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/anvil/ComponentTemperer.java @@ -5,6 +5,9 @@ import org.bukkit.inventory.ItemStack; import org.jspecify.annotations.NullMarked; +/** + * A {@link Temperer} for {@link DataComponentType DataComponent}-based operations. + */ @NullMarked public class ComponentTemperer implements Temperer { diff --git a/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/anvil/ComponentViewState.java b/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/anvil/ComponentViewState.java index 889f374..1167cb1 100644 --- a/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/anvil/ComponentViewState.java +++ b/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/anvil/ComponentViewState.java @@ -4,6 +4,9 @@ import org.bukkit.inventory.view.AnvilView; import org.jspecify.annotations.NullMarked; +/** + * A {@link ViewState} for raw item access. + */ @NullMarked public class ComponentViewState implements ViewState { diff --git a/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/util/ComponentEnchantProvider.java b/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/util/ComponentEnchantProvider.java index 374ac80..c746a15 100644 --- a/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/util/ComponentEnchantProvider.java +++ b/enchanting-components/src/main/java/com/github/jikoo/planarenchanting/util/ComponentEnchantProvider.java @@ -6,6 +6,10 @@ import org.jetbrains.annotations.ApiStatus.Internal; import org.jspecify.annotations.NullMarked; +/** + * An {@link Provider EnchantData.Provider} for + * {@link io.papermc.paper.datacomponent.DataComponentType DataComponent}-based {@link EnchantData}. + */ @Internal @NullMarked public class ComponentEnchantProvider implements Provider { diff --git a/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/anvil/MetaTemperer.java b/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/anvil/MetaTemperer.java index c5249e4..97db9fa 100644 --- a/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/anvil/MetaTemperer.java +++ b/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/anvil/MetaTemperer.java @@ -7,6 +7,9 @@ import org.bukkit.inventory.meta.Repairable; import org.jspecify.annotations.NullMarked; +/** + * A {@link Temperer} for {@link ItemMeta}-based operations. + */ @NullMarked public class MetaTemperer implements Temperer { diff --git a/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/anvil/MetaViewState.java b/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/anvil/MetaViewState.java index cc31db8..a7bdb50 100644 --- a/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/anvil/MetaViewState.java +++ b/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/anvil/MetaViewState.java @@ -3,6 +3,10 @@ import org.bukkit.inventory.view.AnvilView; import org.jspecify.annotations.NullMarked; +/** + * A {@link ViewState} wrapping contents with a {@link MetaCachedStack} for repeated meta + * modification. + */ @NullMarked public class MetaViewState implements ViewState { diff --git a/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/util/MetaEnchantProvider.java b/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/util/MetaEnchantProvider.java index 225d7b7..7bf7aff 100644 --- a/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/util/MetaEnchantProvider.java +++ b/enchanting-meta/src/main/java/com/github/jikoo/planarenchanting/util/MetaEnchantProvider.java @@ -11,6 +11,10 @@ import org.jetbrains.annotations.ApiStatus.Internal; import org.jspecify.annotations.NullMarked; +/** + * An {@link Provider EnchantData.Provider} using pre-baked enchantment data. May not include more + * recently added enchantments! Falls through to data for unbreaking. + */ @Internal @NullMarked public class MetaEnchantProvider implements Provider {