Code/net/minecraft/world/entity/animal/PigVariants.java

58 lines
2.9 KiB
Java

package net.minecraft.world.entity.animal;
import java.util.Optional;
import net.minecraft.core.Holder;
import net.minecraft.core.HolderSet;
import net.minecraft.core.RegistryAccess;
import net.minecraft.core.registries.Registries;
import net.minecraft.data.worldgen.BootstrapContext;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.BiomeTags;
import net.minecraft.tags.TagKey;
import net.minecraft.util.RandomSource;
import net.minecraft.world.entity.variant.BiomeCheck;
import net.minecraft.world.entity.variant.ModelAndTexture;
import net.minecraft.world.entity.variant.PriorityProvider;
import net.minecraft.world.entity.variant.SpawnContext;
import net.minecraft.world.entity.variant.SpawnPrioritySelectors;
import net.minecraft.world.level.biome.Biome;
public class PigVariants {
public static final ResourceKey<PigVariant> TEMPERATE = createKey(TemperatureVariants.TEMPERATE);
public static final ResourceKey<PigVariant> WARM = createKey(TemperatureVariants.WARM);
public static final ResourceKey<PigVariant> COLD = createKey(TemperatureVariants.COLD);
public static final ResourceKey<PigVariant> DEFAULT = TEMPERATE;
private static ResourceKey<PigVariant> createKey(ResourceLocation p_392571_) {
return ResourceKey.create(Registries.PIG_VARIANT, p_392571_);
}
public static void bootstrap(BootstrapContext<PigVariant> p_396775_) {
register(p_396775_, TEMPERATE, PigVariant.ModelType.NORMAL, "temperate_pig", SpawnPrioritySelectors.fallback(0));
register(p_396775_, WARM, PigVariant.ModelType.NORMAL, "warm_pig", BiomeTags.SPAWNS_WARM_VARIANT_FARM_ANIMALS);
register(p_396775_, COLD, PigVariant.ModelType.COLD, "cold_pig", BiomeTags.SPAWNS_COLD_VARIANT_FARM_ANIMALS);
}
private static void register(
BootstrapContext<PigVariant> p_391626_, ResourceKey<PigVariant> p_392770_, PigVariant.ModelType p_394848_, String p_395374_, TagKey<Biome> p_395744_
) {
HolderSet<Biome> holderset = p_391626_.lookup(Registries.BIOME).getOrThrow(p_395744_);
register(p_391626_, p_392770_, p_394848_, p_395374_, SpawnPrioritySelectors.single(new BiomeCheck(holderset), 1));
}
private static void register(
BootstrapContext<PigVariant> p_396020_,
ResourceKey<PigVariant> p_391953_,
PigVariant.ModelType p_393259_,
String p_395556_,
SpawnPrioritySelectors p_396291_
) {
ResourceLocation resourcelocation = ResourceLocation.withDefaultNamespace("entity/pig/" + p_395556_);
p_396020_.register(p_391953_, new PigVariant(new ModelAndTexture<>(p_393259_, resourcelocation), p_396291_));
}
public static Optional<Holder.Reference<PigVariant>> selectVariantToSpawn(RandomSource p_396713_, RegistryAccess p_396818_, SpawnContext p_393619_) {
return PriorityProvider.pick(p_396818_.lookupOrThrow(Registries.PIG_VARIANT).listElements(), Holder::value, p_396713_, p_393619_);
}
}