Jump to content

[Solved][1.16.5] Biome Container with invalid IDs


DavidQF555

Recommended Posts

I was creating my custom dimension with a custom biome provider, which I basically replicated off the nether and overworld ones but changed the biome list, and I ran into a problem where I was getting the error,"[Render thread/WARN] [minecraft/BiomeContainer]: Received invalid biome id: -1" spammed. I checked where this is from, and it turns out the BiomeContainer biome int array in the constructor is full of thousands of "-1"s, which I have no idea where they came from. My dimension still fully works though, it just causes a ton of spam in the console, which slows down my laptop like crazy. The only thing I registered for my biome provider is the codec in enqueued in FMLCommonSetupEvent: 

public class FloorBiomeProvider extends BiomeProvider {

    public static final Codec<CustomBiomeProvider> CODEC = RecordCodecBuilder.create(builder -> builder.group(
            Codec.LONG.fieldOf("seed").stable().forGetter(provider -> provider.seed),
            Codec.list(Biome.CODEC).fieldOf("biomes").forGetter(provider -> provider.biomes),
            RegistryLookupCodec.getLookUpCodec(Registry.BIOME_KEY).fieldOf("lookup").forGetter(provider -> provider.lookup)
    ).apply(builder, builder.stable(CustomBiomeProvider::new)));

    private final long seed;
    private final Registry<Biome> lookup;
    private final MaxMinNoiseMixer temperatureMixer;
    private final MaxMinNoiseMixer humidityMixer;
    private final MaxMinNoiseMixer altitudeMixer;
    private final MaxMinNoiseMixer weirdnessMixer;
    private final Map<Biome, Biome.Attributes> attributes;


    protected CustomBiomeProvider(long seed, List<Biome> biomes, Registry<Biome> lookup) {
        super(biomes);
        this.seed = seed;
        this.lookup = lookup;
        this.temperatureMixer = MaxMinNoiseMixer.func_242930_a(new SharedSeedRandom(seed), -7, new DoubleArrayList(ImmutableList.of(1.0, 1.0)));
        this.humidityMixer = MaxMinNoiseMixer.func_242930_a(new SharedSeedRandom(seed + 1), -7, new DoubleArrayList(ImmutableList.of(1.0, 1.0)));
        this.altitudeMixer = MaxMinNoiseMixer.func_242930_a(new SharedSeedRandom(seed + 2), -7, new DoubleArrayList(ImmutableList.of(1.0, 1.0)));
        this.weirdnessMixer = MaxMinNoiseMixer.func_242930_a(new SharedSeedRandom(seed + 3), -7, new DoubleArrayList(ImmutableList.of(1.0, 1.0)));
        attributes = new HashMap<>();
        biomes.forEach(biome -> {
            attributes.put(biome, new Biome.Attributes(biome.getTemperature(), biome.getDownfall(), 0, 0, 0));
        });
    }

    @Override
    protected Codec<? extends BiomeProvider> getBiomeProviderCodec() {
        return CODEC;
    }

    @Override
    public BiomeProvider getBiomeProvider(long seed) {
        return new FloorBiomeProvider(seed, biomes, lookup);
    }

    @Override
    public Biome getNoiseBiome(int x, int y, int z) {
        Biome.Attributes attributes = new Biome.Attributes((float) temperatureMixer.func_237211_a_(x, y, z), (float) humidityMixer.func_237211_a_(x, y, z), (float) altitudeMixer.func_237211_a_(x, y, z), (float) weirdnessMixer.func_237211_a_(x, y, z), 0);
        return biomes.stream()
                .min(Comparator.comparing(biome -> getDifference(attributes, biome)))
                .orElse(BiomeRegistry.THE_VOID);
    }

    private float getDifference(Biome.Attributes attributes, Biome biome) {
        return this.attributes.get(biome).getAttributeDifference(attributes);
    }
}

The code for this biome provider is heavily influenced by the NetherBiomeProvider. 

 

EDIT: I've been able to trace the error to the SChunkDataPacket, which cannot find the IDs for any of the biomes in the chunk. I'm not sure what is going on or why the biomes that are in the chunk are different from the ones in the registry. 

EDIT2: Changing the Biomes saved to suppliers instead worked

Edited by DavidQF555
Link to comment
Share on other sites

  • DavidQF555 changed the title to [Solved][1.16.5] Biome Container with invalid IDs

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.