Split some mixins to their platforms
This commit is contained in:
@@ -77,14 +77,14 @@ public class TickThread extends Thread {
|
||||
}
|
||||
|
||||
public TickThread(final Runnable run, final String name) {
|
||||
this(run, name, null);
|
||||
this(null, run, name);
|
||||
}
|
||||
|
||||
public TickThread(final Runnable run, final String name, final ThreadGroup group) {
|
||||
this(run, name, group, ID_GENERATOR.incrementAndGet());
|
||||
public TickThread(final ThreadGroup group, final Runnable run, final String name) {
|
||||
this(group, run, name, ID_GENERATOR.incrementAndGet());
|
||||
}
|
||||
|
||||
private TickThread(final Runnable run, final String name, final ThreadGroup group, final int id) {
|
||||
private TickThread(final ThreadGroup group, final Runnable run, final String name, final int id) {
|
||||
super(group, run, name);
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@@ -7,11 +7,9 @@ import ca.spottedleaf.moonrise.patches.chunk_system.scheduling.NewChunkHolder;
|
||||
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
|
||||
import it.unimi.dsi.fastutil.longs.LongSet;
|
||||
import net.minecraft.server.level.ChunkHolder;
|
||||
import net.minecraft.server.level.ChunkLevel;
|
||||
import net.minecraft.server.level.ChunkMap;
|
||||
import net.minecraft.server.level.ChunkTaskPriorityQueueSorter;
|
||||
import net.minecraft.server.level.DistanceManager;
|
||||
import net.minecraft.server.level.FullChunkStatus;
|
||||
import net.minecraft.server.level.Ticket;
|
||||
import net.minecraft.server.level.TicketType;
|
||||
import net.minecraft.server.level.TickingTracker;
|
||||
@@ -22,7 +20,6 @@ import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Overwrite;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
@@ -100,8 +97,8 @@ public abstract class DistanceManagerMixin implements ChunkSystemDistanceManager
|
||||
this.simulationDistance = -1;
|
||||
}
|
||||
|
||||
@Unique
|
||||
private ChunkHolderManager getChunkHolderManager() {
|
||||
@Override
|
||||
public ChunkHolderManager moonrise$getChunkHolderManager() {
|
||||
return ((ChunkSystemServerLevel)this.moonrise$getChunkMap().level).moonrise$getChunkTaskScheduler().chunkHolderManager;
|
||||
}
|
||||
|
||||
@@ -111,7 +108,7 @@ public abstract class DistanceManagerMixin implements ChunkSystemDistanceManager
|
||||
*/
|
||||
@Overwrite
|
||||
public void purgeStaleTickets() {
|
||||
this.getChunkHolderManager().tick();
|
||||
this.moonrise$getChunkHolderManager().tick();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -120,7 +117,7 @@ public abstract class DistanceManagerMixin implements ChunkSystemDistanceManager
|
||||
*/
|
||||
@Overwrite
|
||||
public boolean runAllUpdates(final ChunkMap chunkStorage) {
|
||||
return this.getChunkHolderManager().processTicketUpdates();
|
||||
return this.moonrise$getChunkHolderManager().processTicketUpdates();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -129,7 +126,7 @@ public abstract class DistanceManagerMixin implements ChunkSystemDistanceManager
|
||||
*/
|
||||
@Overwrite
|
||||
public void addTicket(final long pos, final Ticket<?> ticket) {
|
||||
this.getChunkHolderManager().addTicketAtLevel((TicketType)ticket.getType(), pos, ticket.getTicketLevel(), ticket.key);
|
||||
this.moonrise$getChunkHolderManager().addTicketAtLevel((TicketType)ticket.getType(), pos, ticket.getTicketLevel(), ticket.key);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -138,25 +135,7 @@ public abstract class DistanceManagerMixin implements ChunkSystemDistanceManager
|
||||
*/
|
||||
@Overwrite
|
||||
public void removeTicket(final long pos, final Ticket<?> ticket) {
|
||||
this.getChunkHolderManager().removeTicketAtLevel((TicketType)ticket.getType(), pos, ticket.getTicketLevel(), ticket.key);
|
||||
}
|
||||
|
||||
/**
|
||||
* @reason Route to new chunk system
|
||||
* @author Spottedleaf
|
||||
*/
|
||||
@Overwrite
|
||||
public <T> void addRegionTicket(final TicketType<T> type, final ChunkPos pos, final int radius, final T identifier, boolean forceTicks) { // TODO: Neo added param
|
||||
this.getChunkHolderManager().addTicketAtLevel(type, pos, ChunkLevel.byStatus(FullChunkStatus.FULL) - radius, identifier);
|
||||
}
|
||||
|
||||
/**
|
||||
* @reason Route to new chunk system
|
||||
* @author Spottedleaf
|
||||
*/
|
||||
@Overwrite
|
||||
public <T> void removeRegionTicket(final TicketType<T> type, final ChunkPos pos, final int radius, final T identifier, boolean forceTicks) { // TODO: Neo added param
|
||||
this.getChunkHolderManager().removeTicketAtLevel(type, pos, ChunkLevel.byStatus(FullChunkStatus.FULL) - radius, identifier);
|
||||
this.moonrise$getChunkHolderManager().removeTicketAtLevel((TicketType)ticket.getType(), pos, ticket.getTicketLevel(), ticket.key);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -175,9 +154,9 @@ public abstract class DistanceManagerMixin implements ChunkSystemDistanceManager
|
||||
@Overwrite
|
||||
public void updateChunkForced(final ChunkPos pos, final boolean forced) {
|
||||
if (forced) {
|
||||
this.getChunkHolderManager().addTicketAtLevel(TicketType.FORCED, pos, ChunkMap.FORCED_TICKET_LEVEL, pos);
|
||||
this.moonrise$getChunkHolderManager().addTicketAtLevel(TicketType.FORCED, pos, ChunkMap.FORCED_TICKET_LEVEL, pos);
|
||||
} else {
|
||||
this.getChunkHolderManager().removeTicketAtLevel(TicketType.FORCED, pos, ChunkMap.FORCED_TICKET_LEVEL, pos);
|
||||
this.moonrise$getChunkHolderManager().removeTicketAtLevel(TicketType.FORCED, pos, ChunkMap.FORCED_TICKET_LEVEL, pos);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -282,7 +261,7 @@ public abstract class DistanceManagerMixin implements ChunkSystemDistanceManager
|
||||
*/
|
||||
@Overwrite
|
||||
public boolean inEntityTickingRange(final long pos) {
|
||||
final NewChunkHolder chunkHolder = this.getChunkHolderManager().getChunkHolder(pos);
|
||||
final NewChunkHolder chunkHolder = this.moonrise$getChunkHolderManager().getChunkHolder(pos);
|
||||
return chunkHolder != null && chunkHolder.isEntityTickingReady();
|
||||
}
|
||||
|
||||
@@ -292,7 +271,7 @@ public abstract class DistanceManagerMixin implements ChunkSystemDistanceManager
|
||||
*/
|
||||
@Overwrite
|
||||
public boolean inBlockTickingRange(final long pos) {
|
||||
final NewChunkHolder chunkHolder = this.getChunkHolderManager().getChunkHolder(pos);
|
||||
final NewChunkHolder chunkHolder = this.moonrise$getChunkHolderManager().getChunkHolder(pos);
|
||||
return chunkHolder != null && chunkHolder.isTickingReady();
|
||||
}
|
||||
|
||||
@@ -302,7 +281,7 @@ public abstract class DistanceManagerMixin implements ChunkSystemDistanceManager
|
||||
*/
|
||||
@Overwrite
|
||||
public String getTicketDebugString(final long pos) {
|
||||
return this.getChunkHolderManager().getTicketDebugString(pos);
|
||||
return this.moonrise$getChunkHolderManager().getTicketDebugString(pos);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package ca.spottedleaf.moonrise.mixin.chunk_system;
|
||||
|
||||
import ca.spottedleaf.moonrise.common.util.MoonriseCommon;
|
||||
import ca.spottedleaf.moonrise.common.util.TickThread;
|
||||
import ca.spottedleaf.moonrise.patches.chunk_system.io.MoonriseRegionFileIO;
|
||||
import ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel;
|
||||
import ca.spottedleaf.moonrise.patches.chunk_system.server.ChunkSystemMinecraftServer;
|
||||
@@ -174,39 +173,6 @@ public abstract class MinecraftServerMixin extends ReentrantBlockableEventLoop<T
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @reason Make server thread an instance of TickThread for thread checks
|
||||
* @author Spottedleaf
|
||||
*/
|
||||
/* TODO NeoForge adds ThreadGroup
|
||||
@Redirect(
|
||||
method = "spin",
|
||||
at = @At(
|
||||
value = "NEW",
|
||||
target = "(Ljava/lang/Runnable;Ljava/lang/String;)Ljava/lang/Thread;"
|
||||
)
|
||||
)
|
||||
private static Thread createTickThread(final Runnable target, final String name) {
|
||||
return new TickThread(target, name);
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @reason Make server thread an instance of TickThread for thread checks
|
||||
* @author Spottedleaf
|
||||
*/
|
||||
@Redirect(
|
||||
method = "spin",
|
||||
at = @At(
|
||||
value = "NEW",
|
||||
target = "(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;)Ljava/lang/Thread;"
|
||||
)
|
||||
)
|
||||
private static Thread createTickThreadNeo(final ThreadGroup group, final Runnable task, final String name) {
|
||||
return new TickThread(task, name, group);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @reason Close logic is re-written so that we do not wait for tasks to complete and unload everything
|
||||
* but rather we halt all task processing and then save.
|
||||
|
||||
@@ -454,6 +454,7 @@ public abstract class ServerLevelMixin extends Level implements ChunkSystemServe
|
||||
method = "addPlayer",
|
||||
at = @At(
|
||||
value = "INVOKE",
|
||||
// TODO - this is currently covering addEntity & addNewEntityWithoutEvent on NeoForge - split into Fabric & Neo mixins?
|
||||
target = "Lnet/minecraft/world/level/entity/PersistentEntitySectionManager;*(Lnet/minecraft/world/level/entity/EntityAccess;)Z"
|
||||
)
|
||||
)
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
package ca.spottedleaf.moonrise.patches.chunk_system.level.chunk;
|
||||
|
||||
import ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkHolderManager;
|
||||
import net.minecraft.server.level.ChunkMap;
|
||||
|
||||
public interface ChunkSystemDistanceManager {
|
||||
|
||||
public ChunkMap moonrise$getChunkMap();
|
||||
|
||||
public ChunkHolderManager moonrise$getChunkHolderManager();
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user