Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-16 11:30:06 +01:00
bffb08c2f9
The Paper method was chosen for deprecation because it was more restrictive in that it has an isGliding check.
40 Zeilen
2.5 KiB
Diff
40 Zeilen
2.5 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: LemonCaramel <admin@caramel.moe>
|
|
Date: Sun, 24 Sep 2023 20:19:44 +0900
|
|
Subject: [PATCH] Fix UnsafeValues#loadAdvancement
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
|
index 4d66a9f24d718de4c6862b20ccb7240332523db4..548c77592a3520e8053483644eba805079a14f1a 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
|
@@ -319,7 +319,27 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
|
JsonObject jsonobject = GsonHelper.convertToJsonObject(jsonelement, "advancement");
|
|
net.minecraft.advancements.Advancement nms = net.minecraft.advancements.Advancement.fromJson(jsonobject, new DeserializationContext(minecraftkey, MinecraftServer.getServer().getLootData()));
|
|
if (nms != null) {
|
|
- MinecraftServer.getServer().getAdvancements().advancements.put(minecraftkey, new AdvancementHolder(minecraftkey, nms));
|
|
+ // Paper start - Fix throw UnsupportedOperationException
|
|
+ //MinecraftServer.getServer().getAdvancements().advancements.put(minecraftkey, new AdvancementHolder(minecraftkey, nms));
|
|
+ final com.google.common.collect.ImmutableMap.Builder<ResourceLocation, AdvancementHolder> mapBuilder = com.google.common.collect.ImmutableMap.builder();
|
|
+ mapBuilder.putAll(MinecraftServer.getServer().getAdvancements().advancements);
|
|
+
|
|
+ final AdvancementHolder holder = new AdvancementHolder(minecraftkey, nms);
|
|
+ mapBuilder.put(minecraftkey, holder);
|
|
+
|
|
+ MinecraftServer.getServer().getAdvancements().advancements = mapBuilder.build();
|
|
+ final net.minecraft.advancements.AdvancementTree tree = MinecraftServer.getServer().getAdvancements().tree();
|
|
+ tree.addAll(List.of(holder));
|
|
+
|
|
+ // recalculate advancement position
|
|
+ final net.minecraft.advancements.AdvancementNode node = tree.get(minecraftkey);
|
|
+ if (node != null) {
|
|
+ final net.minecraft.advancements.AdvancementNode root = node.root();
|
|
+ if (root.holder().value().display().isPresent()) {
|
|
+ net.minecraft.advancements.TreeNodePosition.run(root);
|
|
+ }
|
|
+ }
|
|
+ // Paper end - Fix throw UnsupportedOperationException
|
|
Advancement bukkit = Bukkit.getAdvancement(key);
|
|
|
|
if (bukkit != null) {
|