Skip to content

Commit

Permalink
Fixes meteorites not spawning when a custom chunk generator is used. (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
shartte committed Oct 31, 2021
1 parent 446a8bd commit f073f2d
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@

package appeng.mixins.structure;

import java.util.HashMap;
import java.util.Map;
import java.util.Optional;

import com.google.common.collect.ImmutableMap;

import org.spongepowered.asm.mixin.Mixin;
Expand All @@ -29,6 +33,7 @@

import net.minecraft.world.level.levelgen.StructureSettings;
import net.minecraft.world.level.levelgen.feature.StructureFeature;
import net.minecraft.world.level.levelgen.feature.configurations.StrongholdConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.StructureFeatureConfiguration;

import appeng.worldgen.meteorite.MeteoriteStructure;
Expand All @@ -41,16 +46,35 @@
* If this is not done, Meteorites spawn every chunk, since that is the default for missing entries.
*/
@Mixin(StructureSettings.class)
public class DimensionStructuresSettingsMixin {
public class StructureSettingsMixin {

@Shadow
@Mutable
private static ImmutableMap<StructureFeature<?>, StructureFeatureConfiguration> DEFAULTS;

@Shadow
@Mutable
private Map<StructureFeature<?>, StructureFeatureConfiguration> structureConfig;

@Inject(method = "<clinit>", at = @At("TAIL"))
private static void addMeteoriteSpreadConfig(CallbackInfo ci) {
private static void addDefaultMeteoriteSpreadConfig(CallbackInfo ci) {
DEFAULTS = ImmutableMap.<StructureFeature<?>, StructureFeatureConfiguration>builder().putAll(DEFAULTS)
.put(MeteoriteStructure.INSTANCE, new StructureFeatureConfiguration(32, 8, 124895654)).build();
.put(MeteoriteStructure.INSTANCE, MeteoriteStructure.PLACEMENT_CONFIG)
.build();
}

/**
* This constructor is used if the structure config is deserialized from a datapack.
*/
@Inject(method = "<init>(Ljava/util/Optional;Ljava/util/Map;)V", at = @At("TAIL"))
private void addMeteoriteSpreadConfig(Optional<StrongholdConfiguration> optional,
Map<StructureFeature<?>, StructureFeatureConfiguration> map,
CallbackInfo ci) {
// There's no guarantee the passed map is mutable
structureConfig = new HashMap<>(structureConfig);
if (!structureConfig.containsKey(MeteoriteStructure.INSTANCE)) {
structureConfig.put(MeteoriteStructure.INSTANCE, MeteoriteStructure.PLACEMENT_CONFIG);
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,15 @@
import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
import net.minecraft.world.level.levelgen.feature.StructureFeature;
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.StructureFeatureConfiguration;

import appeng.core.AppEng;

public class MeteoriteStructure extends StructureFeature<NoneFeatureConfiguration> {

public static final StructureFeatureConfiguration PLACEMENT_CONFIG = new StructureFeatureConfiguration(32, 8,
124895654);

public static final ResourceLocation ID = AppEng.makeId("meteorite");

public static final ResourceKey<ConfiguredStructureFeature<?, ?>> KEY = ResourceKey
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/appliedenergistics2.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"mixins": [
"spatial.DimensionTypeMixin",
"spatial.DimensionOptionMixin",
"structure.DimensionStructuresSettingsMixin",
"structure.StructureSettingsMixin",
"structure.ConfiguredStructureFeaturesAccessor",
"feature.ConfiguredFeaturesAccessor",
"feature.LevelLightEngineMixin",
Expand Down

0 comments on commit f073f2d

Please sign in to comment.