mirror of
https://github.com/PaperMC/Paper.git
synced 2024-08-28 07:29:40 +02:00
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 Bukkit Changes: da08d022 SPIGOT-4700: Add PlayerFishEvent.State.REEL_IN 0cef14e4 Remove draft API from selectEntities CraftBukkit Changes:a46fdbc6
Remove outdated build delay.3697519b
SPIGOT-4708: Fix ExactChoice recipes neglecting material9ead7009
SPIGOT-4677: Add minecraft.admin.command_feedback permissionc3749a23
Remove the Damage tag from items when it is 0.f74c7b95
SPIGOT-4706: Can't interact with active item494eef45
Mention requirement of JIRA ticket for bug fixes51d62dec
SPIGOT-4702: Exception when middle clicking certain slotsbe557e69
SPIGOT-4700: Add PlayerFishEvent.State.REEL_IN
53 lines
2.5 KiB
Diff
53 lines
2.5 KiB
Diff
From 68d53d355f81300b2cbd41c12ef16efe87a3d8fb Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Fri, 28 Sep 2018 20:46:29 -0400
|
|
Subject: [PATCH] Optimize Light Recalculations
|
|
|
|
Optimizes to not repeatedly look up the same chunk for
|
|
light lookups.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
|
index 4f64072a7b..966879a894 100644
|
|
--- a/src/main/java/net/minecraft/server/Chunk.java
|
|
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
|
@@ -353,7 +353,7 @@ public class Chunk implements IChunkAccess {
|
|
private void a(int i, int j, int k, int l) {
|
|
if (l > k && this.areNeighborsLoaded(1)) { // Paper
|
|
for (int i1 = k; i1 < l; ++i1) {
|
|
- this.world.c(EnumSkyBlock.SKY, new BlockPosition(i, i1, j));
|
|
+ this.world.updateBrightness(EnumSkyBlock.SKY, new BlockPosition(i, i1, j), this); // Paper
|
|
}
|
|
|
|
this.x = true;
|
|
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
|
index 97a0fbd55c..fb71879ac0 100644
|
|
--- a/src/main/java/net/minecraft/server/World.java
|
|
+++ b/src/main/java/net/minecraft/server/World.java
|
|
@@ -591,8 +591,9 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc
|
|
}
|
|
|
|
if (this.worldProvider.g()) {
|
|
- for (i1 = k; i1 <= l; ++i1) {
|
|
- this.c(EnumSkyBlock.SKY, new BlockPosition(i, i1, j));
|
|
+ Chunk chunk = getChunkIfLoaded(i >> 4, j >> 4); // Paper
|
|
+ for (i1 = k; chunk != null && i1 <= l; ++i1) { // Paper
|
|
+ this.updateBrightness(EnumSkyBlock.SKY, new BlockPosition(i, i1, j), chunk); // Paper
|
|
}
|
|
}
|
|
|
|
@@ -2220,6 +2221,11 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc
|
|
public boolean c(EnumSkyBlock enumskyblock, BlockPosition blockposition) {
|
|
// CraftBukkit start - Use neighbor cache instead of looking up
|
|
Chunk chunk = this.getChunkIfLoaded(blockposition.getX() >> 4, blockposition.getZ() >> 4);
|
|
+ // Paper start - optimize light updates where chunk is known
|
|
+ return updateBrightness(enumskyblock, blockposition, chunk);
|
|
+ }
|
|
+ public boolean updateBrightness(EnumSkyBlock enumskyblock, BlockPosition blockposition, Chunk chunk) {
|
|
+ // Paper end
|
|
if (chunk == null || !chunk.areNeighborsLoaded(1) /*!this.areChunksLoaded(blockposition, 17, false)*/) {
|
|
// CraftBukkit end
|
|
return false;
|
|
--
|
|
2.21.0
|
|
|