From a273e27eda69fd165daa2cb689f648829c04a132 Mon Sep 17 00:00:00 2001 From: Kenzie Togami Date: Mon, 30 Sep 2019 14:56:33 -0700 Subject: [PATCH] Properly use mixins to implement Watchdog --- .../worldedit/fabric/FabricPlatform.java | 8 ++-- .../worldedit/fabric/FabricWatchdog.java | 39 ------------------- .../fabric/mixin/MixinMinecraftServer.java | 15 ++++--- .../src/main/resources/worldedit.mixins.json | 2 +- 4 files changed, 15 insertions(+), 49 deletions(-) delete mode 100644 worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWatchdog.java diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricPlatform.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricPlatform.java index f67fdcc59..beb6d5208 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricPlatform.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricPlatform.java @@ -26,7 +26,7 @@ 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.extension.platform.Watchdog; import com.sk89q.worldedit.world.DataFixer; import com.sk89q.worldedit.world.World; import com.sk89q.worldedit.world.registry.Registries; @@ -58,7 +58,7 @@ class FabricPlatform extends AbstractPlatform implements MultiUserPlatform { private final FabricWorldEdit mod; private final MinecraftServer server; private final FabricDataFixer dataFixer; - private final @Nullable FabricWatchdog watchdog; + private final @Nullable Watchdog watchdog; private boolean hookingEvents = false; FabricPlatform(FabricWorldEdit mod, MinecraftServer server) { @@ -66,7 +66,7 @@ class FabricPlatform extends AbstractPlatform implements MultiUserPlatform { this.server = server; this.dataFixer = new FabricDataFixer(getDataVersion()); this.watchdog = server instanceof MinecraftDedicatedServer - ? new FabricWatchdog((MinecraftDedicatedServer) server) : null; + ? (Watchdog) server : null; } boolean isHookingEvents() { @@ -105,7 +105,7 @@ class FabricPlatform extends AbstractPlatform implements MultiUserPlatform { @Override @Nullable - public FabricWatchdog getWatchdog() { + public Watchdog getWatchdog() { return watchdog; } diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWatchdog.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWatchdog.java deleted file mode 100644 index b0f25c685..000000000 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWatchdog.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.fabric; - -import com.sk89q.worldedit.extension.platform.Watchdog; -import com.sk89q.worldedit.fabric.mixin.MixinMinecraftServer; -import net.minecraft.server.dedicated.MinecraftDedicatedServer; -import net.minecraft.util.SystemUtil; - -class FabricWatchdog implements Watchdog { - - private final MinecraftDedicatedServer server; - - FabricWatchdog(MinecraftDedicatedServer server) { - this.server = server; - } - - @Override - public void tick() { - ((MixinMinecraftServer) (Object) server).timeReference = SystemUtil.getMeasuringTimeMs(); - } -} diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/mixin/MixinMinecraftServer.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/mixin/MixinMinecraftServer.java index de54985b8..7b78b6cd6 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/mixin/MixinMinecraftServer.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/mixin/MixinMinecraftServer.java @@ -19,21 +19,26 @@ package com.sk89q.worldedit.fabric.mixin; +import com.sk89q.worldedit.extension.platform.Watchdog; 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 net.minecraft.util.SystemUtil; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @Mixin(MinecraftServer.class) -public abstract class MixinMinecraftServer extends NonBlockingThreadExecutor implements SnooperListener, CommandOutput, AutoCloseable, Runnable { +public abstract class MixinMinecraftServer extends NonBlockingThreadExecutor implements Watchdog { public MixinMinecraftServer(String name) { super(name); } @Shadow - public long timeReference; + private long timeReference; + + @Override + public void tick() { + timeReference = SystemUtil.getMeasuringTimeMs(); + } + } diff --git a/worldedit-fabric/src/main/resources/worldedit.mixins.json b/worldedit-fabric/src/main/resources/worldedit.mixins.json index ecd0ffd49..fd6cd4f92 100644 --- a/worldedit-fabric/src/main/resources/worldedit.mixins.json +++ b/worldedit-fabric/src/main/resources/worldedit.mixins.json @@ -11,4 +11,4 @@ "injectors": { "defaultRequire": 1 } -} \ No newline at end of file +}