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 unaryOperator, CallbackInfoReturnable 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 info) { // applyChanges(); //} public void applyChanges() { ((ServerPropertiesHandlerExt)propertiesHandler).applyChanges(false); } }