Codec for SurfaceMaterialProvider
This commit is contained in:
parent
c56c15fc02
commit
080541345c
2 changed files with 55 additions and 0 deletions
|
@ -127,6 +127,17 @@ public class BCLBiome extends BCLBiomeSettings implements BiomeData {
|
||||||
return instance.group(a.t0, a.t1, a.t2, a.t3, a.t4, a.t5, a.t6, a.t7, a.t8, a.t9, a.t10, p12, p13);
|
return instance.group(a.t0, a.t1, a.t2, a.t3, a.t4, a.t5, a.t6, a.t7, a.t8, a.t9, a.t10, p12, p13);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static <T extends BCLBiome, P12, P13, P14, P15> Products.P15<RecordCodecBuilder.Mu<T>, Float, Float, Float, Integer, Boolean, Optional<ResourceLocation>, ResourceLocation, Optional<List<Climate.ParameterPoint>>, Optional<ResourceLocation>, Optional<WeightedList<ResourceLocation>>, Optional<String>, P12, P13, P14, P15> codecWithSettings(
|
||||||
|
RecordCodecBuilder.Instance<T> instance,
|
||||||
|
final RecordCodecBuilder<T, P12> p12,
|
||||||
|
final RecordCodecBuilder<T, P13> p13,
|
||||||
|
final RecordCodecBuilder<T, P14> p14,
|
||||||
|
final RecordCodecBuilder<T, P15> p15
|
||||||
|
) {
|
||||||
|
CodecAttributes<T> a = new CodecAttributes<>();
|
||||||
|
return instance.group(a.t0, a.t1, a.t2, a.t3, a.t4, a.t5, a.t6, a.t7, a.t8, a.t9, a.t10, p12, p13, p14, p15);
|
||||||
|
}
|
||||||
|
|
||||||
public static <T extends BCLBiome, P12, P13, P14> Products.P14<RecordCodecBuilder.Mu<T>, Float, Float, Float, Integer, Boolean, Optional<ResourceLocation>, ResourceLocation, Optional<List<Climate.ParameterPoint>>, Optional<ResourceLocation>, Optional<WeightedList<ResourceLocation>>, Optional<String>, P12, P13, P14> codecWithSettings(
|
public static <T extends BCLBiome, P12, P13, P14> Products.P14<RecordCodecBuilder.Mu<T>, Float, Float, Float, Integer, Boolean, Optional<ResourceLocation>, ResourceLocation, Optional<List<Climate.ParameterPoint>>, Optional<ResourceLocation>, Optional<WeightedList<ResourceLocation>>, Optional<String>, P12, P13, P14> codecWithSettings(
|
||||||
RecordCodecBuilder.Instance<T> instance,
|
RecordCodecBuilder.Instance<T> instance,
|
||||||
final RecordCodecBuilder<T, P12> p12,
|
final RecordCodecBuilder<T, P12> p12,
|
||||||
|
|
|
@ -2,9 +2,53 @@ package org.betterx.bclib.interfaces;
|
||||||
|
|
||||||
import org.betterx.bclib.api.v2.levelgen.surface.SurfaceRuleBuilder;
|
import org.betterx.bclib.api.v2.levelgen.surface.SurfaceRuleBuilder;
|
||||||
|
|
||||||
|
import com.mojang.serialization.Codec;
|
||||||
|
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
|
||||||
public interface SurfaceMaterialProvider {
|
public interface SurfaceMaterialProvider {
|
||||||
|
public static final Codec<SurfaceMaterialProvider> CODEC = RecordCodecBuilder.create(instance -> instance
|
||||||
|
.group(
|
||||||
|
BlockState.CODEC.fieldOf("top").forGetter(o -> o.getTopMaterial()),
|
||||||
|
BlockState.CODEC.fieldOf("under").forGetter(o -> o.getUnderMaterial()),
|
||||||
|
BlockState.CODEC.fieldOf("alt").forGetter(o -> o.getAltTopMaterial()),
|
||||||
|
Codec.BOOL.fieldOf("floor_rule").forGetter(o -> o.generateFloorRule())
|
||||||
|
).apply(instance, SurfaceMaterialProvider::create));
|
||||||
|
|
||||||
|
public static SurfaceMaterialProvider create(
|
||||||
|
BlockState top,
|
||||||
|
BlockState under,
|
||||||
|
BlockState alt,
|
||||||
|
boolean genFloorRule
|
||||||
|
) {
|
||||||
|
return new SurfaceMaterialProvider() {
|
||||||
|
@Override
|
||||||
|
public BlockState getTopMaterial() {
|
||||||
|
return top;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockState getUnderMaterial() {
|
||||||
|
return under;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockState getAltTopMaterial() {
|
||||||
|
return alt;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean generateFloorRule() {
|
||||||
|
return genFloorRule;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SurfaceRuleBuilder surface() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
BlockState getTopMaterial();
|
BlockState getTopMaterial();
|
||||||
BlockState getUnderMaterial();
|
BlockState getUnderMaterial();
|
||||||
BlockState getAltTopMaterial();
|
BlockState getAltTopMaterial();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue