mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2025-06-12 04:23:54 +00:00
Initial watchdog setup. Bukkit needs adapters, everything needs testing.
This commit is contained in:
@ -26,12 +26,14 @@ import com.sk89q.worldedit.extension.platform.Actor;
|
||||
import com.sk89q.worldedit.extension.platform.Capability;
|
||||
import com.sk89q.worldedit.extension.platform.MultiUserPlatform;
|
||||
import com.sk89q.worldedit.extension.platform.Preference;
|
||||
import com.sk89q.worldedit.fabric.mixin.MixinMinecraftServer;
|
||||
import com.sk89q.worldedit.world.DataFixer;
|
||||
import com.sk89q.worldedit.world.World;
|
||||
import com.sk89q.worldedit.world.registry.Registries;
|
||||
import net.minecraft.SharedConstants;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.PlayerManager;
|
||||
import net.minecraft.server.dedicated.DedicatedServer;
|
||||
import net.minecraft.server.network.ServerPlayerEntity;
|
||||
import net.minecraft.server.world.ServerWorld;
|
||||
import net.minecraft.util.Identifier;
|
||||
@ -55,12 +57,15 @@ class FabricPlatform extends AbstractPlatform implements MultiUserPlatform {
|
||||
private final FabricWorldEdit mod;
|
||||
private final MinecraftServer server;
|
||||
private final FabricDataFixer dataFixer;
|
||||
private final @Nullable FabricWatchdog watchdog;
|
||||
private boolean hookingEvents = false;
|
||||
|
||||
FabricPlatform(FabricWorldEdit mod, MinecraftServer server) {
|
||||
this.mod = mod;
|
||||
this.server = server;
|
||||
this.dataFixer = new FabricDataFixer(getDataVersion());
|
||||
this.watchdog = server instanceof DedicatedServer
|
||||
? new FabricWatchdog((MixinMinecraftServer) (Object) server) : null;
|
||||
}
|
||||
|
||||
boolean isHookingEvents() {
|
||||
@ -97,6 +102,12 @@ class FabricPlatform extends AbstractPlatform implements MultiUserPlatform {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public FabricWatchdog getWatchdog() {
|
||||
return watchdog;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends World> getWorlds() {
|
||||
Iterable<ServerWorld> worlds = server.getWorlds();
|
||||
|
@ -0,0 +1,19 @@
|
||||
package com.sk89q.worldedit.fabric;
|
||||
|
||||
import com.sk89q.worldedit.extension.platform.Watchdog;
|
||||
import com.sk89q.worldedit.fabric.mixin.MixinMinecraftServer;
|
||||
import net.minecraft.util.SystemUtil;
|
||||
|
||||
class FabricWatchdog implements Watchdog {
|
||||
|
||||
private final MixinMinecraftServer server;
|
||||
|
||||
FabricWatchdog(MixinMinecraftServer server) {
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
server.timeReference = SystemUtil.getMeasuringTimeMs();
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package com.sk89q.worldedit.fabric.mixin;
|
||||
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.ServerTask;
|
||||
import net.minecraft.server.command.CommandOutput;
|
||||
import net.minecraft.util.NonBlockingThreadExecutor;
|
||||
import net.minecraft.util.snooper.SnooperListener;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
|
||||
@Mixin(MinecraftServer.class)
|
||||
public abstract class MixinMinecraftServer extends NonBlockingThreadExecutor<ServerTask> implements SnooperListener, CommandOutput, AutoCloseable, Runnable {
|
||||
|
||||
public MixinMinecraftServer(String string_1) {
|
||||
super(string_1);
|
||||
}
|
||||
|
||||
@Shadow
|
||||
public long timeReference;
|
||||
}
|
@ -3,7 +3,8 @@
|
||||
"package": "com.sk89q.worldedit.fabric.mixin",
|
||||
"compatibilityLevel": "JAVA_8",
|
||||
"mixins": [
|
||||
"MixinServerPlayerEntity"
|
||||
"MixinServerPlayerEntity",
|
||||
"MixinMinecraftServer"
|
||||
],
|
||||
"server": [
|
||||
],
|
||||
|
Reference in New Issue
Block a user