Configurable primary thread priority
This commit is contained in:
@@ -284,4 +284,9 @@ public class AkarinGlobalConfig {
|
|||||||
private static void disableEndPortalCreate() {
|
private static void disableEndPortalCreate() {
|
||||||
disableEndPortalCreate = getBoolean("alternative.disable-end-portal-create", false);
|
disableEndPortalCreate = getBoolean("alternative.disable-end-portal-create", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int primaryThreadPriority;
|
||||||
|
private static void primaryThreadPriority() {
|
||||||
|
primaryThreadPriority = getInt("core.primary-thread-priority", 7);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import java.util.concurrent.FutureTask;
|
|||||||
import org.bukkit.craftbukkit.CraftServer;
|
import org.bukkit.craftbukkit.CraftServer;
|
||||||
import org.bukkit.craftbukkit.chunkio.ChunkIOExecutor;
|
import org.bukkit.craftbukkit.chunkio.ChunkIOExecutor;
|
||||||
import org.bukkit.event.inventory.InventoryMoveItemEvent;
|
import org.bukkit.event.inventory.InventoryMoveItemEvent;
|
||||||
import org.spongepowered.asm.lib.Opcodes;
|
|
||||||
import org.spongepowered.asm.mixin.Final;
|
import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Mutable;
|
import org.spongepowered.asm.mixin.Mutable;
|
||||||
@@ -14,7 +13,6 @@ import org.spongepowered.asm.mixin.Overwrite;
|
|||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import co.aikar.timings.MinecraftTimings;
|
import co.aikar.timings.MinecraftTimings;
|
||||||
@@ -22,8 +20,6 @@ import io.akarin.api.internal.Akari;
|
|||||||
import io.akarin.api.internal.mixin.IMixinLockProvider;
|
import io.akarin.api.internal.mixin.IMixinLockProvider;
|
||||||
import io.akarin.server.core.AkarinGlobalConfig;
|
import io.akarin.server.core.AkarinGlobalConfig;
|
||||||
import io.akarin.server.core.AkarinSlackScheduler;
|
import io.akarin.server.core.AkarinSlackScheduler;
|
||||||
import net.minecraft.server.Block;
|
|
||||||
import net.minecraft.server.Blocks;
|
|
||||||
import net.minecraft.server.CrashReport;
|
import net.minecraft.server.CrashReport;
|
||||||
import net.minecraft.server.CustomFunctionData;
|
import net.minecraft.server.CustomFunctionData;
|
||||||
import net.minecraft.server.ITickable;
|
import net.minecraft.server.ITickable;
|
||||||
@@ -38,6 +34,8 @@ import net.minecraft.server.WorldServer;
|
|||||||
|
|
||||||
@Mixin(value = MinecraftServer.class, remap = false)
|
@Mixin(value = MinecraftServer.class, remap = false)
|
||||||
public abstract class MixinMinecraftServer {
|
public abstract class MixinMinecraftServer {
|
||||||
|
@Shadow @Final public Thread primaryThread;
|
||||||
|
|
||||||
@Overwrite
|
@Overwrite
|
||||||
public String getServerModName() {
|
public String getServerModName() {
|
||||||
return "Akarin";
|
return "Akarin";
|
||||||
@@ -49,11 +47,15 @@ public abstract class MixinMinecraftServer {
|
|||||||
shift = At.Shift.BEFORE
|
shift = At.Shift.BEFORE
|
||||||
))
|
))
|
||||||
private void prerun(CallbackInfo info) {
|
private void prerun(CallbackInfo info) {
|
||||||
|
primaryThread.setPriority(AkarinGlobalConfig.primaryThreadPriority < Thread.NORM_PRIORITY ? Thread.NORM_PRIORITY :
|
||||||
|
(AkarinGlobalConfig.primaryThreadPriority > Thread.MAX_PRIORITY ? 10 : AkarinGlobalConfig.primaryThreadPriority));
|
||||||
|
|
||||||
for (int i = 0; i < worlds.size(); ++i) {
|
for (int i = 0; i < worlds.size(); ++i) {
|
||||||
WorldServer world = worlds.get(i);
|
WorldServer world = worlds.get(i);
|
||||||
TileEntityHopper.skipHopperEvents = world.paperConfig.disableHopperMoveEvents || InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0;
|
TileEntityHopper.skipHopperEvents = world.paperConfig.disableHopperMoveEvents || InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0;
|
||||||
}
|
}
|
||||||
AkarinSlackScheduler.boot();
|
AkarinSlackScheduler.boot();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user