PaperMC/patches/server/0846-Deprecate-and-replace-methods-with-old-StructureType.patch
Spottedleaf da9d110d5b Remove chunk save reattempt patch
This patch does not appear to be doing anything useful, and may
hide errors.

Currently, the save logic does not run through this path either
so it did not do anything.

Additionally, properly implement support for handling
RegionFileSizeException in Moonrise.
2024-11-28 18:27:59 -08:00

54 lines
3.1 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
Date: Sat, 10 Dec 2022 17:52:38 -0800
Subject: [PATCH] Deprecate and replace methods with old StructureType
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index a755137d8d4b266a648cb2a4f41a5ed00262f121..eaea08530ca864158a2fa15dca38ca0c25a49bde 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -2019,6 +2019,11 @@ public final class CraftServer implements Server {
ServerLevel worldServer = ((CraftWorld) world).getHandle();
Location structureLocation = world.locateNearestStructure(location, structureType, radius, findUnexplored);
+ // Paper start - don't throw NPE
+ if (structureLocation == null) {
+ throw new IllegalStateException("Could not find a structure for " + structureType);
+ }
+ // Paper end
BlockPos structurePosition = CraftLocation.toBlockPosition(structureLocation);
// Create map with trackPlayer = true, unlimitedTracking = true
@@ -2029,6 +2034,31 @@ public final class CraftServer implements Server {
return CraftItemStack.asBukkitCopy(stack);
}
+ // Paper start - copied from above (uses un-deprecated StructureType type)
+ @Override
+ public ItemStack createExplorerMap(World world, Location location, org.bukkit.generator.structure.StructureType structureType, org.bukkit.map.MapCursor.Type mapIcon, int radius, boolean findUnexplored) {
+ Preconditions.checkArgument(world != null, "World cannot be null");
+ Preconditions.checkArgument(location != null, "Location cannot be null");
+ Preconditions.checkArgument(structureType != null, "StructureType cannot be null");
+ Preconditions.checkArgument(mapIcon != null, "mapIcon cannot be null");
+
+ ServerLevel worldServer = ((CraftWorld) world).getHandle();
+ final org.bukkit.util.StructureSearchResult structureSearchResult = world.locateNearestStructure(location, structureType, radius, findUnexplored);
+ if (structureSearchResult == null) {
+ return null;
+ }
+ Location structureLocation = structureSearchResult.getLocation();
+ BlockPos structurePosition = new BlockPos(structureLocation.getBlockX(), structureLocation.getBlockY(), structureLocation.getBlockZ());
+
+ // Create map with showIcons = true, unlimitedTracking = true
+ net.minecraft.world.item.ItemStack stack = MapItem.create(worldServer, structurePosition.getX(), structurePosition.getZ(), MapView.Scale.NORMAL.getValue(), true, true);
+ MapItem.renderBiomePreviewMap(worldServer, stack);
+ // "+" map ID taken from VillagerTrades$TreasureMapForEmeralds
+ MapItem.getSavedData(stack, worldServer).addTargetDecoration(stack, structurePosition, "+", CraftMapCursor.CraftType.bukkitToMinecraftHolder(mapIcon));
+
+ return CraftItemStack.asBukkitCopy(stack);
+ }
+ // Paper end
@Override
public void shutdown() {