goauth

Fabric plugin for enhanced whitelists
git clone git://git.bain.cz/goauth.git
Log | Files | Refs | README | LICENSE

MinecraftServerMixin.java (1083B)


      1 package cz.bain.plugins.goauth.mixin;
      2 
      3 import cz.bain.plugins.goauth.events.callbacks.OnServerTickCallback;
      4 import net.minecraft.server.MinecraftServer;
      5 import net.minecraft.server.PlayerManager;
      6 import net.minecraft.util.ActionResult;
      7 import org.spongepowered.asm.mixin.Mixin;
      8 import org.spongepowered.asm.mixin.Shadow;
      9 import org.spongepowered.asm.mixin.injection.At;
     10 import org.spongepowered.asm.mixin.injection.Inject;
     11 import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
     12 
     13 import java.util.function.BooleanSupplier;
     14 
     15 @Mixin(MinecraftServer.class)
     16 public abstract class MinecraftServerMixin {
     17 
     18     @Shadow
     19     public abstract int getTicks();
     20 
     21     @Shadow
     22     public abstract PlayerManager getPlayerManager();
     23 
     24     @Inject(at = @At(value = "TAIL"), method = "tick", cancellable = true)
     25     public void tickInjection(BooleanSupplier shouldKeepTicking, CallbackInfo ci) {
     26         ActionResult result = OnServerTickCallback.EVENT.invoker().interact(getPlayerManager(), getTicks());
     27 
     28         if (result == ActionResult.FAIL) {
     29             ci.cancel();
     30         }
     31     }
     32 }