DynRes/src/main/java/io/gitlab/jfronny/dynres/mixin/ServerPropertiesLoaderMixin...

39 lines
1.5 KiB
Java

package io.gitlab.jfronny.dynres.mixin;
import io.gitlab.jfronny.dynres.ServerPropertiesHandlerExt;
import net.minecraft.server.dedicated.ServerPropertiesHandler;
import net.minecraft.server.dedicated.ServerPropertiesLoader;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import java.util.function.UnaryOperator;
@Mixin(ServerPropertiesLoader.class)
public class ServerPropertiesLoaderMixin {
@Shadow
private ServerPropertiesHandler propertiesHandler;
@Inject(at = @At("RETURN"), method = "apply(Ljava/util/function/UnaryOperator;)Lnet/minecraft/server/dedicated/ServerPropertiesLoader;")
public void apply(UnaryOperator<ServerPropertiesHandler> unaryOperator, CallbackInfoReturnable<ServerPropertiesLoader> info) {
applyChanges();
}
@Inject(at = @At("HEAD"), method = "store()V")
public void store(CallbackInfo info) {
applyChanges();
}
//This caused a stackoverflow
//@Inject(at = @At("HEAD"), method = "getPropertiesHandler()Lnet/minecraft/server/dedicated/ServerPropertiesHandler;")
//public void getPropertiesHandler(CallbackInfoReturnable<ServerPropertiesHandler> info) {
// applyChanges();
//}
public void applyChanges() {
((ServerPropertiesHandlerExt)propertiesHandler).applyChanges(false);
}
}