Add explicit config init hooks

Last commit moved the config to ConfigHolder, which is no longer
referenced during init by any code. As a result, we need an explicit
init hook to initialise the class and the config.
This commit is contained in:
Spottedleaf
2024-08-29 15:53:30 -07:00
parent 920a7e8722
commit 80aa5f80b8
3 changed files with 184 additions and 130 deletions

View File

@@ -0,0 +1,26 @@
package ca.spottedleaf.moonrise.mixin.config;
import ca.spottedleaf.moonrise.common.util.ConfigHolder;
import net.minecraft.client.Minecraft;
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;
@Mixin(Minecraft.class)
abstract class MinecraftMixin {
/**
* @reason Init for config
* @author Spottedleaf
*/
@Inject(
method = "<init>",
at = @At(
value = "RETURN"
)
)
private void initConfig(final CallbackInfo ci) {
ConfigHolder.getConfig(); // force class init
}
}

View File

@@ -0,0 +1,26 @@
package ca.spottedleaf.moonrise.mixin.config;
import ca.spottedleaf.moonrise.common.util.ConfigHolder;
import net.minecraft.server.MinecraftServer;
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.CallbackInfoReturnable;
@Mixin(MinecraftServer.class)
abstract class MinecraftServerMixin {
/**
* @reason Init for config
* @author Spottedleaf
*/
@Inject(
method = "spin",
at = @At(
value = "HEAD"
)
)
private static <S extends MinecraftServer> void initConfig(final CallbackInfoReturnable<S> cir) {
ConfigHolder.getConfig(); // force class init
}
}

View File

@@ -1,132 +1,134 @@
{
"required": true,
"minVersion": "0.8",
"package": "ca.spottedleaf.moonrise.mixin",
"compatibilityLevel": "JAVA_21",
"mixins": [
"bitstorage.SimpleBitStorageMixin",
"bitstorage.ZeroBitStorageMixin",
"block_counting.BitStorageMixin",
"block_counting.LevelChunkSectionMixin",
"block_counting.SimpleBitStorageMixin",
"block_counting.ZeroBitStorageMixin",
"block_entity_remove.LevelMixin",
"blockstate_propertyaccess.BooleanPropertyMixin",
"blockstate_propertyaccess.EnumPropertyMixin",
"blockstate_propertyaccess.IntegerPropertyMixin",
"blockstate_propertyaccess.PropertyMixin",
"blockstate_propertyaccess.StateHolderMixin",
"chunk_getblock.ChunkAccessMixin",
"chunk_getblock.LevelChunkMixin",
"chunk_system.ChunkBufferMixin",
"chunk_system.ChunkGeneratorMixin",
"chunk_system.ChunkHolderMixin",
"chunk_system.ChunkMap$DistanceManagerMixin",
"chunk_system.ChunkMapMixin",
"chunk_system.ChunkPyramidMixin",
"chunk_system.ChunkSerializerMixin",
"chunk_system.ChunkStatusMixin",
"chunk_system.ChunkStepMixin",
"chunk_system.ChunkStorageMixin",
"chunk_system.DistanceManagerMixin",
"chunk_system.EntityGetterMixin",
"chunk_system.EntityMixin",
"chunk_system.EntityTickListMixin",
"chunk_system.GenerationChunkHolderMixin",
"chunk_system.LevelChunkMixin",
"chunk_system.LevelChunkTicksMixin",
"chunk_system.LevelMixin",
"chunk_system.LevelReaderMixin",
"chunk_system.MinecraftServerMixin",
"chunk_system.NoiseBasedChunkGeneratorMixin",
"chunk_system.PlayerListMixin",
"chunk_system.PoiManagerMixin",
"chunk_system.PoiSectionMixin",
"chunk_system.RegionFileMixin",
"chunk_system.RegionFileStorageMixin",
"chunk_system.SectionStorageMixin",
"chunk_system.ServerChunkCache$MainThreadExecutorMixin",
"chunk_system.ServerChunkCacheMixin",
"chunk_system.ServerLevelMixin",
"chunk_system.ServerPlayerMixin",
"chunk_system.SortedArraySetMixin",
"chunk_system.StructureCheckMixin",
"chunk_system.StructureTemplate$PaletteMixin",
"chunk_system.TicketMixin",
"chunk_tick_iteration.ChunkMapMixin",
"chunk_tick_iteration.DistanceManagerMixin",
"chunk_tick_iteration.ServerChunkCacheMixin",
"collisions.ArmorStandMixin",
"collisions.ArrayVoxelShapeMixin",
"collisions.BitSetDiscreteVoxelShapeMixin",
"collisions.BlockMixin",
"collisions.BlockPosMixin",
"collisions.BlockStateBaseMixin",
"collisions.CubeVoxelShapeMixin",
"collisions.DirectionMixin",
"collisions.DiscreteVoxelShapeMixin",
"collisions.EntityGetterMixin",
"collisions.EntityMixin",
"collisions.ExplosionMixin",
"collisions.LevelMixin",
"collisions.LivingEntityMixin",
"collisions.ServerEntityMixin",
"collisions.ShapesMixin",
"collisions.SliceShapeMixin",
"collisions.VoxelShapeMixin",
"command.CommandsMixin",
"entity_tracker.ChunkMapMixin",
"entity_tracker.EntityMixin",
"entity_tracker.TrackedEntityMixin",
"fast_palette.CrudeIncrementalIntIdentityHashBiMapMixin",
"fast_palette.HashMapPaletteMixin",
"fast_palette.LinearPaletteMixin",
"fast_palette.PalettedContainer$DataMixin",
"fast_palette.PalettedContainerMixin",
"fast_palette.PaletteMixin",
"fast_palette.SingleValuePaletteMixin",
"fluid.FlowingFluidMixin",
"fluid.FluidStateMixin",
"keep_alive_client.ServerGamePacketListenerImplMixin",
"poi_lookup.AcquirePoiMixin",
"poi_lookup.PoiManagerMixin",
"poi_lookup.PortalForcerMixin",
"random_ticking.BiomeManagerMixin",
"random_ticking.BiomeMixin",
"random_ticking.LevelMixin",
"random_ticking.ServerLevelMixin",
"serverlist.ConnectionMixin",
"starlight.blockstate.BlockStateBaseMixin",
"starlight.chunk.ChunkAccessMixin",
"starlight.chunk.EmptyLevelChunkMixin",
"starlight.chunk.ImposterProtoChunkMixin",
"starlight.chunk.LevelChunkMixin",
"starlight.chunk.ProtoChunkMixin",
"starlight.lightengine.LevelLightEngineMixin",
"starlight.lightengine.ThreadedLevelLightEngineMixin",
"starlight.world.ChunkSerializerMixin",
"starlight.world.WorldGenRegionMixin",
"util_thread_counts.UtilMixin",
"util_threading_detector.ThreadingDetectorMixin",
"util_time_source.UtilMixin"
],
"client": [
"chunk_system.ClientLevelMixin",
"chunk_system.OptionsMixin",
"collisions.LiquidBlockRendererMixin",
"collisions.ParticleMixin",
"loading_screen.LevelLoadStatusManagerMixin",
"profiler.MinecraftMixin",
"render.SectionRenderDispatcherMixin",
"serverlist.ClientConnectionMixin",
"serverlist.ServerAddressResolverMixin",
"serverlist.ServerSelectionListMixin",
"starlight.multiplayer.ClientPacketListenerMixin"
],
"injectors": {
"defaultRequire": 1
},
"overwrites": {
"conformVisibility": true
}
"required": true,
"minVersion": "0.8",
"package": "ca.spottedleaf.moonrise.mixin",
"compatibilityLevel": "JAVA_21",
"mixins": [
"bitstorage.SimpleBitStorageMixin",
"bitstorage.ZeroBitStorageMixin",
"block_counting.BitStorageMixin",
"block_counting.LevelChunkSectionMixin",
"block_counting.SimpleBitStorageMixin",
"block_counting.ZeroBitStorageMixin",
"block_entity_remove.LevelMixin",
"blockstate_propertyaccess.BooleanPropertyMixin",
"blockstate_propertyaccess.EnumPropertyMixin",
"blockstate_propertyaccess.IntegerPropertyMixin",
"blockstate_propertyaccess.PropertyMixin",
"blockstate_propertyaccess.StateHolderMixin",
"chunk_getblock.ChunkAccessMixin",
"chunk_getblock.LevelChunkMixin",
"chunk_system.ChunkBufferMixin",
"chunk_system.ChunkGeneratorMixin",
"chunk_system.ChunkHolderMixin",
"chunk_system.ChunkMap$DistanceManagerMixin",
"chunk_system.ChunkMapMixin",
"chunk_system.ChunkPyramidMixin",
"chunk_system.ChunkSerializerMixin",
"chunk_system.ChunkStatusMixin",
"chunk_system.ChunkStepMixin",
"chunk_system.ChunkStorageMixin",
"chunk_system.DistanceManagerMixin",
"chunk_system.EntityGetterMixin",
"chunk_system.EntityMixin",
"chunk_system.EntityTickListMixin",
"chunk_system.GenerationChunkHolderMixin",
"chunk_system.LevelChunkMixin",
"chunk_system.LevelChunkTicksMixin",
"chunk_system.LevelMixin",
"chunk_system.LevelReaderMixin",
"chunk_system.MinecraftServerMixin",
"chunk_system.NoiseBasedChunkGeneratorMixin",
"chunk_system.PlayerListMixin",
"chunk_system.PoiManagerMixin",
"chunk_system.PoiSectionMixin",
"chunk_system.RegionFileMixin",
"chunk_system.RegionFileStorageMixin",
"chunk_system.SectionStorageMixin",
"chunk_system.ServerChunkCache$MainThreadExecutorMixin",
"chunk_system.ServerChunkCacheMixin",
"chunk_system.ServerLevelMixin",
"chunk_system.ServerPlayerMixin",
"chunk_system.SortedArraySetMixin",
"chunk_system.StructureCheckMixin",
"chunk_system.StructureTemplate$PaletteMixin",
"chunk_system.TicketMixin",
"chunk_tick_iteration.ChunkMapMixin",
"chunk_tick_iteration.DistanceManagerMixin",
"chunk_tick_iteration.ServerChunkCacheMixin",
"collisions.ArmorStandMixin",
"collisions.ArrayVoxelShapeMixin",
"collisions.BitSetDiscreteVoxelShapeMixin",
"collisions.BlockMixin",
"collisions.BlockPosMixin",
"collisions.BlockStateBaseMixin",
"collisions.CubeVoxelShapeMixin",
"collisions.DirectionMixin",
"collisions.DiscreteVoxelShapeMixin",
"collisions.EntityGetterMixin",
"collisions.EntityMixin",
"collisions.ExplosionMixin",
"collisions.LevelMixin",
"collisions.LivingEntityMixin",
"collisions.ServerEntityMixin",
"collisions.ShapesMixin",
"collisions.SliceShapeMixin",
"collisions.VoxelShapeMixin",
"command.CommandsMixin",
"config.MinecraftServerMixin",
"entity_tracker.ChunkMapMixin",
"entity_tracker.EntityMixin",
"entity_tracker.TrackedEntityMixin",
"fast_palette.CrudeIncrementalIntIdentityHashBiMapMixin",
"fast_palette.HashMapPaletteMixin",
"fast_palette.LinearPaletteMixin",
"fast_palette.PalettedContainer$DataMixin",
"fast_palette.PalettedContainerMixin",
"fast_palette.PaletteMixin",
"fast_palette.SingleValuePaletteMixin",
"fluid.FlowingFluidMixin",
"fluid.FluidStateMixin",
"keep_alive_client.ServerGamePacketListenerImplMixin",
"poi_lookup.AcquirePoiMixin",
"poi_lookup.PoiManagerMixin",
"poi_lookup.PortalForcerMixin",
"random_ticking.BiomeManagerMixin",
"random_ticking.BiomeMixin",
"random_ticking.LevelMixin",
"random_ticking.ServerLevelMixin",
"serverlist.ConnectionMixin",
"starlight.blockstate.BlockStateBaseMixin",
"starlight.chunk.ChunkAccessMixin",
"starlight.chunk.EmptyLevelChunkMixin",
"starlight.chunk.ImposterProtoChunkMixin",
"starlight.chunk.LevelChunkMixin",
"starlight.chunk.ProtoChunkMixin",
"starlight.lightengine.LevelLightEngineMixin",
"starlight.lightengine.ThreadedLevelLightEngineMixin",
"starlight.world.ChunkSerializerMixin",
"starlight.world.WorldGenRegionMixin",
"util_thread_counts.UtilMixin",
"util_threading_detector.ThreadingDetectorMixin",
"util_time_source.UtilMixin"
],
"client": [
"chunk_system.ClientLevelMixin",
"chunk_system.OptionsMixin",
"collisions.LiquidBlockRendererMixin",
"collisions.ParticleMixin",
"config.MinecraftMixin",
"loading_screen.LevelLoadStatusManagerMixin",
"profiler.MinecraftMixin",
"render.SectionRenderDispatcherMixin",
"serverlist.ClientConnectionMixin",
"serverlist.ServerAddressResolverMixin",
"serverlist.ServerSelectionListMixin",
"starlight.multiplayer.ClientPacketListenerMixin"
],
"injectors": {
"defaultRequire": 1
},
"overwrites": {
"conformVisibility": true
}
}