Merge remote-tracking branch 'upstream/mc1.18/dev' into mc1.19/dev

Conflicts:
	src/main/java/com/simibubi/create/AllFluids.java
	src/main/java/com/simibubi/create/CreateClient.java
	src/main/java/com/simibubi/create/foundation/worldgen/BuiltinRegistration.java
	src/main/java/com/simibubi/create/foundation/worldgen/OreFeatureConfigEntry.java
This commit is contained in:
PepperCode1 2022-08-05 17:45:46 -07:00
commit d09ccf24d2
6 changed files with 28 additions and 66 deletions

View file

@ -12,16 +12,12 @@ import com.simibubi.create.content.palettes.AllPaletteStoneTypes;
import com.simibubi.create.foundation.data.CreateRegistrate; import com.simibubi.create.foundation.data.CreateRegistrate;
import com.tterrag.registrate.util.entry.FluidEntry; import com.tterrag.registrate.util.entry.FluidEntry;
import net.minecraft.client.renderer.ItemBlockRenderTypes;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.Fluid;
import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.FluidState;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fluids.FluidType;
@ -33,17 +29,17 @@ public class AllFluids {
public static final FluidEntry<PotionFluid> POTION = public static final FluidEntry<PotionFluid> POTION =
REGISTRATE.virtualFluid("potion", PotionFluidType::new, PotionFluid::new) REGISTRATE.virtualFluid("potion", PotionFluidType::new, PotionFluid::new)
.lang(f -> "fluid.create.potion", "Potion") .lang("Potion")
.register(); .register();
public static final FluidEntry<VirtualFluid> TEA = REGISTRATE.virtualFluid("tea") public static final FluidEntry<VirtualFluid> TEA = REGISTRATE.virtualFluid("tea")
.lang(f -> "fluid.create.tea", "Builder's Tea") .lang("Builder's Tea")
.tag(AllTags.forgeFluidTag("tea")) .tag(AllTags.forgeFluidTag("tea"))
.register(); .register();
public static final FluidEntry<ForgeFlowingFluid.Flowing> HONEY = public static final FluidEntry<ForgeFlowingFluid.Flowing> HONEY =
REGISTRATE.standardFluid("honey", NoColorFluidAttributes::new) REGISTRATE.standardFluid("honey", NoColorFluidAttributes::new)
.lang(f -> "fluid.create.honey", "Honey") .lang("Honey")
.properties(b -> b.viscosity(2000) .properties(b -> b.viscosity(2000)
.density(1400)) .density(1400))
.fluidProperties(p -> p.levelDecreasePerBlock(2) .fluidProperties(p -> p.levelDecreasePerBlock(2)
@ -59,7 +55,7 @@ public class AllFluids {
public static final FluidEntry<ForgeFlowingFluid.Flowing> CHOCOLATE = public static final FluidEntry<ForgeFlowingFluid.Flowing> CHOCOLATE =
REGISTRATE.standardFluid("chocolate", NoColorFluidAttributes::new) REGISTRATE.standardFluid("chocolate", NoColorFluidAttributes::new)
.lang(f -> "fluid.create.chocolate", "Chocolate") .lang("Chocolate")
.tag(AllTags.forgeFluidTag("chocolate")) .tag(AllTags.forgeFluidTag("chocolate"))
.properties(b -> b.viscosity(1500) .properties(b -> b.viscosity(1500)
.density(1400)) .density(1400))
@ -73,16 +69,6 @@ public class AllFluids {
public static void register() {} public static void register() {}
@OnlyIn(Dist.CLIENT)
public static void assignRenderLayers() {}
@OnlyIn(Dist.CLIENT)
private static void makeTranslucent(FluidEntry<?> entry) {
ForgeFlowingFluid fluid = entry.get();
ItemBlockRenderTypes.setRenderLayer(fluid, RenderType.translucent());
ItemBlockRenderTypes.setRenderLayer(fluid.getSource(), RenderType.translucent());
}
@Nullable @Nullable
public static BlockState getLavaInteraction(FluidState fluidState) { public static BlockState getLavaInteraction(FluidState fluidState) {
Fluid fluid = fluidState.getType(); Fluid fluid = fluidState.getType();

View file

@ -37,6 +37,7 @@ import com.simibubi.create.foundation.data.recipe.StandardRecipeGen;
import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.networking.AllPackets;
import com.simibubi.create.foundation.utility.CreateRegistry; import com.simibubi.create.foundation.utility.CreateRegistry;
import com.simibubi.create.foundation.worldgen.AllFeatures; import com.simibubi.create.foundation.worldgen.AllFeatures;
import com.simibubi.create.foundation.worldgen.AllOreFeatureConfigEntries;
import com.simibubi.create.foundation.worldgen.AllPlacementModifiers; import com.simibubi.create.foundation.worldgen.AllPlacementModifiers;
import com.simibubi.create.foundation.worldgen.BuiltinRegistration; import com.simibubi.create.foundation.worldgen.BuiltinRegistration;
import com.tterrag.registrate.util.nullness.NonNullSupplier; import com.tterrag.registrate.util.nullness.NonNullSupplier;
@ -111,6 +112,7 @@ public class Create {
AllParticleTypes.register(modEventBus); AllParticleTypes.register(modEventBus);
AllStructureProcessorTypes.register(modEventBus); AllStructureProcessorTypes.register(modEventBus);
AllEntityDataSerializers.register(modEventBus); AllEntityDataSerializers.register(modEventBus);
AllOreFeatureConfigEntries.init();
AllFeatures.register(modEventBus); AllFeatures.register(modEventBus);
AllPlacementModifiers.register(modEventBus); AllPlacementModifiers.register(modEventBus);
BuiltinRegistration.register(modEventBus); BuiltinRegistration.register(modEventBus);

View file

@ -75,7 +75,6 @@ public class CreateClient {
BUFFER_CACHE.registerCompartment(SBBContraptionManager.CONTRAPTION, 20); BUFFER_CACHE.registerCompartment(SBBContraptionManager.CONTRAPTION, 20);
BUFFER_CACHE.registerCompartment(WorldSectionElement.DOC_WORLD_SECTION, 20); BUFFER_CACHE.registerCompartment(WorldSectionElement.DOC_WORLD_SECTION, 20);
// AllFluids.assignRenderLayers();
AllBlockPartials.init(); AllBlockPartials.init();
AllStitchedTextures.init(); AllStitchedTextures.init();

View file

@ -79,7 +79,7 @@ public class AllOreFeatureConfigEntries {
for (Map.Entry<ResourceLocation, OreFeatureConfigEntry> entry : OreFeatureConfigEntry.ALL.entrySet()) { for (Map.Entry<ResourceLocation, OreFeatureConfigEntry> entry : OreFeatureConfigEntry.ALL.entrySet()) {
DatagenExtension datagenExt = entry.getValue().datagenExt(); DatagenExtension datagenExt = entry.getValue().datagenExt();
if (datagenExt != null) { if (datagenExt != null) {
configuredFeatures.put(entry.getKey(), datagenExt.getConfiguredFeature()); configuredFeatures.put(entry.getKey(), datagenExt.createConfiguredFeature(registryAccess));
} }
} }
@ -94,7 +94,7 @@ public class AllOreFeatureConfigEntries {
for (Map.Entry<ResourceLocation, OreFeatureConfigEntry> entry : OreFeatureConfigEntry.ALL.entrySet()) { for (Map.Entry<ResourceLocation, OreFeatureConfigEntry> entry : OreFeatureConfigEntry.ALL.entrySet()) {
DatagenExtension datagenExt = entry.getValue().datagenExt(); DatagenExtension datagenExt = entry.getValue().datagenExt();
if (datagenExt != null) { if (datagenExt != null) {
placedFeatures.put(entry.getKey(), datagenExt.getPlacedFeature()); placedFeatures.put(entry.getKey(), datagenExt.createPlacedFeature(registryAccess));
} }
} }

View file

@ -6,6 +6,7 @@ import com.simibubi.create.Create;
import com.simibubi.create.foundation.worldgen.OreFeatureConfigEntry.DatagenExtension; import com.simibubi.create.foundation.worldgen.OreFeatureConfigEntry.DatagenExtension;
import net.minecraft.core.Registry; import net.minecraft.core.Registry;
import net.minecraft.data.BuiltinRegistries;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
import net.minecraft.world.level.levelgen.placement.PlacedFeature; import net.minecraft.world.level.levelgen.placement.PlacedFeature;
@ -25,9 +26,9 @@ public class BuiltinRegistration {
if (id.getNamespace().equals(Create.ID)) { if (id.getNamespace().equals(Create.ID)) {
DatagenExtension datagenExt = entry.getValue().datagenExt(); DatagenExtension datagenExt = entry.getValue().datagenExt();
if (datagenExt != null) { if (datagenExt != null) {
CONFIGURED_FEATURE_REGISTER.register(id.getPath(), () -> datagenExt.getConfiguredFeature()); CONFIGURED_FEATURE_REGISTER.register(id.getPath(), () -> datagenExt.createConfiguredFeature(BuiltinRegistries.ACCESS));
PLACED_FEATURE_REGISTER.register(id.getPath(), () -> datagenExt.getPlacedFeature()); PLACED_FEATURE_REGISTER.register(id.getPath(), () -> datagenExt.createPlacedFeature(BuiltinRegistries.ACCESS));
BIOME_MODIFIER_REGISTER.register(id.getPath(), () -> datagenExt.getBiomeModifier()); BIOME_MODIFIER_REGISTER.register(id.getPath(), () -> datagenExt.createBiomeModifier(BuiltinRegistries.ACCESS));
} }
} }
} }

View file

@ -16,7 +16,7 @@ import com.tterrag.registrate.util.nullness.NonNullSupplier;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
import net.minecraft.core.HolderSet; import net.minecraft.core.HolderSet;
import net.minecraft.core.Registry; import net.minecraft.core.Registry;
import net.minecraft.data.BuiltinRegistries; import net.minecraft.core.RegistryAccess;
import net.minecraft.data.worldgen.features.OreFeatures; import net.minecraft.data.worldgen.features.OreFeatures;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -109,39 +109,25 @@ public class OreFeatureConfigEntry extends ConfigBase {
public abstract class DatagenExtension { public abstract class DatagenExtension {
public TagKey<Biome> biomeTag; public TagKey<Biome> biomeTag;
protected ConfiguredFeature<?, ?> configuredFeature;
protected PlacedFeature placedFeature;
protected BiomeModifier biomeModifier;
public DatagenExtension biomeTag(TagKey<Biome> biomes) { public DatagenExtension biomeTag(TagKey<Biome> biomes) {
this.biomeTag = biomes; this.biomeTag = biomes;
return this; return this;
} }
public abstract ConfiguredFeature<?, ?> getConfiguredFeature(); public abstract ConfiguredFeature<?, ?> createConfiguredFeature(RegistryAccess registryAccess);
public PlacedFeature getPlacedFeature() { public PlacedFeature createPlacedFeature(RegistryAccess registryAccess) {
if (placedFeature != null) { Registry<ConfiguredFeature<?, ?>> featureRegistry = registryAccess.registryOrThrow(Registry.CONFIGURED_FEATURE_REGISTRY);
return placedFeature; Holder<ConfiguredFeature<?, ?>> featureHolder = featureRegistry.getOrCreateHolderOrThrow(ResourceKey.create(Registry.CONFIGURED_FEATURE_REGISTRY, id));
} return new PlacedFeature(featureHolder, List.of(new ConfigDrivenPlacement(OreFeatureConfigEntry.this)));
Holder<ConfiguredFeature<?, ?>> featureHolder = BuiltinRegistries.CONFIGURED_FEATURE.getOrCreateHolderOrThrow(ResourceKey.create(Registry.CONFIGURED_FEATURE_REGISTRY, id));
placedFeature = new PlacedFeature(featureHolder, List.of(new ConfigDrivenPlacement(OreFeatureConfigEntry.this)));
return placedFeature;
} }
public BiomeModifier getBiomeModifier() { public BiomeModifier createBiomeModifier(RegistryAccess registryAccess) {
if (biomeModifier != null) { Registry<Biome> biomeRegistry = registryAccess.registryOrThrow(Registry.BIOME_REGISTRY);
return biomeModifier; Registry<PlacedFeature> featureRegistry = registryAccess.registryOrThrow(Registry.PLACED_FEATURE_REGISTRY);
} HolderSet<Biome> biomes = new HolderSet.Named<>(biomeRegistry, biomeTag);
Holder<PlacedFeature> featureHolder = featureRegistry.getOrCreateHolderOrThrow(ResourceKey.create(Registry.PLACED_FEATURE_REGISTRY, id));
@SuppressWarnings("deprecation") return new AddFeaturesBiomeModifier(biomes, HolderSet.direct(featureHolder), Decoration.UNDERGROUND_ORES);
HolderSet<Biome> biomes = new HolderSet.Named<>(BuiltinRegistries.BIOME, biomeTag);
Holder<PlacedFeature> featureHolder = BuiltinRegistries.PLACED_FEATURE.getOrCreateHolderOrThrow(ResourceKey.create(Registry.PLACED_FEATURE_REGISTRY, id));
biomeModifier = new AddFeaturesBiomeModifier(biomes, HolderSet.direct(featureHolder), Decoration.UNDERGROUND_ORES);
return biomeModifier;
} }
public OreFeatureConfigEntry parent() { public OreFeatureConfigEntry parent() {
@ -178,11 +164,7 @@ public class OreFeatureConfigEntry extends ConfigBase {
} }
@Override @Override
public ConfiguredFeature<?, ?> getConfiguredFeature() { public ConfiguredFeature<?, ?> createConfiguredFeature(RegistryAccess registryAccess) {
if (configuredFeature != null) {
return configuredFeature;
}
List<TargetBlockState> targetStates = new ArrayList<>(); List<TargetBlockState> targetStates = new ArrayList<>();
if (block != null) if (block != null)
targetStates.add(OreConfiguration.target(OreFeatures.STONE_ORE_REPLACEABLES, block.get() targetStates.add(OreConfiguration.target(OreFeatures.STONE_ORE_REPLACEABLES, block.get()
@ -195,9 +177,7 @@ public class OreFeatureConfigEntry extends ConfigBase {
.defaultBlockState())); .defaultBlockState()));
ConfigDrivenOreFeatureConfiguration config = new ConfigDrivenOreFeatureConfiguration(OreFeatureConfigEntry.this, 0, targetStates); ConfigDrivenOreFeatureConfiguration config = new ConfigDrivenOreFeatureConfiguration(OreFeatureConfigEntry.this, 0, targetStates);
configuredFeature = new ConfiguredFeature<>(AllFeatures.STANDARD_ORE.get(), config); return new ConfiguredFeature<>(AllFeatures.STANDARD_ORE.get(), config);
return configuredFeature;
} }
} }
@ -216,19 +196,13 @@ public class OreFeatureConfigEntry extends ConfigBase {
} }
@Override @Override
public ConfiguredFeature<?, ?> getConfiguredFeature() { public ConfiguredFeature<?, ?> createConfiguredFeature(RegistryAccess registryAccess) {
if (configuredFeature != null) {
return configuredFeature;
}
List<LayerPattern> layerPatterns = this.layerPatterns.stream() List<LayerPattern> layerPatterns = this.layerPatterns.stream()
.map(NonNullSupplier::get) .map(NonNullSupplier::get)
.toList(); .toList();
ConfigDrivenLayeredOreFeatureConfiguration config = new ConfigDrivenLayeredOreFeatureConfiguration(OreFeatureConfigEntry.this, 0, layerPatterns); ConfigDrivenLayeredOreFeatureConfiguration config = new ConfigDrivenLayeredOreFeatureConfiguration(OreFeatureConfigEntry.this, 0, layerPatterns);
configuredFeature = new ConfiguredFeature<>(AllFeatures.LAYERED_ORE.get(), config); return new ConfiguredFeature<>(AllFeatures.LAYERED_ORE.get(), config);
return configuredFeature;
} }
} }
} }