package org.betterx.bclib.noise; import org.betterx.bclib.BCLib; import net.minecraft.core.Holder; import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.levelgen.synth.NormalNoise; import java.util.HashMap; import java.util.Map; import java.util.Random; public class Noises { private static final Map, NormalNoise> noiseIntances = new HashMap<>(); public static final ResourceKey ROUGHNESS_NOISE = createKey(BCLib.makeID( "roughness_noise")); public static ResourceKey createKey(ResourceLocation loc) { return ResourceKey.create(Registry.NOISE_REGISTRY, loc); } public static NormalNoise createNoise( Registry registry, Random Random, ResourceKey resourceKey ) { Holder holder = registry.getHolderOrThrow(resourceKey); return NormalNoise.create(Random, holder.value()); } public static NormalNoise getOrCreateNoise( RegistryAccess registryAccess, Random Random, ResourceKey noise ) { final Registry registry = registryAccess.registryOrThrow(Registry.NOISE_REGISTRY); return noiseIntances.computeIfAbsent(noise, (key) -> createNoise(registry, Random, noise)); } }