mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-01 12:41:50 +01:00
0ea3083817
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 Bukkit Changes: 1e843b72 #510: Add NamespacedKey#fromString() to fetch from user input a4d18241 #581: Add methods to modify despawn delay for wandering villagers CraftBukkit Changes: 0cd8f19f #802: Add methods to modify despawn delay for wandering villagers d5c5d998 SPIGOT-6362: ConcurrentModificationException: null --> Server Crash 8c7d69fe SPIGOT-5228: Entities that are removed during chunk unloads are not properly removed from the chunk.
62 lines
2.8 KiB
Diff
62 lines
2.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
|
Date: Tue, 14 Jan 2020 14:59:08 -0800
|
|
Subject: [PATCH] Optimise Chunk#getFluid
|
|
|
|
Removing the try catch and generally reducing ops should make it
|
|
faster on its own, however removing the try catch makes it
|
|
easier to inline due to code size
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
|
index 49bcd959206eeb21ff743f827a076b0c4cd3c722..63de4bba14df9bc33ce04fff5bc0baede6fad6f7 100644
|
|
--- a/src/main/java/net/minecraft/server/Chunk.java
|
|
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
|
@@ -390,17 +390,20 @@ public class Chunk implements IChunkAccess {
|
|
}
|
|
|
|
public Fluid a(int i, int j, int k) {
|
|
- try {
|
|
- if (j >= 0 && j >> 4 < this.sections.length) {
|
|
- ChunkSection chunksection = this.sections[j >> 4];
|
|
-
|
|
- if (!ChunkSection.a(chunksection)) {
|
|
- return chunksection.b(i & 15, j & 15, k & 15);
|
|
+ //try { // Paper - remove try catch
|
|
+ // Paper start - reduce the number of ops in this call
|
|
+ int index = j >> 4;
|
|
+ if (index >= 0 && index < this.sections.length) {
|
|
+ ChunkSection chunksection = this.sections[index];
|
|
+
|
|
+ if (chunksection != null) {
|
|
+ return chunksection.blockIds.a((j & 15) << 8 | (k & 15) << 4 | i & 15).getFluid();
|
|
}
|
|
+ // Paper end
|
|
}
|
|
|
|
return FluidTypes.EMPTY.h();
|
|
- } catch (Throwable throwable) {
|
|
+ /*} catch (Throwable throwable) { // Paper - remove try catch
|
|
CrashReport crashreport = CrashReport.a(throwable, "Getting fluid state");
|
|
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Block being got");
|
|
|
|
@@ -409,6 +412,7 @@ public class Chunk implements IChunkAccess {
|
|
});
|
|
throw new ReportedException(crashreport);
|
|
}
|
|
+ */ // Paper - remove try catch
|
|
}
|
|
|
|
// CraftBukkit start
|
|
diff --git a/src/main/java/net/minecraft/server/ChunkSection.java b/src/main/java/net/minecraft/server/ChunkSection.java
|
|
index 668942c629732b8d46b7f2646df8e7827baae240..39572cdce691a459cb9df0cc064fbf7bde83a99e 100644
|
|
--- a/src/main/java/net/minecraft/server/ChunkSection.java
|
|
+++ b/src/main/java/net/minecraft/server/ChunkSection.java
|
|
@@ -38,7 +38,7 @@ public class ChunkSection {
|
|
}
|
|
|
|
public Fluid b(int i, int j, int k) {
|
|
- return ((IBlockData) this.blockIds.a(i, j, k)).getFluid();
|
|
+ return ((IBlockData) this.blockIds.a(i, j, k)).getFluid(); // Paper - diff on change - we expect this to be effectively just getType(x, y, z).getFluid(). If this changes we need to check other patches that use IBlockData#getFluid.
|
|
}
|
|
|
|
public void a() {
|