mirror of
https://github.com/PaperMC/Paper.git
synced 2024-10-23 17:36:33 +02:00
add DataComponentType#isPersistent
This commit is contained in:
parent
7834985c66
commit
d5ca1b07c0
2 changed files with 23 additions and 10 deletions
|
@ -6,10 +6,10 @@ Subject: [PATCH] WIP DataComponent API
|
|||
|
||||
diff --git a/src/main/java/io/papermc/paper/component/DataComponentType.java b/src/main/java/io/papermc/paper/component/DataComponentType.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..8185d943d95153bdff00629af8ace46f4ffb65fe
|
||||
index 0000000000000000000000000000000000000000..50d15b4e0ed5cd17fdc95476ee4650ef918af62c
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/component/DataComponentType.java
|
||||
@@ -0,0 +1,19 @@
|
||||
@@ -0,0 +1,27 @@
|
||||
+package io.papermc.paper.component;
|
||||
+
|
||||
+import org.bukkit.Keyed;
|
||||
|
@ -18,6 +18,14 @@ index 0000000000000000000000000000000000000000..8185d943d95153bdff00629af8ace46f
|
|||
+@ApiStatus.NonExtendable
|
||||
+public interface DataComponentType extends Keyed {
|
||||
+
|
||||
+ /**
|
||||
+ * Checks if this data component type is persistent, or
|
||||
+ * that it will be saved with any itemstack it's attached to.
|
||||
+ *
|
||||
+ * @return true if persistent, false otherwise
|
||||
+ */
|
||||
+ boolean isPersistent();
|
||||
+
|
||||
+ @SuppressWarnings("unused")
|
||||
+ @ApiStatus.NonExtendable
|
||||
+ interface Valued<T> extends DataComponentType {
|
||||
|
|
|
@ -174,10 +174,10 @@ index 0000000000000000000000000000000000000000..ca621dd53bee70a2f383517a4f1f4c15
|
|||
+}
|
||||
diff --git a/src/main/java/io/papermc/paper/component/PaperComponentType.java b/src/main/java/io/papermc/paper/component/PaperComponentType.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..4f2dc5add01a3998b4d46af0a663a6fe539f6b0c
|
||||
index 0000000000000000000000000000000000000000..5639559368e6866e9b0afa6688f3b12cde4254f8
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/component/PaperComponentType.java
|
||||
@@ -0,0 +1,113 @@
|
||||
@@ -0,0 +1,118 @@
|
||||
+package io.papermc.paper.component;
|
||||
+
|
||||
+import java.util.Collections;
|
||||
|
@ -247,6 +247,11 @@ index 0000000000000000000000000000000000000000..4f2dc5add01a3998b4d46af0a663a6fe
|
|||
+ return this.key;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean isPersistent() {
|
||||
+ return !this.getHandle().isTransient();
|
||||
+ }
|
||||
+
|
||||
+ public ComponentAdapter<NMS, T> getAdapter() {
|
||||
+ return this.adapter;
|
||||
+ }
|
||||
|
@ -1779,7 +1784,7 @@ index 0000000000000000000000000000000000000000..a2c02206254a18e089cb2b40eab5c59e
|
|||
+io.papermc.paper.component.item.ComponentTypesBridgesImpl
|
||||
diff --git a/src/test/java/io/papermc/paper/item/ItemStackDataComponentTest.java b/src/test/java/io/papermc/paper/item/ItemStackDataComponentTest.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..40c77423134931083913e871b80dae8e6e5f2194
|
||||
index 0000000000000000000000000000000000000000..f5c652d47bfa539bd5ecb8b8f7107e1675d3ec3b
|
||||
--- /dev/null
|
||||
+++ b/src/test/java/io/papermc/paper/item/ItemStackDataComponentTest.java
|
||||
@@ -0,0 +1,127 @@
|
||||
|
@ -1844,7 +1849,7 @@ index 0000000000000000000000000000000000000000..40c77423134931083913e871b80dae8e
|
|||
+ stack.setData(DataComponentTypes.HIDE_ADDITIONAL_TOOLTIP);
|
||||
+
|
||||
+ Assertions.assertTrue(stack.getItemMeta().getItemFlags().contains(ItemFlag.HIDE_ADDITIONAL_TOOLTIP));
|
||||
+ stack.removeData(DataComponentTypes.HIDE_ADDITIONAL_TOOLTIP);
|
||||
+ stack.unsetData(DataComponentTypes.HIDE_ADDITIONAL_TOOLTIP);
|
||||
+ Assertions.assertFalse(stack.getItemMeta().getItemFlags().contains(ItemFlag.HIDE_ADDITIONAL_TOOLTIP));
|
||||
+ }
|
||||
+
|
||||
|
@ -1855,11 +1860,11 @@ index 0000000000000000000000000000000000000000..40c77423134931083913e871b80dae8e
|
|||
+
|
||||
+ Assertions.assertEquals(stack.getItemMeta().isHideTooltip(), stack.hasData(DataComponentTypes.HIDE_TOOLTIP));
|
||||
+ Assertions.assertTrue(stack.getItemMeta().isHideTooltip());
|
||||
+ stack.removeData(DataComponentTypes.HIDE_TOOLTIP);
|
||||
+ stack.unsetData(DataComponentTypes.HIDE_TOOLTIP);
|
||||
+ Assertions.assertFalse(stack.getItemMeta().isHideTooltip());
|
||||
+ stack = new ItemStack(Material.STONE);
|
||||
+
|
||||
+ stack.removeData(DataComponentTypes.HIDE_TOOLTIP);
|
||||
+ stack.unsetData(DataComponentTypes.HIDE_TOOLTIP);
|
||||
+ Assertions.assertFalse(stack.getItemMeta().isHideTooltip());
|
||||
+ Assertions.assertEquals(stack.getItemMeta().isHideTooltip(), stack.hasData(DataComponentTypes.HIDE_TOOLTIP));
|
||||
+ }
|
||||
|
@ -1879,7 +1884,7 @@ index 0000000000000000000000000000000000000000..40c77423134931083913e871b80dae8e
|
|||
+ CrossbowMeta meta = (CrossbowMeta) stack.getItemMeta();
|
||||
+ Assertions.assertEquals(meta.getChargedProjectiles().getFirst(), projectile);
|
||||
+
|
||||
+ stack.removeData(DataComponentTypes.CHARGED_PROJECTILES);
|
||||
+ stack.unsetData(DataComponentTypes.CHARGED_PROJECTILES);
|
||||
+ meta = (CrossbowMeta) stack.getItemMeta();
|
||||
+ Assertions.assertTrue(meta.getChargedProjectiles().isEmpty());
|
||||
+ }
|
||||
|
@ -1893,7 +1898,7 @@ index 0000000000000000000000000000000000000000..40c77423134931083913e871b80dae8e
|
|||
+ DecoratedPot decoratedPot = (DecoratedPot) state;
|
||||
+
|
||||
+ Assertions.assertEquals(decoratedPot.getSherd(DecoratedPot.Side.BACK), Material.DANGER_POTTERY_SHERD);
|
||||
+ stack.removeData(DataComponentTypes.POT_DECORATIONS);
|
||||
+ stack.unsetData(DataComponentTypes.POT_DECORATIONS);
|
||||
+ decoratedPot = (DecoratedPot) ((BlockStateMeta) stack.getItemMeta()).getBlockState();
|
||||
+ Assertions.assertTrue(decoratedPot.getSherds().values().stream().allMatch((m) -> m == Material.BRICK));
|
||||
+ }
|
||||
|
|
Loading…
Reference in a new issue