mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-25 18:37:35 +01:00
dc684c60d1
The new behavior of disconnect to block the current thread until the disconnect succeeded is better than throwing it off to happen at some point
55 lines
3.1 KiB
Diff
55 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 2e0c07ab0f89043a97bcb15b6c507f6c052d2a4e..56f9b69b5a30c4ee5bcbcb8ae33e26f75b477475 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
@@ -1992,6 +1992,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
|
|
@@ -2002,6 +2007,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() {
|