geforkt von Mirrors/Paper
ea855e2b46
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Developers!: You will need to clean up your work/Minecraft/1.13.2 folder for this Also, restore a patch that was dropped in the last upstream Bukkit Changes: 279eeab3 Fix command description not being set 96e2bb18 Remove debug print from SyntheticEventTest CraftBukkit Changes:d3ed1516
Fix dangerously threaded beacons217a293d
Don't relocate joptsimple to allow --help to work.1be05a21
Prepare for imminent Java 12 releasea49270b2
Mappings Update5259d80c
SPIGOT-4669: Fix PlayerTeleportEvent coordinates for relative teleports Spigot Changes: e6eb36f2 Rebuild patches
81 Zeilen
4.3 KiB
Diff
81 Zeilen
4.3 KiB
Diff
From a6d0d3f88cd564ea13258eeb70929791801b6a63 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 431602cac..c0955d6ec 100644
|
|
--- a/src/main/java/net/minecraft/server/FluidTypeFlowing.java
|
|
+++ b/src/main/java/net/minecraft/server/FluidTypeFlowing.java
|
|
@@ -185,7 +185,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.getFluid(blockposition1), fluid1.c())) {
|
|
// CraftBukkit start
|
|
@@ -212,7 +213,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)) {
|
|
@@ -329,11 +331,20 @@ public abstract class FluidTypeFlowing extends FluidType {
|
|
if (enumdirection1 != enumdirection) {
|
|
BlockPosition blockposition2 = blockposition.shift(enumdirection1);
|
|
short short0 = a(blockposition1, blockposition2);
|
|
- Pair<IBlockData, Fluid> pair = (Pair) short2objectmap.computeIfAbsent(short0, (k) -> {
|
|
- IBlockData iblockdata1 = 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;
|
|
+ }
|
|
+
|
|
+ pair = Pair.of(iblockdatax, iblockdatax.s());
|
|
+ short2objectmap.put(short0, pair);
|
|
+
|
|
+ }
|
|
+ // Paper end
|
|
|
|
- return Pair.of(iblockdata1, iblockdata1.s());
|
|
- });
|
|
IBlockData iblockdata1 = (IBlockData) pair.getFirst();
|
|
Fluid fluid = (Fluid) pair.getSecond();
|
|
|
|
@@ -405,11 +416,16 @@ public abstract class FluidTypeFlowing extends FluidType {
|
|
EnumDirection enumdirection = (EnumDirection) iterator.next();
|
|
BlockPosition blockposition1 = blockposition.shift(enumdirection);
|
|
short short0 = a(blockposition, blockposition1);
|
|
- Pair<IBlockData, Fluid> pair = (Pair) short2objectmap.computeIfAbsent(short0, (j) -> {
|
|
- IBlockData iblockdata1 = iworldreader.getType(blockposition1);
|
|
-
|
|
- return Pair.of(iblockdata1, iblockdata1.s());
|
|
- });
|
|
+ // Paper start
|
|
+ Pair pair = (Pair) short2objectmap.get(short0);
|
|
+ if (pair == null) {
|
|
+ IBlockData iblockdatax = iworldreader.getTypeIfLoaded(blockposition1);
|
|
+ if (iblockdatax == null) continue;
|
|
+
|
|
+ pair = Pair.of(iblockdatax, iblockdatax.s());
|
|
+ short2objectmap.put(short0, pair);
|
|
+ }
|
|
+ // Paper end
|
|
IBlockData iblockdata1 = (IBlockData) pair.getFirst();
|
|
Fluid fluid = (Fluid) pair.getSecond();
|
|
Fluid fluid1 = this.a(iworldreader, blockposition1, iblockdata1);
|
|
--
|
|
2.21.0
|
|
|