39 lines
1.5 KiB
Java
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);
|
|
}
|
|
}
|