Compare commits

...

14 Commits

Author SHA1 Message Date
Jake Potrebic b8664825b1
Merge 083ec9454f into 68e23db25d 2024-04-26 18:44:57 -07:00
Jake Potrebic 68e23db25d
add back missing call to profile fill events 2024-04-26 18:41:54 -07:00
Jake Potrebic 80bd01527f
fix adventure converters not using RegistryOps 2024-04-26 18:16:31 -07:00
Jake Potrebic 2f19f0fb7b
fix enchantment order issue 2024-04-26 18:06:41 -07:00
Jason Penilla 548504381f
Don't tell people to build the reobf jar 2024-04-26 18:05:17 -07:00
Jake Potrebic f1fc1b30be
readd old UUID format patch 2024-04-26 17:41:36 -07:00
Jake Potrebic ba8512a0d8
fix javadocs for SpawnerEntry$Equipment API 2024-04-26 17:00:40 -07:00
Jake Potrebic c38f96b0e5
deprecate our ItemRarity API 2024-04-26 17:00:40 -07:00
Jason Penilla 6a4974b1b9
Remove shadow from build classpath
it isn't used
2024-04-26 16:48:34 -07:00
Jason Penilla ff77f82539
paperweight 1.6.0 2024-04-26 16:19:59 -07:00
Jake Potrebic 464cc81633
fix custom potion mixes 2024-04-26 16:17:14 -07:00
Jake Potrebic 4c53acedce
fix exact choice recipes 2024-04-26 15:25:20 -07:00
Jake Potrebic 083ec9454f
fix typo 2024-04-25 10:03:59 -07:00
Jake Potrebic f7210b6236
readd itemstack data sanitization 2024-04-25 09:58:59 -07:00
579 changed files with 876 additions and 621 deletions

View File

@ -65,7 +65,7 @@ How To (Compiling Jar From Source)
------ ------
To compile Paper, you need JDK 21 and an internet connection. To compile Paper, you need JDK 21 and an internet connection.
Clone this repo, run `./gradlew applyPatches`, then `./gradlew createReobfBundlerJar` from your terminal. You can find the compiled jar in the project root's `build/libs` directory. Clone this repo, run `./gradlew applyPatches`, then `./gradlew createMojmapBundlerJar` from your terminal. You can find the compiled jar in the project root's `build/libs` directory.
To get a full list of tasks, run `./gradlew tasks`. To get a full list of tasks, run `./gradlew tasks`.

View File

@ -11,8 +11,7 @@ import kotlin.io.path.*
plugins { plugins {
java java
`maven-publish` `maven-publish`
id("com.github.johnrengelman.shadow") version "8.1.1" apply false id("io.papermc.paperweight.core") version "1.6.0"
id("io.papermc.paperweight.core") version "1.6.0-SNAPSHOT"
} }
allprojects { allprojects {

View File

@ -0,0 +1,131 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
Date: Fri, 12 Mar 2021 17:09:40 -0800
Subject: [PATCH] Improve Item Rarity API
diff --git a/src/main/java/io/papermc/paper/inventory/ItemRarity.java b/src/main/java/io/papermc/paper/inventory/ItemRarity.java
new file mode 100644
index 0000000000000000000000000000000000000000..f1cd5a4f37eee8975ac3d0421b524afcf644fafd
--- /dev/null
+++ b/src/main/java/io/papermc/paper/inventory/ItemRarity.java
@@ -0,0 +1,32 @@
+package io.papermc.paper.inventory;
+
+import net.kyori.adventure.text.format.NamedTextColor;
+import net.kyori.adventure.text.format.TextColor;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * @deprecated use {@link org.bukkit.inventory.ItemRarity} with {@link org.bukkit.inventory.meta.ItemMeta#getRarity()}
+ */
+@Deprecated(forRemoval = true, since = "1.20.5")
+public enum ItemRarity {
+
+ COMMON(NamedTextColor.WHITE),
+ UNCOMMON(NamedTextColor.YELLOW),
+ RARE(NamedTextColor.AQUA),
+ EPIC(NamedTextColor.LIGHT_PURPLE);
+
+ TextColor color;
+
+ ItemRarity(TextColor color) {
+ this.color = color;
+ }
+
+ /**
+ * Gets the color formatting associated with the rarity.
+ * @return
+ */
+ @NotNull
+ public TextColor getColor() {
+ return color;
+ }
+}
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
index 3ee36de0ee975dc300e594b17d0dc2c06edf2a16..2ce1d9239d08c799d53873563646f933211a902e 100644
--- a/src/main/java/org/bukkit/Material.java
+++ b/src/main/java/org/bukkit/Material.java
@@ -4748,6 +4748,19 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
return Bukkit.getUnsafe().getBlockTranslationKey(this);
}
}
+
+ /**
+ * Returns the item rarity for the item. The Material <b>MUST</b> be an Item not a block.
+ * Use {@link #isItem()} before this.
+ *
+ * @return the item rarity
+ * @deprecated use {@link org.bukkit.inventory.meta.ItemMeta#hasRarity()} and {@link org.bukkit.inventory.meta.ItemMeta#getRarity()}
+ */
+ @NotNull
+ @Deprecated(forRemoval = true, since = "1.20.5")
+ public io.papermc.paper.inventory.ItemRarity getItemRarity() {
+ return new org.bukkit.inventory.ItemStack(this).getRarity();
+ }
// Paper end
/**
diff --git a/src/main/java/org/bukkit/inventory/ItemRarity.java b/src/main/java/org/bukkit/inventory/ItemRarity.java
index e7931f73f10fe35ebd5fe4a04b036d53bb117ebd..cbce835ed6d44e5b8c9aaae4e36a77f8e5bed45f 100644
--- a/src/main/java/org/bukkit/inventory/ItemRarity.java
+++ b/src/main/java/org/bukkit/inventory/ItemRarity.java
@@ -9,17 +9,32 @@ public enum ItemRarity {
/**
* White item name.
*/
- COMMON,
+ COMMON(net.kyori.adventure.text.format.NamedTextColor.WHITE), // Paper
/**
* Yellow item name.
*/
- UNCOMMON,
+ UNCOMMON(net.kyori.adventure.text.format.NamedTextColor.YELLOW), // Paper
/**
* Aqua item name.
*/
- RARE,
+ RARE(net.kyori.adventure.text.format.NamedTextColor.AQUA), // Paper
/**
* Light purple item name.
*/
- EPIC;
+ EPIC(net.kyori.adventure.text.format.NamedTextColor.LIGHT_PURPLE); // Paper
+ // Paper start - improve ItemRarity
+ private final net.kyori.adventure.text.format.NamedTextColor color;
+ ItemRarity(final net.kyori.adventure.text.format.NamedTextColor color) {
+ this.color = color;
+ }
+
+ /**
+ * Gets the color formatting associated with this rarity.
+ *
+ * @return the color
+ */
+ public net.kyori.adventure.text.format.@org.jetbrains.annotations.NotNull TextColor color() {
+ return this.color;
+ }
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
index 96b6052c198454f06f877fc7cda85a98c0ddba7c..f9b0b463f9920524eab7f328bc456a30eebc6910 100644
--- a/src/main/java/org/bukkit/inventory/ItemStack.java
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java
@@ -888,5 +888,17 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
public @NotNull String translationKey() {
return Bukkit.getUnsafe().getTranslationKey(this);
}
+
+ /**
+ * Gets the item rarity of the itemstack. The rarity can change based on enchantments.
+ *
+ * @return the itemstack rarity
+ * @deprecated Use {@link ItemMeta#hasRarity()} and {@link ItemMeta#getRarity()}
+ */
+ @NotNull
+ @Deprecated(forRemoval = true, since = "1.20.5")
+ public io.papermc.paper.inventory.ItemRarity getRarity() {
+ return io.papermc.paper.inventory.ItemRarity.valueOf(this.getItemMeta().getRarity().name());
+ }
// Paper end
}

View File

@ -1,109 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
Date: Fri, 12 Mar 2021 17:09:40 -0800
Subject: [PATCH] Item Rarity API
diff --git a/src/main/java/io/papermc/paper/inventory/ItemRarity.java b/src/main/java/io/papermc/paper/inventory/ItemRarity.java
new file mode 100644
index 0000000000000000000000000000000000000000..74ef8395cc040ce488c2acaa416db20272cc2734
--- /dev/null
+++ b/src/main/java/io/papermc/paper/inventory/ItemRarity.java
@@ -0,0 +1,28 @@
+package io.papermc.paper.inventory;
+
+import net.kyori.adventure.text.format.NamedTextColor;
+import net.kyori.adventure.text.format.TextColor;
+import org.jetbrains.annotations.NotNull;
+
+public enum ItemRarity {
+
+ COMMON(NamedTextColor.WHITE),
+ UNCOMMON(NamedTextColor.YELLOW),
+ RARE(NamedTextColor.AQUA),
+ EPIC(NamedTextColor.LIGHT_PURPLE);
+
+ TextColor color;
+
+ ItemRarity(TextColor color) {
+ this.color = color;
+ }
+
+ /**
+ * Gets the color formatting associated with the rarity.
+ * @return
+ */
+ @NotNull
+ public TextColor getColor() {
+ return color;
+ }
+}
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
index 3ee36de0ee975dc300e594b17d0dc2c06edf2a16..7c14a272156cefe6d69e41fec6892891646e0985 100644
--- a/src/main/java/org/bukkit/Material.java
+++ b/src/main/java/org/bukkit/Material.java
@@ -4748,6 +4748,17 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
return Bukkit.getUnsafe().getBlockTranslationKey(this);
}
}
+
+ /**
+ * Returns the item rarity for the item. The Material <b>MUST</b> be an Item not a block.
+ * Use {@link #isItem()} before this.
+ *
+ * @return the item rarity
+ */
+ @NotNull
+ public io.papermc.paper.inventory.ItemRarity getItemRarity() {
+ return Bukkit.getUnsafe().getItemRarity(this);
+ }
// Paper end
/**
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
index 5de86f8cd3cc7f7e8ebc4a22d3921273378704f2..c423204eaf3252c9fc1a3af1214ec70ed712fb80 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
@@ -169,5 +169,22 @@ public interface UnsafeValues {
* Just don't use it.
*/
@org.jetbrains.annotations.NotNull String getMainLevelName();
+
+ /**
+ * Gets the item rarity of a material. The material <b>MUST</b> be an item.
+ * Use {@link Material#isItem()} before this.
+ *
+ * @param material the material to get the rarity of
+ * @return the item rarity
+ */
+ public io.papermc.paper.inventory.ItemRarity getItemRarity(Material material);
+
+ /**
+ * Gets the item rarity of the itemstack. The rarity can change based on enchantements.
+ *
+ * @param itemStack the itemstack to get the rarity of
+ * @return the itemstack rarity
+ */
+ public io.papermc.paper.inventory.ItemRarity getItemStackRarity(ItemStack itemStack);
// Paper end
}
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
index 96b6052c198454f06f877fc7cda85a98c0ddba7c..069c644f03286ba62d521754d825e81934e1e6d6 100644
--- a/src/main/java/org/bukkit/inventory/ItemStack.java
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java
@@ -888,5 +888,15 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
public @NotNull String translationKey() {
return Bukkit.getUnsafe().getTranslationKey(this);
}
+
+ /**
+ * Gets the item rarity of the itemstack. The rarity can change based on enchantements.
+ *
+ * @return the itemstack rarity
+ */
+ @NotNull
+ public io.papermc.paper.inventory.ItemRarity getRarity() {
+ return Bukkit.getUnsafe().getItemStackRarity(this);
+ }
// Paper end
}

View File

@ -5,13 +5,13 @@ Subject: [PATCH] Expose protocol version
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
index c423204eaf3252c9fc1a3af1214ec70ed712fb80..42e4983051062f2fd3b595487cf8093440b41bba 100644 index 5de86f8cd3cc7f7e8ebc4a22d3921273378704f2..a874faec93468c83fc475b60629fc36f933bd11c 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java --- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java
@@ -186,5 +186,12 @@ public interface UnsafeValues { @@ -169,5 +169,12 @@ public interface UnsafeValues {
* @return the itemstack rarity * Just don't use it.
*/ */
public io.papermc.paper.inventory.ItemRarity getItemStackRarity(ItemStack itemStack); @org.jetbrains.annotations.NotNull String getMainLevelName();
+ +
+ /** + /**
+ * Returns the server's protocol version. + * Returns the server's protocol version.

View File

@ -5,13 +5,14 @@ Subject: [PATCH] ItemStack repair check API
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
index 42e4983051062f2fd3b595487cf8093440b41bba..057f4db9cb6b686ab941ec5d3e6ca23dcfbd845f 100644 index a874faec93468c83fc475b60629fc36f933bd11c..4130481843c9e0b847bd656622b0c1107ac1297b 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java --- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java
@@ -187,6 +187,16 @@ public interface UnsafeValues { @@ -176,5 +176,15 @@ public interface UnsafeValues {
* @return the server's protocol version
*/ */
public io.papermc.paper.inventory.ItemRarity getItemStackRarity(ItemStack itemStack); int getProtocolVersion();
+
+ /** + /**
+ * Checks if an itemstack can be repaired with another itemstack. + * Checks if an itemstack can be repaired with another itemstack.
+ * Returns false if either argument's type is not an item ({@link Material#isItem()}). + * Returns false if either argument's type is not an item ({@link Material#isItem()}).
@ -21,17 +22,15 @@ index 42e4983051062f2fd3b595487cf8093440b41bba..057f4db9cb6b686ab941ec5d3e6ca23d
+ * @return true if valid repair, false if not + * @return true if valid repair, false if not
+ */ + */
+ public boolean isValidRepairItemStack(@org.jetbrains.annotations.NotNull ItemStack itemToBeRepaired, @org.jetbrains.annotations.NotNull ItemStack repairMaterial); + public boolean isValidRepairItemStack(@org.jetbrains.annotations.NotNull ItemStack itemToBeRepaired, @org.jetbrains.annotations.NotNull ItemStack repairMaterial);
+ // Paper end
/** }
* Returns the server's protocol version.
*
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
index 069c644f03286ba62d521754d825e81934e1e6d6..51f3f387af28bb733e2a20c7befd1070768103b2 100644 index f9b0b463f9920524eab7f328bc456a30eebc6910..2fb521dc2b4d991f56288e2faba978d9d7d29a0b 100644
--- a/src/main/java/org/bukkit/inventory/ItemStack.java --- a/src/main/java/org/bukkit/inventory/ItemStack.java
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
@@ -898,5 +898,27 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat @@ -900,5 +900,27 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
public io.papermc.paper.inventory.ItemRarity getRarity() { public io.papermc.paper.inventory.ItemRarity getRarity() {
return Bukkit.getUnsafe().getItemStackRarity(this); return io.papermc.paper.inventory.ItemRarity.valueOf(this.getItemMeta().getRarity().name());
} }
+ +
+ /** + /**

View File

@ -5,7 +5,7 @@ Subject: [PATCH] ItemStack#editMeta
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
index 51f3f387af28bb733e2a20c7befd1070768103b2..0f3ef975293d0e970a35fd6845f8bf911e933169 100644 index 2fb521dc2b4d991f56288e2faba978d9d7d29a0b..455e633edc19d29559e66b1d52c532ef1a0fa8df 100644
--- a/src/main/java/org/bukkit/inventory/ItemStack.java --- a/src/main/java/org/bukkit/inventory/ItemStack.java
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
@@ -558,6 +558,50 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat @@ -558,6 +558,50 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat

View File

@ -6,12 +6,12 @@ Subject: [PATCH] Attributes API for item defaults
(Now replaced by upstream's API) (Now replaced by upstream's API)
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
index 7c14a272156cefe6d69e41fec6892891646e0985..eb9e0eb1aa6e203ff6f896b177ee60c8afacc62d 100644 index 2ce1d9239d08c799d53873563646f933211a902e..401645f5e0dfe6c9a0d082b5a76112a882b058ee 100644
--- a/src/main/java/org/bukkit/Material.java --- a/src/main/java/org/bukkit/Material.java
+++ b/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java
@@ -4759,6 +4759,21 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla @@ -4761,6 +4761,21 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
public io.papermc.paper.inventory.ItemRarity getItemRarity() { public io.papermc.paper.inventory.ItemRarity getItemRarity() {
return Bukkit.getUnsafe().getItemRarity(this); return new org.bukkit.inventory.ItemStack(this).getRarity();
} }
+ +
+ /** + /**

View File

@ -5,13 +5,13 @@ Subject: [PATCH] Get entity default attributes
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
index 057f4db9cb6b686ab941ec5d3e6ca23dcfbd845f..900b502a400bb99a2131305812e48acfeb8b94a1 100644 index 4130481843c9e0b847bd656622b0c1107ac1297b..a846f3c6e8dceb90e42db903b8be2c248f2f9d5c 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java --- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java
@@ -203,5 +203,22 @@ public interface UnsafeValues { @@ -186,5 +186,22 @@ public interface UnsafeValues {
* @return the server's protocol version * @return true if valid repair, false if not
*/ */
int getProtocolVersion(); public boolean isValidRepairItemStack(@org.jetbrains.annotations.NotNull ItemStack itemToBeRepaired, @org.jetbrains.annotations.NotNull ItemStack repairMaterial);
+ +
+ /** + /**
+ * Checks if the entity represented by the namespaced key has default attributes. + * Checks if the entity represented by the namespaced key has default attributes.

View File

@ -5,10 +5,10 @@ Subject: [PATCH] Add isCollidable methods to various places
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
index eb9e0eb1aa6e203ff6f896b177ee60c8afacc62d..137b4553636f31574c51960cada6eb07d80a02d9 100644 index 401645f5e0dfe6c9a0d082b5a76112a882b058ee..8283eccf2578bae50a4c6fd86318e0d5f7cf09df 100644
--- a/src/main/java/org/bukkit/Material.java --- a/src/main/java/org/bukkit/Material.java
+++ b/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java
@@ -4774,6 +4774,16 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla @@ -4776,6 +4776,16 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
public Multimap<Attribute, AttributeModifier> getItemAttributes(@NotNull EquipmentSlot equipmentSlot) { public Multimap<Attribute, AttributeModifier> getItemAttributes(@NotNull EquipmentSlot equipmentSlot) {
return this.getDefaultAttributeModifiers(equipmentSlot); return this.getDefaultAttributeModifiers(equipmentSlot);
} }
@ -26,10 +26,10 @@ index eb9e0eb1aa6e203ff6f896b177ee60c8afacc62d..137b4553636f31574c51960cada6eb07
/** /**
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
index 900b502a400bb99a2131305812e48acfeb8b94a1..75c9569214321b3f23f3614722d7453020d095c3 100644 index a846f3c6e8dceb90e42db903b8be2c248f2f9d5c..e1f9d80f0a6481824443339015049f96f3bf86f2 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java --- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java
@@ -220,5 +220,14 @@ public interface UnsafeValues { @@ -203,5 +203,14 @@ public interface UnsafeValues {
* @throws IllegalArgumentException if the entity does not exist of have default attributes (use {@link #hasDefaultEntityAttributes(NamespacedKey)} first) * @throws IllegalArgumentException if the entity does not exist of have default attributes (use {@link #hasDefaultEntityAttributes(NamespacedKey)} first)
*/ */
@org.jetbrains.annotations.NotNull org.bukkit.attribute.Attributable getDefaultEntityAttributes(@org.jetbrains.annotations.NotNull NamespacedKey entityKey); @org.jetbrains.annotations.NotNull org.bukkit.attribute.Attributable getDefaultEntityAttributes(@org.jetbrains.annotations.NotNull NamespacedKey entityKey);

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Add Raw Byte Entity Serialization
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
index 75c9569214321b3f23f3614722d7453020d095c3..bdfa60a764c13d82cd013335fb7b0c896abe74bd 100644 index e1f9d80f0a6481824443339015049f96f3bf86f2..9245f50b2bac30e956ef6ddc11c551b9b68463ee 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java --- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java
@@ -158,6 +158,14 @@ public interface UnsafeValues { @@ -158,6 +158,14 @@ public interface UnsafeValues {

View File

@ -192,56 +192,18 @@ index 43b049b68a8af548cd05c67dafc23dabd07bab27..6da6c20b684eba64b85d67db2482b4a9
// Paper end // Paper end
} }
diff --git a/src/main/java/org/bukkit/potion/PotionBrewer.java b/src/main/java/org/bukkit/potion/PotionBrewer.java diff --git a/src/main/java/org/bukkit/potion/PotionBrewer.java b/src/main/java/org/bukkit/potion/PotionBrewer.java
index 2072f048e10eba829cef047d854b5a22c8f055a3..f81bbaa6d4a991f265e630dc9a3d3945bac78fff 100644 index 2072f048e10eba829cef047d854b5a22c8f055a3..c1bcbeef9cb634e6cb8c4b58bf06883c37cc028b 100644
--- a/src/main/java/org/bukkit/potion/PotionBrewer.java --- a/src/main/java/org/bukkit/potion/PotionBrewer.java
+++ b/src/main/java/org/bukkit/potion/PotionBrewer.java +++ b/src/main/java/org/bukkit/potion/PotionBrewer.java
@@ -7,7 +7,7 @@ import org.jetbrains.annotations.NotNull; @@ -4,10 +4,31 @@ import java.util.Collection;
* Represents a brewer that can create {@link PotionEffect}s. import org.jetbrains.annotations.NotNull;
/**
- * Represents a brewer that can create {@link PotionEffect}s.
+ * Used to manage custom {@link io.papermc.paper.potion.PotionMix}s.
*/ */
public interface PotionBrewer { public interface PotionBrewer {
-
+ // Paper start - keep old spigot methods, removal in 1.20.6
/**
* Creates a {@link PotionEffect} from the given {@link PotionEffectType},
* applying duration modifiers and checks.
@@ -16,9 +16,13 @@ public interface PotionBrewer {
* @param duration The duration in ticks
* @param amplifier The amplifier of the effect
* @return The resulting potion effect
+ * @deprecated use {@link PotionEffectType#createEffect(int, int)} instead.
*/
+ @Deprecated(forRemoval = true, since = "1.20.5")
@NotNull
- public PotionEffect createEffect(@NotNull PotionEffectType potion, int duration, int amplifier);
+ default PotionEffect createEffect(@NotNull PotionEffectType potion, int duration, int amplifier) {
+ return potion.createEffect(duration, amplifier);
+ }
/**
* Returns a collection of {@link PotionEffect} that would be applied from
@@ -28,9 +32,12 @@ public interface PotionBrewer {
* @return The list of effects
* @deprecated Non-Functional
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "1.20.5")
@NotNull
- public Collection<PotionEffect> getEffectsFromDamage(int damage);
+ default Collection<PotionEffect> getEffectsFromDamage(final int damage) {
+ return new java.util.ArrayList<>();
+ }
+ // Paper start - keep old spigot methods, removal in 1.20.6
/**
* Returns a collection of {@link PotionEffect} that would be applied from
@@ -43,6 +50,27 @@ public interface PotionBrewer {
* @deprecated Upgraded / extended potions are now their own {@link PotionType} use {@link PotionType#getPotionEffects()} instead
*/
@NotNull
- @Deprecated
+ @Deprecated(forRemoval = true, since = "1.20.5")
public Collection<PotionEffect> getEffects(@NotNull PotionType type, boolean upgraded, boolean extended);
+
+ // Paper start + // Paper start
+ /** + /**
+ * Adds a new potion mix recipe. + * Adds a new potion mix recipe.
@ -262,4 +224,48 @@ index 2072f048e10eba829cef047d854b5a22c8f055a3..f81bbaa6d4a991f265e630dc9a3d3945
+ */ + */
+ void resetPotionMixes(); + void resetPotionMixes();
+ // Paper end + // Paper end
+
/**
* Creates a {@link PotionEffect} from the given {@link PotionEffectType},
* applying duration modifiers and checks.
@@ -16,9 +37,15 @@ public interface PotionBrewer {
* @param duration The duration in ticks
* @param amplifier The amplifier of the effect
* @return The resulting potion effect
+ * @deprecated use {@link PotionEffectType#createEffect(int, int)} instead.
*/
+ @Deprecated(forRemoval = true, since = "1.20.5") // Paper
@NotNull
- public PotionEffect createEffect(@NotNull PotionEffectType potion, int duration, int amplifier);
+ // Paper start - make default
+ default PotionEffect createEffect(@NotNull PotionEffectType potion, int duration, int amplifier) {
+ return potion.createEffect(duration, amplifier);
+ }
+ // Paper end
/**
* Returns a collection of {@link PotionEffect} that would be applied from
@@ -28,9 +55,13 @@ public interface PotionBrewer {
* @return The list of effects
* @deprecated Non-Functional
*/
- @Deprecated
+ @Deprecated(forRemoval = true, since = "1.20.5") // Paper
@NotNull
- public Collection<PotionEffect> getEffectsFromDamage(int damage);
+ // Paper start - make default
+ default Collection<PotionEffect> getEffectsFromDamage(final int damage) {
+ return new java.util.ArrayList<>();
+ }
+ // Paper end
/**
* Returns a collection of {@link PotionEffect} that would be applied from
@@ -43,6 +74,6 @@ public interface PotionBrewer {
* @deprecated Upgraded / extended potions are now their own {@link PotionType} use {@link PotionType#getPotionEffects()} instead
*/
@NotNull
- @Deprecated
+ @Deprecated(forRemoval = true, since = "1.20.5") // Paper
public Collection<PotionEffect> getEffects(@NotNull PotionType type, boolean upgraded, boolean extended);
} }

View File

@ -70,7 +70,7 @@ index dbebaf8172ec6872f56958b9583affde4f8400a4..98a970a6582dca22e719a31559c7bece
+ // Paper end - enchantWithLevels API + // Paper end - enchantWithLevels API
} }
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
index 0f3ef975293d0e970a35fd6845f8bf911e933169..984b6e96a5ebebc38ab62790c4d6a9946c9c6944 100644 index 455e633edc19d29559e66b1d52c532ef1a0fa8df..637b9067973aadece2806cc2b6200a4d3b8d97a1 100644
--- a/src/main/java/org/bukkit/inventory/ItemStack.java --- a/src/main/java/org/bukkit/inventory/ItemStack.java
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
@@ -667,6 +667,24 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat @@ -667,6 +667,24 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat

View File

@ -6,10 +6,10 @@ Subject: [PATCH] Add NamespacedKey biome methods
Co-authored-by: Thonk <30448663+ExcessiveAmountsOfZombies@users.noreply.github.com> Co-authored-by: Thonk <30448663+ExcessiveAmountsOfZombies@users.noreply.github.com>
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
index bdfa60a764c13d82cd013335fb7b0c896abe74bd..0eddda31e47e807551436ae834e89ea56141f163 100644 index 9245f50b2bac30e956ef6ddc11c551b9b68463ee..5d862c9221d1ce6d577295a5181f951c2f71a631 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java --- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java
@@ -237,5 +237,32 @@ public interface UnsafeValues { @@ -220,5 +220,32 @@ public interface UnsafeValues {
* @throws IllegalArgumentException if {@link Material#isBlock()} is false * @throws IllegalArgumentException if {@link Material#isBlock()} is false
*/ */
boolean isCollidable(@org.jetbrains.annotations.NotNull Material material); boolean isCollidable(@org.jetbrains.annotations.NotNull Material material);

View File

@ -66,10 +66,10 @@ index 6bfc8a2148f504370df938447f4f6b757f1a516b..208bab1f5a3200f54141c38ee4272629
+ // Paper end - ItemStack damage API + // Paper end - ItemStack damage API
} }
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
index 984b6e96a5ebebc38ab62790c4d6a9946c9c6944..13648f2e810daa84af25c28a009b1f641791e2f7 100644 index 637b9067973aadece2806cc2b6200a4d3b8d97a1..d2162e53cefb8f9dc5c52bc1904e860066f43a41 100644
--- a/src/main/java/org/bukkit/inventory/ItemStack.java --- a/src/main/java/org/bukkit/inventory/ItemStack.java
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
@@ -982,5 +982,19 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat @@ -984,5 +984,19 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
public boolean canRepair(@NotNull ItemStack toBeRepaired) { public boolean canRepair(@NotNull ItemStack toBeRepaired) {
return Bukkit.getUnsafe().isValidRepairItemStack(toBeRepaired, this); return Bukkit.getUnsafe().isValidRepairItemStack(toBeRepaired, this);
} }

View File

@ -5,10 +5,10 @@ Subject: [PATCH] Fix custom statistic criteria creation
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
index 0eddda31e47e807551436ae834e89ea56141f163..7b54ca313ce65f91932ee8ee968196f6091db86f 100644 index 5d862c9221d1ce6d577295a5181f951c2f71a631..e19434a0f5065987be087b6bd531c88be33d2917 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java --- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java
@@ -264,5 +264,7 @@ public interface UnsafeValues { @@ -247,5 +247,7 @@ public interface UnsafeValues {
* @throws IllegalStateException if no biome by the given key is registered. * @throws IllegalStateException if no biome by the given key is registered.
*/ */
void setBiomeKey(RegionAccessor accessor, int x, int y, int z, NamespacedKey biomeKey); void setBiomeKey(RegionAccessor accessor, int x, int y, int z, NamespacedKey biomeKey);

View File

@ -6,10 +6,10 @@ Subject: [PATCH] Allow proper checking of empty item stacks
This adds a method to check if an item stack is empty or not. This mirrors vanilla's implementation of the same method. This adds a method to check if an item stack is empty or not. This mirrors vanilla's implementation of the same method.
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
index 13648f2e810daa84af25c28a009b1f641791e2f7..ff3929b4a497ff0ef0c7ea7f9ac3509764b80e0a 100644 index d2162e53cefb8f9dc5c52bc1904e860066f43a41..db02c04a8e9a0b8e1e4518a629d5703398d4ef72 100644
--- a/src/main/java/org/bukkit/inventory/ItemStack.java --- a/src/main/java/org/bukkit/inventory/ItemStack.java
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
@@ -996,5 +996,24 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat @@ -998,5 +998,24 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
public @NotNull ItemStack damage(int amount, @NotNull org.bukkit.entity.LivingEntity livingEntity) { public @NotNull ItemStack damage(int amount, @NotNull org.bukkit.entity.LivingEntity livingEntity) {
return livingEntity.damageItemStack(this, amount); return livingEntity.damageItemStack(this, amount);
} }

View File

@ -9,7 +9,7 @@ By removing this check we avoid unnecessarily allocating useless `ItemMeta` obje
This is a leftover from when checking for the item's durability was "free" because the durability was stored in the `ItemStack` itself, this [was changed in Minecraft 1.13](https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/commits/f8b2086d60942eb2cd7ac25a2a1408cb790c222c#src/main/java/org/bukkit/inventory/ItemStack.java). This is a leftover from when checking for the item's durability was "free" because the durability was stored in the `ItemStack` itself, this [was changed in Minecraft 1.13](https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/commits/f8b2086d60942eb2cd7ac25a2a1408cb790c222c#src/main/java/org/bukkit/inventory/ItemStack.java).
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
index ff3929b4a497ff0ef0c7ea7f9ac3509764b80e0a..ee636c066d1f87873c1ddf52c60c77b1b86d6e90 100644 index db02c04a8e9a0b8e1e4518a629d5703398d4ef72..0611f19bcdd8230b439b5055713221318dce98e2 100644
--- a/src/main/java/org/bukkit/inventory/ItemStack.java --- a/src/main/java/org/bukkit/inventory/ItemStack.java
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
@@ -295,7 +295,7 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat @@ -295,7 +295,7 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat

View File

@ -27,7 +27,7 @@ index 6b68c92ec894451d99ded3e3df5965cb31d68ed2..fd5e433f930963c102c9c977523a0036
public static final FeatureFlag UPDATE_121 = Bukkit.getUnsafe().getFeatureFlag(NamespacedKey.minecraft("update_1_21")); public static final FeatureFlag UPDATE_121 = Bukkit.getUnsafe().getFeatureFlag(NamespacedKey.minecraft("update_1_21"));
} }
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
index 137b4553636f31574c51960cada6eb07d80a02d9..cdbb67b677d5226d15df40339b7df02482561e3e 100644 index 8283eccf2578bae50a4c6fd86318e0d5f7cf09df..6ebc5da2b47b005b836927621f3b929d2442a832 100644
--- a/src/main/java/org/bukkit/Material.java --- a/src/main/java/org/bukkit/Material.java
+++ b/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java
@@ -146,54 +146,67 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla @@ -146,54 +146,67 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla

View File

@ -5,10 +5,10 @@ Subject: [PATCH] Add api for spawn egg texture colors
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
index 7b54ca313ce65f91932ee8ee968196f6091db86f..e1493ef58854e7bc929a2fa5aaba9da527dfd563 100644 index e19434a0f5065987be087b6bd531c88be33d2917..80947c6862a906dec9c039b5dff993461d4d831b 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java --- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java
@@ -267,4 +267,17 @@ public interface UnsafeValues { @@ -250,4 +250,17 @@ public interface UnsafeValues {
String getStatisticCriteriaKey(@NotNull org.bukkit.Statistic statistic); String getStatisticCriteriaKey(@NotNull org.bukkit.Statistic statistic);
// Paper end // Paper end

View File

@ -528,10 +528,10 @@ index 0000000000000000000000000000000000000000..304f978e40e1759bb19704cc5cec3995
+ } + }
+} +}
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
index e1493ef58854e7bc929a2fa5aaba9da527dfd563..887129a95ff2e299507bf870b1ef3212afe6563e 100644 index 80947c6862a906dec9c039b5dff993461d4d831b..7e6bdf3333537491b3421d196779a4eb502f7314 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java --- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java
@@ -280,4 +280,12 @@ public interface UnsafeValues { @@ -263,4 +263,12 @@ public interface UnsafeValues {
*/ */
@Nullable org.bukkit.Color getSpawnEggLayerColor(org.bukkit.entity.EntityType entityType, int layer); @Nullable org.bukkit.Color getSpawnEggLayerColor(org.bukkit.entity.EntityType entityType, int layer);
// Paper end - spawn egg color visibility // Paper end - spawn egg color visibility

View File

@ -108,10 +108,10 @@ index 0000000000000000000000000000000000000000..1d9bed6691f581529c53b577b26f1d0f
+ } + }
+} +}
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
index 887129a95ff2e299507bf870b1ef3212afe6563e..c7d0cdd4778c329f09db6cea97ddb019690d6246 100644 index 7e6bdf3333537491b3421d196779a4eb502f7314..a3ba9249e636d1fb8dad98fab413436009fe04df 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java --- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java
@@ -288,4 +288,6 @@ public interface UnsafeValues { @@ -271,4 +271,6 @@ public interface UnsafeValues {
@org.jetbrains.annotations.ApiStatus.Internal @org.jetbrains.annotations.ApiStatus.Internal
io.papermc.paper.plugin.lifecycle.event.LifecycleEventManager<org.bukkit.plugin.Plugin> createPluginLifecycleEventManager(final org.bukkit.plugin.java.JavaPlugin plugin, final java.util.function.BooleanSupplier registrationCheck); io.papermc.paper.plugin.lifecycle.event.LifecycleEventManager<org.bukkit.plugin.Plugin> createPluginLifecycleEventManager(final org.bukkit.plugin.java.JavaPlugin plugin, final java.util.function.BooleanSupplier registrationCheck);
// Paper end - lifecycle event API // Paper end - lifecycle event API
@ -119,10 +119,10 @@ index 887129a95ff2e299507bf870b1ef3212afe6563e..c7d0cdd4778c329f09db6cea97ddb019
+ @NotNull java.util.List<net.kyori.adventure.text.Component> computeTooltipLines(@NotNull ItemStack itemStack, @NotNull io.papermc.paper.inventory.tooltip.TooltipContext tooltipContext, @Nullable org.bukkit.entity.Player player); // Paper - expose itemstack tooltip lines + @NotNull java.util.List<net.kyori.adventure.text.Component> computeTooltipLines(@NotNull ItemStack itemStack, @NotNull io.papermc.paper.inventory.tooltip.TooltipContext tooltipContext, @Nullable org.bukkit.entity.Player player); // Paper - expose itemstack tooltip lines
} }
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
index ee636c066d1f87873c1ddf52c60c77b1b86d6e90..b04e7b9c3f631c0bb7734b809a58dbb988414fbb 100644 index 0611f19bcdd8230b439b5055713221318dce98e2..9440cffffa1d7e75d2d76d55d5608bafd69b645b 100644
--- a/src/main/java/org/bukkit/inventory/ItemStack.java --- a/src/main/java/org/bukkit/inventory/ItemStack.java
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
@@ -1016,4 +1016,21 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat @@ -1018,4 +1018,21 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
return type.isAir() || amount <= 0; return type.isAir() || amount <= 0;
} }
// Paper end // Paper end

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Deprecate ItemStack#setType
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
index b04e7b9c3f631c0bb7734b809a58dbb988414fbb..df2d5ad5ff1bcb1488a94edde9cc4d53cacdd91d 100644 index 9440cffffa1d7e75d2d76d55d5608bafd69b645b..91083a135a7e979e32cbb3531b5ef69b7a28f305 100644
--- a/src/main/java/org/bukkit/inventory/ItemStack.java --- a/src/main/java/org/bukkit/inventory/ItemStack.java
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java
@@ -134,8 +134,18 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat @@ -134,8 +134,18 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat

View File

@ -0,0 +1,46 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
Date: Fri, 26 Apr 2024 17:00:00 -0700
Subject: [PATCH] Fix SpawnerEntry$Equipment API
diff --git a/src/main/java/org/bukkit/block/spawner/SpawnerEntry.java b/src/main/java/org/bukkit/block/spawner/SpawnerEntry.java
index 02b3471774ff1fd4ad15c2f04064fd485ef8f3e5..0fc5f04b8bb475e8afce61c6187a390cd36c3d9f 100644
--- a/src/main/java/org/bukkit/block/spawner/SpawnerEntry.java
+++ b/src/main/java/org/bukkit/block/spawner/SpawnerEntry.java
@@ -121,28 +121,29 @@ public class SpawnerEntry {
private final Map<EquipmentSlot, Float> dropChances;
public Equipment(@NotNull LootTable equipmentLootTable, @NotNull Map<EquipmentSlot, Float> dropChances) {
+ Preconditions.checkArgument(equipmentLootTable != null, "table cannot be null"); // Paper
this.equipmentLootTable = equipmentLootTable;
this.dropChances = dropChances;
}
/**
- * Set the loot table for the entity.
+ * Set the loot table for the spawned entity's equipment slots.
* <br>
- * To remove a loot table use null. Do not use {@link LootTables#EMPTY}
- * to clear a LootTable.
+ * To remove a loot table use {@link LootTables#EMPTY}.
*
* @param table this {@link org.bukkit.entity.Mob} will have.
*/
public void setEquipmentLootTable(@NotNull LootTable table) {
+ Preconditions.checkArgument(table != null, "table cannot be null"); // Paper
this.equipmentLootTable = table;
}
/**
- * Gets the loot table for the entity.
+ * Gets the loot table for the spawned entity's equipment.
* <br>
*
- * If an entity does not have a loot table, this will return null, NOT
- * an empty loot table.
+ * If an entity does not have a loot table, this will return an
+ * empty loot table.
*
* @return the loot table for this entity.
*/

View File

@ -4847,7 +4847,7 @@ index b334265d4015fec13d7fedbffba2b6c22f4c8bc8..5b4ac7b4fd0077e900e9f788963f1613
String s = (String) Optional.ofNullable((String) optionset.valueOf("world")).orElse(dedicatedserversettings.getProperties().levelName); String s = (String) Optional.ofNullable((String) optionset.valueOf("world")).orElse(dedicatedserversettings.getProperties().levelName);
LevelStorageSource convertable = LevelStorageSource.createDefault(file.toPath()); LevelStorageSource convertable = LevelStorageSource.createDefault(file.toPath());
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index c54979d2509ce30f2ba0d956b5c6d48342e1a0fc..254e362cd54359512285bab632dbae3cec0f03e0 100644 index a6d495371a35195d6f841124329188107af1736f..1d241972e6f93a88c31f1276e15bae0912db5c9e 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -302,6 +302,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -302,6 +302,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -59,7 +59,7 @@ index a614e960fcd5958ad17b679eee8a8e6926f58e62..da101bca71f4710812621b98f0a0d8ca
if (!this.hasElementSeparator()) { if (!this.hasElementSeparator()) {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 254e362cd54359512285bab632dbae3cec0f03e0..a3d44867e6243f30640df91a0285ed735a9f1f34 100644 index 1d241972e6f93a88c31f1276e15bae0912db5c9e..9efd8dc1c35dc0a13f5ff3f097386e6e768b3bc0 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1924,7 +1924,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1924,7 +1924,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -6074,7 +6074,7 @@ index 3e5a85a7ad6149b04622c254fbc2e174896a4128..3f662692ed4846e026a9d48595e7b3b2
+ +
} }
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index a3d44867e6243f30640df91a0285ed735a9f1f34..be9fde876cb22296afd01fb5d55be1f1e9f78407 100644 index 9efd8dc1c35dc0a13f5ff3f097386e6e768b3bc0..977275f767c374a1be9055e4aa9e124025d55828 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -303,6 +303,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -303,6 +303,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -466,10 +466,10 @@ index 0000000000000000000000000000000000000000..8dcedc5f4d4453fd942787dbcb9c7572
+} +}
diff --git a/src/main/java/io/papermc/paper/adventure/AdventureComponent.java b/src/main/java/io/papermc/paper/adventure/AdventureComponent.java diff --git a/src/main/java/io/papermc/paper/adventure/AdventureComponent.java b/src/main/java/io/papermc/paper/adventure/AdventureComponent.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..4b01e1249276a26aa82eb2d70f4b1223a7c8008f index 0000000000000000000000000000000000000000..c9d787f4e66f152b557229fdb1d9a3ac83a7d71f
--- /dev/null --- /dev/null
+++ b/src/main/java/io/papermc/paper/adventure/AdventureComponent.java +++ b/src/main/java/io/papermc/paper/adventure/AdventureComponent.java
@@ -0,0 +1,78 @@ @@ -0,0 +1,88 @@
+package io.papermc.paper.adventure; +package io.papermc.paper.adventure;
+ +
+import java.util.List; +import java.util.List;
@ -547,6 +547,16 @@ index 0000000000000000000000000000000000000000..4b01e1249276a26aa82eb2d70f4b1223
+ public Component adventure$component() { + public Component adventure$component() {
+ return this.adventure; + return this.adventure;
+ } + }
+
+ @Override
+ public int hashCode() {
+ return this.deepConverted().hashCode();
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ return this.deepConverted().equals(obj);
+ }
+} +}
diff --git a/src/main/java/io/papermc/paper/adventure/BossBarImplementationImpl.java b/src/main/java/io/papermc/paper/adventure/BossBarImplementationImpl.java diff --git a/src/main/java/io/papermc/paper/adventure/BossBarImplementationImpl.java b/src/main/java/io/papermc/paper/adventure/BossBarImplementationImpl.java
new file mode 100644 new file mode 100644
@ -1147,10 +1157,10 @@ index 0000000000000000000000000000000000000000..2fd6c3e65354071af71c7d8ebb97b559
+} +}
diff --git a/src/main/java/io/papermc/paper/adventure/PaperAdventure.java b/src/main/java/io/papermc/paper/adventure/PaperAdventure.java diff --git a/src/main/java/io/papermc/paper/adventure/PaperAdventure.java b/src/main/java/io/papermc/paper/adventure/PaperAdventure.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..6c59f7083ea0e5e9215f31baa677d0a4699dd39a index 0000000000000000000000000000000000000000..cb9f8567ba6aae41a6cde519ac0cff0169a7cea7
--- /dev/null --- /dev/null
+++ b/src/main/java/io/papermc/paper/adventure/PaperAdventure.java +++ b/src/main/java/io/papermc/paper/adventure/PaperAdventure.java
@@ -0,0 +1,474 @@ @@ -0,0 +1,478 @@
+package io.papermc.paper.adventure; +package io.papermc.paper.adventure;
+ +
+import com.mojang.brigadier.StringReader; +import com.mojang.brigadier.StringReader;
@ -1207,6 +1217,7 @@ index 0000000000000000000000000000000000000000..6c59f7083ea0e5e9215f31baa677d0a4
+import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.Packet;
+import net.minecraft.network.protocol.game.ClientboundSoundEntityPacket; +import net.minecraft.network.protocol.game.ClientboundSoundEntityPacket;
+import net.minecraft.network.protocol.game.ClientboundSoundPacket; +import net.minecraft.network.protocol.game.ClientboundSoundPacket;
+import net.minecraft.resources.RegistryOps;
+import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.ResourceLocation;
+import net.minecraft.server.network.Filterable; +import net.minecraft.server.network.Filterable;
+import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvent;
@ -1216,6 +1227,7 @@ index 0000000000000000000000000000000000000000..6c59f7083ea0e5e9215f31baa677d0a4
+import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.component.WrittenBookContent; +import net.minecraft.world.item.component.WrittenBookContent;
+import org.bukkit.command.CommandSender; +import org.bukkit.command.CommandSender;
+import org.bukkit.craftbukkit.CraftRegistry;
+import org.bukkit.craftbukkit.command.VanillaCommandWrapper; +import org.bukkit.craftbukkit.command.VanillaCommandWrapper;
+import org.bukkit.craftbukkit.entity.CraftEntity; +import org.bukkit.craftbukkit.entity.CraftEntity;
+import org.intellij.lang.annotations.Subst; +import org.intellij.lang.annotations.Subst;
@ -1610,27 +1622,29 @@ index 0000000000000000000000000000000000000000..6c59f7083ea0e5e9215f31baa677d0a4
+ // Style + // Style
+ +
+ public static net.minecraft.network.chat.Style asVanilla(final Style style) { + public static net.minecraft.network.chat.Style asVanilla(final Style style) {
+ final RegistryOps<Object> ops = RegistryOps.create(JavaOps.INSTANCE, CraftRegistry.getMinecraftRegistry());
+ final Object encoded = AdventureCodecs.STYLE_MAP_CODEC.codec() + final Object encoded = AdventureCodecs.STYLE_MAP_CODEC.codec()
+ .parse(JavaOps.INSTANCE, style).getOrThrow(IllegalStateException::new); + .parse(ops, style).getOrThrow(IllegalStateException::new);
+ +
+ return net.minecraft.network.chat.Style.Serializer.CODEC + return net.minecraft.network.chat.Style.Serializer.CODEC
+ .parse(JavaOps.INSTANCE, encoded).getOrThrow(IllegalStateException::new); + .parse(ops, encoded).getOrThrow(IllegalStateException::new);
+ } + }
+ +
+ public static Style asAdventure(final net.minecraft.network.chat.Style style) { + public static Style asAdventure(final net.minecraft.network.chat.Style style) {
+ final RegistryOps<Object> ops = RegistryOps.create(JavaOps.INSTANCE, CraftRegistry.getMinecraftRegistry());
+ final Object encoded = net.minecraft.network.chat.Style.Serializer.CODEC + final Object encoded = net.minecraft.network.chat.Style.Serializer.CODEC
+ .parse(JavaOps.INSTANCE, style).getOrThrow(IllegalStateException::new); + .parse(ops, style).getOrThrow(IllegalStateException::new);
+ +
+ return AdventureCodecs.STYLE_MAP_CODEC.codec() + return AdventureCodecs.STYLE_MAP_CODEC.codec()
+ .parse(JavaOps.INSTANCE, encoded).getOrThrow(IllegalStateException::new); + .parse(ops, encoded).getOrThrow(IllegalStateException::new);
+ } + }
+} +}
diff --git a/src/main/java/io/papermc/paper/adventure/WrapperAwareSerializer.java b/src/main/java/io/papermc/paper/adventure/WrapperAwareSerializer.java diff --git a/src/main/java/io/papermc/paper/adventure/WrapperAwareSerializer.java b/src/main/java/io/papermc/paper/adventure/WrapperAwareSerializer.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..c7da1c8395244803872601bb95de95ad91c93e29 index 0000000000000000000000000000000000000000..e58e8ac574eb60205b17e31589f5a7610c60a4e2
--- /dev/null --- /dev/null
+++ b/src/main/java/io/papermc/paper/adventure/WrapperAwareSerializer.java +++ b/src/main/java/io/papermc/paper/adventure/WrapperAwareSerializer.java
@@ -0,0 +1,30 @@ @@ -0,0 +1,34 @@
+package io.papermc.paper.adventure; +package io.papermc.paper.adventure;
+ +
+import com.mojang.datafixers.util.Pair; +import com.mojang.datafixers.util.Pair;
@ -1638,6 +1652,8 @@ index 0000000000000000000000000000000000000000..c7da1c8395244803872601bb95de95ad
+import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.serializer.ComponentSerializer; +import net.kyori.adventure.text.serializer.ComponentSerializer;
+import net.minecraft.network.chat.ComponentSerialization; +import net.minecraft.network.chat.ComponentSerialization;
+import net.minecraft.resources.RegistryOps;
+import org.bukkit.craftbukkit.CraftRegistry;
+ +
+final class WrapperAwareSerializer implements ComponentSerializer<Component, Component, net.minecraft.network.chat.Component> { +final class WrapperAwareSerializer implements ComponentSerializer<Component, Component, net.minecraft.network.chat.Component> {
+ @Override + @Override
@ -1645,18 +1661,20 @@ index 0000000000000000000000000000000000000000..c7da1c8395244803872601bb95de95ad
+ if (input instanceof AdventureComponent) { + if (input instanceof AdventureComponent) {
+ return ((AdventureComponent) input).adventure; + return ((AdventureComponent) input).adventure;
+ } + }
+ final Object obj = ComponentSerialization.CODEC.encodeStart(JavaOps.INSTANCE, input) + final RegistryOps<Object> ops = RegistryOps.create(JavaOps.INSTANCE, CraftRegistry.getMinecraftRegistry());
+ final Object obj = ComponentSerialization.CODEC.encodeStart(ops, input)
+ .getOrThrow(s -> new RuntimeException("Failed to encode Minecraft Component: " + input + "; " + s)); + .getOrThrow(s -> new RuntimeException("Failed to encode Minecraft Component: " + input + "; " + s));
+ final Pair<Component, Object> converted = AdventureCodecs.COMPONENT_CODEC.decode(JavaOps.INSTANCE, obj) + final Pair<Component, Object> converted = AdventureCodecs.COMPONENT_CODEC.decode(ops, obj)
+ .getOrThrow(s -> new RuntimeException("Failed to decode to adventure Component: " + obj + "; " + s)); + .getOrThrow(s -> new RuntimeException("Failed to decode to adventure Component: " + obj + "; " + s));
+ return converted.getFirst(); + return converted.getFirst();
+ } + }
+ +
+ @Override + @Override
+ public net.minecraft.network.chat.Component serialize(final Component component) { + public net.minecraft.network.chat.Component serialize(final Component component) {
+ final Object obj = AdventureCodecs.COMPONENT_CODEC.encodeStart(JavaOps.INSTANCE, component) + final RegistryOps<Object> ops = RegistryOps.create(JavaOps.INSTANCE, CraftRegistry.getMinecraftRegistry());
+ final Object obj = AdventureCodecs.COMPONENT_CODEC.encodeStart(ops, component)
+ .getOrThrow(s -> new RuntimeException("Failed to encode adventure Component: " + component + "; " + s)); + .getOrThrow(s -> new RuntimeException("Failed to encode adventure Component: " + component + "; " + s));
+ final Pair<net.minecraft.network.chat.Component, Object> converted = ComponentSerialization.CODEC.decode(JavaOps.INSTANCE, obj) + final Pair<net.minecraft.network.chat.Component, Object> converted = ComponentSerialization.CODEC.decode(ops, obj)
+ .getOrThrow(s -> new RuntimeException("Failed to decode to Minecraft Component: " + obj + "; " + s)); + .getOrThrow(s -> new RuntimeException("Failed to decode to Minecraft Component: " + obj + "; " + s));
+ return converted.getFirst(); + return converted.getFirst();
+ } + }
@ -2408,6 +2426,22 @@ index 739ef5fb6f4fa37382153ba6a308ca3b451e6b05..7c3154af5d7732037c0ee965f6f8b894
public static final Codec<MessageSignature> CODEC = ExtraCodecs.BASE64_STRING.xmap(MessageSignature::new, MessageSignature::bytes); public static final Codec<MessageSignature> CODEC = ExtraCodecs.BASE64_STRING.xmap(MessageSignature::new, MessageSignature::bytes);
public static final int BYTES = 256; public static final int BYTES = 256;
diff --git a/src/main/java/net/minecraft/network/chat/MutableComponent.java b/src/main/java/net/minecraft/network/chat/MutableComponent.java
index 1ce6b84e0d0bb708ced06955cd62281369b5fd4f..82e2a02336da4ee8cfd84bc82b143f8b9dbcf449 100644
--- a/src/main/java/net/minecraft/network/chat/MutableComponent.java
+++ b/src/main/java/net/minecraft/network/chat/MutableComponent.java
@@ -94,6 +94,11 @@ public class MutableComponent implements Component {
@Override
public boolean equals(Object object) {
+ // Paper start - make AdventureComponent equivalent
+ if (object instanceof io.papermc.paper.adventure.AdventureComponent adventureComponent) {
+ object = adventureComponent.deepConverted();
+ }
+ // Paper end - make AdventureComponent equivalent
return this == object
|| object instanceof MutableComponent mutableComponent
&& this.contents.equals(mutableComponent.contents)
diff --git a/src/main/java/net/minecraft/network/chat/OutgoingChatMessage.java b/src/main/java/net/minecraft/network/chat/OutgoingChatMessage.java diff --git a/src/main/java/net/minecraft/network/chat/OutgoingChatMessage.java b/src/main/java/net/minecraft/network/chat/OutgoingChatMessage.java
index e2def0ca552343143e495736d533b3334686fd62..c87b708c368713a23a10ad97704575ee4df27891 100644 index e2def0ca552343143e495736d533b3334686fd62..c87b708c368713a23a10ad97704575ee4df27891 100644
--- a/src/main/java/net/minecraft/network/chat/OutgoingChatMessage.java --- a/src/main/java/net/minecraft/network/chat/OutgoingChatMessage.java
@ -2555,7 +2589,7 @@ index bb97fdb9aa6167083442a928276ebe4225a586ef..5d1758086ed4fce5b36a5b31df44ccea
@Override @Override
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index be9fde876cb22296afd01fb5d55be1f1e9f78407..555dc35fcc0e24b93eb310f11cd924a43d48b21a 100644 index 977275f767c374a1be9055e4aa9e124025d55828..953e28f0cf60412a4ec9e311daa98f9d3cadea85 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -195,6 +195,7 @@ import org.bukkit.craftbukkit.SpigotTimings; // Spigot @@ -195,6 +195,7 @@ import org.bukkit.craftbukkit.SpigotTimings; // Spigot
@ -5671,10 +5705,10 @@ index 0000000000000000000000000000000000000000..3aedd0bbc97edacc1ebf71264b310e55
+} +}
diff --git a/src/test/java/io/papermc/paper/adventure/AdventureCodecsTest.java b/src/test/java/io/papermc/paper/adventure/AdventureCodecsTest.java diff --git a/src/test/java/io/papermc/paper/adventure/AdventureCodecsTest.java b/src/test/java/io/papermc/paper/adventure/AdventureCodecsTest.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..ff9e3013e4f5049c6cfa35803676516dfe8b9af1 index 0000000000000000000000000000000000000000..0b23e6aab901d359845573e12e939a231ee30ada
--- /dev/null --- /dev/null
+++ b/src/test/java/io/papermc/paper/adventure/AdventureCodecsTest.java +++ b/src/test/java/io/papermc/paper/adventure/AdventureCodecsTest.java
@@ -0,0 +1,399 @@ @@ -0,0 +1,403 @@
+package io.papermc.paper.adventure; +package io.papermc.paper.adventure;
+ +
+import com.mojang.datafixers.util.Pair; +import com.mojang.datafixers.util.Pair;
@ -5692,6 +5726,7 @@ index 0000000000000000000000000000000000000000..ff9e3013e4f5049c6cfa35803676516d
+import java.util.List; +import java.util.List;
+import java.util.UUID; +import java.util.UUID;
+import java.util.function.Function; +import java.util.function.Function;
+import java.util.stream.Stream;
+import net.kyori.adventure.key.Key; +import net.kyori.adventure.key.Key;
+import net.kyori.adventure.text.BlockNBTComponent; +import net.kyori.adventure.text.BlockNBTComponent;
+import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.Component;
@ -5710,6 +5745,7 @@ index 0000000000000000000000000000000000000000..ff9e3013e4f5049c6cfa35803676516d
+import net.minecraft.nbt.NbtOps; +import net.minecraft.nbt.NbtOps;
+import net.minecraft.nbt.Tag; +import net.minecraft.nbt.Tag;
+import net.minecraft.network.chat.ComponentSerialization; +import net.minecraft.network.chat.ComponentSerialization;
+import net.minecraft.resources.RegistryOps;
+import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.ResourceLocation;
+import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.Items; +import net.minecraft.world.item.Items;
@ -5875,12 +5911,14 @@ index 0000000000000000000000000000000000000000..ff9e3013e4f5049c6cfa35803676516d
+ testMinecraftRoundTrip(dynamicOps, COMPONENT_CODEC, ComponentSerialization.CODEC, component); + testMinecraftRoundTrip(dynamicOps, COMPONENT_CODEC, ComponentSerialization.CODEC, component);
+ } + }
+ +
+ static List<DynamicOps<?>> dynamicOps() { + static List<? extends DynamicOps<?>> dynamicOps() {
+ return List.of( + return Stream.of(
+ NbtOps.INSTANCE, + NbtOps.INSTANCE,
+ JavaOps.INSTANCE, + JavaOps.INSTANCE,
+ JsonOps.INSTANCE + JsonOps.INSTANCE
+ ); + )
+ .map(ops -> RegistryOps.create(ops, AbstractTestingBase.REGISTRY_CUSTOM))
+ .toList();
+ } + }
+ +
+ @ParameterizedTest(name = PARAMETERIZED_NAME) + @ParameterizedTest(name = PARAMETERIZED_NAME)
@ -6103,3 +6141,21 @@ index 0000000000000000000000000000000000000000..98114b8fdc441f2a1642abf230457c2b
+ assertEquals("&cDone", LegacyComponentSerializer.legacyAmpersand().serialize(Component.translatable("narrator.loading.done", NamedTextColor.RED))); + assertEquals("&cDone", LegacyComponentSerializer.legacyAmpersand().serialize(Component.translatable("narrator.loading.done", NamedTextColor.RED)));
+ } + }
+} +}
diff --git a/src/test/java/io/papermc/paper/util/MethodParameterSource.java b/src/test/java/io/papermc/paper/util/MethodParameterSource.java
index 6cbf11c898439834cffb99ef84e5df1494356809..381668df2f58df82ac6da85796752934e92d0796 100644
--- a/src/test/java/io/papermc/paper/util/MethodParameterSource.java
+++ b/src/test/java/io/papermc/paper/util/MethodParameterSource.java
@@ -4,11 +4,13 @@ import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import org.intellij.lang.annotations.Language;
import org.junitpioneer.jupiter.cartesian.CartesianArgumentsSource;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.PARAMETER, ElementType.ANNOTATION_TYPE})
@CartesianArgumentsSource(MethodParameterProvider.class)
public @interface MethodParameterSource {
+ @Language("jvm-method-name")
String[] value() default {};
}

View File

@ -206,7 +206,7 @@ index 0000000000000000000000000000000000000000..8f07539a82f449ad217e316a7513a170
+ +
+} +}
diff --git a/src/main/java/io/papermc/paper/adventure/PaperAdventure.java b/src/main/java/io/papermc/paper/adventure/PaperAdventure.java diff --git a/src/main/java/io/papermc/paper/adventure/PaperAdventure.java b/src/main/java/io/papermc/paper/adventure/PaperAdventure.java
index 6c59f7083ea0e5e9215f31baa677d0a4699dd39a..4f5c5665e07961421cff423662599b8f3dc24c1b 100644 index cb9f8567ba6aae41a6cde519ac0cff0169a7cea7..333d6d82584fb3bf4e0fce7b03bc2d9c4094deb9 100644
--- a/src/main/java/io/papermc/paper/adventure/PaperAdventure.java --- a/src/main/java/io/papermc/paper/adventure/PaperAdventure.java
+++ b/src/main/java/io/papermc/paper/adventure/PaperAdventure.java +++ b/src/main/java/io/papermc/paper/adventure/PaperAdventure.java
@@ -31,6 +31,7 @@ import net.kyori.adventure.text.flattener.ComponentFlattener; @@ -31,6 +31,7 @@ import net.kyori.adventure.text.flattener.ComponentFlattener;
@ -217,7 +217,7 @@ index 6c59f7083ea0e5e9215f31baa677d0a4699dd39a..4f5c5665e07961421cff423662599b8f
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
import net.kyori.adventure.text.serializer.plain.PlainComponentSerializer; import net.kyori.adventure.text.serializer.plain.PlainComponentSerializer;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
@@ -126,6 +127,7 @@ public final class PaperAdventure { @@ -128,6 +129,7 @@ public final class PaperAdventure {
public static final AttributeKey<Locale> LOCALE_ATTRIBUTE = AttributeKey.valueOf("adventure:locale"); // init after FLATTENER because classloading triggered here might create a logger public static final AttributeKey<Locale> LOCALE_ATTRIBUTE = AttributeKey.valueOf("adventure:locale"); // init after FLATTENER because classloading triggered here might create a logger
@Deprecated @Deprecated
public static final PlainComponentSerializer PLAIN = PlainComponentSerializer.builder().flattener(FLATTENER).build(); public static final PlainComponentSerializer PLAIN = PlainComponentSerializer.builder().flattener(FLATTENER).build();
@ -250,7 +250,7 @@ index 8323f135d6bf2e1f12525e05094ffa3f2420e7e1..a143ea1e58464a3122fbd8ccafe417bd
} }
} }
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 555dc35fcc0e24b93eb310f11cd924a43d48b21a..7b5d3fac1b5f4d22340a620a5edd5a8fba6be584 100644 index 953e28f0cf60412a4ec9e311daa98f9d3cadea85..c25d80a1d5aa0f3cc2cbf1e9b94154c759aab36e 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -148,7 +148,7 @@ import org.slf4j.Logger; @@ -148,7 +148,7 @@ import org.slf4j.Logger;

View File

@ -1474,7 +1474,7 @@ index 0000000000000000000000000000000000000000..badff5d6ae6dd8d209c82bc7e8afe370
+ } + }
+} +}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 7b5d3fac1b5f4d22340a620a5edd5a8fba6be584..e021ac312127e0544606ab466cab781915e027d2 100644 index c25d80a1d5aa0f3cc2cbf1e9b94154c759aab36e..c836204a04ca050988057dcc92c7a1fbcc02ef34 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -637,6 +637,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -637,6 +637,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -714,7 +714,7 @@ index 73e7bb59596600df1b1953175f6da17bee54a65c..e161ad0f53a21a68e8c78575ba5d3cdb
} catch (Exception exception) { } catch (Exception exception) {
if (exception instanceof ReportedException) { if (exception instanceof ReportedException) {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index e021ac312127e0544606ab466cab781915e027d2..7ae4d4feb5c9281fa62a3f35c39eefdff1b684d8 100644 index c836204a04ca050988057dcc92c7a1fbcc02ef34..c91eb69bbab3ca563d77de7165d5ef39f0a6b532 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -190,7 +190,7 @@ import org.bukkit.craftbukkit.Main; @@ -190,7 +190,7 @@ import org.bukkit.craftbukkit.Main;

View File

@ -12,7 +12,7 @@ Previous implementation did not calculate TPS correctly.
Switch to a realistic rolling average and factor in std deviation as an extra reporting variable Switch to a realistic rolling average and factor in std deviation as an extra reporting variable
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 7ae4d4feb5c9281fa62a3f35c39eefdff1b684d8..cf9ce8a8e7d576d91e9d745e9c45f698100808bd 100644 index c91eb69bbab3ca563d77de7165d5ef39f0a6b532..8ead44e27598c01249f710e10a765dd1796ed249 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -289,7 +289,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -289,7 +289,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -6,7 +6,7 @@ Subject: [PATCH] Show 'Paper' in client crashes, server lists, and Mojang
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index cf9ce8a8e7d576d91e9d745e9c45f698100808bd..de18627c6f09ef911c9cb6d6aec9a5f3bfe5a72b 100644 index 8ead44e27598c01249f710e10a765dd1796ed249..fcb2d06f088a938b5bb76e6b42581d8f292d2eaf 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1680,7 +1680,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1680,7 +1680,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -10,7 +10,7 @@ This patch adds a per-tick cache that is used for storing and retrieving
an entity's exposure during an explosion. an entity's exposure during an explosion.
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index de18627c6f09ef911c9cb6d6aec9a5f3bfe5a72b..b5f305c7d0972438a686d9b3a022156e39b130a2 100644 index fcb2d06f088a938b5bb76e6b42581d8f292d2eaf..231fba80a25601cdfba4f6f44ac7c2888e505ed2 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1554,6 +1554,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1554,6 +1554,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -18,10 +18,10 @@ For consistency, the old API methods now forward to use the
ItemMeta API equivalents, and should deprecate the old API's. ItemMeta API equivalents, and should deprecate the old API's.
diff --git a/src/main/java/net/minecraft/world/item/enchantment/ItemEnchantments.java b/src/main/java/net/minecraft/world/item/enchantment/ItemEnchantments.java 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 b49eb019cce58049c2b3a0e80e3d08998b16f7ea..dd6bf199f22476ef1d0f704883b748be97b0065e 100644 index b49eb019cce58049c2b3a0e80e3d08998b16f7ea..af18de11dd55938b6091f5ab183bd3fe4e8df152 100644
--- a/src/main/java/net/minecraft/world/item/enchantment/ItemEnchantments.java --- a/src/main/java/net/minecraft/world/item/enchantment/ItemEnchantments.java
+++ b/src/main/java/net/minecraft/world/item/enchantment/ItemEnchantments.java +++ b/src/main/java/net/minecraft/world/item/enchantment/ItemEnchantments.java
@@ -27,15 +27,21 @@ import net.minecraft.tags.TagKey; @@ -27,15 +27,27 @@ import net.minecraft.tags.TagKey;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.item.component.TooltipProvider; import net.minecraft.world.item.component.TooltipProvider;
@ -42,11 +42,17 @@ index b49eb019cce58049c2b3a0e80e3d08998b16f7ea..dd6bf199f22476ef1d0f704883b748be
BuiltInRegistries.ENCHANTMENT.holderByNameCodec(), LEVEL_CODEC BuiltInRegistries.ENCHANTMENT.holderByNameCodec(), LEVEL_CODEC
) )
- .xmap(Object2IntOpenHashMap::new, Function.identity()); - .xmap(Object2IntOpenHashMap::new, Function.identity());
+ .xmap(Object2IntAVLTreeMap::new, Function.identity()); // Paper + // Paper start - sort enchantments
+ .xmap(m -> {
+ final Object2IntAVLTreeMap<Holder<Enchantment>> map = new Object2IntAVLTreeMap<>(ENCHANTMENT_ORDER);
+ map.putAll(m);
+ return map;
+ }, Function.identity());
+ // Paper end - sort enchantments
private static final Codec<ItemEnchantments> FULL_CODEC = RecordCodecBuilder.create( private static final Codec<ItemEnchantments> FULL_CODEC = RecordCodecBuilder.create(
instance -> instance.group( instance -> instance.group(
LEVELS_CODEC.fieldOf("levels").forGetter(component -> component.enchantments), LEVELS_CODEC.fieldOf("levels").forGetter(component -> component.enchantments),
@@ -45,16 +51,16 @@ public class ItemEnchantments implements TooltipProvider { @@ -45,16 +57,16 @@ public class ItemEnchantments implements TooltipProvider {
); );
public static final Codec<ItemEnchantments> CODEC = Codec.withAlternative(FULL_CODEC, LEVELS_CODEC, map -> new ItemEnchantments(map, true)); public static final Codec<ItemEnchantments> CODEC = Codec.withAlternative(FULL_CODEC, LEVELS_CODEC, map -> new ItemEnchantments(map, true));
public static final StreamCodec<RegistryFriendlyByteBuf, ItemEnchantments> STREAM_CODEC = StreamCodec.composite( public static final StreamCodec<RegistryFriendlyByteBuf, ItemEnchantments> STREAM_CODEC = StreamCodec.composite(
@ -66,7 +72,7 @@ index b49eb019cce58049c2b3a0e80e3d08998b16f7ea..dd6bf199f22476ef1d0f704883b748be
this.enchantments = enchantments; this.enchantments = enchantments;
this.showInTooltip = showInTooltip; this.showInTooltip = showInTooltip;
@@ -145,7 +151,7 @@ public class ItemEnchantments implements TooltipProvider { @@ -145,7 +157,7 @@ public class ItemEnchantments implements TooltipProvider {
} }
public static class Mutable { public static class Mutable {

View File

@ -6,7 +6,7 @@ Subject: [PATCH] Only process BlockPhysicsEvent if a plugin has a listener
Saves on some object allocation and processing when no plugin listens to this Saves on some object allocation and processing when no plugin listens to this
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index b5f305c7d0972438a686d9b3a022156e39b130a2..d5b5eb914278fbd85921c039a8da3492dcbd6168 100644 index 231fba80a25601cdfba4f6f44ac7c2888e505ed2..4dc8fcd8e118a1c2f5fac0fc291b5555abeec124 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1520,6 +1520,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1520,6 +1520,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -18,7 +18,7 @@ index 9a1a961eabd4362c171da78c6be82c867f3696a4..1d0c473442b5c72245c356054440323e
ComponentSerialization.TRUSTED_STREAM_CODEC.encode(buf, this.playerPrefix); ComponentSerialization.TRUSTED_STREAM_CODEC.encode(buf, this.playerPrefix);
ComponentSerialization.TRUSTED_STREAM_CODEC.encode(buf, this.playerSuffix); ComponentSerialization.TRUSTED_STREAM_CODEC.encode(buf, this.playerSuffix);
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index d5b5eb914278fbd85921c039a8da3492dcbd6168..f46c8dd1ab752a88a3292f82720b27b250625982 100644 index 4dc8fcd8e118a1c2f5fac0fc291b5555abeec124..53a344b3ee3813872f5f061aab660bf602b573a5 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -636,6 +636,20 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -636,6 +636,20 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -6,7 +6,7 @@ Subject: [PATCH] remove null possibility for getServer singleton
to stop IDE complaining about potential NPE to stop IDE complaining about potential NPE
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index f46c8dd1ab752a88a3292f82720b27b250625982..ae4a8cb0fb3e36710fedd9a71d0e0efdf0895015 100644 index 53a344b3ee3813872f5f061aab660bf602b573a5..fa4a7babd045021545514f214c1d027faca99b48 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -194,6 +194,7 @@ import co.aikar.timings.MinecraftTimings; // Paper @@ -194,6 +194,7 @@ import co.aikar.timings.MinecraftTimings; // Paper

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Async GameProfileCache saving
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index ae4a8cb0fb3e36710fedd9a71d0e0efdf0895015..1ecd28b709e3ef47568298878a84a6aede52d6f5 100644 index fa4a7babd045021545514f214c1d027faca99b48..5a52369c1e4c462f401c4b6699a2b7376b8bc0e9 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -995,7 +995,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -995,7 +995,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -30,7 +30,7 @@ will have plugins and worlds saving to the disk has a high potential to result
in corruption/dataloss. in corruption/dataloss.
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 1ecd28b709e3ef47568298878a84a6aede52d6f5..9cbe8415699a79344b3c4245cc4f9424b7df3b2a 100644 index 5a52369c1e4c462f401c4b6699a2b7376b8bc0e9..ec0fe27a6475cc3d097d394cf9694a17cba76332 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -239,6 +239,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -239,6 +239,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -45,3 +45,87 @@ index 985e6fc43a0946943847e0c283426242ef594a26..d577384797bb381eb57437f57b726ea8
public @Nullable ProfileResult fetchProfile(final UUID profileId, final boolean requireSecure) { public @Nullable ProfileResult fetchProfile(final UUID profileId, final boolean requireSecure) {
return super.fetchProfile(profileId, requireSecure); return super.fetchProfile(profileId, requireSecure);
} }
diff --git a/src/main/java/net/minecraft/world/item/component/ResolvableProfile.java b/src/main/java/net/minecraft/world/item/component/ResolvableProfile.java
index d8ed3404e8c3c61b2daff110ef32ef890a77a461..78863e72239a0f3535bc85758479da84d58c11c1 100644
--- a/src/main/java/net/minecraft/world/item/component/ResolvableProfile.java
+++ b/src/main/java/net/minecraft/world/item/component/ResolvableProfile.java
@@ -49,7 +49,7 @@ public record ResolvableProfile(Optional<String> name, Optional<UUID> id, Proper
if (this.isResolved()) {
return CompletableFuture.completedFuture(this);
} else {
- return this.id.isPresent() ? SkullBlockEntity.fetchGameProfile(this.id.get()).thenApply(optional -> {
+ return this.id.isPresent() ? SkullBlockEntity.fetchGameProfile(this.id.get(), this.name.orElse(null)).thenApply(optional -> { // Paper - player profile events
GameProfile gameProfile = optional.orElseGet(() -> new GameProfile(this.id.get(), this.name.orElse("")));
return new ResolvableProfile(gameProfile);
}) : SkullBlockEntity.fetchGameProfile(this.name.orElseThrow()).thenApply(profile -> {
diff --git a/src/main/java/net/minecraft/world/level/block/entity/SkullBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SkullBlockEntity.java
index ebba6bc5b337d19e32be5a78294501ed8300f2bd..81d9a4e6bc1bc4f992ecb77b176daf89d645bbf2 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/SkullBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/SkullBlockEntity.java
@@ -41,7 +41,7 @@ public class SkullBlockEntity extends BlockEntity {
@Nullable
private static LoadingCache<String, CompletableFuture<Optional<GameProfile>>> profileCacheByName;
@Nullable
- private static LoadingCache<UUID, CompletableFuture<Optional<GameProfile>>> profileCacheById;
+ private static LoadingCache<com.mojang.datafixers.util.Pair<java.util.UUID, @org.jetbrains.annotations.Nullable GameProfile>, CompletableFuture<Optional<GameProfile>>> profileCacheById; // Paper - player profile events
public static final Executor CHECKED_MAIN_THREAD_EXECUTOR = runnable -> {
Executor executor = mainThreadExecutor;
if (executor != null) {
@@ -76,9 +76,9 @@ public class SkullBlockEntity extends BlockEntity {
profileCacheById = CacheBuilder.newBuilder()
.expireAfterAccess(Duration.ofMinutes(10L))
.maximumSize(256L)
- .build(new CacheLoader<UUID, CompletableFuture<Optional<GameProfile>>>() {
+ .build(new CacheLoader<>() { // Paper - player profile events
@Override
- public CompletableFuture<Optional<GameProfile>> load(UUID uUID) {
+ public CompletableFuture<Optional<GameProfile>> load(com.mojang.datafixers.util.Pair<java.util.UUID, @org.jetbrains.annotations.Nullable GameProfile> uUID) { // Paper - player profile events
return SkullBlockEntity.fetchProfileById(uUID, apiServices, booleanSupplier);
}
});
@@ -89,20 +89,26 @@ public class SkullBlockEntity extends BlockEntity {
.getAsync(name)
.thenCompose(
optional -> {
- LoadingCache<UUID, CompletableFuture<Optional<GameProfile>>> loadingCache = profileCacheById;
+ LoadingCache<com.mojang.datafixers.util.Pair<java.util.UUID, @org.jetbrains.annotations.Nullable GameProfile>, CompletableFuture<Optional<GameProfile>>> loadingCache = profileCacheById; // Paper - player profile events
return loadingCache != null && !optional.isEmpty()
- ? loadingCache.getUnchecked(optional.get().getId()).thenApply(optional2 -> optional2.or(() -> optional))
+ ? loadingCache.getUnchecked(new com.mojang.datafixers.util.Pair<>(optional.get().getId(), optional.get())).thenApply(optional2 -> optional2.or(() -> optional)) // Paper - player profile events
: CompletableFuture.completedFuture(Optional.empty());
}
);
}
- static CompletableFuture<Optional<GameProfile>> fetchProfileById(UUID uuid, Services apiServices, BooleanSupplier booleanSupplier) {
+ static CompletableFuture<Optional<GameProfile>> fetchProfileById(com.mojang.datafixers.util.Pair<java.util.UUID, @org.jetbrains.annotations.Nullable GameProfile> pair, Services apiServices, BooleanSupplier booleanSupplier) { // Paper
return CompletableFuture.supplyAsync(() -> {
if (booleanSupplier.getAsBoolean()) {
return Optional.empty();
} else {
- ProfileResult profileResult = apiServices.sessionService().fetchProfile(uuid, true);
+ // Paper start - fill player profile events
+ if (apiServices.sessionService() instanceof com.destroystokyo.paper.profile.PaperMinecraftSessionService paperService) {
+ final GameProfile profile = pair.getSecond() != null ? pair.getSecond() : new com.mojang.authlib.GameProfile(pair.getFirst(), "");
+ return Optional.ofNullable(paperService.fetchProfile(profile, true)).map(ProfileResult::profile);
+ }
+ ProfileResult profileResult = apiServices.sessionService().fetchProfile(pair.getFirst(), true);
+ // Paper end - fill player profile events
return Optional.ofNullable(profileResult).map(ProfileResult::profile);
}
}, Util.PROFILE_EXECUTOR); // Paper - don't submit BLOCKING PROFILE LOOKUPS to the world gen thread
@@ -210,9 +216,11 @@ public class SkullBlockEntity extends BlockEntity {
: CompletableFuture.completedFuture(Optional.empty());
}
- public static CompletableFuture<Optional<GameProfile>> fetchGameProfile(UUID uuid) {
- LoadingCache<UUID, CompletableFuture<Optional<GameProfile>>> loadingCache = profileCacheById;
- return loadingCache != null ? loadingCache.getUnchecked(uuid) : CompletableFuture.completedFuture(Optional.empty());
+ // Paper start - player profile events
+ public static CompletableFuture<Optional<GameProfile>> fetchGameProfile(UUID uuid, @Nullable String name) {
+ LoadingCache<com.mojang.datafixers.util.Pair<java.util.UUID, @org.jetbrains.annotations.Nullable GameProfile>, CompletableFuture<Optional<GameProfile>>> loadingCache = profileCacheById;
+ return loadingCache != null ? loadingCache.getUnchecked(new com.mojang.datafixers.util.Pair<>(uuid, name != null ? new com.mojang.authlib.GameProfile(uuid, name) : null)) : CompletableFuture.completedFuture(Optional.empty());
+ // Paper end - player profile events
}
@Override

View File

@ -181,7 +181,7 @@ index 0000000000000000000000000000000000000000..6b0bdc266109cdfb874f08bf74323603
+ +
+} +}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 9cbe8415699a79344b3c4245cc4f9424b7df3b2a..875591131576cb3760193651fac22698e1eb9099 100644 index ec0fe27a6475cc3d097d394cf9694a17cba76332..478445e7ed67b17d7aff0e10e9aae0788605a4b9 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -3,6 +3,9 @@ package net.minecraft.server; @@ -3,6 +3,9 @@ package net.minecraft.server;

View File

@ -9,7 +9,7 @@ thread dumps at an interval until the point of crash.
This will help diagnose what was going on in that time before the crash. This will help diagnose what was going on in that time before the crash.
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 875591131576cb3760193651fac22698e1eb9099..23a5358a5fe4784e75b327741e6fcb174c04d287 100644 index 478445e7ed67b17d7aff0e10e9aae0788605a4b9..077b2e1d06a4bb0c2ce10274dc6144ee76608d90 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1104,6 +1104,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1104,6 +1104,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -102,10 +102,10 @@ index 767994f493fb0a0e4bf097cd7cc178c10e79e937..c3503eaec5c5ece6e27a52fb703d06ec
} }
diff --git a/src/main/java/net/minecraft/world/level/block/entity/SkullBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SkullBlockEntity.java diff --git a/src/main/java/net/minecraft/world/level/block/entity/SkullBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SkullBlockEntity.java
index ebba6bc5b337d19e32be5a78294501ed8300f2bd..adc87c2da5a4a4a89eb9708850376eaed49cf20a 100644 index 81d9a4e6bc1bc4f992ecb77b176daf89d645bbf2..40714cb145822b52cbc991a844486f87e46106d8 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/SkullBlockEntity.java --- a/src/main/java/net/minecraft/world/level/block/entity/SkullBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/SkullBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/SkullBlockEntity.java
@@ -145,7 +145,7 @@ public class SkullBlockEntity extends BlockEntity { @@ -151,7 +151,7 @@ public class SkullBlockEntity extends BlockEntity {
} }
if (nbt.contains("custom_name", 8)) { if (nbt.contains("custom_name", 8)) {

View File

@ -92,7 +92,7 @@ index cf54e2c8e8aadb9e7343382a5ba59c657234c9b9..c7a21a11efba5c212958d56095217621
return executorService; return executorService;
} }
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 23a5358a5fe4784e75b327741e6fcb174c04d287..0a460ae7f57d1a58385e23fb9f95a7c475aec1da 100644 index 077b2e1d06a4bb0c2ce10274dc6144ee76608d90..9477d6f850b112ff8e835ba5e80d56bc090f9c48 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -319,6 +319,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -319,6 +319,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -8,7 +8,7 @@ the updates per world, so that we can re-use the same packet
object for every player unless they have per-player time enabled. object for every player unless they have per-player time enabled.
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 0a460ae7f57d1a58385e23fb9f95a7c475aec1da..34e5adcbeb105e6da8ab660d7f322969305d44ec 100644 index 9477d6f850b112ff8e835ba5e80d56bc090f9c48..65e9ac5ba7237e97e286953568f28db86d244d1e 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1538,12 +1538,24 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1538,12 +1538,24 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -53,7 +53,7 @@ index 03966f447354fb16a01442ff6c6257fa19461bcd..6383cdfe3e2b61314fee7f7236dc7df1
event.getPlayer().getServer().getPluginManager().callEvent(event); event.getPlayer().getServer().getPluginManager().callEvent(event);
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 34e5adcbeb105e6da8ab660d7f322969305d44ec..270ec206c0dd3183db8f81241d7b87087681c80c 100644 index 65e9ac5ba7237e97e286953568f28db86d244d1e..4f4e662e8f21e92b49c3d3811a24f9acedde9fff 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -927,6 +927,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -927,6 +927,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -6,7 +6,7 @@ Subject: [PATCH] Server Tick Events
Fires event at start and end of a server tick Fires event at start and end of a server tick
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 270ec206c0dd3183db8f81241d7b87087681c80c..fbe459664f93ec9d314cd305f1e3857710191cfd 100644 index 4f4e662e8f21e92b49c3d3811a24f9acedde9fff..91981ef15a9d8a46681f39ec8cf0f136f9931968 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1410,6 +1410,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1410,6 +1410,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -125,7 +125,7 @@ index 72f2e81b9905a0d57ed8e2a88578f62d5235c456..7b58b2d6297800c2dcdbf7539e5ab8e7
public static void registerCommands(final MinecraftServer server) { public static void registerCommands(final MinecraftServer server) {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index fbe459664f93ec9d314cd305f1e3857710191cfd..a39753296a70a404b45dcb668ff42c1d88429e8e 100644 index 91981ef15a9d8a46681f39ec8cf0f136f9931968..b260b197bc254d22a9fd0f1c2dd799930489c8f7 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -255,6 +255,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -255,6 +255,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -49,7 +49,7 @@ index 3b59f3d92d781c16825f6f67b725225256425d11..2fb4660147294de9e9dec70bc3527327
StackTraceElement[] astacktraceelement = exception.getStackTrace(); StackTraceElement[] astacktraceelement = exception.getStackTrace();
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index a39753296a70a404b45dcb668ff42c1d88429e8e..1a8cfdd7c95460c359447dc69fadca077688c65b 100644 index b260b197bc254d22a9fd0f1c2dd799930489c8f7..c0d467cc65c208aa1166a24dec753b1e2b3d995b 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -912,6 +912,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -912,6 +912,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -10,7 +10,7 @@ Adds a 5 second grace period for any async tasks to finish and warns
if any are still running after that delay just as reload does. if any are still running after that delay just as reload does.
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 1a8cfdd7c95460c359447dc69fadca077688c65b..777408fe6ad04abb32885e749ec6b7c39b81ca46 100644 index c0d467cc65c208aa1166a24dec753b1e2b3d995b..6da91e7236ee2d2a0bcbe1f3933b562425ec06a5 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -939,6 +939,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -939,6 +939,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -8,7 +8,7 @@ makes it so that the server keeps the last difficulty used instead
of restoring the server.properties every single load. of restoring the server.properties every single load.
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 777408fe6ad04abb32885e749ec6b7c39b81ca46..3ec35f0aff38e6cbd969ec3442b924bc51365f4a 100644 index 6da91e7236ee2d2a0bcbe1f3933b562425ec06a5..44521086adbb9db6574045414c7b23a4dde22387 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -833,7 +833,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -833,7 +833,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Cache block data strings
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 3ec35f0aff38e6cbd969ec3442b924bc51365f4a..90cd5e6a5564f3b2002c2a4415fe130bf672b5d8 100644 index 44521086adbb9db6574045414c7b23a4dde22387..8d572e02747b86fb975776c2b3689b91699f3220 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -2128,6 +2128,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -2128,6 +2128,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -6,7 +6,7 @@ Subject: [PATCH] Fix deop kicking non-whitelisted player when white list is
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 90cd5e6a5564f3b2002c2a4415fe130bf672b5d8..18efcf55bf13fa17ac532cca4c213e5b6e14979f 100644 index 8d572e02747b86fb975776c2b3689b91699f3220..a3e5b5075ff8097479689bf5cff66cdf93014128 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -2253,13 +2253,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -2253,13 +2253,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Add ServerResourcesReloadedEvent
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 18efcf55bf13fa17ac532cca4c213e5b6e14979f..b083298d2bcf0d4c6213d6ac8645b8c084cfc6de 100644 index a3e5b5075ff8097479689bf5cff66cdf93014128..7a12028ab83cb6162a7f5d7e22c52af0853b79ee 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -2097,7 +2097,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -2097,7 +2097,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Add EntityMoveEvent
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index b083298d2bcf0d4c6213d6ac8645b8c084cfc6de..e9ea8ad5689c0e6edd2e7335ab9932b3a6abbbf3 100644 index 7a12028ab83cb6162a7f5d7e22c52af0853b79ee..784bcb1a504482bafcccfe57f72186e5322253ae 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1583,6 +1583,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1583,6 +1583,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -1,63 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
Date: Fri, 12 Mar 2021 17:09:42 -0800
Subject: [PATCH] Item Rarity API
== AT ==
public net.minecraft.world.item.Item rarity
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
index c0592a85a1a0781b83232533b9ca1b30b116eb98..125ed63d8ae812284cd452b4387fd0d674c9c25a 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -542,6 +542,20 @@ public final class CraftMagicNumbers implements UnsafeValues {
public String getMainLevelName() {
return ((net.minecraft.server.dedicated.DedicatedServer) net.minecraft.server.MinecraftServer.getServer()).getProperties().levelName;
}
+
+ @Override
+ public io.papermc.paper.inventory.ItemRarity getItemRarity(org.bukkit.Material material) {
+ Item item = getItem(material);
+ if (item == null) {
+ throw new IllegalArgumentException(material + " is not an item, and rarity does not apply to blocks");
+ }
+ return io.papermc.paper.inventory.ItemRarity.values()[item.components().getOrDefault(net.minecraft.core.component.DataComponents.RARITY, net.minecraft.world.item.Rarity.COMMON).ordinal()];
+ }
+
+ @Override
+ public io.papermc.paper.inventory.ItemRarity getItemStackRarity(org.bukkit.inventory.ItemStack itemStack) {
+ return io.papermc.paper.inventory.ItemRarity.values()[itemStack.getRarity().ordinal()];
+ }
// Paper end
/**
diff --git a/src/test/java/io/papermc/paper/inventory/ItemRarityTest.java b/src/test/java/io/papermc/paper/inventory/ItemRarityTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..8086e6a754cb94ce15428ac0cdbaa43590beb9fe
--- /dev/null
+++ b/src/test/java/io/papermc/paper/inventory/ItemRarityTest.java
@@ -0,0 +1,24 @@
+package io.papermc.paper.inventory;
+
+import io.papermc.paper.adventure.PaperAdventure;
+import net.minecraft.world.item.Rarity;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class ItemRarityTest {
+
+ @Test
+ public void testConvertFromNmsToBukkit() {
+ for (Rarity nmsRarity : Rarity.values()) {
+ assertEquals(ItemRarity.values()[nmsRarity.ordinal()].name(), nmsRarity.name(), "rarity names are mis-matched");
+ }
+ }
+
+ @Test
+ public void testRarityFormatting() {
+ for (Rarity nmsRarity : Rarity.values()) {
+ assertEquals(nmsRarity.color(), PaperAdventure.asVanilla(ItemRarity.values()[nmsRarity.ordinal()].color), "rarity formatting is mis-matched");
+ }
+ }
+}

View File

@ -5,7 +5,7 @@ Subject: [PATCH] forced whitelist: use configurable kick message
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index e9ea8ad5689c0e6edd2e7335ab9932b3a6abbbf3..5e3566e911194ee0f3552d612b63bb5922a98815 100644 index 784bcb1a504482bafcccfe57f72186e5322253ae..e31b5775b00148b6e8ac9545e589a87987a8b377 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -2269,7 +2269,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -2269,7 +2269,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

View File

@ -5,12 +5,12 @@ Subject: [PATCH] Expose protocol version
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
index 125ed63d8ae812284cd452b4387fd0d674c9c25a..c4457bb46c3e66f5954383fb18b6109a5fe2772d 100644 index c0592a85a1a0781b83232533b9ca1b30b116eb98..d11d0a9a2c6b13033437a22b7270e7d37bfe8046 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -556,6 +556,11 @@ public final class CraftMagicNumbers implements UnsafeValues { @@ -542,6 +542,11 @@ public final class CraftMagicNumbers implements UnsafeValues {
public io.papermc.paper.inventory.ItemRarity getItemStackRarity(org.bukkit.inventory.ItemStack itemStack) { public String getMainLevelName() {
return io.papermc.paper.inventory.ItemRarity.values()[itemStack.getRarity().ordinal()]; return ((net.minecraft.server.dedicated.DedicatedServer) net.minecraft.server.MinecraftServer.getServer()).getProperties().levelName;
} }
+ +
+ @Override + @Override

View File

@ -5,13 +5,14 @@ Subject: [PATCH] ItemStack repair check API
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
index c4457bb46c3e66f5954383fb18b6109a5fe2772d..a8ac14a908060aa656756ad728d0d1e826d3bbe7 100644 index d11d0a9a2c6b13033437a22b7270e7d37bfe8046..c2a7801ee4f6642813778f5e8ae89db46a253a3d 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -557,6 +557,14 @@ public final class CraftMagicNumbers implements UnsafeValues { @@ -547,6 +547,14 @@ public final class CraftMagicNumbers implements UnsafeValues {
return io.papermc.paper.inventory.ItemRarity.values()[itemStack.getRarity().ordinal()]; public int getProtocolVersion() {
return net.minecraft.SharedConstants.getCurrentVersion().getProtocolVersion();
} }
+
+ @Override + @Override
+ public boolean isValidRepairItemStack(org.bukkit.inventory.ItemStack itemToBeRepaired, org.bukkit.inventory.ItemStack repairMaterial) { + public boolean isValidRepairItemStack(org.bukkit.inventory.ItemStack itemToBeRepaired, org.bukkit.inventory.ItemStack repairMaterial) {
+ if (!itemToBeRepaired.getType().isItem() || !repairMaterial.getType().isItem()) { + if (!itemToBeRepaired.getType().isItem() || !repairMaterial.getType().isItem()) {
@ -19,10 +20,9 @@ index c4457bb46c3e66f5954383fb18b6109a5fe2772d..a8ac14a908060aa656756ad728d0d1e8
+ } + }
+ return CraftMagicNumbers.getItem(itemToBeRepaired.getType()).isValidRepairItem(CraftItemStack.asNMSCopy(itemToBeRepaired), CraftItemStack.asNMSCopy(repairMaterial)); + return CraftMagicNumbers.getItem(itemToBeRepaired.getType()).isValidRepairItem(CraftItemStack.asNMSCopy(itemToBeRepaired), CraftItemStack.asNMSCopy(repairMaterial));
+ } + }
+ // Paper end
@Override
public int getProtocolVersion() { /**
return net.minecraft.SharedConstants.getCurrentVersion().getProtocolVersion();
diff --git a/src/test/java/io/papermc/paper/util/ItemStackRepairCheckTest.java b/src/test/java/io/papermc/paper/util/ItemStackRepairCheckTest.java diff --git a/src/test/java/io/papermc/paper/util/ItemStackRepairCheckTest.java b/src/test/java/io/papermc/paper/util/ItemStackRepairCheckTest.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..6b8d360ef86e181a680ad77f28b7dd7368dddfe7 index 0000000000000000000000000000000000000000..6b8d360ef86e181a680ad77f28b7dd7368dddfe7

View File

@ -6,7 +6,7 @@ Subject: [PATCH] Fix item default attributes API
(previously added this API but upstream also added it) (previously added this API but upstream also added it)
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
index a8ac14a908060aa656756ad728d0d1e826d3bbe7..991a63f1a7cbd5d2cb88784a59ed0085b7bdfbe2 100644 index c2a7801ee4f6642813778f5e8ae89db46a253a3d..61686e63b2d1a98b9747e11058f450a51e2d4d01 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -396,9 +396,14 @@ public final class CraftMagicNumbers implements UnsafeValues { @@ -396,9 +396,14 @@ public final class CraftMagicNumbers implements UnsafeValues {

View File

@ -43,7 +43,7 @@ index dbcf183483766f39334d7f7e8336033906625f3f..300929a406905f5ff1ede664d5b99fb0
} }
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 5e3566e911194ee0f3552d612b63bb5922a98815..00a83b766f9e32b6403296901e806b07d4e4818e 100644 index e31b5775b00148b6e8ac9545e589a87987a8b377..718a455aa70999a339cccc51d6fc4bb689c2c27b 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -2269,7 +2269,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -2269,7 +2269,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa

Some files were not shown because too many files have changed in this diff Show More