Skip to content
This repository has been archived by the owner on Sep 12, 2021. It is now read-only.

Commit

Permalink
Merge dev/lighting
Browse files Browse the repository at this point in the history
Starlight is ready for the master branch. The reports of users indicate
that it is more stable than paper's lighting and is significantly faster.
One of the really good QOL changes is that /paper fixlight actually
works and is really fucking fast.

Starlight also nukes the existing nibble allocation system by paper,
which appears to be causing a few problems for people.

This commit also re-introduces the notify() optimisations, as well
as poi unloading.

Commit log:
* 3ede2ff - (dev/lighting) Bump poi unload time (23 minutes ago)
* 4ce5f42 - Port PaperMC/Starlight@b0b090b (29 minutes ago)
* 4634206 - (origin/dev/lighting) Merge branch 'master' into dev/lighting (2 days ago)
* db82b6c - Update to starlight 0.0.3 (4 days ago)
* b97e87f - Merge branch 'master' into dev/lighting (5 days ago)
* 09997a6 - Merge branch 'master' into dev/lighting (11 days ago)
* 8753f47 - Merge branch 'master' into dev/lighting (2 weeks ago)
* 0d63fa0 - Fix skylight propagation on top of non-empty sections again (2 weeks ago)
* 9e5cabb - Port starlight changes (3 weeks ago)
* 36c99d9 - Starlight: Custom block emittence handlers & improve relighting (3 weeks ago)
* 610b3aa - Fix /paper fixlight (3 weeks ago)
* d2aa70f - Revert special block lookup per chunksection (3 weeks ago)
* 224e4e8 - Merge branch 'master' into dev/lighting (3 weeks ago)
* 09423b6 - Update to Starlight 0.0.2-RC3 (3 weeks ago)
* afc1e1d - Merge branch 'master' into dev/lighting (4 weeks ago)
* e27c9c1 - Merge branch 'master' into dev/lighting (4 weeks ago)
* 5d722a0 - Fix incorrect handling of special colliding blocks in chunk sections (6 weeks ago)
* 9a48d49 - Fix skylight propagation issue on the highest non-empty section border (6 weeks ago)
* 6ec52c9 - Merge branch 'master' into dev/lighting (6 weeks ago)
* d5bb4d2 - Merge branch 'master' into dev/lighting (8 weeks ago)
* 571b4b2 - Merge branch 'master' into dev/lighting (8 weeks ago)
* f4d4a4a - Fixes for light engine (8 weeks ago)
* a2faf7b - Merge branch 'master' into dev/lighting (9 weeks ago)
* 170fd22 - Merge branch 'master' into dev/lighting (10 weeks ago)
* bcfe550 - Re-Add unload poi data patch (10 weeks ago)
* 1a412ae - Fix worldborder crash (10 weeks ago)
* 08b6df3 - Merge branch 'master' into dev/lighting (2 months ago)
* 2194b64 - Optimisations (2 months ago)
  • Loading branch information
Spottedleaf committed Jan 21, 2021
1 parent e14829a commit d3ee222
Show file tree
Hide file tree
Showing 24 changed files with 7,159 additions and 540 deletions.
1,290 changes: 1,254 additions & 36 deletions patches/server/0004-Util-patch.patch

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions patches/server/0008-Add-soft-async-catcher.patch
Original file line number Diff line number Diff line change
Expand Up @@ -82,26 +82,26 @@ index e7624948ea4aa1a07d84ed3d295cfe2dd354fd14..a263cd7a0680e0cc3517f84308118eb3
int ret = 0;

diff --git a/src/main/java/com/tuinity/tuinity/chunk/SingleThreadChunkRegionManager.java b/src/main/java/com/tuinity/tuinity/chunk/SingleThreadChunkRegionManager.java
index b8f5aafc8a9cb75364adf26c2d653fa17d4046fc..4cb10fe69cc672d2178de3c5b689cf29d1f1265e 100644
index 20150ad0750a648d349701a09b31881be124e46c..cae06962d80cdd00962236891472ba815b0ab8cd 100644
--- a/src/main/java/com/tuinity/tuinity/chunk/SingleThreadChunkRegionManager.java
+++ b/src/main/java/com/tuinity/tuinity/chunk/SingleThreadChunkRegionManager.java
@@ -137,6 +137,7 @@ public final class SingleThreadChunkRegionManager<T extends Enum<T> & SingleThre
@@ -162,6 +162,7 @@ public final class SingleThreadChunkRegionManager<T extends Enum<T> & SingleThre
}

public void addChunk(final int chunkX, final int chunkZ) {
+ com.tuinity.tuinity.util.TickThread.ensureTickThread("async region manager add chunk"); // Tuinity
this.addChunkTimings.startTiming();
try {
this.getOrCreateAndMergeSection(chunkX >> REGION_CHUNK_SIZE_SHIFT, chunkZ >> REGION_CHUNK_SIZE_SHIFT, null).addChunk(chunkX, chunkZ);
@@ -146,6 +147,7 @@ public final class SingleThreadChunkRegionManager<T extends Enum<T> & SingleThre
@@ -171,6 +172,7 @@ public final class SingleThreadChunkRegionManager<T extends Enum<T> & SingleThre
}

public void removeChunk(final int chunkX, final int chunkZ) {
+ com.tuinity.tuinity.util.TickThread.ensureTickThread("async region manager remove chunk"); // Tuinity
this.removeChunkTimings.startTiming();
try {
final RegionSection<T> section = this.regionsBySection.get(
@@ -161,6 +163,7 @@ public final class SingleThreadChunkRegionManager<T extends Enum<T> & SingleThre
@@ -187,6 +189,7 @@ public final class SingleThreadChunkRegionManager<T extends Enum<T> & SingleThre
}

public void recalculateRegions() {
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ issues where teleporting players across worlds while ticking.
Also allows us to run mid tick while ticking entities.

diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 8db373816bbcce67dea82350e4b45453eb3dd1ef..311685c9d8229d6bdde8d82375fc1d9db43d4edb 100644
index 48446407b70a8384c18eb0567f16dfb17c524312..80b2507414dc603deb0b542e5f5d86969af9d21b 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -61,7 +61,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
Expand All @@ -30,7 +30,7 @@ index 8db373816bbcce67dea82350e4b45453eb3dd1ef..311685c9d8229d6bdde8d82375fc1d9d
protected final PersistentRaid persistentRaid;
private final ObjectLinkedOpenHashSet<BlockActionData> L;
private boolean ticking;
@@ -1032,13 +1032,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -824,13 +824,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}

this.tickingEntities = true;
Expand All @@ -46,7 +46,7 @@ index 8db373816bbcce67dea82350e4b45453eb3dd1ef..311685c9d8229d6bdde8d82375fc1d9d
Entity entity1 = entity.getVehicle();

/* CraftBukkit start - We prevent spawning in general, so this butchering is not needed
@@ -1074,7 +1073,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -866,7 +865,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
gameprofilerfiller.enter("remove");
if (entity.dead) {
this.removeEntityFromChunk(entity);
Expand All @@ -55,15 +55,15 @@ index 8db373816bbcce67dea82350e4b45453eb3dd1ef..311685c9d8229d6bdde8d82375fc1d9d
this.unregisterEntity(entity);
}

@@ -1082,6 +1081,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -874,6 +873,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
timings.entityTick.stopTiming(); // Spigot

+ objectiterator.finishedIterating(); // Tuinity
this.tickingEntities = false;
// Paper start
for (java.lang.Runnable run : this.afterEntityTickingTasks) {
@@ -1861,7 +1861,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1653,7 +1653,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
Entity entity = (Entity) iterator.next();

if (!(entity instanceof EntityPlayer)) {
Expand All @@ -72,15 +72,15 @@ index 8db373816bbcce67dea82350e4b45453eb3dd1ef..311685c9d8229d6bdde8d82375fc1d9d
throw (IllegalStateException) SystemUtils.c((Throwable) (new IllegalStateException("Removing entity while ticking!")));
}

@@ -1889,6 +1889,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1681,6 +1681,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {

public void unregisterEntity(Entity entity) {
org.spigotmc.AsyncCatcher.catchOp("entity unregister"); // Spigot
+ this.entitiesForIteration.remove(entity); // Tuinity
// Paper start - fix entity registration issues
if (entity instanceof EntityComplexPart) {
// Usually this is a no-op for complex parts, and ID's should be removed, but go ahead and remove it anyways
@@ -1955,12 +1956,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1747,12 +1748,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
this.getScoreboard().a(entity);
// CraftBukkit start - SPIGOT-5278
if (entity instanceof EntityDrowned) {
Expand All @@ -100,7 +100,7 @@ index 8db373816bbcce67dea82350e4b45453eb3dd1ef..311685c9d8229d6bdde8d82375fc1d9d
}
new com.destroystokyo.paper.event.entity.EntityRemoveFromWorldEvent(entity.getBukkitEntity()).callEvent(); // Paper - fire while valid
entity.valid = false; // CraftBukkit
@@ -1976,7 +1981,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1768,7 +1773,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
return;
}
// Paper end
Expand All @@ -109,23 +109,23 @@ index 8db373816bbcce67dea82350e4b45453eb3dd1ef..311685c9d8229d6bdde8d82375fc1d9d
if (!entity.isQueuedForRegister) { // Paper
this.entitiesToAdd.add(entity);
entity.isQueuedForRegister = true; // Paper
@@ -1984,6 +1989,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1776,6 +1781,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
} else {
entity.isQueuedForRegister = false; // Paper
this.entitiesById.put(entity.getId(), entity);
+ this.entitiesForIteration.add(entity); // Tuinity
if (entity instanceof EntityEnderDragon) {
EntityComplexPart[] aentitycomplexpart = ((EntityEnderDragon) entity).eJ();
int i = aentitycomplexpart.length;
@@ -1992,6 +1998,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1784,6 +1790,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
EntityComplexPart entitycomplexpart = aentitycomplexpart[j];

this.entitiesById.put(entitycomplexpart.getId(), entitycomplexpart);
+ this.entitiesForIteration.add(entitycomplexpart); // Tuinity
}
}

@@ -2016,12 +2023,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1808,12 +1815,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
// this.getChunkProvider().addEntity(entity); // Paper - moved down below valid=true
// CraftBukkit start - SPIGOT-5278
if (entity instanceof EntityDrowned) {
Expand All @@ -145,7 +145,7 @@ index 8db373816bbcce67dea82350e4b45453eb3dd1ef..311685c9d8229d6bdde8d82375fc1d9d
}
entity.valid = true; // CraftBukkit
this.getChunkProvider().addEntity(entity); // Paper - from above to be below valid=true
@@ -2037,7 +2048,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1829,7 +1840,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}

public void removeEntity(Entity entity) {
Expand All @@ -154,7 +154,7 @@ index 8db373816bbcce67dea82350e4b45453eb3dd1ef..311685c9d8229d6bdde8d82375fc1d9d
throw (IllegalStateException) SystemUtils.c((Throwable) (new IllegalStateException("Removing entity while ticking!")));
} else {
this.removeEntityFromChunk(entity);
@@ -2140,7 +2151,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1932,7 +1943,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {

if (VoxelShapes.c(voxelshape, voxelshape1, OperatorBoolean.NOT_SAME)) {
boolean wasTicking = this.tickingEntities; this.tickingEntities = true; // Paper
Expand All @@ -165,7 +165,7 @@ index 8db373816bbcce67dea82350e4b45453eb3dd1ef..311685c9d8229d6bdde8d82375fc1d9d

while (iterator.hasNext()) {
NavigationAbstract navigationabstract = (NavigationAbstract) iterator.next();
@@ -2149,6 +2162,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1941,6 +1954,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
navigationabstract.b(blockposition);
}
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ index a072208bcd92ffa9ed47757de291b82be2e71e8e..8b4ab23563a9a0c047267143dc3c6c55
// Paper end - optimise isOutsideOfRange
// Paper start - optimize chunk status progression without jumping through thread pool
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
index 1cc9ec0377ce4f27ee1a9495b68325a29746c699..2861e46eb4d22346b4eeb167a023efedc7f0f33e 100644
index 83f070229098ad31b8ae65ffcebe52886ef2884d..f4d5ff1d0f1ad34032aaab96e1077f4be43d4bf3 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -195,6 +195,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
Expand Down Expand Up @@ -180,7 +180,7 @@ index 1cc9ec0377ce4f27ee1a9495b68325a29746c699..2861e46eb4d22346b4eeb167a023efed

@@ -462,6 +474,23 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
// Tuinity start
this.dataRegionManager = null;//new com.tuinity.tuinity.chunk.SingleThreadChunkRegionManager<>(this.world, RegionData.class, 2, (1.0 / 3.0), "Data");
this.dataRegionManager = new com.tuinity.tuinity.chunk.SingleThreadChunkRegionManager<>(this.world, RegionData.class, 2, (1.0 / 3.0), "Data");
// Tuinity end
+ // Tuinity start - optimise checkDespawn
+ this.playerGeneralAreaMap = new com.destroystokyo.paper.util.misc.PlayerAreaMap(this.pooledLinkedPlayerHashSets,
Expand Down Expand Up @@ -242,7 +242,7 @@ index 3ad08863c00d96c827c26c8d4c9a206a43bb1db9..28ee325fcc8b50397768363403823f2e
this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((WorldDataServer) worlddatamutable).getName()); // Spigot
this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(((WorldDataServer) worlddatamutable).getName(), this.spigotConfig); // Paper
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 311685c9d8229d6bdde8d82375fc1d9db43d4edb..64704800c690e81f32537ec171f630dc078b3371 100644
index 80b2507414dc603deb0b542e5f5d86969af9d21b..c0617e513d321439db3d5fd9517da1f38f1fbd88 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -300,6 +300,10 @@ public class WorldServer extends World implements GeneratorAccessSeed {
Expand All @@ -256,7 +256,7 @@ index 311685c9d8229d6bdde8d82375fc1d9db43d4edb..64704800c690e81f32537ec171f630dc
// Add env and gen to constructor, WorldData -> WorldDataServer
public WorldServer(MinecraftServer minecraftserver, Executor executor, Convertable.ConversionSession convertable_conversionsession, IWorldDataServer iworlddataserver, ResourceKey<World> resourcekey, DimensionManager dimensionmanager, WorldLoadListener worldloadlistener, ChunkGenerator chunkgenerator, boolean flag, long i, List<MobSpawner> list, boolean flag1, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen) {
super(iworlddataserver, resourcekey, dimensionmanager, minecraftserver::getMethodProfiler, false, flag, i, gen, env, executor); // Paper pass executor
@@ -858,6 +862,14 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -650,6 +654,14 @@ public class WorldServer extends World implements GeneratorAccessSeed {

public void doTick(BooleanSupplier booleansupplier) {
GameProfilerFiller gameprofilerfiller = this.getMethodProfiler();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -462,10 +462,10 @@ index a33303c31881b6391723e16a06d7841d48679958..ce57e6a4acac97d6da82202094306e7e
return this.b.equals(entityliving.getEntityType()) && this.d.test(entityliving);
}
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index dd1025c5cf60ec0151ff9455f922e7c08b1f35ac..e4bc8443620e9ae4bb0b243e17b54716e17bba11 100644
index 9287ab8e861a97fc4b132e46163b050a9ae52ced..3ad523b8ff4d5954cafb0dd71950262d83b04e8f 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -1600,6 +1600,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -1589,6 +1589,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return d3 * d3 + d4 * d4 + d5 * d5;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ The executor returned is finalizable and of course
that causes issues.

diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
index 2861e46eb4d22346b4eeb167a023efedc7f0f33e..533a407a28fbe43d467913585370c7a0cca34b94 100644
index f4d5ff1d0f1ad34032aaab96e1077f4be43d4bf3..caaffea1b670ddfd20bf39cbd55da1c5cf561288 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -337,9 +337,10 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ index fcba187bbdc1b468cfea2bc922187d9b8959a9d5..ecff0657e5666ddc2e6a5c3111bfb2b8

if (this.remoteControlListener != null) {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 84c9d74e39ff79dbd23164c917b8e10b6baf7979..42f72c51781a8a54232f9bbea261242b0edd0de5 100644
index 19b26543a1503b8710ef5c013d0cf26e55749bfd..45e310e249a83714d0001d85b2ead8d4f8a2d742 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -750,10 +750,11 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ Subject: [PATCH] Copy passenger list in enderTeleportTo
Fixes https://github.com/Spottedleaf/Tuinity/issues/208

diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index e4bc8443620e9ae4bb0b243e17b54716e17bba11..f57e0e1488b98c619daed4854d133a7ed552c40d 100644
index 3ad523b8ff4d5954cafb0dd71950262d83b04e8f..013c44f80f74376e8bbb37afb5de07aa5d8fb1bc 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -3095,7 +3095,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -3084,7 +3084,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
this.recursiveStream().forEach((entity) -> {
worldserver.chunkCheck(entity);
entity.az = true;
Expand Down
Loading

0 comments on commit d3ee222

Please sign in to comment.