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 }