mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-18 20:53:09 +01:00
da9d110d5b
This patch does not appear to be doing anything useful, and may hide errors. Currently, the save logic does not run through this path either so it did not do anything. Additionally, properly implement support for handling RegionFileSizeException in Moonrise.
52 lines
2.1 KiB
Diff
52 lines
2.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
|
Date: Thu, 10 Jun 2021 14:36:00 -0700
|
|
Subject: [PATCH] Optimise BlockSoil nearby water lookup
|
|
|
|
Apparently the abstract block iteration was taking about
|
|
75% of the method call.
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java
|
|
index a87f8345aa5520a867a8dd769b43526b20b8c16a..c3dba0c2c94f3804338f86621dc42405e380a6b3 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java
|
|
@@ -154,19 +154,28 @@ public class FarmBlock extends Block {
|
|
}
|
|
|
|
private static boolean isNearWater(LevelReader world, BlockPos pos) {
|
|
- Iterator iterator = BlockPos.betweenClosed(pos.offset(-4, 0, -4), pos.offset(4, 1, 4)).iterator();
|
|
-
|
|
- BlockPos blockposition1;
|
|
-
|
|
- do {
|
|
- if (!iterator.hasNext()) {
|
|
- return false;
|
|
+ // Paper start - Perf: remove abstract block iteration
|
|
+ int xOff = pos.getX();
|
|
+ int yOff = pos.getY();
|
|
+ int zOff = pos.getZ();
|
|
+
|
|
+ for (int dz = -4; dz <= 4; ++dz) {
|
|
+ int z = dz + zOff;
|
|
+ for (int dx = -4; dx <= 4; ++dx) {
|
|
+ int x = xOff + dx;
|
|
+ for (int dy = 0; dy <= 1; ++dy) {
|
|
+ int y = dy + yOff;
|
|
+ net.minecraft.world.level.chunk.LevelChunk chunk = (net.minecraft.world.level.chunk.LevelChunk)world.getChunk(x >> 4, z >> 4);
|
|
+ net.minecraft.world.level.material.FluidState fluid = chunk.getBlockStateFinal(x, y, z).getFluidState();
|
|
+ if (fluid.is(FluidTags.WATER)) {
|
|
+ return true;
|
|
+ }
|
|
+ }
|
|
}
|
|
+ }
|
|
|
|
- blockposition1 = (BlockPos) iterator.next();
|
|
- } while (!world.getFluidState(blockposition1).is(FluidTags.WATER));
|
|
-
|
|
- return true;
|
|
+ return false;
|
|
+ // Paper end - Perf: remove abstract block iteration
|
|
}
|
|
|
|
@Override
|