mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-12 04:06:52 +01:00
6e71f41536
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing CraftBukkit Changes: 65247583f SPIGOT-7857: Improve ItemMeta block data deserialization 05d80500d SPIGOT-7857: Fix spurious internal NBT tag when deserializing BlockStateMeta cebb58e9a SPIGOT-7804: Fix written book serialization efcdd5d38 SPIGOT-7794: Cancelling InventoryItemMoveEvent destroys items b568ba572 SPIGOT-7789: Fix NPE in CraftMetaFirework applyToItem f057cf449 Remove outdated build delay Spigot Changes: f6a48054 SPIGOT-7835: Fix issue with custom hopper settings bb63b137 Rebuild patches e1142b4d Rebuild patches
115 lines
4.5 KiB
Diff
115 lines
4.5 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Sat, 21 Aug 2021 17:25:38 -0700
|
|
Subject: [PATCH] API for updating recipes on clients
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
index 0246db4a1f6eb168fa88260282311fee2ebb6014..ea04eb049e16d1027d15f9863d1fcd16f090c464 100644
|
|
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
@@ -1530,6 +1530,13 @@ public abstract class PlayerList {
|
|
}
|
|
|
|
public void reloadResources() {
|
|
+ // Paper start - API for updating recipes on clients
|
|
+ this.reloadAdvancementData();
|
|
+ this.reloadTagData();
|
|
+ this.reloadRecipeData();
|
|
+ }
|
|
+ public void reloadAdvancementData() {
|
|
+ // Paper end - API for updating recipes on clients
|
|
// CraftBukkit start
|
|
/*Iterator iterator = this.advancements.values().iterator();
|
|
|
|
@@ -1545,7 +1552,15 @@ public abstract class PlayerList {
|
|
}
|
|
// CraftBukkit end
|
|
|
|
+ // Paper start - API for updating recipes on clients
|
|
+ }
|
|
+ public void reloadTagData() {
|
|
+ // Paper end - API for updating recipes on clients
|
|
this.broadcastAll(new ClientboundUpdateTagsPacket(TagNetworkSerialization.serializeTagsToNetwork(this.registries)));
|
|
+ // Paper start - API for updating recipes on clients
|
|
+ }
|
|
+ public void reloadRecipeData() {
|
|
+ // Paper end - API for updating recipes on clients
|
|
ClientboundUpdateRecipesPacket packetplayoutrecipeupdate = new ClientboundUpdateRecipesPacket(this.server.getRecipeManager().getOrderedRecipes());
|
|
Iterator iterator1 = this.players.iterator();
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
index e61e1f4621ca29cab1afdf26b013b7b89b1ac358..f5a4ddf217fc114daf7faf345dd6c2e9294cba52 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
@@ -1162,6 +1162,18 @@ public final class CraftServer implements Server {
|
|
ReloadCommand.reload(this.console);
|
|
}
|
|
|
|
+ // Paper start - API for updating recipes on clients
|
|
+ @Override
|
|
+ public void updateResources() {
|
|
+ this.playerList.reloadResources();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void updateRecipes() {
|
|
+ this.playerList.reloadRecipeData();
|
|
+ }
|
|
+ // Paper end - API for updating recipes on clients
|
|
+
|
|
private void loadIcon() {
|
|
this.icon = new CraftIconCache(null);
|
|
try {
|
|
@@ -1541,6 +1553,13 @@ public final class CraftServer implements Server {
|
|
|
|
@Override
|
|
public boolean addRecipe(Recipe recipe) {
|
|
+ // Paper start - API for updating recipes on clients
|
|
+ return this.addRecipe(recipe, false);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public boolean addRecipe(Recipe recipe, boolean resendRecipes) {
|
|
+ // Paper end - API for updating recipes on clients
|
|
CraftRecipe toAdd;
|
|
if (recipe instanceof CraftRecipe) {
|
|
toAdd = (CraftRecipe) recipe;
|
|
@@ -1570,6 +1589,11 @@ public final class CraftServer implements Server {
|
|
}
|
|
}
|
|
toAdd.addToCraftingManager();
|
|
+ // Paper start - API for updating recipes on clients
|
|
+ if (resendRecipes) {
|
|
+ this.playerList.reloadRecipeData();
|
|
+ }
|
|
+ // Paper end - API for updating recipes on clients
|
|
return true;
|
|
}
|
|
|
|
@@ -1750,10 +1774,23 @@ public final class CraftServer implements Server {
|
|
|
|
@Override
|
|
public boolean removeRecipe(NamespacedKey recipeKey) {
|
|
+ // Paper start - API for updating recipes on clients
|
|
+ return this.removeRecipe(recipeKey, false);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public boolean removeRecipe(NamespacedKey recipeKey, boolean resendRecipes) {
|
|
+ // Paper end - API for updating recipes on clients
|
|
Preconditions.checkArgument(recipeKey != null, "recipeKey == null");
|
|
|
|
ResourceLocation mcKey = CraftNamespacedKey.toMinecraft(recipeKey);
|
|
- return this.getServer().getRecipeManager().removeRecipe(mcKey);
|
|
+ // Paper start - resend recipes on successful removal
|
|
+ boolean removed = this.getServer().getRecipeManager().removeRecipe(mcKey);
|
|
+ if (removed && resendRecipes) {
|
|
+ this.playerList.reloadRecipeData();
|
|
+ }
|
|
+ return removed;
|
|
+ // Paper end
|
|
}
|
|
|
|
@Override
|