Surface rule builder fixes

This commit is contained in:
paulevsGitch 2021-12-04 11:52:58 +03:00
parent 8809fa7dbc
commit 3a06c128ed
5 changed files with 22 additions and 28 deletions

View file

@ -21,7 +21,6 @@ import ru.bclib.interfaces.PostInitable;
import ru.bclib.interfaces.RenderLayerProvider;
import ru.bclib.interfaces.TagProvider;
import ru.bclib.registry.BaseBlockEntities;
import ru.bclib.util.CollectionsUtil;
import java.util.List;
import java.util.function.Consumer;
@ -93,8 +92,8 @@ public class PostInitAPI {
}
if (block instanceof TagProvider) {
TagProvider.class.cast(block).addTags(blockTags, itemTags);
TagAPI.addTags(block, CollectionsUtil.toArray(blockTags));
TagAPI.addTags(block, CollectionsUtil.toArray(itemTags));
blockTags.forEach(tag -> TagAPI.addTag(tag, block));
itemTags.forEach(tag -> TagAPI.addTag(tag, block));
blockTags.clear();
itemTags.clear();
}

View file

@ -439,7 +439,7 @@ public class BiomeAPI {
SurfaceRuleProvider provider = SurfaceRuleProvider.class.cast(generator);
if (rules.size() > 0) {
rules.add(provider.getSurfaceRule());
provider.setSurfaceRule(SurfaceRules.sequence(CollectionsUtil.toArray(rules)));
provider.setSurfaceRule(SurfaceRules.sequence(rules.toArray(new SurfaceRules.RuleSource[rules.size()])));
}
else {
provider.setSurfaceRule(null);

View file

@ -8,7 +8,6 @@ import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.levelgen.SurfaceRules;
import net.minecraft.world.level.levelgen.SurfaceRules.RuleSource;
import net.minecraft.world.level.levelgen.placement.CaveSurface;
import ru.bclib.util.CollectionsUtil;
import java.util.Collections;
import java.util.List;
@ -57,7 +56,8 @@ public class SurfaceRuleBuilder {
public SurfaceRuleBuilder surface(BlockState state) {
entryInstance = getFromCache("surface_" + state.toString(), () -> {
RuleSource rule = SurfaceRules.state(state);
return new SurfaceRuleEntry(1, SurfaceRules.ifTrue(SurfaceRules.ON_FLOOR, rule));
rule = SurfaceRules.ifTrue(SurfaceRules.ON_FLOOR, rule);
return new SurfaceRuleEntry(1, rule);
});
rules.add(entryInstance);
return this;
@ -73,7 +73,7 @@ public class SurfaceRuleBuilder {
entryInstance = getFromCache("subsurface_" + depth + "_" + state.toString(), () -> {
RuleSource rule = SurfaceRules.state(state);
rule = SurfaceRules.ifTrue(SurfaceRules.stoneDepthCheck(depth, false, false, CaveSurface.FLOOR), rule);
return new SurfaceRuleEntry(2, SurfaceRules.ifTrue(SurfaceRules.ON_FLOOR, rule));
return new SurfaceRuleEntry(2, rule);
});
rules.add(entryInstance);
return this;
@ -131,7 +131,7 @@ public class SurfaceRuleBuilder {
public SurfaceRules.RuleSource build() {
Collections.sort(rules);
List<SurfaceRules.RuleSource> ruleList = rules.stream().map(entry -> entry.getRule()).toList();
SurfaceRules.RuleSource[] ruleArray = CollectionsUtil.toArray(ruleList);
SurfaceRules.RuleSource[] ruleArray = ruleList.toArray(new SurfaceRules.RuleSource[ruleList.size()]);
SurfaceRules.RuleSource rule = SurfaceRules.sequence(ruleArray);
if (biomeKey != null) {
rule = SurfaceRules.ifTrue(SurfaceRules.isBiome(biomeKey), rule);