mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-28 15:30:19 +01:00
Prevent fluids from loading chunks - major performance boost
This commit is contained in:
parent
2dd8623548
commit
87d59fdab4
1 changed files with 79 additions and 0 deletions
|
@ -0,0 +1,79 @@
|
|||
From cc6b3fdf5dfb4cc3f86348dc98fcebeb545621b2 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Mon, 10 Sep 2018 23:36:16 -0400
|
||||
Subject: [PATCH] Prevent chunk loading from Fluid Flowing
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/FluidTypeFlowing.java b/src/main/java/net/minecraft/server/FluidTypeFlowing.java
|
||||
index 90ba7a346f..7f16dec688 100644
|
||||
--- a/src/main/java/net/minecraft/server/FluidTypeFlowing.java
|
||||
+++ b/src/main/java/net/minecraft/server/FluidTypeFlowing.java
|
||||
@@ -186,7 +186,8 @@ public abstract class FluidTypeFlowing extends FluidType {
|
||||
EnumDirection enumdirection = (EnumDirection) entry.getKey();
|
||||
Fluid fluid1 = (Fluid) entry.getValue();
|
||||
BlockPosition blockposition1 = blockposition.shift(enumdirection);
|
||||
- IBlockData iblockdata1 = generatoraccess.getType(blockposition1);
|
||||
+ IBlockData iblockdata1 = generatoraccess.getTypeIfLoaded(blockposition1); // Paper
|
||||
+ if (iblockdata1 == null) continue; // Paper
|
||||
|
||||
if (this.a(generatoraccess, blockposition, iblockdata, enumdirection, blockposition1, iblockdata1, generatoraccess.b(blockposition1), fluid1.c())) {
|
||||
// CraftBukkit start
|
||||
@@ -213,7 +214,8 @@ public abstract class FluidTypeFlowing extends FluidType {
|
||||
while (iterator.hasNext()) {
|
||||
EnumDirection enumdirection = (EnumDirection) iterator.next();
|
||||
BlockPosition blockposition1 = blockposition.shift(enumdirection);
|
||||
- IBlockData iblockdata1 = iworldreader.getType(blockposition1);
|
||||
+ IBlockData iblockdata1 = iworldreader.getTypeIfLoaded(blockposition1); // Paper
|
||||
+ if (iblockdata1 == null) continue; // Paper
|
||||
Fluid fluid = iblockdata1.s();
|
||||
|
||||
if (fluid.c().a((FluidType) this) && this.a(enumdirection, (IBlockAccess) iworldreader, blockposition, iblockdata, blockposition1, iblockdata1)) {
|
||||
@@ -331,11 +333,19 @@ public abstract class FluidTypeFlowing extends FluidType {
|
||||
BlockPosition blockposition2 = blockposition.shift(enumdirection1);
|
||||
short short0 = a(blockposition1, blockposition2);
|
||||
// CraftBukkit start - decompile errors
|
||||
- Pair pair = (Pair) short2objectmap.computeIfAbsent(short0, (ix) -> {
|
||||
- IBlockData iblockdatax = iworldreader.getType(blockposition2);
|
||||
+ // Paper start - avoid loading chunks
|
||||
+ Pair<IBlockData, Fluid> pair = short2objectmap.get(short0);
|
||||
+ if (pair == null) {
|
||||
+ IBlockData iblockdatax = iworldreader.getTypeIfLoaded(blockposition2);
|
||||
+ if (iblockdatax == null) {
|
||||
+ continue;
|
||||
+ }
|
||||
|
||||
- return Pair.of(iblockdatax, iblockdatax.s());
|
||||
- });
|
||||
+ pair = Pair.of(iblockdatax, iblockdatax.s());
|
||||
+ short2objectmap.put(short0, pair);
|
||||
+
|
||||
+ }
|
||||
+ // Paper end
|
||||
// CraftBukkit end
|
||||
IBlockData iblockdata1 = (IBlockData) pair.getFirst();
|
||||
Fluid fluid = (Fluid) pair.getSecond();
|
||||
@@ -411,11 +421,16 @@ public abstract class FluidTypeFlowing extends FluidType {
|
||||
BlockPosition blockposition1 = blockposition.shift(enumdirection);
|
||||
short short0 = a(blockposition, blockposition1);
|
||||
// CraftBukkit start - decompile errors
|
||||
- Pair pair = (Pair) short2objectopenhashmap.computeIfAbsent(short0, (ix) -> {
|
||||
- IBlockData iblockdatax = iworldreader.getType(blockposition1);
|
||||
-
|
||||
- return Pair.of(iblockdatax, iblockdatax.s());
|
||||
- });
|
||||
+ // Paper start
|
||||
+ Pair pair = (Pair) short2objectopenhashmap.get(short0);
|
||||
+ if (pair == null) {
|
||||
+ IBlockData iblockdatax = iworldreader.getTypeIfLoaded(blockposition1);
|
||||
+ if (iblockdatax == null) continue;
|
||||
+
|
||||
+ pair = Pair.of(iblockdatax, iblockdatax.s());
|
||||
+ short2objectopenhashmap.put(short0, pair);
|
||||
+ }
|
||||
+ // Paper end
|
||||
// CraftBukkit end
|
||||
IBlockData iblockdata1 = (IBlockData) pair.getFirst();
|
||||
Fluid fluid = (Fluid) pair.getSecond();
|
||||
--
|
||||
2.18.0
|
||||
|
Loading…
Reference in a new issue