[WIP] Sponge Async Lighting v2 - ChunkProviderServer
This commit is contained in:
9
sources/src/main/java/io/akarin/api/IMixinChunk.java
Normal file
9
sources/src/main/java/io/akarin/api/IMixinChunk.java
Normal file
@@ -0,0 +1,9 @@
|
||||
package io.akarin.api;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
public interface IMixinChunk {
|
||||
AtomicInteger getPendingLightUpdates();
|
||||
|
||||
long getLightUpdateTime();
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package io.akarin.server.mixin.lighting;
|
||||
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
||||
import io.akarin.api.IMixinChunk;
|
||||
import net.minecraft.server.ChunkProviderServer;
|
||||
import net.minecraft.server.WorldServer;
|
||||
|
||||
@Mixin(value = ChunkProviderServer.class, remap = false, priority = 1001)
|
||||
public class MixinChunkProviderServer {
|
||||
@Shadow @Final public WorldServer world;
|
||||
|
||||
@Redirect(method = "unloadChunks", at = @At(
|
||||
value = "INVOKE",
|
||||
target = "Lnet/minecraft/server/Chunk;isUnloading()Z"
|
||||
))
|
||||
public boolean shouldUnload(IMixinChunk chunk) {
|
||||
if (chunk.getPendingLightUpdates().get() > 0 || this.world.getTime() - chunk.getLightUpdateTime() < 20) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,13 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
/**
|
||||
* <b>Akarin Changes Note</b><br>
|
||||
* <br>
|
||||
* 1) Make entries-set concurrent<br>
|
||||
* 2) Add lock for entries-set operations<br>
|
||||
* @author cakoyo
|
||||
*/
|
||||
public class EntityTracker {
|
||||
|
||||
private static final Logger a = LogManager.getLogger();
|
||||
|
||||
Reference in New Issue
Block a user