2 people had issues where some plugin is doing some reallly insane NMS hackery that created invalid worlds, which caused some errors... Really don't understand what in the world they did, but putting in a dumb guard that shouldn't even be necessary to just not send the sound effect rather than erroring.
56 lines
2.8 KiB
Diff
56 lines
2.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
|
Date: Tue, 1 Jan 2019 02:22:01 -0800
|
|
Subject: [PATCH] Add Heightmap API
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
|
index 7821d4cd05200ca32ba7e2c7cc7e9ff476d3a236..ee08cdcffc9237ee4154b7c756ba032b7723bd1f 100644
|
|
--- a/src/main/java/net/minecraft/server/World.java
|
|
+++ b/src/main/java/net/minecraft/server/World.java
|
|
@@ -574,8 +574,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
|
|
}
|
|
}
|
|
|
|
- @Override
|
|
- public int a(HeightMap.Type heightmap_type, int i, int j) {
|
|
+ public final int getHighestBlockY(final HeightMap.Type heightmap, final int x, final int z) { return this.a(heightmap, x, z); } // Paper - OBFHELPER
|
|
+ @Override public int a(HeightMap.Type heightmap_type, int i, int j) { // Paper - OBFHELPER
|
|
int k;
|
|
|
|
if (i >= -30000000 && j >= -30000000 && i < 30000000 && j < 30000000) {
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
index db31b17b87084c47402f5452872f385629c58382..0d5731429abe7b4ff97d6644ff088063dde19e60 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
@@ -339,6 +339,29 @@ public class CraftWorld implements World {
|
|
return getHighestBlockYAt(x, z, org.bukkit.HeightMap.MOTION_BLOCKING);
|
|
}
|
|
|
|
+ // Paper start - Implement heightmap api
|
|
+ @Override
|
|
+ public int getHighestBlockYAt(final int x, final int z, final com.destroystokyo.paper.HeightmapType heightmap) throws UnsupportedOperationException {
|
|
+ this.getChunkAt(x >> 4, z >> 4); // heightmap will ret 0 on unloaded areas
|
|
+
|
|
+ switch (heightmap) {
|
|
+ case LIGHT_BLOCKING:
|
|
+ throw new UnsupportedOperationException(); // TODO
|
|
+ //return this.world.getHighestBlockY(HeightMap.Type.LIGHT_BLOCKING, x, z);
|
|
+ case ANY:
|
|
+ return this.world.getHighestBlockY(net.minecraft.server.HeightMap.Type.WORLD_SURFACE, x, z);
|
|
+ case SOLID:
|
|
+ return this.world.getHighestBlockY(net.minecraft.server.HeightMap.Type.OCEAN_FLOOR, x, z);
|
|
+ case SOLID_OR_LIQUID:
|
|
+ return this.world.getHighestBlockY(net.minecraft.server.HeightMap.Type.MOTION_BLOCKING, x, z);
|
|
+ case SOLID_OR_LIQUID_NO_LEAVES:
|
|
+ return this.world.getHighestBlockY(net.minecraft.server.HeightMap.Type.MOTION_BLOCKING_NO_LEAVES, x, z);
|
|
+ default:
|
|
+ throw new UnsupportedOperationException();
|
|
+ }
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
@Override
|
|
public Location getSpawnLocation() {
|
|
BlockPosition spawn = world.getSpawn();
|