mirror of https://github.com/PaperMC/Paper.git
add ItemEnchantments
This commit is contained in:
parent
b478e548de
commit
38823c2876
|
@ -306,20 +306,18 @@ index 0000000000000000000000000000000000000000..325a597b8d3e0c574b7bc80b7c9d0dee
|
|||
+}
|
||||
diff --git a/src/main/java/io/papermc/paper/datakey/types/ChargedProjectiles.java b/src/main/java/io/papermc/paper/datakey/types/ChargedProjectiles.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..6023de387df8075e355b16ce4978998e6c885fb5
|
||||
index 0000000000000000000000000000000000000000..8f22f62bc4b1d678190391a2aa734226432b2b35
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/datakey/types/ChargedProjectiles.java
|
||||
@@ -0,0 +1,40 @@
|
||||
@@ -0,0 +1,34 @@
|
||||
+package io.papermc.paper.datakey.types;
|
||||
+
|
||||
+import org.bukkit.Material;
|
||||
+import java.util.List;
|
||||
+import org.bukkit.inventory.ItemStack;
|
||||
+import org.jetbrains.annotations.ApiStatus;
|
||||
+import org.jetbrains.annotations.Contract;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+import org.jetbrains.annotations.Nullable;
|
||||
+import org.jetbrains.annotations.UnmodifiableView;
|
||||
+import java.util.List;
|
||||
+import org.jetbrains.annotations.Unmodifiable;
|
||||
+
|
||||
+@ApiStatus.NonExtendable
|
||||
+public interface ChargedProjectiles {
|
||||
|
@ -329,33 +327,29 @@ index 0000000000000000000000000000000000000000..6023de387df8075e355b16ce4978998e
|
|||
+ return ComponentTypesBridge.Holder.bridge().chargedProjectiles();
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ @UnmodifiableView
|
||||
+ List<ItemStack> getItems();
|
||||
+ @Contract(value = "-> new", pure = true)
|
||||
+ @NotNull @Unmodifiable List<ItemStack> getItems();
|
||||
+
|
||||
+ @ApiStatus.NonExtendable
|
||||
+ interface Builder {
|
||||
+
|
||||
+ @Contract(value = "_ -> this", mutates = "this")
|
||||
+ @NotNull
|
||||
+ Builder add(@NotNull ItemStack itemStack);
|
||||
+ @NotNull Builder add(@NotNull ItemStack itemStack);
|
||||
+
|
||||
+ @Contract(value = "_ -> this", mutates = "this")
|
||||
+ @NotNull
|
||||
+ Builder addAll(@NotNull List<ItemStack> itemStack);
|
||||
+ @NotNull Builder addAll(@NotNull List<ItemStack> itemStack);
|
||||
+
|
||||
+ @Contract(value = "-> new", pure = true)
|
||||
+ @NotNull
|
||||
+ ChargedProjectiles build();
|
||||
+ @NotNull ChargedProjectiles build();
|
||||
+
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/io/papermc/paper/datakey/types/ComponentTypesBridge.java b/src/main/java/io/papermc/paper/datakey/types/ComponentTypesBridge.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..a45e7e6060ebb4b32122badf56935bd484efaba1
|
||||
index 0000000000000000000000000000000000000000..5c16dcc1f78de2d6a9183c79986043689c802651
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/datakey/types/ComponentTypesBridge.java
|
||||
@@ -0,0 +1,26 @@
|
||||
@@ -0,0 +1,28 @@
|
||||
+package io.papermc.paper.datakey.types;
|
||||
+
|
||||
+import java.util.Optional;
|
||||
|
@ -373,6 +367,8 @@ index 0000000000000000000000000000000000000000..a45e7e6060ebb4b32122badf56935bd4
|
|||
+
|
||||
+ ItemLore.Builder lore();
|
||||
+
|
||||
+ ItemEnchantments.Builder enchantments();
|
||||
+
|
||||
+ @ApiStatus.Internal
|
||||
+ final class Holder {
|
||||
+ private static final Optional<ComponentTypesBridge> BRIDGE = Services.service(ComponentTypesBridge.class);
|
||||
|
@ -382,9 +378,55 @@ index 0000000000000000000000000000000000000000..a45e7e6060ebb4b32122badf56935bd4
|
|||
+ }
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/io/papermc/paper/datakey/types/ItemEnchantments.java b/src/main/java/io/papermc/paper/datakey/types/ItemEnchantments.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..f75355ae488dd3b04e8398e2454efff07502570a
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/datakey/types/ItemEnchantments.java
|
||||
@@ -0,0 +1,40 @@
|
||||
+package io.papermc.paper.datakey.types;
|
||||
+
|
||||
+import java.util.Map;
|
||||
+import org.bukkit.enchantments.Enchantment;
|
||||
+import org.jetbrains.annotations.ApiStatus;
|
||||
+import org.jetbrains.annotations.Contract;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+import org.jetbrains.annotations.Unmodifiable;
|
||||
+
|
||||
+@ApiStatus.NonExtendable
|
||||
+public interface ItemEnchantments extends ShownInTooltip<ItemEnchantments> {
|
||||
+
|
||||
+ @Contract(value = "-> new", pure = true)
|
||||
+ static ItemEnchantments.@NotNull Builder itemEnchantments() { // can't name it just "enchantments"
|
||||
+ return ComponentTypesBridge.Holder.bridge().enchantments();
|
||||
+ }
|
||||
+
|
||||
+ @Contract(value = "_ -> new", pure = true)
|
||||
+ static @NotNull ItemEnchantments itemEnchantments(@NotNull final Map<Enchantment, Integer> enchantments) {
|
||||
+ return itemEnchantments().addAll(enchantments).build();
|
||||
+ }
|
||||
+
|
||||
+ @NotNull @Unmodifiable Map<Enchantment, Integer> enchantments();
|
||||
+
|
||||
+ @ApiStatus.NonExtendable
|
||||
+ interface Builder extends ShownInTooltip.Builder<Builder> {
|
||||
+
|
||||
+ @Contract(value = "_, _ -> this", mutates = "this")
|
||||
+ @NotNull Builder add(@NotNull Enchantment enchantment, int level);
|
||||
+
|
||||
+ @Contract(value = "_, -> this", mutates = "this")
|
||||
+ @NotNull Builder addAll(@NotNull Map<Enchantment, Integer> enchantments);
|
||||
+
|
||||
+ @Contract(value = "_, -> this", mutates = "this")
|
||||
+ @NotNull Builder remove(@NotNull Enchantment enchantment);
|
||||
+
|
||||
+ @Contract(value="-> new", pure = true)
|
||||
+ @NotNull ItemEnchantments build();
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/io/papermc/paper/datakey/types/ItemLore.java b/src/main/java/io/papermc/paper/datakey/types/ItemLore.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..0caeec1f2d3609a07e1c4ab47f82e9c737324c73
|
||||
index 0000000000000000000000000000000000000000..9b2ffe96abfe7312be86736c306dc98bbee278a5
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/datakey/types/ItemLore.java
|
||||
@@ -0,0 +1,40 @@
|
||||
|
@ -423,17 +465,17 @@ index 0000000000000000000000000000000000000000..0caeec1f2d3609a07e1c4ab47f82e9c7
|
|||
+ @Contract(value = "_ -> this", mutates = "this")
|
||||
+ Builder lines(@NotNull List<? extends ComponentLike> lines);
|
||||
+
|
||||
+ @Contract(pure = true, value = "-> new")
|
||||
+ @Contract(value = "-> new", pure = true)
|
||||
+ @NotNull ItemLore build();
|
||||
+
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/io/papermc/paper/datakey/types/PotDecorations.java b/src/main/java/io/papermc/paper/datakey/types/PotDecorations.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..f2cfdafca42fa39eca38f5fac76e70cce23b195c
|
||||
index 0000000000000000000000000000000000000000..d42247c1801390e380c7e6fe43d03777ec028c61
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/datakey/types/PotDecorations.java
|
||||
@@ -0,0 +1,49 @@
|
||||
@@ -0,0 +1,48 @@
|
||||
+package io.papermc.paper.datakey.types;
|
||||
+
|
||||
+import org.bukkit.Material;
|
||||
|
@ -466,29 +508,28 @@ index 0000000000000000000000000000000000000000..f2cfdafca42fa39eca38f5fac76e70cc
|
|||
+ interface Builder {
|
||||
+
|
||||
+ @Contract(value = "_ -> this", mutates = "this")
|
||||
+ Builder back(@Nullable Material item);
|
||||
+ Builder back(@Nullable Material back);
|
||||
+
|
||||
+ @Contract(value = "_ -> this", mutates = "this")
|
||||
+ Builder left(@Nullable Material item);
|
||||
+ Builder left(@Nullable Material left);
|
||||
+
|
||||
+ @Contract(value = "_ -> this", mutates = "this")
|
||||
+ Builder right(@Nullable Material item);
|
||||
+ Builder right(@Nullable Material right);
|
||||
+
|
||||
+ @Contract(value = "_ -> this", mutates = "this")
|
||||
+ Builder front(@Nullable Material item);
|
||||
+ Builder front(@Nullable Material front);
|
||||
+
|
||||
+ @Contract(value = "-> new", pure = true)
|
||||
+ @NotNull
|
||||
+ PotDecorations build();
|
||||
+
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/io/papermc/paper/datakey/types/ShownInTooltip.java b/src/main/java/io/papermc/paper/datakey/types/ShownInTooltip.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..f20952bdb5be029ca1cd6e4db561fcbb1d219939
|
||||
index 0000000000000000000000000000000000000000..a54155cacb4052a43395c8599365b50f68856649
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/datakey/types/ShownInTooltip.java
|
||||
@@ -0,0 +1,11 @@
|
||||
@@ -0,0 +1,17 @@
|
||||
+package io.papermc.paper.datakey.types;
|
||||
+
|
||||
+import org.jetbrains.annotations.Contract;
|
||||
|
@ -499,13 +540,19 @@ index 0000000000000000000000000000000000000000..f20952bdb5be029ca1cd6e4db561fcbb
|
|||
+
|
||||
+ @Contract(value = "_ -> new", pure = true)
|
||||
+ T showInTooltip(boolean showInTooltip);
|
||||
+
|
||||
+ interface Builder<B> {
|
||||
+
|
||||
+ @Contract(value = "_ -> this", mutates = "this")
|
||||
+ B showInTooltip(boolean showInTooltip);
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/io/papermc/paper/datakey/types/Unbreakable.java b/src/main/java/io/papermc/paper/datakey/types/Unbreakable.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..b58a49d8431240cdfd38453819c45c09ab5e2744
|
||||
index 0000000000000000000000000000000000000000..7121975887128582c8c59190365a7c74663a6648
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/datakey/types/Unbreakable.java
|
||||
@@ -0,0 +1,30 @@
|
||||
@@ -0,0 +1,27 @@
|
||||
+package io.papermc.paper.datakey.types;
|
||||
+
|
||||
+import org.jetbrains.annotations.ApiStatus;
|
||||
|
@ -526,10 +573,7 @@ index 0000000000000000000000000000000000000000..b58a49d8431240cdfd38453819c45c09
|
|||
+ }
|
||||
+
|
||||
+ @ApiStatus.NonExtendable
|
||||
+ interface Builder {
|
||||
+
|
||||
+ @Contract(value = "_ -> this", mutates = "this")
|
||||
+ Builder showInTooltip(boolean showInTooltip);
|
||||
+ interface Builder extends AbstractShownInTooltip.Builder<Builder> {
|
||||
+
|
||||
+ @Contract(value = "-> new", pure = true)
|
||||
+ @NotNull Unbreakable build();
|
||||
|
|
|
@ -37,14 +37,15 @@ index 0000000000000000000000000000000000000000..264a8a14d2a778ef4eaa5937342b5978
|
|||
+}
|
||||
diff --git a/src/main/java/io/papermc/paper/datakey/ComponentAdapters.java b/src/main/java/io/papermc/paper/datakey/ComponentAdapters.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..d25c3fcb97f89760f60469e25e1f85c105cc115e
|
||||
index 0000000000000000000000000000000000000000..c430d4bcb664563f95b11996764ba91f885235e4
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/datakey/ComponentAdapters.java
|
||||
@@ -0,0 +1,75 @@
|
||||
@@ -0,0 +1,77 @@
|
||||
+package io.papermc.paper.datakey;
|
||||
+
|
||||
+import io.papermc.paper.adventure.PaperAdventure;
|
||||
+import io.papermc.paper.datakey.types.PaperChargedProjectiles;
|
||||
+import io.papermc.paper.datakey.types.PaperItemEnchantments;
|
||||
+import io.papermc.paper.datakey.types.PaperItemLore;
|
||||
+import io.papermc.paper.datakey.types.PaperPotDecorations;
|
||||
+import io.papermc.paper.datakey.types.PaperUnbreakable;
|
||||
|
@ -90,6 +91,7 @@ index 0000000000000000000000000000000000000000..d25c3fcb97f89760f60469e25e1f85c1
|
|||
+ registerUntyped(DataComponents.FIRE_RESISTANT);
|
||||
+ register(DataComponents.POT_DECORATIONS, PaperPotDecorations::new);
|
||||
+ register(DataComponents.CHARGED_PROJECTILES, PaperChargedProjectiles::new);
|
||||
+ register(DataComponents.ENCHANTMENTS, PaperItemEnchantments::new);
|
||||
+ }
|
||||
+
|
||||
+ public static void registerUntyped(final DataComponentType<Unit> type) {
|
||||
|
@ -427,10 +429,10 @@ index 0000000000000000000000000000000000000000..e6ebc39e96c9eb6f9869cfff258d4e25
|
|||
+}
|
||||
diff --git a/src/main/java/io/papermc/paper/datakey/types/ComponentTypesBridgesImpl.java b/src/main/java/io/papermc/paper/datakey/types/ComponentTypesBridgesImpl.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..d77c11e4022939ada8b3ee13b6d7cd147e03bd94
|
||||
index 0000000000000000000000000000000000000000..70019434663b9eb6c63ab341f9bc3a5fd9390a57
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/datakey/types/ComponentTypesBridgesImpl.java
|
||||
@@ -0,0 +1,24 @@
|
||||
@@ -0,0 +1,29 @@
|
||||
+package io.papermc.paper.datakey.types;
|
||||
+
|
||||
+public final class ComponentTypesBridgesImpl implements ComponentTypesBridge {
|
||||
|
@ -454,16 +456,22 @@ index 0000000000000000000000000000000000000000..d77c11e4022939ada8b3ee13b6d7cd14
|
|||
+ public ItemLore.Builder lore() {
|
||||
+ return new PaperItemLore.BuilderImpl();
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public ItemEnchantments.Builder enchantments() {
|
||||
+ return new PaperItemEnchantments.BuilderImpl();
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/io/papermc/paper/datakey/types/PaperChargedProjectiles.java b/src/main/java/io/papermc/paper/datakey/types/PaperChargedProjectiles.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..414e89666d0b2ba741c14113a6155fcef33b194e
|
||||
index 0000000000000000000000000000000000000000..e042fd7ea50111d496e04003bc22a13a961b60e2
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/datakey/types/PaperChargedProjectiles.java
|
||||
@@ -0,0 +1,60 @@
|
||||
@@ -0,0 +1,61 @@
|
||||
+package io.papermc.paper.datakey.types;
|
||||
+
|
||||
+import java.util.ArrayList;
|
||||
+import java.util.Collections;
|
||||
+import java.util.List;
|
||||
+import java.util.Optional;
|
||||
+import net.minecraft.world.item.Item;
|
||||
|
@ -487,14 +495,14 @@ index 0000000000000000000000000000000000000000..414e89666d0b2ba741c14113a6155fce
|
|||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public @NotNull @UnmodifiableView List<ItemStack> getItems() {
|
||||
+ List<net.minecraft.world.item.ItemStack> nmsItemStacks = this.impl.getItems();
|
||||
+ List<ItemStack> apiItemStacks = new ArrayList<>(nmsItemStacks.size());
|
||||
+ for (net.minecraft.world.item.ItemStack nmsItemStack : nmsItemStacks) {
|
||||
+ apiItemStacks.add(CraftItemStack.asCraftMirror(nmsItemStack));
|
||||
+ public @NotNull List<ItemStack> getItems() {
|
||||
+ final List<net.minecraft.world.item.ItemStack> nmsItemStacks = this.impl.getItems(); // gets copies of the stack
|
||||
+ final List<ItemStack> apiItemStacks = new ArrayList<>(nmsItemStacks.size());
|
||||
+ for (final net.minecraft.world.item.ItemStack nmsItemStack : nmsItemStacks) {
|
||||
+ apiItemStacks.add(CraftItemStack.asCraftMirror(nmsItemStack.copy()));
|
||||
+ }
|
||||
+
|
||||
+ return apiItemStacks;
|
||||
+ return Collections.unmodifiableList(apiItemStacks);
|
||||
+ }
|
||||
+
|
||||
+ static final class BuilderImpl implements Builder {
|
||||
|
@ -521,12 +529,109 @@ index 0000000000000000000000000000000000000000..414e89666d0b2ba741c14113a6155fce
|
|||
+ }
|
||||
+ }
|
||||
+ }
|
||||
diff --git a/src/main/java/io/papermc/paper/datakey/types/PaperItemEnchantments.java b/src/main/java/io/papermc/paper/datakey/types/PaperItemEnchantments.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..85b4d15588bd50950048edd3d03f2afbaf0e63a2
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/datakey/types/PaperItemEnchantments.java
|
||||
@@ -0,0 +1,91 @@
|
||||
+package io.papermc.paper.datakey.types;
|
||||
+
|
||||
+import java.util.Collections;
|
||||
+import java.util.HashMap;
|
||||
+import java.util.Map;
|
||||
+import net.minecraft.core.Holder;
|
||||
+import org.bukkit.craftbukkit.enchantments.CraftEnchantment;
|
||||
+import org.bukkit.craftbukkit.util.Handleable;
|
||||
+import org.bukkit.enchantments.Enchantment;
|
||||
+import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
+import org.checkerframework.framework.qual.DefaultQualifier;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+
|
||||
+@DefaultQualifier(NonNull.class)
|
||||
+public record PaperItemEnchantments(
|
||||
+ net.minecraft.world.item.enchantment.ItemEnchantments itemEnchantments,
|
||||
+ Map<Enchantment, Integer> enchantments
|
||||
+) implements ItemEnchantments, Handleable<net.minecraft.world.item.enchantment.ItemEnchantments> {
|
||||
+
|
||||
+ public PaperItemEnchantments(final net.minecraft.world.item.enchantment.ItemEnchantments itemEnchantments) {
|
||||
+ this(itemEnchantments, convert(itemEnchantments));
|
||||
+ }
|
||||
+
|
||||
+ private static Map<Enchantment, Integer> convert(final net.minecraft.world.item.enchantment.ItemEnchantments itemEnchantments) {
|
||||
+ if (itemEnchantments.isEmpty()) {
|
||||
+ return Collections.emptyMap();
|
||||
+ }
|
||||
+ final Map<Enchantment, Integer> map = new HashMap<>();
|
||||
+ for (final Holder<net.minecraft.world.item.enchantment.Enchantment> nmsEnchantment : itemEnchantments.keySet()) {
|
||||
+ map.put(CraftEnchantment.minecraftHolderToBukkit(nmsEnchantment), itemEnchantments.getLevel(nmsEnchantment.value()));
|
||||
+ }
|
||||
+ return Collections.unmodifiableMap(map); // TODO look into making a "transforming" map
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean showInTooltip() {
|
||||
+ return this.itemEnchantments.showInTooltip;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public ItemEnchantments showInTooltip(final boolean showInTooltip) {
|
||||
+ return new PaperItemEnchantments(this.itemEnchantments.withTooltip(showInTooltip), this.enchantments);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public net.minecraft.world.item.enchantment.ItemEnchantments getHandle() {
|
||||
+ return this.itemEnchantments;
|
||||
+ }
|
||||
+
|
||||
+ static final class BuilderImpl implements ItemEnchantments.Builder {
|
||||
+
|
||||
+ private final Map<Enchantment, Integer> enchantments = new HashMap<>();
|
||||
+ private boolean showInTooltip = net.minecraft.world.item.enchantment.ItemEnchantments.EMPTY.showInTooltip; // default
|
||||
+
|
||||
+ @Override
|
||||
+ public Builder add(final Enchantment enchantment, final int level) {
|
||||
+ this.enchantments.put(enchantment, level);
|
||||
+ return this;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public Builder addAll(final Map<Enchantment, Integer> enchantments) {
|
||||
+ this.enchantments.putAll(enchantments);
|
||||
+ return this;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public Builder remove(final Enchantment enchantment) {
|
||||
+ this.enchantments.remove(enchantment);
|
||||
+ return this;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public Builder showInTooltip(final boolean showInTooltip) {
|
||||
+ this.showInTooltip = showInTooltip;
|
||||
+ return this;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public ItemEnchantments build() {
|
||||
+ if (this.enchantments.isEmpty()) {
|
||||
+ return new PaperItemEnchantments(net.minecraft.world.item.enchantment.ItemEnchantments.EMPTY.withTooltip(this.showInTooltip));
|
||||
+ }
|
||||
+ final net.minecraft.world.item.enchantment.ItemEnchantments.Mutable mutable = new net.minecraft.world.item.enchantment.ItemEnchantments.Mutable(net.minecraft.world.item.enchantment.ItemEnchantments.EMPTY);
|
||||
+ this.enchantments.forEach((enchantment, level) -> {
|
||||
+ mutable.set(CraftEnchantment.bukkitToMinecraft(enchantment), level);
|
||||
+ });
|
||||
+ return new PaperItemEnchantments(mutable.toImmutable());
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/io/papermc/paper/datakey/types/PaperItemLore.java b/src/main/java/io/papermc/paper/datakey/types/PaperItemLore.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..02db3e26cbbcfe4b564a9699168de4d27005a1a0
|
||||
index 0000000000000000000000000000000000000000..7f4af0bbe6c2921d943234a910831d7ec7405581
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/datakey/types/PaperItemLore.java
|
||||
@@ -0,0 +1,66 @@
|
||||
@@ -0,0 +1,56 @@
|
||||
+package io.papermc.paper.datakey.types;
|
||||
+
|
||||
+import com.google.common.collect.Lists;
|
||||
|
@ -560,16 +665,6 @@ index 0000000000000000000000000000000000000000..02db3e26cbbcfe4b564a9699168de4d2
|
|||
+ return this.impl;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public List<Component> lines() {
|
||||
+ return this.lines;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public List<Component> styledLines() {
|
||||
+ return this.styledLines;
|
||||
+ }
|
||||
+
|
||||
+ static final class BuilderImpl implements ItemLore.Builder {
|
||||
+
|
||||
+ private List<? extends ComponentLike> lines = Collections.emptyList();
|
||||
|
@ -595,24 +690,24 @@ index 0000000000000000000000000000000000000000..02db3e26cbbcfe4b564a9699168de4d2
|
|||
+}
|
||||
diff --git a/src/main/java/io/papermc/paper/datakey/types/PaperPotDecorations.java b/src/main/java/io/papermc/paper/datakey/types/PaperPotDecorations.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..57fad01b4bc929577a54997ca3983519399d22fe
|
||||
index 0000000000000000000000000000000000000000..1bea817dbb8203e8715d13fb715c5d92d85c1f47
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/datakey/types/PaperPotDecorations.java
|
||||
@@ -0,0 +1,86 @@
|
||||
@@ -0,0 +1,82 @@
|
||||
+package io.papermc.paper.datakey.types;
|
||||
+
|
||||
+import java.util.Optional;
|
||||
+import org.bukkit.Material;
|
||||
+import org.bukkit.craftbukkit.inventory.CraftItemType;
|
||||
+import org.bukkit.craftbukkit.util.Handleable;
|
||||
+import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
+import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
+import org.checkerframework.framework.qual.DefaultQualifier;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+import org.jetbrains.annotations.Nullable;
|
||||
+import java.util.Optional;
|
||||
+
|
||||
+@DefaultQualifier(NonNull.class)
|
||||
+public record PaperPotDecorations(
|
||||
+ net.minecraft.world.level.block.entity.PotDecorations impl) implements PotDecorations, Handleable<net.minecraft.world.level.block.entity.PotDecorations> {
|
||||
+ net.minecraft.world.level.block.entity.PotDecorations impl
|
||||
+) implements PotDecorations, Handleable<net.minecraft.world.level.block.entity.PotDecorations> {
|
||||
+
|
||||
+ @Override
|
||||
+ public @Nullable Material back() {
|
||||
|
@ -641,41 +736,37 @@ index 0000000000000000000000000000000000000000..57fad01b4bc929577a54997ca3983519
|
|||
+
|
||||
+ static final class BuilderImpl implements Builder {
|
||||
+
|
||||
+ @Nullable
|
||||
+ private Material back;
|
||||
+ @Nullable
|
||||
+ private Material left;
|
||||
+ @Nullable
|
||||
+ private Material right;
|
||||
+ @Nullable
|
||||
+ private Material front;
|
||||
+ private @Nullable Material back;
|
||||
+ private @Nullable Material left;
|
||||
+ private @Nullable Material right;
|
||||
+ private @Nullable Material front;
|
||||
+
|
||||
+ @Override
|
||||
+ public Builder back(@Nullable final Material item) {
|
||||
+ this.back = item;
|
||||
+ public Builder back(final @Nullable Material back) {
|
||||
+ this.back = back;
|
||||
+ return this;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public Builder left(@Nullable final Material item) {
|
||||
+ this.left = item;
|
||||
+ public Builder left(final @Nullable Material left) {
|
||||
+ this.left = left;
|
||||
+ return this;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public Builder right(@Nullable final Material item) {
|
||||
+ this.right = item;
|
||||
+ public Builder right(final @Nullable Material right) {
|
||||
+ this.right = right;
|
||||
+ return this;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public Builder front(@Nullable final Material item) {
|
||||
+ this.front = item;
|
||||
+ public Builder front(final @Nullable Material front) {
|
||||
+ this.front = front;
|
||||
+ return this;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public @NotNull PotDecorations build() {
|
||||
+ public PotDecorations build() {
|
||||
+ return new PaperPotDecorations(new net.minecraft.world.level.block.entity.PotDecorations(
|
||||
+ Optional.ofNullable(this.back).map(CraftItemType::bukkitToMinecraft),
|
||||
+ Optional.ofNullable(this.left).map(CraftItemType::bukkitToMinecraft),
|
||||
|
@ -684,7 +775,7 @@ index 0000000000000000000000000000000000000000..57fad01b4bc929577a54997ca3983519
|
|||
+ );
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/io/papermc/paper/datakey/types/PaperUnbreakable.java b/src/main/java/io/papermc/paper/datakey/types/PaperUnbreakable.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..8af596088fe4dd7d81f6d4d4ebf4c37121b442cb
|
||||
|
@ -731,6 +822,19 @@ index 0000000000000000000000000000000000000000..8af596088fe4dd7d81f6d4d4ebf4c371
|
|||
+ }
|
||||
+ }
|
||||
+ }
|
||||
diff --git a/src/main/java/net/minecraft/world/item/enchantment/ItemEnchantments.java b/src/main/java/net/minecraft/world/item/enchantment/ItemEnchantments.java
|
||||
index af18de11dd55938b6091f5ab183bd3fe4e8df152..dad6cb4bbb52f4ce7e8f40131ee0bd3746f61441 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/enchantment/ItemEnchantments.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/enchantment/ItemEnchantments.java
|
||||
@@ -63,7 +63,7 @@ public class ItemEnchantments implements TooltipProvider {
|
||||
component -> component.showInTooltip,
|
||||
ItemEnchantments::new
|
||||
);
|
||||
- final Object2IntAVLTreeMap<Holder<Enchantment>> enchantments; // Paper
|
||||
+ public final Object2IntAVLTreeMap<Holder<Enchantment>> enchantments; // Paper - make public
|
||||
public final boolean showInTooltip;
|
||||
|
||||
ItemEnchantments(Object2IntAVLTreeMap<Holder<Enchantment>> enchantments, boolean showInTooltip) { // Paper
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java
|
||||
index 73472890e30180dc3cb6aa1bd9c5815087334682..9b75991344fa6c63fb8414aef062cde45d40d0cf 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java
|
||||
|
|
Loading…
Reference in New Issue