removed purge controller due to server core issues being fixed
This commit is contained in:
@@ -24,7 +24,6 @@ public class QualityOfLife implements ModInitializer
|
|||||||
|
|
||||||
LOGGER.info("Initializing (server).");
|
LOGGER.info("Initializing (server).");
|
||||||
|
|
||||||
PurgeController.register(); // Clean-up for ServerCore mishaps
|
|
||||||
AfflictionController.register(); // Nerve Agent & Cure Handling
|
AfflictionController.register(); // Nerve Agent & Cure Handling
|
||||||
PingCommandController.register(); // ping-Command
|
PingCommandController.register(); // ping-Command
|
||||||
IgnoreCommandController.register(); // ignore-Command
|
IgnoreCommandController.register(); // ignore-Command
|
||||||
|
|||||||
@@ -3,9 +3,6 @@ package com.overlord.qualityoflife.classes.controller;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import com.overlord.qualityoflife.classes.controller.util.CommandExceptionFactory;
|
|
||||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
|
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import com.mojang.brigadier.Command;
|
import com.mojang.brigadier.Command;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
@@ -19,6 +16,8 @@ import net.minecraft.command.argument.EntityArgumentType;
|
|||||||
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||||
import com.overlord.qualityoflife.classes.controller.util.Player;
|
import com.overlord.qualityoflife.classes.controller.util.Player;
|
||||||
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
|
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
|
||||||
|
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
|
||||||
|
import com.overlord.qualityoflife.classes.controller.util.CommandExceptionFactory;
|
||||||
import com.overlord.qualityoflife.classes.controller.util.extension.IChatCommandController;
|
import com.overlord.qualityoflife.classes.controller.util.extension.IChatCommandController;
|
||||||
|
|
||||||
public class IgnoreCommandController implements IChatCommandController
|
public class IgnoreCommandController implements IChatCommandController
|
||||||
|
|||||||
@@ -1,71 +0,0 @@
|
|||||||
package com.overlord.qualityoflife.classes.controller;
|
|
||||||
|
|
||||||
import java.util.Queue;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import net.minecraft.entity.Entity;
|
|
||||||
import net.minecraft.nbt.NbtCompound;
|
|
||||||
import net.minecraft.server.MinecraftServer;
|
|
||||||
import net.minecraft.server.world.ServerWorld;
|
|
||||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
|
|
||||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerEntityEvents;
|
|
||||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
|
|
||||||
|
|
||||||
public class PurgeController
|
|
||||||
{
|
|
||||||
private static final int BATCH_SIZE = 20;
|
|
||||||
private static boolean purgeRegistered = true;
|
|
||||||
private static final Queue<Entity> queue = new LinkedList<>();
|
|
||||||
|
|
||||||
public static void register()
|
|
||||||
{
|
|
||||||
ServerLifecycleEvents.SERVER_STARTED.register(PurgeController::iterateEntities);
|
|
||||||
ServerTickEvents.END_SERVER_TICK.register(PurgeController::iterateQueue);
|
|
||||||
ServerEntityEvents.ENTITY_LOAD.register(PurgeController::discardEntity);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static boolean validEntity(ServerWorld world, Entity entity)
|
|
||||||
{
|
|
||||||
NbtCompound nbt = new NbtCompound();
|
|
||||||
entity.writeNbt(nbt);
|
|
||||||
|
|
||||||
return (!world.isClient && nbt.getBoolean("NoAI"));
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void iterateEntities(MinecraftServer server)
|
|
||||||
{
|
|
||||||
for (ServerWorld world : server.getWorlds())
|
|
||||||
world.iterateEntities().forEach(entity -> queueEntity(world, entity));
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void iterateQueue(MinecraftServer server)
|
|
||||||
{
|
|
||||||
if (!purgeRegistered) return;
|
|
||||||
|
|
||||||
if (queue.isEmpty())
|
|
||||||
{
|
|
||||||
purgeRegistered = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int count = 0;
|
|
||||||
while (count < BATCH_SIZE && !queue.isEmpty())
|
|
||||||
{
|
|
||||||
Entity entity = queue.poll();
|
|
||||||
|
|
||||||
if (entity != null && entity.isAlive())
|
|
||||||
entity.remove(Entity.RemovalReason.DISCARDED);
|
|
||||||
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void queueEntity(ServerWorld world, Entity entity) {
|
|
||||||
if (validEntity(world, entity))
|
|
||||||
queue.add(entity);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void discardEntity(Entity entity, ServerWorld world) {
|
|
||||||
if (validEntity(world, entity))
|
|
||||||
entity.remove(Entity.RemovalReason.DISCARDED);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.overlord.qualityoflife.classes.controller.util.extension;
|
package com.overlord.qualityoflife.classes.controller.util.extension;
|
||||||
|
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|||||||
Reference in New Issue
Block a user