mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-03 00:15:35 +00:00
fix biome registration
This commit is contained in:
parent
ee3dd1259c
commit
9fc9688fa6
@ -17,23 +17,34 @@
|
||||
|
||||
package com.dfsek.terra.fabric.mixin.lifecycle.client;
|
||||
|
||||
import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent;
|
||||
import com.dfsek.terra.fabric.FabricEntryPoint;
|
||||
import com.dfsek.terra.fabric.event.BiomeRegistrationEvent;
|
||||
import com.dfsek.terra.fabric.generation.TerraGeneratorType;
|
||||
import com.dfsek.terra.fabric.mixin.access.GeneratorTypeAccessor;
|
||||
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.RunArgs;
|
||||
import net.minecraft.client.world.GeneratorType;
|
||||
import net.minecraft.text.LiteralText;
|
||||
import net.minecraft.util.registry.DynamicRegistryManager;
|
||||
import net.minecraft.util.registry.DynamicRegistryManager.Mutable;
|
||||
import org.slf4j.Logger;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
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.Redirect;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent;
|
||||
import com.dfsek.terra.fabric.FabricEntryPoint;
|
||||
import com.dfsek.terra.fabric.generation.TerraGeneratorType;
|
||||
import com.dfsek.terra.fabric.mixin.access.GeneratorTypeAccessor;
|
||||
|
||||
|
||||
@Mixin(MinecraftClient.class)
|
||||
public class MinecraftClientMixin {
|
||||
@Shadow
|
||||
@Final
|
||||
private static Logger LOGGER;
|
||||
|
||||
@Inject(method = "<init>", at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/client/util/WindowProvider;createWindow" +
|
||||
"(Lnet/minecraft/client/WindowSettings;Ljava/lang/String;Ljava/lang/String;)" +
|
||||
@ -49,4 +60,17 @@ public class MinecraftClientMixin {
|
||||
GeneratorTypeAccessor.getValues().add(1, generatorType);
|
||||
});
|
||||
}
|
||||
|
||||
@Redirect(method = "method_40187(Lnet/minecraft/util/registry/DynamicRegistryManager;Lnet/minecraft/world/gen/GeneratorOptions;" +
|
||||
"Lnet/minecraft/world/level/LevelInfo;Lnet/minecraft/resource/ResourceManager;" +
|
||||
"Lnet/minecraft/resource/DataPackSettings;)Lcom/mojang/datafixers/util/Pair;",
|
||||
at = @At(value = "INVOKE",
|
||||
target = "net/minecraft/util/registry/DynamicRegistryManager.createAndLoad ()" +
|
||||
"Lnet/minecraft/util/registry/DynamicRegistryManager$Mutable;"))
|
||||
private static Mutable injectBiomes() {
|
||||
Mutable mutable = DynamicRegistryManager.createAndLoad();
|
||||
LOGGER.info("Injecting Terra biomes...");
|
||||
FabricEntryPoint.getPlatform().getEventManager().callEvent(new BiomeRegistrationEvent(mutable));
|
||||
return mutable;
|
||||
}
|
||||
}
|
||||
|
@ -17,25 +17,50 @@
|
||||
|
||||
package com.dfsek.terra.fabric.mixin.lifecycle.server;
|
||||
|
||||
import net.minecraft.server.Main;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent;
|
||||
import com.dfsek.terra.fabric.FabricEntryPoint;
|
||||
import com.dfsek.terra.fabric.event.BiomeRegistrationEvent;
|
||||
|
||||
import net.minecraft.server.Main;
|
||||
import net.minecraft.util.registry.DynamicRegistryManager;
|
||||
import net.minecraft.util.registry.DynamicRegistryManager.Mutable;
|
||||
import org.slf4j.Logger;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
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.Redirect;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
|
||||
@Mixin(Main.class)
|
||||
public class ServerMainMixin {
|
||||
@Shadow
|
||||
@Final
|
||||
private static Logger LOGGER;
|
||||
|
||||
@Inject(method = "main([Ljava/lang/String;)V",
|
||||
at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/server/SaveLoader;refresh()V") // after registry manager creation
|
||||
)
|
||||
)
|
||||
private static void injectConstructor(String[] args, CallbackInfo ci) {
|
||||
FabricEntryPoint.getPlatform().getEventManager().callEvent(
|
||||
new PlatformInitializationEvent()); // Load during MinecraftServer construction, after other mods have registered blocks
|
||||
// and stuff
|
||||
}
|
||||
|
||||
@Redirect(method = "method_40373(Lnet/minecraft/world/level/storage/LevelStorage$Session;Ljoptsimple/OptionSet;" +
|
||||
"Ljoptsimple/OptionSpec;Lnet/minecraft/server/dedicated/ServerPropertiesLoader;Ljoptsimple/OptionSpec;" +
|
||||
"Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/resource/DataPackSettings;)" +
|
||||
"Lcom/mojang/datafixers/util/Pair;",
|
||||
at = @At(value = "INVOKE",
|
||||
target = "net/minecraft/util/registry/DynamicRegistryManager.createAndLoad ()" +
|
||||
"Lnet/minecraft/util/registry/DynamicRegistryManager$Mutable;"))
|
||||
private static Mutable injectBiomes() {
|
||||
Mutable mutable = DynamicRegistryManager.createAndLoad();
|
||||
LOGGER.info("Injecting Terra biomes...");
|
||||
FabricEntryPoint.getPlatform().getEventManager().callEvent(new BiomeRegistrationEvent(mutable));
|
||||
return mutable;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user