diff --git a/build.gradle b/build.gradle index 93c749ef..629e5698 100644 --- a/build.gradle +++ b/build.gradle @@ -5,8 +5,6 @@ buildscript { } plugins { - id 'idea' - id 'eclipse' id 'fabric-loom' version "${loom_version}" id 'maven-publish' } @@ -86,17 +84,11 @@ def useApi(String dep) { } processResources { - inputs.property "version", project.version - duplicatesStrategy = 'WARN' - - from(sourceSets.main.resources.srcDirs) { - include "fabric.mod.json" - expand "version": project.version - } - - from(sourceSets.main.resources.srcDirs) { - exclude "fabric.mod.json" - } + println "Version: ${project.version}" + inputs.property "version", project.version + filesMatching("fabric.mod.json") { + expand "version": project.version + } } // ensure that the encoding is set to UTF-8, no matter what the system default is @@ -104,6 +96,7 @@ processResources { // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html tasks.withType(JavaCompile) { options.encoding = "UTF-8" + it.options.release = 17 } javadoc { @@ -123,6 +116,13 @@ task sourcesJar(type: Jar, dependsOn: classes) { from sourceSets.main.allSource } +java { + // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task + // if it is present. + // If you remove this line, sources will not be generated. + withSourcesJar() +} + jar { from "LICENSE" } @@ -159,21 +159,21 @@ task release(dependsOn: [remapJar, sourcesJar, javadocJar]) { } // configure the maven publication -//publishing { -// publications { -// mavenJava(MavenPublication) { -// artifact(remapJar) { -// builtBy remapJar -// } -// artifact(sourcesJar) { -// builtBy remapSourcesJar -// } -// } -// } -// -// // select the repositories you want to publish to -// repositories { -// // uncomment to publish to the local maven -// // mavenLocal() -// } -//} \ No newline at end of file +publishing { + publications { + mavenJava(MavenPublication) { + artifact(remapJar) { + builtBy remapJar + } + artifact(sourcesJar) { + builtBy remapSourcesJar + } + } + } + + // select the repositories you want to publish to + repositories { + // uncomment to publish to the local maven + // mavenLocal() + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 5f1354b6..95227a0d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,14 +4,14 @@ org.gradle.jvmargs=-Xmx2G # Fabric Properties # check these on https://fabricmc.net/use minecraft_version=1.18.1 -fabric_version = 0.44.0+1.18 -loader_version=0.12.12 +fabric_version = 0.46.4+1.18 +loader_version=0.13.3 #Loom loom_version=0.10-SNAPSHOT # Mod Properties -mod_version=1.0.0 +mod_version=1.0.3 maven_group=ru.betterend archives_base_name=better-end @@ -19,6 +19,6 @@ archives_base_name=better-end # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api patchouli_version = 55-FABRIC-SNAPSHOT -bclib_version = 1.2.0 -rei_version = 7.0.343 +bclib_version = 1.3.5 +rei_version = 7.2.408 canvas_version = 1.0.+ diff --git a/src/main/java/ru/betterend/BetterEnd.java b/src/main/java/ru/betterend/BetterEnd.java index 40e6c306..a83d725d 100644 --- a/src/main/java/ru/betterend/BetterEnd.java +++ b/src/main/java/ru/betterend/BetterEnd.java @@ -66,7 +66,7 @@ public class BetterEnd implements ModInitializer { ru.bclib.world.generator.GeneratorOptions.setFarEndBiomes(GeneratorOptions.getIslandDistBlock()); ru.bclib.world.generator.GeneratorOptions.setEndLandFunction((pos) -> TerrainGenerator.isLand(pos.x, pos.y)); } - + BiomeAPI.registerEndBiomeModification((biomeID, biome) -> { if (!biomeID.equals(Biomes.THE_VOID.location())) { EndStructures.addBiomeStructures(biomeID, biome); diff --git a/src/main/java/ru/betterend/blocks/AuroraCrystalBlock.java b/src/main/java/ru/betterend/blocks/AuroraCrystalBlock.java index f36efa2f..7ffb9212 100644 --- a/src/main/java/ru/betterend/blocks/AuroraCrystalBlock.java +++ b/src/main/java/ru/betterend/blocks/AuroraCrystalBlock.java @@ -20,7 +20,7 @@ import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonItemTags; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.CustomColorProvider; import ru.bclib.interfaces.RenderLayerProvider; @@ -39,7 +39,7 @@ public class AuroraCrystalBlock extends AbstractGlassBlock implements RenderLaye super(FabricBlockSettings .of(Material.GLASS) .breakByTool(FabricToolTags.PICKAXES) - .breakByTool(TagAPI.ITEM_HAMMERS) + .breakByTool(CommonItemTags.HAMMERS) .hardness(1F) .resistance(1F) .luminance(15) diff --git a/src/main/java/ru/betterend/blocks/BulbVineSeedBlock.java b/src/main/java/ru/betterend/blocks/BulbVineSeedBlock.java index 00bd9485..7ef8f7eb 100644 --- a/src/main/java/ru/betterend/blocks/BulbVineSeedBlock.java +++ b/src/main/java/ru/betterend/blocks/BulbVineSeedBlock.java @@ -5,7 +5,7 @@ import net.minecraft.tags.BlockTags; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockState; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.blocks.BlockProperties; import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.util.BlocksHelper; @@ -19,7 +19,7 @@ public class BulbVineSeedBlock extends EndPlantWithAgeBlock { @Override public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { BlockState up = world.getBlockState(pos.above()); - return up.is(TagAPI.BLOCK_GEN_TERRAIN) || up.is(BlockTags.LOGS) || up.is(BlockTags.LEAVES); + return up.is(CommonBlockTags.GEN_END_STONES) || up.is(BlockTags.LOGS) || up.is(BlockTags.LEAVES); } @Override diff --git a/src/main/java/ru/betterend/blocks/EndLilySeedBlock.java b/src/main/java/ru/betterend/blocks/EndLilySeedBlock.java index 71a7dd2d..e3ba67a5 100644 --- a/src/main/java/ru/betterend/blocks/EndLilySeedBlock.java +++ b/src/main/java/ru/betterend/blocks/EndLilySeedBlock.java @@ -4,7 +4,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Fluids; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.blocks.UnderwaterPlantWithAgeBlock; import ru.bclib.util.BlocksHelper; @@ -48,6 +48,6 @@ public class EndLilySeedBlock extends UnderwaterPlantWithAgeBlock { @Override protected boolean isTerrain(BlockState state) { - return state.is(TagAPI.BLOCK_END_GROUND); + return state.is(CommonBlockTags.END_STONES); } } diff --git a/src/main/java/ru/betterend/blocks/EndLotusSeedBlock.java b/src/main/java/ru/betterend/blocks/EndLotusSeedBlock.java index 20d3e1c4..e385e34d 100644 --- a/src/main/java/ru/betterend/blocks/EndLotusSeedBlock.java +++ b/src/main/java/ru/betterend/blocks/EndLotusSeedBlock.java @@ -6,7 +6,7 @@ import net.minecraft.core.Direction; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Fluids; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.blocks.UnderwaterPlantWithAgeBlock; import ru.bclib.util.BlocksHelper; @@ -134,6 +134,6 @@ public class EndLotusSeedBlock extends UnderwaterPlantWithAgeBlock { @Override protected boolean isTerrain(BlockState state) { - return state.is(TagAPI.BLOCK_END_GROUND); + return state.is(CommonBlockTags.END_STONES); } } diff --git a/src/main/java/ru/betterend/blocks/EndstoneDustBlock.java b/src/main/java/ru/betterend/blocks/EndstoneDustBlock.java index d5698e81..2f81b4a8 100644 --- a/src/main/java/ru/betterend/blocks/EndstoneDustBlock.java +++ b/src/main/java/ru/betterend/blocks/EndstoneDustBlock.java @@ -5,18 +5,23 @@ import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.core.BlockPos; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.FallingBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; +import ru.bclib.api.tag.NamedCommonBlockTags; +import ru.bclib.api.tag.TagAPI.TagLocation; +import ru.bclib.interfaces.TagProvider; import ru.bclib.util.ColorUtil; import java.util.Collections; import java.util.List; -public class EndstoneDustBlock extends FallingBlock { +public class EndstoneDustBlock extends FallingBlock implements TagProvider { @Environment(EnvType.CLIENT) private static final int COLOR = ColorUtil.color(226, 239, 168); @@ -38,4 +43,9 @@ public class EndstoneDustBlock extends FallingBlock { public int getDustColor(BlockState state, BlockGetter world, BlockPos pos) { return COLOR; } + + @Override + public void addTags(List> blockTags, List> itemTags) { + blockTags.add(NamedCommonBlockTags.END_STONES); + } } diff --git a/src/main/java/ru/betterend/blocks/HelixTreeLeavesBlock.java b/src/main/java/ru/betterend/blocks/HelixTreeLeavesBlock.java index 92403686..22378153 100644 --- a/src/main/java/ru/betterend/blocks/HelixTreeLeavesBlock.java +++ b/src/main/java/ru/betterend/blocks/HelixTreeLeavesBlock.java @@ -1,6 +1,5 @@ package ru.betterend.blocks; -import com.google.common.collect.Lists; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.client.color.block.BlockColor; @@ -8,8 +7,6 @@ import net.minecraft.client.color.item.ItemColor; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.item.enchantment.EnchantmentHelper; -import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockState; @@ -18,16 +15,16 @@ import net.minecraft.world.level.block.state.properties.IntegerProperty; import net.minecraft.world.level.material.Material; import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.level.storage.loot.LootContext; -import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.NamedBlockTags; +import ru.bclib.api.tag.TagAPI; import ru.bclib.blocks.BaseBlock; +import ru.bclib.blocks.BaseLeavesBlock; import ru.bclib.interfaces.CustomColorProvider; import ru.bclib.util.ColorUtil; import ru.bclib.util.MHelper; import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.registry.EndBlocks; -import java.util.Collections; import java.util.List; public class HelixTreeLeavesBlock extends BaseBlock implements CustomColorProvider { @@ -44,7 +41,7 @@ public class HelixTreeLeavesBlock extends BaseBlock implements CustomColorProvid .strength(0.2F) ); - TagAPI.addTags(this, TagAPI.BLOCK_LEAVES); + TagAPI.addBlockTag(NamedBlockTags.LEAVES, this); } @Override @@ -81,21 +78,6 @@ public class HelixTreeLeavesBlock extends BaseBlock implements CustomColorProvid @Override public List getDrops(BlockState state, LootContext.Builder builder) { - ItemStack tool = builder.getParameter(LootContextParams.TOOL); - if (tool != null) { - if (tool.is(FabricToolTags.SHEARS) || tool.isCorrectToolForDrops(state) || EnchantmentHelper.getItemEnchantmentLevel( - Enchantments.SILK_TOUCH, - tool - ) > 0) { - return Collections.singletonList(new ItemStack(this)); - } - int fortune = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.BLOCK_FORTUNE, tool); - if (MHelper.RANDOM.nextInt(16) <= fortune) { - return Lists.newArrayList(new ItemStack(EndBlocks.HELIX_TREE_SAPLING)); - } - return Lists.newArrayList(); - } - return MHelper.RANDOM.nextInt(32) == 0 ? Lists.newArrayList(new ItemStack(EndBlocks.HELIX_TREE_SAPLING)) : Lists - .newArrayList(); + return BaseLeavesBlock.getLeaveDrops(this, EndBlocks.HELIX_TREE_SAPLING, builder, 16, 32); } } diff --git a/src/main/java/ru/betterend/blocks/HydraluxBlock.java b/src/main/java/ru/betterend/blocks/HydraluxBlock.java index 7db4f4af..69e3dd39 100644 --- a/src/main/java/ru/betterend/blocks/HydraluxBlock.java +++ b/src/main/java/ru/betterend/blocks/HydraluxBlock.java @@ -17,7 +17,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.material.Material; import net.minecraft.world.level.storage.loot.LootContext; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.blocks.UnderwaterPlantBlock; import ru.bclib.util.MHelper; import ru.betterend.blocks.EndBlockProperties.HydraluxShape; @@ -63,7 +63,7 @@ public class HydraluxBlock extends UnderwaterPlantBlock { @Override protected boolean isTerrain(BlockState state) { - return state.is(TagAPI.BLOCK_END_GROUND); + return state.is(CommonBlockTags.END_STONES); } @Override diff --git a/src/main/java/ru/betterend/blocks/LumecornBlock.java b/src/main/java/ru/betterend/blocks/LumecornBlock.java index ac27121f..51fec348 100644 --- a/src/main/java/ru/betterend/blocks/LumecornBlock.java +++ b/src/main/java/ru/betterend/blocks/LumecornBlock.java @@ -19,7 +19,7 @@ import net.minecraft.world.level.material.Material; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.blocks.BaseBlockNotFull; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.RenderLayerProvider; @@ -63,7 +63,7 @@ public class LumecornBlock extends BaseBlockNotFull implements RenderLayerProvid public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { LumecornShape shape = state.getValue(SHAPE); if (shape == LumecornShape.BOTTOM_BIG || shape == LumecornShape.BOTTOM_SMALL) { - return world.getBlockState(pos.below()).is(TagAPI.BLOCK_END_GROUND); + return world.getBlockState(pos.below()).is(CommonBlockTags.END_STONES); } else if (shape == LumecornShape.LIGHT_TOP) { return world.getBlockState(pos.below()).is(this); diff --git a/src/main/java/ru/betterend/blocks/MossyGlowshroomCapBlock.java b/src/main/java/ru/betterend/blocks/MossyGlowshroomCapBlock.java index 4bd1bbcb..ea88735b 100644 --- a/src/main/java/ru/betterend/blocks/MossyGlowshroomCapBlock.java +++ b/src/main/java/ru/betterend/blocks/MossyGlowshroomCapBlock.java @@ -1,7 +1,6 @@ package ru.betterend.blocks; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.tags.Tag.Named; import net.minecraft.world.item.Item; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.block.Block; @@ -10,7 +9,8 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.NamedMineableTags; +import ru.bclib.api.tag.TagAPI.TagLocation; import ru.bclib.blocks.BaseBlock; import ru.bclib.interfaces.TagProvider; import ru.betterend.registry.EndBlocks; @@ -38,7 +38,7 @@ public class MossyGlowshroomCapBlock extends BaseBlock implements TagProvider { } @Override - public void addTags(List> blockTags, List> itemTags) { - blockTags.add(TagAPI.MINEABLE_AXE); + public void addTags(List> blockTags, List> itemTags) { + blockTags.add(NamedMineableTags.AXE); } } diff --git a/src/main/java/ru/betterend/blocks/NeonCactusPlantBlock.java b/src/main/java/ru/betterend/blocks/NeonCactusPlantBlock.java index 2e428182..e238dc67 100644 --- a/src/main/java/ru/betterend/blocks/NeonCactusPlantBlock.java +++ b/src/main/java/ru/betterend/blocks/NeonCactusPlantBlock.java @@ -34,7 +34,7 @@ import net.minecraft.world.level.material.Fluids; import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.blocks.BaseBlockNotFull; import ru.bclib.blocks.BlockProperties; import ru.bclib.blocks.BlockProperties.TripleShape; @@ -331,7 +331,7 @@ public class NeonCactusPlantBlock extends BaseBlockNotFull implements SimpleWate mut.move(dir); state = world.getBlockState(mut); if (!state.is(this)) { - if (!state.is(TagAPI.BLOCK_END_GROUND)) { + if (!state.is(CommonBlockTags.END_STONES)) { length = -1; } break; diff --git a/src/main/java/ru/betterend/blocks/ShadowGrassBlock.java b/src/main/java/ru/betterend/blocks/ShadowGrassBlock.java index 3cdaf282..a88df432 100644 --- a/src/main/java/ru/betterend/blocks/ShadowGrassBlock.java +++ b/src/main/java/ru/betterend/blocks/ShadowGrassBlock.java @@ -3,15 +3,21 @@ package ru.betterend.blocks; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.core.BlockPos; +import net.minecraft.world.item.Item; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.MaterialColor; +import ru.bclib.api.tag.NamedCommonBlockTags; +import ru.bclib.api.tag.TagAPI.TagLocation; +import ru.bclib.interfaces.TagProvider; import ru.betterend.blocks.basis.EndTerrainBlock; import ru.betterend.registry.EndParticles; +import java.util.List; import java.util.Random; -public class ShadowGrassBlock extends EndTerrainBlock { +public class ShadowGrassBlock extends EndTerrainBlock implements TagProvider { public ShadowGrassBlock() { super(MaterialColor.COLOR_BLACK); } @@ -31,4 +37,9 @@ public class ShadowGrassBlock extends EndTerrainBlock { ); } } + + @Override + public void addTags(List> blockTags, List> itemTags) { + blockTags.add(NamedCommonBlockTags.END_STONES); + } } diff --git a/src/main/java/ru/betterend/blocks/SmallJellyshroomBlock.java b/src/main/java/ru/betterend/blocks/SmallJellyshroomBlock.java index cda6ec18..7ae95d30 100644 --- a/src/main/java/ru/betterend/blocks/SmallJellyshroomBlock.java +++ b/src/main/java/ru/betterend/blocks/SmallJellyshroomBlock.java @@ -29,7 +29,7 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.blocks.BaseAttachedBlock; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.RenderLayerProvider; @@ -93,7 +93,7 @@ public class SmallJellyshroomBlock extends BaseAttachedBlock implements RenderLa @Override public boolean isValidBonemealTarget(BlockGetter world, BlockPos pos, BlockState state, boolean isClient) { - return state.getValue(FACING) == Direction.UP && world.getBlockState(pos.below()).is(TagAPI.BLOCK_END_GROUND); + return state.getValue(FACING) == Direction.UP && world.getBlockState(pos.below()).is(CommonBlockTags.END_STONES); } @Override diff --git a/src/main/java/ru/betterend/blocks/basis/EndPlantBlock.java b/src/main/java/ru/betterend/blocks/basis/EndPlantBlock.java index 9a064a4e..2c30a4ae 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndPlantBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndPlantBlock.java @@ -2,7 +2,7 @@ package ru.betterend.blocks.basis; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.blocks.BasePlantBlock; import ru.betterend.interfaces.PottablePlant; @@ -29,7 +29,7 @@ public class EndPlantBlock extends BasePlantBlock implements PottablePlant { @Override protected boolean isTerrain(BlockState state) { - return state.is(TagAPI.BLOCK_END_GROUND); + return state.is(CommonBlockTags.END_STONES); } @Override diff --git a/src/main/java/ru/betterend/blocks/basis/EndPlantWithAgeBlock.java b/src/main/java/ru/betterend/blocks/basis/EndPlantWithAgeBlock.java index 1519d471..47e52267 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndPlantWithAgeBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndPlantWithAgeBlock.java @@ -1,7 +1,7 @@ package ru.betterend.blocks.basis; import net.minecraft.world.level.block.state.BlockState; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.blocks.BasePlantWithAgeBlock; public abstract class EndPlantWithAgeBlock extends BasePlantWithAgeBlock { @@ -15,6 +15,6 @@ public abstract class EndPlantWithAgeBlock extends BasePlantWithAgeBlock { @Override protected boolean isTerrain(BlockState state) { - return state.is(TagAPI.BLOCK_END_GROUND); + return state.is(CommonBlockTags.END_STONES); } } diff --git a/src/main/java/ru/betterend/blocks/basis/EndTerrainBlock.java b/src/main/java/ru/betterend/blocks/basis/EndTerrainBlock.java index be224b9c..4669d6da 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndTerrainBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndTerrainBlock.java @@ -1,12 +1,24 @@ package ru.betterend.blocks.basis; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.material.MaterialColor; +import ru.bclib.api.tag.NamedCommonBlockTags; +import ru.bclib.api.tag.TagAPI.TagLocation; import ru.bclib.blocks.BaseTerrainBlock; +import ru.bclib.interfaces.TagProvider; import ru.betterend.interfaces.PottableTerrain; -public class EndTerrainBlock extends BaseTerrainBlock implements PottableTerrain { +import java.util.List; + +public class EndTerrainBlock extends BaseTerrainBlock implements PottableTerrain, TagProvider { public EndTerrainBlock(MaterialColor color) { super(Blocks.END_STONE, color); } + + @Override + public void addTags(List> blockTags, List> itemTags) { + blockTags.add(NamedCommonBlockTags.END_STONES); + } } diff --git a/src/main/java/ru/betterend/blocks/basis/EndUnderwaterPlantBlock.java b/src/main/java/ru/betterend/blocks/basis/EndUnderwaterPlantBlock.java index a3acf2d2..ecdfd821 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndUnderwaterPlantBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndUnderwaterPlantBlock.java @@ -1,7 +1,7 @@ package ru.betterend.blocks.basis; import net.minecraft.world.level.block.state.BlockState; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.blocks.UnderwaterPlantBlock; public class EndUnderwaterPlantBlock extends UnderwaterPlantBlock { @@ -19,6 +19,6 @@ public class EndUnderwaterPlantBlock extends UnderwaterPlantBlock { @Override protected boolean isTerrain(BlockState state) { - return state.is(TagAPI.BLOCK_END_GROUND); + return state.is(CommonBlockTags.END_STONES); } } diff --git a/src/main/java/ru/betterend/blocks/basis/EndUnderwaterWallPlantBlock.java b/src/main/java/ru/betterend/blocks/basis/EndUnderwaterWallPlantBlock.java index 9a23df46..b5fa2d18 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndUnderwaterWallPlantBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndUnderwaterWallPlantBlock.java @@ -1,7 +1,7 @@ package ru.betterend.blocks.basis; import net.minecraft.world.level.block.state.BlockState; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.blocks.BaseUnderwaterWallPlantBlock; public class EndUnderwaterWallPlantBlock extends BaseUnderwaterWallPlantBlock { @@ -19,6 +19,6 @@ public class EndUnderwaterWallPlantBlock extends BaseUnderwaterWallPlantBlock { @Override protected boolean isTerrain(BlockState state) { - return state.is(TagAPI.BLOCK_END_GROUND); + return state.is(CommonBlockTags.END_STONES); } } diff --git a/src/main/java/ru/betterend/blocks/basis/EndWallMushroom.java b/src/main/java/ru/betterend/blocks/basis/EndWallMushroom.java index 6faeaf88..a08cc07b 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndWallMushroom.java +++ b/src/main/java/ru/betterend/blocks/basis/EndWallMushroom.java @@ -1,7 +1,7 @@ package ru.betterend.blocks.basis; import net.minecraft.world.level.block.state.BlockState; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.blocks.WallMushroomBlock; public class EndWallMushroom extends WallMushroomBlock { @@ -12,6 +12,6 @@ public class EndWallMushroom extends WallMushroomBlock { @Override protected boolean isTerrain(BlockState state) { - return state.is(TagAPI.BLOCK_END_GROUND); + return state.is(CommonBlockTags.END_STONES); } } diff --git a/src/main/java/ru/betterend/blocks/basis/EndWallPlantBlock.java b/src/main/java/ru/betterend/blocks/basis/EndWallPlantBlock.java index 46fdba5c..f08d6da1 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndWallPlantBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndWallPlantBlock.java @@ -1,7 +1,7 @@ package ru.betterend.blocks.basis; import net.minecraft.world.level.block.state.BlockState; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.blocks.BaseWallPlantBlock; public class EndWallPlantBlock extends BaseWallPlantBlock { @@ -18,6 +18,6 @@ public class EndWallPlantBlock extends BaseWallPlantBlock { @Override protected boolean isTerrain(BlockState state) { - return state.is(TagAPI.BLOCK_END_GROUND); + return state.is(CommonBlockTags.END_STONES); } } diff --git a/src/main/java/ru/betterend/blocks/basis/FurBlock.java b/src/main/java/ru/betterend/blocks/basis/FurBlock.java index 951e8278..187f92a7 100644 --- a/src/main/java/ru/betterend/blocks/basis/FurBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/FurBlock.java @@ -19,7 +19,8 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.NamedBlockTags; +import ru.bclib.api.tag.TagAPI; import ru.bclib.blocks.BaseAttachedBlock; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.RenderLayerProvider; @@ -42,7 +43,7 @@ public class FurBlock extends BaseAttachedBlock implements RenderLayerProvider { .noCollission()); this.drop = drop; this.dropChance = dropChance; - TagAPI.addTags(this, TagAPI.BLOCK_LEAVES); + TagAPI.addBlockTag(NamedBlockTags.LEAVES, this); } public FurBlock(ItemLike drop, int dropChance) { @@ -53,7 +54,7 @@ public class FurBlock extends BaseAttachedBlock implements RenderLayerProvider { .noCollission()); this.drop = drop; this.dropChance = dropChance; - TagAPI.addTags(this, TagAPI.BLOCK_LEAVES); + TagAPI.addBlockTag(NamedBlockTags.LEAVES, this); } @Override diff --git a/src/main/java/ru/betterend/blocks/basis/PedestalBlock.java b/src/main/java/ru/betterend/blocks/basis/PedestalBlock.java index 597e7de4..3bd8db5b 100644 --- a/src/main/java/ru/betterend/blocks/basis/PedestalBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/PedestalBlock.java @@ -136,7 +136,7 @@ public class PedestalBlock extends BaseBlockNotFull implements EntityBlock { if (blockEntity instanceof InfusionPedestalEntity) { InfusionPedestalEntity pedestal = (InfusionPedestalEntity) blockEntity; if (pedestal.hasRitual()) { - pedestal.getRitual().markDirty(); + pedestal.getRitual().setDirty(); } } break; diff --git a/src/main/java/ru/betterend/blocks/entities/BlockEntityHydrothermalVent.java b/src/main/java/ru/betterend/blocks/entities/BlockEntityHydrothermalVent.java index 4404d2d9..e2bd0ad5 100644 --- a/src/main/java/ru/betterend/blocks/entities/BlockEntityHydrothermalVent.java +++ b/src/main/java/ru/betterend/blocks/entities/BlockEntityHydrothermalVent.java @@ -17,12 +17,12 @@ import ru.betterend.interfaces.FallFlyingItem; import ru.betterend.registry.EndBlockEntities; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndParticles; +import ru.betterend.util.GlobalState; import java.util.List; public class BlockEntityHydrothermalVent extends BlockEntity { private final static Vec3 POSITIVE_Y = new Vec3(0.0f, 1.0f, 0.0f); - private static final MutableBlockPos POS = new MutableBlockPos(); public BlockEntityHydrothermalVent(BlockPos blockPos, BlockState blockState) { super(EndBlockEntities.HYDROTHERMAL_VENT, blockPos, blockState); @@ -51,6 +51,7 @@ public class BlockEntityHydrothermalVent extends BlockEntity { } private static void serverTick(Level level, BlockPos worldPosition, BlockState state, BlockEntityHydrothermalVent blockEntity) { + final MutableBlockPos POS = GlobalState.stateForThread().POS; boolean active = state.getValue(HydrothermalVentBlock.ACTIVATED); POS.set(worldPosition).move(Direction.UP); int height = active ? 85 : 25; diff --git a/src/main/java/ru/betterend/complexmaterials/CrystalSubblocksMaterial.java b/src/main/java/ru/betterend/complexmaterials/CrystalSubblocksMaterial.java index 1582a268..4e626a3b 100644 --- a/src/main/java/ru/betterend/complexmaterials/CrystalSubblocksMaterial.java +++ b/src/main/java/ru/betterend/complexmaterials/CrystalSubblocksMaterial.java @@ -1,10 +1,10 @@ package ru.betterend.complexmaterials; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.ItemTags; import net.minecraft.world.level.block.Block; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.NamedBlockTags; +import ru.bclib.api.tag.NamedItemTags; +import ru.bclib.api.tag.TagAPI; import ru.bclib.blocks.BaseSlabBlock; import ru.bclib.blocks.BaseStairsBlock; import ru.bclib.blocks.BaseWallBlock; @@ -120,14 +120,14 @@ public class CrystalSubblocksMaterial { CraftingRecipes.registerPedestal(name + "_pedestal", pedestal, slab, pillar); // Item Tags // - TagAPI.addTag(ItemTags.SLABS, slab, brick_slab); - TagAPI.addTag(ItemTags.STONE_BRICKS, bricks); - TagAPI.addTag(ItemTags.STONE_CRAFTING_MATERIALS, source); - TagAPI.addTag(ItemTags.STONE_TOOL_MATERIALS, source); + TagAPI.addItemTag(NamedItemTags.SLABS, slab, brick_slab); + TagAPI.addItemTag(NamedItemTags.STONE_BRICKS, bricks); + TagAPI.addItemTag(NamedItemTags.STONE_CRAFTING_MATERIALS, source); + TagAPI.addItemTag(NamedItemTags.STONE_TOOL_MATERIALS, source); // Block Tags // - TagAPI.addTag(BlockTags.STONE_BRICKS, bricks); - TagAPI.addTag(BlockTags.WALLS, wall, brick_wall); - TagAPI.addTag(BlockTags.SLABS, slab, brick_slab); + TagAPI.addBlockTag(NamedBlockTags.STONE_BRICKS, bricks); + TagAPI.addBlockTag(NamedBlockTags.WALLS, wall, brick_wall); + TagAPI.addBlockTag(NamedBlockTags.SLABS, slab, brick_slab); } } \ No newline at end of file diff --git a/src/main/java/ru/betterend/complexmaterials/MetalMaterial.java b/src/main/java/ru/betterend/complexmaterials/MetalMaterial.java index 53183d2d..2144aed5 100644 --- a/src/main/java/ru/betterend/complexmaterials/MetalMaterial.java +++ b/src/main/java/ru/betterend/complexmaterials/MetalMaterial.java @@ -1,9 +1,6 @@ package ru.betterend.complexmaterials; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.ItemTags; -import net.minecraft.tags.Tag; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.item.ArmorMaterial; import net.minecraft.world.item.Item; @@ -15,7 +12,11 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.material.MaterialColor; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.NamedBlockTags; +import ru.bclib.api.tag.NamedCommonBlockTags; +import ru.bclib.api.tag.NamedItemTags; +import ru.bclib.api.tag.TagAPI; +import ru.bclib.api.tag.TagAPI.TagNamed; import ru.bclib.blocks.BaseBlock; import ru.bclib.blocks.BaseChainBlock; import ru.bclib.blocks.BaseDoorBlock; @@ -89,7 +90,7 @@ public class MetalMaterial { public final Item leggings; public final Item boots; - public final Tag.Named alloyingOre; + public final TagNamed alloyingOre; public static MetalMaterial makeNormal(String name, MaterialColor color, Tier material, ArmorMaterial armor) { return new MetalMaterial( @@ -153,7 +154,7 @@ public class MetalMaterial { ore = hasOre ? EndBlocks.registerBlock(name + "_ore", new BaseOreBlock(()->rawOre, 1, 3, 1)) : null; alloyingOre = hasOre ? TagAPI.makeItemTag(BetterEnd.MOD_ID, name + "_alloying") : null; if (hasOre) { - TagAPI.addTag(alloyingOre, ore, rawOre); + TagAPI.addItemTag(alloyingOre.getName(), ore, rawOre); } block = EndBlocks.registerBlock(name + "_block", new BaseBlock(settings)); @@ -490,10 +491,9 @@ public class MetalMaterial { .setGroup("end_metal_boots") .build(); - TagAPI.addTag(BlockTags.ANVIL, anvilBlock); - TagAPI.addTag(BlockTags.BEACON_BASE_BLOCKS, block); - TagAPI.addTag(ItemTags.BEACON_PAYMENT_ITEMS, ingot); - TagAPI.addTag(TagAPI.BLOCK_DRAGON_IMMUNE, ore, bars); - TagAPI.addTag(TagAPI.ITEM_HAMMERS, hammer); + TagAPI.addBlockTag(NamedBlockTags.ANVIL, anvilBlock); + TagAPI.addBlockTag(NamedBlockTags.BEACON_BASE_BLOCKS, block); + TagAPI.addItemTag(NamedItemTags.BEACON_PAYMENT_ITEMS, ingot); + TagAPI.addBlockTag(NamedCommonBlockTags.DRAGON_IMMUNE, ore, bars); } } \ No newline at end of file diff --git a/src/main/java/ru/betterend/complexmaterials/StoneMaterial.java b/src/main/java/ru/betterend/complexmaterials/StoneMaterial.java index 107471e6..1bd60202 100644 --- a/src/main/java/ru/betterend/complexmaterials/StoneMaterial.java +++ b/src/main/java/ru/betterend/complexmaterials/StoneMaterial.java @@ -1,12 +1,14 @@ package ru.betterend.complexmaterials; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.ItemTags; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.material.MaterialColor; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.NamedBlockTags; +import ru.bclib.api.tag.NamedCommonBlockTags; +import ru.bclib.api.tag.NamedCommonItemTags; +import ru.bclib.api.tag.NamedItemTags; +import ru.bclib.api.tag.TagAPI; import ru.bclib.blocks.BaseBlock; import ru.bclib.blocks.BaseFurnaceBlock; import ru.bclib.blocks.BaseRotatedPillarBlock; @@ -177,22 +179,22 @@ public class StoneMaterial { CraftingRecipes.registerPedestal(name + "_pedestal", pedestal, slab, pillar); // Item Tags // - TagAPI.addTag(ItemTags.SLABS, slab, brickSlab); - TagAPI.addTag(ItemTags.STONE_BRICKS, bricks); - TagAPI.addTag(ItemTags.STONE_CRAFTING_MATERIALS, stone); - TagAPI.addTag(ItemTags.STONE_TOOL_MATERIALS, stone); - TagAPI.addTag(TagAPI.ITEM_FURNACES, furnace); + TagAPI.addItemTag(NamedItemTags.SLABS, slab, brickSlab); + TagAPI.addItemTag(NamedItemTags.STONE_BRICKS, bricks); + TagAPI.addItemTag(NamedItemTags.STONE_CRAFTING_MATERIALS, stone); + TagAPI.addItemTag(NamedItemTags.STONE_TOOL_MATERIALS, stone); + TagAPI.addItemTag(NamedCommonItemTags.FURNACES, furnace); // Block Tags // - TagAPI.addTag(BlockTags.STONE_BRICKS, bricks); - TagAPI.addTag(BlockTags.WALLS, wall, brickWall); - TagAPI.addTag(BlockTags.SLABS, slab, brickSlab); - TagAPI.addTags(pressurePlate, BlockTags.PRESSURE_PLATES, BlockTags.STONE_PRESSURE_PLATES); - TagAPI.addTag(TagAPI.BLOCK_END_STONES, stone); + TagAPI.addBlockTag(NamedBlockTags.STONE_BRICKS, bricks); + TagAPI.addBlockTag(NamedBlockTags.WALLS, wall, brickWall); + TagAPI.addBlockTag(NamedBlockTags.SLABS, slab, brickSlab); + TagAPI.addBlockTags(pressurePlate, NamedBlockTags.PRESSURE_PLATES, NamedBlockTags.STONE_PRESSURE_PLATES); + TagAPI.addBlockTag(NamedCommonBlockTags.END_STONES, stone); - TagAPI.addTag(TagAPI.BLOCK_DRAGON_IMMUNE, stone, stairs, slab, wall); + TagAPI.addBlockTag(NamedCommonBlockTags.DRAGON_IMMUNE, stone, stairs, slab, wall); - TagAPI.addTag(TagAPI.BLOCK_GEN_TERRAIN, stone); - TagAPI.addTag(TagAPI.BLOCK_END_GROUND, stone); + TagAPI.addBlockTag(NamedCommonBlockTags.GEN_END_STONES, stone); + TagAPI.addBlockTag(NamedCommonBlockTags.END_STONES, stone); } } \ No newline at end of file diff --git a/src/main/java/ru/betterend/entity/EndSlimeEntity.java b/src/main/java/ru/betterend/entity/EndSlimeEntity.java index f44cb34c..98e69f68 100644 --- a/src/main/java/ru/betterend/entity/EndSlimeEntity.java +++ b/src/main/java/ru/betterend/entity/EndSlimeEntity.java @@ -33,13 +33,14 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.level.block.Blocks; -import ru.bclib.api.TagAPI; import ru.bclib.api.biomes.BiomeAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.world.biomes.BCLBiome; import ru.betterend.interfaces.ISlime; import ru.betterend.registry.EndBiomes; +import ru.betterend.util.GlobalState; import java.util.EnumSet; import java.util.Random; @@ -49,7 +50,6 @@ public class EndSlimeEntity extends Slime { EndSlimeEntity.class, EntityDataSerializers.BYTE ); - private static final MutableBlockPos POS = new MutableBlockPos(); public EndSlimeEntity(EntityType entityType, Level world) { super(entityType, world); @@ -213,7 +213,7 @@ public class EndSlimeEntity extends Slime { } public static boolean canSpawn(EntityType entityType, LevelAccessor world, MobSpawnType spawnType, BlockPos pos, Random random) { - if (!world.getBlockState(pos.below()).is(TagAPI.BLOCK_END_GROUND)) { + if (!world.getBlockState(pos.below()).is(CommonBlockTags.END_STONES)) { return false; } BCLBiome biome = BiomeAPI.getFromBiome(world.getBiome(pos)); @@ -227,6 +227,8 @@ public class EndSlimeEntity extends Slime { } private static boolean isWaterNear(LevelAccessor world, BlockPos pos) { + final MutableBlockPos POS = GlobalState.stateForThread().POS; + for (int x = pos.getX() - 32; x <= pos.getX() + 32; x++) { POS.setX(x); for (int z = pos.getZ() - 32; z <= pos.getZ() + 32; z++) { diff --git a/src/main/java/ru/betterend/integration/EnderscapeIntegration.java b/src/main/java/ru/betterend/integration/EnderscapeIntegration.java index 83099d0c..992a7516 100644 --- a/src/main/java/ru/betterend/integration/EnderscapeIntegration.java +++ b/src/main/java/ru/betterend/integration/EnderscapeIntegration.java @@ -4,9 +4,10 @@ import net.minecraft.core.MappedRegistry; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.levelgen.GenerationStep.Decoration; -import ru.bclib.api.TagAPI; import ru.bclib.api.biomes.BiomeAPI; -import ru.bclib.integration.modmenu.ModIntegration; +import ru.bclib.api.tag.NamedCommonBlockTags; +import ru.bclib.api.tag.TagAPI; +import ru.bclib.integration.ModIntegration; import ru.bclib.world.features.BCLFeature; public class EnderscapeIntegration extends ModIntegration { @@ -42,7 +43,7 @@ public class EnderscapeIntegration extends ModIntegration { } }); - TagAPI.addTag(TagAPI.BLOCK_GEN_TERRAIN, getBlock("nebulite_ore")); - TagAPI.addTag(TagAPI.BLOCK_GEN_TERRAIN, getBlock("shadow_quartz_ore")); + TagAPI.addBlockTag(NamedCommonBlockTags.GEN_END_STONES, getBlock("nebulite_ore")); + TagAPI.addBlockTag(NamedCommonBlockTags.GEN_END_STONES, getBlock("shadow_quartz_ore")); } } diff --git a/src/main/java/ru/betterend/integration/FlamboyantRefabricatedIntegration.java b/src/main/java/ru/betterend/integration/FlamboyantRefabricatedIntegration.java index f2c7d178..c8f45267 100644 --- a/src/main/java/ru/betterend/integration/FlamboyantRefabricatedIntegration.java +++ b/src/main/java/ru/betterend/integration/FlamboyantRefabricatedIntegration.java @@ -2,7 +2,7 @@ package ru.betterend.integration; import com.google.common.collect.Maps; import net.minecraft.world.level.ItemLike; -import ru.bclib.integration.modmenu.ModIntegration; +import ru.bclib.integration.ModIntegration; import ru.bclib.util.ColorUtil; import ru.betterend.blocks.HydraluxPetalColoredBlock; import ru.betterend.complexmaterials.ColoredMaterial; diff --git a/src/main/java/ru/betterend/integration/Integrations.java b/src/main/java/ru/betterend/integration/Integrations.java index 837b8fb8..21a7a9aa 100644 --- a/src/main/java/ru/betterend/integration/Integrations.java +++ b/src/main/java/ru/betterend/integration/Integrations.java @@ -5,7 +5,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import ru.bclib.api.ModIntegrationAPI; -import ru.bclib.integration.modmenu.ModIntegration; +import ru.bclib.integration.ModIntegration; import ru.bclib.recipes.GridRecipe; import ru.betterend.BetterEnd; import ru.betterend.config.Configs; diff --git a/src/main/java/ru/betterend/integration/NourishIntegration.java b/src/main/java/ru/betterend/integration/NourishIntegration.java index 4d17a020..518c0f8a 100644 --- a/src/main/java/ru/betterend/integration/NourishIntegration.java +++ b/src/main/java/ru/betterend/integration/NourishIntegration.java @@ -1,9 +1,9 @@ package ru.betterend.integration; -import net.minecraft.tags.Tag; import net.minecraft.world.item.Item; -import ru.bclib.api.TagAPI; -import ru.bclib.integration.modmenu.ModIntegration; +import ru.bclib.api.tag.TagAPI; +import ru.bclib.api.tag.TagAPI.TagLocation; +import ru.bclib.integration.ModIntegration; import ru.betterend.registry.EndItems; public class NourishIntegration extends ModIntegration { @@ -13,13 +13,13 @@ public class NourishIntegration extends ModIntegration { @Override public void init() { - Tag.Named fats = getItemTag("fats"); - Tag.Named fruit = getItemTag("fruit"); - Tag.Named protein = getItemTag("protein"); - Tag.Named sweets = getItemTag("sweets"); + TagLocation fats = TagLocation.of(getItemTag("fats")); + TagLocation fruit = TagLocation.of(getItemTag("fruit")); + TagLocation protein = TagLocation.of(getItemTag("protein")); + TagLocation sweets = TagLocation.of(getItemTag("sweets")); - TagAPI.addTag(fats, EndItems.END_FISH_RAW, EndItems.END_FISH_COOKED); - TagAPI.addTag( + TagAPI.addItemTag(fats, EndItems.END_FISH_RAW, EndItems.END_FISH_COOKED); + TagAPI.addItemTag( fruit, EndItems.SHADOW_BERRY_RAW, EndItems.SHADOW_BERRY_COOKED, @@ -32,7 +32,7 @@ public class NourishIntegration extends ModIntegration { EndItems.CHORUS_MUSHROOM_COOKED, EndItems.BOLUX_MUSHROOM_COOKED ); - TagAPI.addTag( + TagAPI.addItemTag( protein, EndItems.END_FISH_RAW, EndItems.END_FISH_COOKED, @@ -40,7 +40,7 @@ public class NourishIntegration extends ModIntegration { EndItems.BOLUX_MUSHROOM_COOKED, EndItems.CAVE_PUMPKIN_PIE ); - TagAPI.addTag( + TagAPI.addItemTag( sweets, EndItems.SHADOW_BERRY_JELLY, EndItems.SWEET_BERRY_JELLY, diff --git a/src/main/java/ru/betterend/integration/byg/BYGIntegration.java b/src/main/java/ru/betterend/integration/byg/BYGIntegration.java index 7d00ea2a..429b6f0d 100644 --- a/src/main/java/ru/betterend/integration/byg/BYGIntegration.java +++ b/src/main/java/ru/betterend/integration/byg/BYGIntegration.java @@ -1,6 +1,6 @@ package ru.betterend.integration.byg; -import ru.bclib.integration.modmenu.ModIntegration; +import ru.bclib.integration.ModIntegration; import ru.betterend.integration.EndBiomeIntegration; public class BYGIntegration extends ModIntegration implements EndBiomeIntegration { @@ -12,7 +12,7 @@ public class BYGIntegration extends ModIntegration implements EndBiomeIntegratio public void init() { /*Block block = Integrations.BYG.getBlock("ivis_phylium"); if (block != null) { - TagAPI.addTags(block, TagAPI.BLOCK_END_GROUND, TagAPI.BLOCK_GEN_TERRAIN); + TagAPI.addTags(block, CommonBlockTags.END_STONES, CommonBlockTags.GEN_END_STONES); } BYGBlocks.register(); BYGFeatures.register(); diff --git a/src/main/java/ru/betterend/integration/byg/features/BigEtherTreeFeature.java b/src/main/java/ru/betterend/integration/byg/features/BigEtherTreeFeature.java index de5ad664..155f7c9b 100644 --- a/src/main/java/ru/betterend/integration/byg/features/BigEtherTreeFeature.java +++ b/src/main/java/ru/betterend/integration/byg/features/BigEtherTreeFeature.java @@ -8,7 +8,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.sdf.SDF; import ru.bclib.util.MHelper; import ru.bclib.util.SplineHelper; @@ -24,7 +24,7 @@ public class BigEtherTreeFeature extends DefaultFeature { final Random random = featureConfig.random(); final BlockPos pos = featureConfig.origin(); final WorldGenLevel world = featureConfig.level(); - if (!world.getBlockState(pos.below()).is(TagAPI.BLOCK_END_GROUND)) return false; + if (!world.getBlockState(pos.below()).is(CommonBlockTags.END_STONES)) return false; BlockState log = Integrations.BYG.getDefaultState("ether_log"); BlockState wood = Integrations.BYG.getDefaultState("ether_wood"); @@ -32,7 +32,7 @@ public class BigEtherTreeFeature extends DefaultFeature { return log; }; Function replace = (state) -> { - return state.is(TagAPI.BLOCK_END_GROUND) || state.getMaterial().equals(Material.PLANT) || state.getMaterial() + return state.is(CommonBlockTags.END_STONES) || state.getMaterial().equals(Material.PLANT) || state.getMaterial() .isReplaceable(); }; @@ -63,7 +63,7 @@ public class BigEtherTreeFeature extends DefaultFeature { } sdf.setReplaceFunction((state) -> { - return state.is(TagAPI.BLOCK_END_GROUND) || state.getMaterial().equals(Material.PLANT) || state.getMaterial() + return state.is(CommonBlockTags.END_STONES) || state.getMaterial().equals(Material.PLANT) || state.getMaterial() .isReplaceable(); }).addPostProcess((info) -> { if (info.getState().equals(log) && (!info.getStateUp().equals(log) || !info.getStateDown().equals(log))) { diff --git a/src/main/java/ru/betterend/integration/byg/features/NightshadeRedwoodTreeFeature.java b/src/main/java/ru/betterend/integration/byg/features/NightshadeRedwoodTreeFeature.java index ef330a00..0bbee4e7 100644 --- a/src/main/java/ru/betterend/integration/byg/features/NightshadeRedwoodTreeFeature.java +++ b/src/main/java/ru/betterend/integration/byg/features/NightshadeRedwoodTreeFeature.java @@ -13,7 +13,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.sdf.PosInfo; import ru.bclib.sdf.SDF; import ru.bclib.sdf.operator.SDFDisplacement; @@ -38,7 +38,7 @@ public class NightshadeRedwoodTreeFeature extends DefaultFeature { final Random random = featureConfig.random(); final BlockPos pos = featureConfig.origin(); final WorldGenLevel world = featureConfig.level(); - if (!world.getBlockState(pos.below()).is(TagAPI.BLOCK_END_GROUND)) return false; + if (!world.getBlockState(pos.below()).is(CommonBlockTags.END_STONES)) return false; BlockState log = Integrations.BYG.getDefaultState("nightshade_log"); BlockState wood = Integrations.BYG.getDefaultState("nightshade_wood"); @@ -49,7 +49,7 @@ public class NightshadeRedwoodTreeFeature extends DefaultFeature { return log; }; Function replace = (state) -> { - return state.is(TagAPI.BLOCK_END_GROUND) || state.getMaterial().equals(Material.PLANT) || state.getMaterial() + return state.is(CommonBlockTags.END_STONES) || state.getMaterial().equals(Material.PLANT) || state.getMaterial() .isReplaceable(); }; Function post = (info) -> { diff --git a/src/main/java/ru/betterend/integration/byg/features/OldBulbisTreeFeature.java b/src/main/java/ru/betterend/integration/byg/features/OldBulbisTreeFeature.java index b874a391..2f05a6b1 100644 --- a/src/main/java/ru/betterend/integration/byg/features/OldBulbisTreeFeature.java +++ b/src/main/java/ru/betterend/integration/byg/features/OldBulbisTreeFeature.java @@ -11,7 +11,8 @@ import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; import net.minecraft.world.phys.AABB; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; +import ru.bclib.api.tag.TagAPI; import ru.bclib.sdf.SDF; import ru.bclib.sdf.operator.SDFDisplacement; import ru.bclib.sdf.operator.SDFSubtraction; @@ -39,8 +40,8 @@ public class OldBulbisTreeFeature extends DefaultFeature { final Random random = featureConfig.random(); final BlockPos pos = featureConfig.origin(); final WorldGenLevel world = featureConfig.level(); - if (!world.getBlockState(pos.below()).is(TagAPI.BLOCK_END_GROUND)) return false; - if (!world.getBlockState(pos.below(4)).is(TagAPI.BLOCK_GEN_TERRAIN)) return false; + if (!world.getBlockState(pos.below()).is(CommonBlockTags.END_STONES)) return false; + if (!world.getBlockState(pos.below(4)).is(CommonBlockTags.GEN_END_STONES)) return false; BlockState stem = Integrations.BYG.getDefaultState("bulbis_stem"); BlockState wood = Integrations.BYG.getDefaultState("bulbis_wood"); @@ -48,7 +49,7 @@ public class OldBulbisTreeFeature extends DefaultFeature { BlockState glow = Integrations.BYG.getDefaultState("purple_shroomlight"); Function replacement = (state) -> { - if (state.equals(stem) || state.equals(wood) || state.is(TagAPI.BLOCK_END_GROUND) || state.getMaterial() + if (state.equals(stem) || state.equals(wood) || state.is(CommonBlockTags.END_STONES) || state.getMaterial() .equals(Material.PLANT)) { return true; } @@ -155,7 +156,7 @@ public class OldBulbisTreeFeature extends DefaultFeature { SplineHelper.rotateSpline(branch, angle); SplineHelper.scale(branch, scale); Vector3f last = branch.get(branch.size() - 1); - if (world.getBlockState(pos.offset(last.x(), last.y(), last.z())).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (world.getBlockState(pos.offset(last.x(), last.y(), last.z())).is(CommonBlockTags.GEN_END_STONES)) { SplineHelper.fillSpline(branch, world, wood, pos, replacement); } } diff --git a/src/main/java/ru/betterend/item/tool/EndHammerItem.java b/src/main/java/ru/betterend/item/tool/EndHammerItem.java index d5536255..b4907e85 100644 --- a/src/main/java/ru/betterend/item/tool/EndHammerItem.java +++ b/src/main/java/ru/betterend/item/tool/EndHammerItem.java @@ -24,16 +24,21 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Tier; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonItemTags; +import ru.bclib.api.tag.NamedCommonItemTags; +import ru.bclib.api.tag.TagAPI.TagLocation; import ru.bclib.client.models.ModelsHelper; import ru.bclib.interfaces.ItemModelProvider; +import ru.bclib.interfaces.TagProvider; +import java.util.List; import java.util.UUID; -public class EndHammerItem extends DiggerItem implements DynamicAttributeTool, ItemModelProvider { +public class EndHammerItem extends DiggerItem implements DynamicAttributeTool, ItemModelProvider, TagProvider { public final static UUID ATTACK_KNOCKBACK_MODIFIER_ID = Mth.createInsecureUUID(ThreadLocalRandom.current()); private final Multimap attributeModifiers; @@ -113,7 +118,7 @@ public class EndHammerItem extends DiggerItem implements DynamicAttributeTool, I @Override public float getMiningSpeedMultiplier(Tag tag, BlockState state, ItemStack stack, LivingEntity user) { - if (tag.equals(TagAPI.ITEM_HAMMERS)) { + if (tag.equals(CommonItemTags.HAMMERS)) { return this.getDestroySpeed(stack, state); } return 1.0F; @@ -121,7 +126,7 @@ public class EndHammerItem extends DiggerItem implements DynamicAttributeTool, I @Override public int getMiningLevel(Tag tag, BlockState state, ItemStack stack, LivingEntity user) { - if (tag.equals(TagAPI.ITEM_HAMMERS)) { + if (tag.equals(CommonItemTags.HAMMERS)) { return this.getTier().getLevel(); } return 0; @@ -161,4 +166,9 @@ public class EndHammerItem extends DiggerItem implements DynamicAttributeTool, I public BlockModel getItemModel(ResourceLocation resourceLocation) { return ModelsHelper.createHandheldItem(resourceLocation); } + + @Override + public void addTags(List> blockTags, List> itemTags) { + itemTags.add(NamedCommonItemTags.HAMMERS); + } } diff --git a/src/main/java/ru/betterend/mixin/common/ChorusFlowerBlockMixin.java b/src/main/java/ru/betterend/mixin/common/ChorusFlowerBlockMixin.java index 7acd396b..8aa684f3 100644 --- a/src/main/java/ru/betterend/mixin/common/ChorusFlowerBlockMixin.java +++ b/src/main/java/ru/betterend/mixin/common/ChorusFlowerBlockMixin.java @@ -20,7 +20,8 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; +import ru.bclib.api.tag.TagAPI; import ru.bclib.util.BlocksHelper; import ru.betterend.registry.EndBlocks; import ru.betterend.world.generator.GeneratorOptions; @@ -50,7 +51,7 @@ public abstract class ChorusFlowerBlockMixin extends Block { @Inject(method = "randomTick", at = @At("HEAD"), cancellable = true) private void be_randomTick(BlockState state, ServerLevel world, BlockPos pos, Random random, CallbackInfo info) { - if (world.getBlockState(pos.below()).is(TagAPI.BLOCK_END_GROUND)) { + if (world.getBlockState(pos.below()).is(CommonBlockTags.END_STONES)) { BlockPos up = pos.above(); if (world.isEmptyBlock(up) && up.getY() < 256) { int i = state.getValue(ChorusFlowerBlock.AGE); @@ -80,7 +81,7 @@ public abstract class ChorusFlowerBlockMixin extends Block { @Inject(method = "placeDeadFlower", at = @At("HEAD"), cancellable = true) private void be_placeDeadFlower(Level world, BlockPos pos, CallbackInfo info) { BlockState down = world.getBlockState(pos.below()); - if (down.is(Blocks.CHORUS_PLANT) || down.is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (down.is(Blocks.CHORUS_PLANT) || down.is(CommonBlockTags.GEN_END_STONES)) { world.setBlock(pos, this.defaultBlockState().setValue(BlockStateProperties.AGE_5, 5), 2); world.levelEvent(1034, pos, 0); } diff --git a/src/main/java/ru/betterend/mixin/common/ChorusPlantBlockMixin.java b/src/main/java/ru/betterend/mixin/common/ChorusPlantBlockMixin.java index 74cfac6d..89251667 100644 --- a/src/main/java/ru/betterend/mixin/common/ChorusPlantBlockMixin.java +++ b/src/main/java/ru/betterend/mixin/common/ChorusPlantBlockMixin.java @@ -16,7 +16,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.betterend.registry.EndBlocks; @Mixin(value = ChorusPlantBlock.class, priority = 100) @@ -30,7 +30,7 @@ public abstract class ChorusPlantBlockMixin extends Block { BlockPos pos = ctx.getClickedPos(); Level world = ctx.getLevel(); BlockState plant = info.getReturnValue(); - if (ctx.canPlace() && plant.is(Blocks.CHORUS_PLANT) && world.getBlockState(pos.below()).is(TagAPI.BLOCK_END_GROUND)) { + if (ctx.canPlace() && plant.is(Blocks.CHORUS_PLANT) && world.getBlockState(pos.below()).is(CommonBlockTags.END_STONES)) { info.setReturnValue(plant.setValue(BlockStateProperties.DOWN, true)); } } @@ -38,7 +38,7 @@ public abstract class ChorusPlantBlockMixin extends Block { @Inject(method = "Lnet/minecraft/world/level/block/ChorusPlantBlock;getStateForPlacement" + "(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)" + "Lnet/minecraft/world/level/block/state/BlockState;", at = @At("RETURN"), cancellable = true) private void be_getStateForPlacement(BlockGetter blockGetter, BlockPos blockPos, CallbackInfoReturnable info) { BlockState plant = info.getReturnValue(); - if (plant.is(Blocks.CHORUS_PLANT) && blockGetter.getBlockState(blockPos.below()).is(TagAPI.BLOCK_END_GROUND)) { + if (plant.is(Blocks.CHORUS_PLANT) && blockGetter.getBlockState(blockPos.below()).is(CommonBlockTags.END_STONES)) { info.setReturnValue(plant.setValue(BlockStateProperties.DOWN, true)); } } @@ -54,7 +54,7 @@ public abstract class ChorusPlantBlockMixin extends Block { @Inject(method = "updateShape", at = @At("RETURN"), cancellable = true) private void be_updateShape(BlockState state, Direction direction, BlockState newState, LevelAccessor world, BlockPos pos, BlockPos posFrom, CallbackInfoReturnable info) { BlockState plant = info.getReturnValue(); - if (plant.is(Blocks.CHORUS_PLANT) && world.getBlockState(pos.below()).is(TagAPI.BLOCK_END_GROUND)) { + if (plant.is(Blocks.CHORUS_PLANT) && world.getBlockState(pos.below()).is(CommonBlockTags.END_STONES)) { plant = plant.setValue(BlockStateProperties.DOWN, true); info.setReturnValue(plant); } diff --git a/src/main/java/ru/betterend/mixin/common/EnchantmentMenuMixin.java b/src/main/java/ru/betterend/mixin/common/EnchantmentMenuMixin.java index 77cb6d3e..d2f5e986 100644 --- a/src/main/java/ru/betterend/mixin/common/EnchantmentMenuMixin.java +++ b/src/main/java/ru/betterend/mixin/common/EnchantmentMenuMixin.java @@ -16,7 +16,7 @@ import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import java.util.List; import java.util.Random; @@ -71,28 +71,28 @@ public abstract class EnchantmentMenuMixin extends AbstractContainerMenu { 0, j )) && world.isEmptyBlock(blockPos.offset(k, 1, j))) { - if (world.getBlockState(blockPos.offset(k * 2, 0, j * 2)).is(TagAPI.BLOCK_BOOKSHELVES)) { + if (world.getBlockState(blockPos.offset(k * 2, 0, j * 2)).is(CommonBlockTags.BOOKSHELVES)) { ++i; } - if (world.getBlockState(blockPos.offset(k * 2, 1, j * 2)).is(TagAPI.BLOCK_BOOKSHELVES)) { + if (world.getBlockState(blockPos.offset(k * 2, 1, j * 2)).is(CommonBlockTags.BOOKSHELVES)) { ++i; } if (k != 0 && j != 0) { - if (world.getBlockState(blockPos.offset(k * 2, 0, j)).is(TagAPI.BLOCK_BOOKSHELVES)) { + if (world.getBlockState(blockPos.offset(k * 2, 0, j)).is(CommonBlockTags.BOOKSHELVES)) { ++i; } - if (world.getBlockState(blockPos.offset(k * 2, 1, j)).is(TagAPI.BLOCK_BOOKSHELVES)) { + if (world.getBlockState(blockPos.offset(k * 2, 1, j)).is(CommonBlockTags.BOOKSHELVES)) { ++i; } - if (world.getBlockState(blockPos.offset(k, 0, j * 2)).is(TagAPI.BLOCK_BOOKSHELVES)) { + if (world.getBlockState(blockPos.offset(k, 0, j * 2)).is(CommonBlockTags.BOOKSHELVES)) { ++i; } - if (world.getBlockState(blockPos.offset(k, 1, j * 2)).is(TagAPI.BLOCK_BOOKSHELVES)) { + if (world.getBlockState(blockPos.offset(k, 1, j * 2)).is(CommonBlockTags.BOOKSHELVES)) { ++i; } } diff --git a/src/main/java/ru/betterend/recipe/CraftingRecipes.java b/src/main/java/ru/betterend/recipe/CraftingRecipes.java index 559dcfc9..92e9227f 100644 --- a/src/main/java/ru/betterend/recipe/CraftingRecipes.java +++ b/src/main/java/ru/betterend/recipe/CraftingRecipes.java @@ -7,7 +7,7 @@ import net.minecraft.world.item.alchemy.PotionUtils; import net.minecraft.world.item.alchemy.Potions; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonItemTags; import ru.bclib.recipes.GridRecipe; import ru.betterend.BetterEnd; import ru.betterend.config.Configs; @@ -34,7 +34,7 @@ public class CraftingRecipes { .setShape("T#T", "V V", "T#T") .addMaterial('#', Blocks.END_STONE_BRICKS) .addMaterial('T', EndBlocks.THALLASIUM.ingot) - .addMaterial('V', TagAPI.ITEM_FURNACES) + .addMaterial('V', CommonItemTags.FURNACES) .build(); registerPedestal( diff --git a/src/main/java/ru/betterend/registry/EndTags.java b/src/main/java/ru/betterend/registry/EndTags.java index 569932b9..ee139b9b 100644 --- a/src/main/java/ru/betterend/registry/EndTags.java +++ b/src/main/java/ru/betterend/registry/EndTags.java @@ -6,9 +6,6 @@ import net.fabricmc.fabric.impl.tool.attribute.handlers.ModdedToolsVanillaBlocks import net.fabricmc.fabric.mixin.object.builder.AbstractBlockAccessor; import net.fabricmc.fabric.mixin.object.builder.AbstractBlockSettingsAccessor; import net.minecraft.core.Registry; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.ItemTags; -import net.minecraft.tags.Tag; import net.minecraft.world.food.FoodProperties; import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; @@ -20,13 +17,21 @@ import net.minecraft.world.level.block.state.BlockBehaviour.Properties; import net.minecraft.world.level.material.Material; import ru.bclib.api.BonemealAPI; import ru.bclib.api.ComposterAPI; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonItemTags; +import ru.bclib.api.tag.NamedBlockTags; +import ru.bclib.api.tag.NamedCommonBlockTags; +import ru.bclib.api.tag.NamedCommonItemTags; +import ru.bclib.api.tag.NamedItemTags; +import ru.bclib.api.tag.NamedMineableTags; +import ru.bclib.api.tag.TagAPI; +import ru.bclib.api.tag.TagAPI.TagNamed; import ru.bclib.blocks.BaseVineBlock; import ru.bclib.blocks.SimpleLeavesBlock; import ru.betterend.BetterEnd; import ru.betterend.blocks.basis.EndTerrainBlock; import ru.betterend.blocks.basis.PedestalBlock; import ru.betterend.item.tool.EndHammerItem; +import ru.betterend.world.biome.EndBiome; import java.util.List; @@ -35,17 +40,17 @@ public class EndTags { // https://fabricmc.net/wiki/tutorial:tags // Block Tags - public static final Tag.Named PEDESTALS = TagAPI.makeBlockTag(BetterEnd.MOD_ID, "pedestal"); + public static final TagNamed PEDESTALS = TagAPI.makeBlockTag(BetterEnd.MOD_ID, "pedestal"); // Item Tags - public static final Tag.Named ALLOYING_IRON = TagAPI.makeItemTag(BetterEnd.MOD_ID, "alloying_iron"); - public static final Tag.Named ALLOYING_GOLD = TagAPI.makeItemTag(BetterEnd.MOD_ID, "alloying_gold"); - public static final Tag.Named ALLOYING_COPPER = TagAPI.makeItemTag(BetterEnd.MOD_ID, "alloying_copper"); + public static final TagNamed ALLOYING_IRON = TagAPI.makeItemTag(BetterEnd.MOD_ID, "alloying_iron"); + public static final TagNamed ALLOYING_GOLD = TagAPI.makeItemTag(BetterEnd.MOD_ID, "alloying_gold"); + public static final TagNamed ALLOYING_COPPER = TagAPI.makeItemTag(BetterEnd.MOD_ID, "alloying_copper"); public static void register() { - TagAPI.addEndGround(EndBlocks.THALLASIUM.ore); - TagAPI.addEndGround(EndBlocks.ENDSTONE_DUST); - TagAPI.addEndGround(EndBlocks.AMBER_ORE); + addEndGround(EndBlocks.THALLASIUM.ore); + addEndGround(EndBlocks.ENDSTONE_DUST); + addEndGround(EndBlocks.AMBER_ORE); EndBlocks.getModBlocks().forEach(block -> { Properties properties = ((AbstractBlockAccessor) block).getSettings(); @@ -53,32 +58,32 @@ public class EndTags { final Item item = block.asItem(); if (material.equals(Material.STONE) || material.equals(Material.METAL) || material.equals(Material.HEAVY_METAL)) { - TagAPI.addTag(TagAPI.MINEABLE_PICKAXE, block); + TagAPI.addBlockTag(NamedMineableTags.PICKAXE, block); } else if (material.equals(Material.WOOD)) { - TagAPI.addTag(TagAPI.MINEABLE_AXE, block); + TagAPI.addBlockTag(NamedMineableTags.AXE, block); } else if (material.equals(Material.LEAVES) || material.equals(Material.PLANT) || material.equals(Material.WATER_PLANT) || material.equals(Material.SPONGE)) { - TagAPI.addTag(TagAPI.MINEABLE_HOE, block); + TagAPI.addBlockTag(NamedMineableTags.HOE, block); } else if (material.equals(Material.SAND)) { - TagAPI.addTag(TagAPI.MINEABLE_SHOVEL, block); + TagAPI.addBlockTag(NamedMineableTags.SHOVEL, block); } if (block instanceof EndTerrainBlock) { - TagAPI.addEndGround(block); - TagAPI.addTag(BlockTags.NYLIUM, block); + addEndGround(block); + TagAPI.addBlockTag(NamedBlockTags.NYLIUM, block); BonemealAPI.addSpreadableBlock(block, Blocks.END_STONE); } else if (block instanceof LeavesBlock || block instanceof SimpleLeavesBlock) { - TagAPI.addTag(BlockTags.LEAVES, block); + TagAPI.addBlockTag(NamedBlockTags.LEAVES, block); ComposterAPI.allowCompost(0.3f, item); } else if (block instanceof BaseVineBlock) { - TagAPI.addTag(BlockTags.CLIMBABLE, block); + TagAPI.addBlockTag(NamedBlockTags.CLIMBABLE, block); } else if (block instanceof PedestalBlock) { - TagAPI.addTag(PEDESTALS, block); + TagAPI.addBlockTag(PEDESTALS.getName(), block); } Material mat = block.defaultBlockState().getMaterial(); @@ -86,8 +91,8 @@ public class EndTags { ComposterAPI.allowCompost(0.1F, item); } }); - TagAPI.addEndGround(EndBlocks.CAVE_MOSS); - TagAPI.addTag(BlockTags.NYLIUM, EndBlocks.CAVE_MOSS); + addEndGround(EndBlocks.CAVE_MOSS); + TagAPI.addBlockTag(NamedBlockTags.NYLIUM, EndBlocks.CAVE_MOSS); BonemealAPI.addSpreadableBlock(EndBlocks.CAVE_MOSS, Blocks.END_STONE); BonemealAPI.addSpreadableBlock(EndBlocks.MOSSY_OBSIDIAN, Blocks.OBSIDIAN); BonemealAPI.addSpreadableBlock(EndBlocks.MOSSY_DRAGON_BONE, EndBlocks.DRAGON_BONE_BLOCK); @@ -105,30 +110,39 @@ public class EndTags { ITEM_HAMMERS.add(item); } }); - ToolManagerImpl.tag(TagAPI.ITEM_HAMMERS).register(new ModdedToolsVanillaBlocksToolHandler(ITEM_HAMMERS)); - TagAPI.addTag(TagAPI.ITEM_HAMMERS, EndItems.AETERNIUM_HAMMER); + ToolManagerImpl.tag(CommonItemTags.HAMMERS).register(new ModdedToolsVanillaBlocksToolHandler(ITEM_HAMMERS)); - TagAPI.addTag( - TagAPI.BLOCK_GEN_TERRAIN, + TagAPI.addBlockTag( + NamedCommonBlockTags.GEN_END_STONES, EndBlocks.ENDER_ORE, EndBlocks.BRIMSTONE ); - TagAPI.addTag(TagAPI.BLOCK_END_GROUND, EndBlocks.BRIMSTONE); - TagAPI.addTag(BlockTags.ANVIL, EndBlocks.AETERNIUM_ANVIL); - TagAPI.addTag(BlockTags.BEACON_BASE_BLOCKS, EndBlocks.AETERNIUM_BLOCK); - TagAPI.addTag(ItemTags.BEACON_PAYMENT_ITEMS, EndItems.AETERNIUM_INGOT); - TagAPI.addTag( - TagAPI.BLOCK_DRAGON_IMMUNE, + TagAPI.addBlockTag(NamedCommonBlockTags.END_STONES, EndBlocks.BRIMSTONE); + TagAPI.addBlockTag(NamedBlockTags.ANVIL, EndBlocks.AETERNIUM_ANVIL); + TagAPI.addBlockTag(NamedBlockTags.BEACON_BASE_BLOCKS, EndBlocks.AETERNIUM_BLOCK); + TagAPI.addItemTag(NamedItemTags.BEACON_PAYMENT_ITEMS, EndItems.AETERNIUM_INGOT); + TagAPI.addBlockTag( + NamedCommonBlockTags.DRAGON_IMMUNE, EndBlocks.ENDER_ORE, EndBlocks.ETERNAL_PEDESTAL, EndBlocks.FLAVOLITE_RUNED_ETERNAL, EndBlocks.FLAVOLITE_RUNED ); - TagAPI.addTag(TagAPI.ITEM_IRON_INGOTS, EndBlocks.THALLASIUM.ingot); + TagAPI.addItemTag(NamedCommonItemTags.IRON_INGOTS, EndBlocks.THALLASIUM.ingot); - TagAPI.addTag(ALLOYING_IRON, Items.IRON_ORE, Items.DEEPSLATE_IRON_ORE, Items.RAW_IRON); - TagAPI.addTag(ALLOYING_GOLD, Items.GOLD_ORE, Items.DEEPSLATE_GOLD_ORE, Items.RAW_GOLD); - TagAPI.addTag(ALLOYING_COPPER, Items.COPPER_ORE, Items.DEEPSLATE_COPPER_ORE, Items.RAW_COPPER); + TagAPI.addItemTag(ALLOYING_IRON.getName(), Items.IRON_ORE, Items.DEEPSLATE_IRON_ORE, Items.RAW_IRON); + TagAPI.addItemTag(ALLOYING_GOLD.getName(), Items.GOLD_ORE, Items.DEEPSLATE_GOLD_ORE, Items.RAW_GOLD); + TagAPI.addItemTag(ALLOYING_COPPER.getName(), Items.COPPER_ORE, Items.DEEPSLATE_COPPER_ORE, Items.RAW_COPPER); + } + + public static void addEndGround(Block bl){ + TagAPI.addBlockTag(NamedCommonBlockTags.END_STONES, bl); + } + + public static void addBiomeSurfaceToEndGroup(EndBiome b){ + addEndGround(b.getTopMaterial().getBlock()); + addEndGround(b.getAltTopMaterial().getBlock()); + addEndGround(b.getUnderMaterial().getBlock()); } // TODO make getter for biome top blocks @@ -138,8 +152,8 @@ public class EndTags { SurfaceBuilderConfiguration config = biome.getGenerationSettings().getSurfaceBuilderConfig(); Block under = config.getUnderMaterial().getBlock(); Block surface = config.getTopMaterial().getBlock(); - TagAPI.addTag(TagAPI.BLOCK_GEN_TERRAIN, under, surface); - TagAPI.addTag(TagAPI.BLOCK_END_GROUND, surface); + TagAPI.addTag(CommonBlockTags.GEN_END_STONES, under, surface); + TagAPI.addTag(CommonBlockTags.END_STONES, surface); } }); TagAPI.BLOCK_END_STONES.getValues().forEach(TagAPI::addEndGround);*/ diff --git a/src/main/java/ru/betterend/rituals/InfusionRitual.java b/src/main/java/ru/betterend/rituals/InfusionRitual.java index 689e9fca..47eaf977 100644 --- a/src/main/java/ru/betterend/rituals/InfusionRitual.java +++ b/src/main/java/ru/betterend/rituals/InfusionRitual.java @@ -228,7 +228,7 @@ public class InfusionRitual implements Container { } } - public void markDirty() { + public void setDirty() { this.isDirty = true; } diff --git a/src/main/java/ru/betterend/util/GlobalState.java b/src/main/java/ru/betterend/util/GlobalState.java new file mode 100644 index 00000000..4f20c85b --- /dev/null +++ b/src/main/java/ru/betterend/util/GlobalState.java @@ -0,0 +1,10 @@ +package ru.betterend.util; + +import net.minecraft.core.BlockPos.MutableBlockPos; + +public class GlobalState { + private static final ThreadLocal STATE = ThreadLocal.withInitial(()->new GlobalState()); + public static GlobalState stateForThread() { return STATE.get(); } + + public final MutableBlockPos POS = new MutableBlockPos(); +} diff --git a/src/main/java/ru/betterend/util/StructureErode.java b/src/main/java/ru/betterend/util/StructureErode.java index 82441194..7e268a3a 100644 --- a/src/main/java/ru/betterend/util/StructureErode.java +++ b/src/main/java/ru/betterend/util/StructureErode.java @@ -10,7 +10,8 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.structure.BoundingBox; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; +import ru.bclib.api.tag.TagAPI; import ru.bclib.api.biomes.BiomeAPI; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; @@ -241,7 +242,7 @@ public class StructureErode { } private static boolean ignore(BlockState state, WorldGenLevel world, BlockPos pos) { - if (state.is(TagAPI.BLOCK_GEN_TERRAIN) || state.is(BlockTags.NYLIUM)) { + if (state.is(CommonBlockTags.GEN_END_STONES) || state.is(BlockTags.NYLIUM)) { return true; } return !state.getMaterial().equals(Material.STONE) || BlocksHelper.isInvulnerable(state, world, pos); @@ -249,7 +250,7 @@ public class StructureErode { private static boolean isTerrainNear(WorldGenLevel world, BlockPos pos) { for (Direction dir : BlocksHelper.DIRECTIONS) { - if (world.getBlockState(pos.relative(dir)).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (world.getBlockState(pos.relative(dir)).is(CommonBlockTags.GEN_END_STONES)) { return true; } } @@ -266,7 +267,7 @@ public class StructureErode { for (int y = bounds.maxY(); y >= bounds.minY(); y--) { mut.setY(y); BlockState state = world.getBlockState(mut); - if (state.is(TagAPI.BLOCK_END_GROUND) && !world.getBlockState(mut.above()).getMaterial().isSolidBlocking()) { + if (state.is(CommonBlockTags.END_STONES) && !world.getBlockState(mut.above()).getMaterial().isSolidBlocking()) { BlocksHelper.setWithoutUpdate(world, mut, top); } } diff --git a/src/main/java/ru/betterend/world/biome/EndBiome.java b/src/main/java/ru/betterend/world/biome/EndBiome.java index 7e0601d4..5449b78e 100644 --- a/src/main/java/ru/betterend/world/biome/EndBiome.java +++ b/src/main/java/ru/betterend/world/biome/EndBiome.java @@ -10,17 +10,18 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.SurfaceRules; import ru.bclib.api.biomes.BCLBiomeBuilder; +import ru.bclib.api.biomes.BCLBiomeBuilder.BiomeSupplier; import ru.bclib.api.biomes.BiomeAPI; import ru.bclib.api.surface.SurfaceRuleBuilder; import ru.bclib.interfaces.SurfaceMaterialProvider; import ru.bclib.world.biomes.BCLBiome; +import ru.bclib.world.biomes.BCLBiomeSettings; import ru.betterend.BetterEnd; import ru.betterend.interfaces.StructureFeaturesAccessor; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndFeatures; import ru.betterend.registry.EndSounds; - -import java.util.function.BiFunction; +import ru.betterend.registry.EndTags; public class EndBiome extends BCLBiome implements SurfaceMaterialProvider { public static class DefaultSurfaceMaterialProvider implements SurfaceMaterialProvider{ @@ -85,7 +86,7 @@ public class EndBiome extends BCLBiome implements SurfaceMaterialProvider { protected abstract void addCustomBuildData(BCLBiomeBuilder builder); - public BiFunction getSupplier(){ + public BiomeSupplier getSupplier(){ return EndBiome::new; } @@ -98,8 +99,8 @@ public class EndBiome extends BCLBiome implements SurfaceMaterialProvider { } } - public EndBiome(ResourceLocation biomeID, Biome biome) { - super(biomeID, biome); + public EndBiome(ResourceLocation biomeID, Biome biome, BCLBiomeSettings settings) { + super(biomeID, biome, settings); } public static EndBiome create(Config biomeConfig){ @@ -124,7 +125,8 @@ public class EndBiome extends BCLBiome implements SurfaceMaterialProvider { EndBiome biome = builder.build(biomeConfig.getSupplier()); biome.addCustomData("has_caves", biomeConfig.hasCaves()); biome.setSurfaceMaterial(biomeConfig.surfaceMaterial()); - + + EndTags.addBiomeSurfaceToEndGroup(biome); return biome; } diff --git a/src/main/java/ru/betterend/world/biome/cave/EmptyAuroraCaveBiome.java b/src/main/java/ru/betterend/world/biome/cave/EmptyAuroraCaveBiome.java index b7b0bdc5..8d6dbdb4 100644 --- a/src/main/java/ru/betterend/world/biome/cave/EmptyAuroraCaveBiome.java +++ b/src/main/java/ru/betterend/world/biome/cave/EmptyAuroraCaveBiome.java @@ -2,16 +2,16 @@ package ru.betterend.world.biome.cave; import net.minecraft.resources.ResourceLocation; import ru.bclib.api.biomes.BCLBiomeBuilder; +import ru.bclib.api.biomes.BCLBiomeBuilder.BiomeSupplier; +import ru.bclib.world.biomes.BCLBiomeSettings; import ru.betterend.registry.EndFeatures; import ru.betterend.registry.EndParticles; import ru.betterend.world.biome.EndBiome; -import java.util.function.BiFunction; - public class EmptyAuroraCaveBiome extends EndCaveBiome.Config { public static class Biome extends EndCaveBiome { - public Biome(ResourceLocation biomeID, net.minecraft.world.level.biome.Biome biome) { - super(biomeID, biome); + public Biome(ResourceLocation biomeID, net.minecraft.world.level.biome.Biome biome, BCLBiomeSettings settings) { + super(biomeID, biome, settings); this.addFloorFeature(EndFeatures.BIG_AURORA_CRYSTAL, 1); @@ -44,7 +44,7 @@ public class EmptyAuroraCaveBiome extends EndCaveBiome.Config { } @Override - public BiFunction getSupplier() { + public BiomeSupplier getSupplier() { return EmptyAuroraCaveBiome.Biome::new; } } diff --git a/src/main/java/ru/betterend/world/biome/cave/EmptyEndCaveBiome.java b/src/main/java/ru/betterend/world/biome/cave/EmptyEndCaveBiome.java index 4adf3ece..d6e1b52c 100644 --- a/src/main/java/ru/betterend/world/biome/cave/EmptyEndCaveBiome.java +++ b/src/main/java/ru/betterend/world/biome/cave/EmptyEndCaveBiome.java @@ -2,6 +2,8 @@ package ru.betterend.world.biome.cave; import net.minecraft.resources.ResourceLocation; import ru.bclib.api.biomes.BCLBiomeBuilder; +import ru.bclib.api.biomes.BCLBiomeBuilder.BiomeSupplier; +import ru.bclib.world.biomes.BCLBiomeSettings; import ru.betterend.registry.EndFeatures; import ru.betterend.world.biome.EndBiome; @@ -9,8 +11,8 @@ import java.util.function.BiFunction; public class EmptyEndCaveBiome extends EndCaveBiome.Config { public static class Biome extends EndCaveBiome { - public Biome(ResourceLocation biomeID, net.minecraft.world.level.biome.Biome biome) { - super(biomeID, biome); + public Biome(ResourceLocation biomeID, net.minecraft.world.level.biome.Biome biome, BCLBiomeSettings settings) { + super(biomeID, biome, settings); this.addFloorFeature(EndFeatures.END_STONE_STALAGMITE, 1); this.addCeilFeature(EndFeatures.END_STONE_STALACTITE, 1); @@ -38,7 +40,7 @@ public class EmptyEndCaveBiome extends EndCaveBiome.Config { } @Override - public BiFunction getSupplier() { + public BiomeSupplier getSupplier() { return Biome::new; } } diff --git a/src/main/java/ru/betterend/world/biome/cave/EmptySmaragdantCaveBiome.java b/src/main/java/ru/betterend/world/biome/cave/EmptySmaragdantCaveBiome.java index 38a1b643..a90d3536 100644 --- a/src/main/java/ru/betterend/world/biome/cave/EmptySmaragdantCaveBiome.java +++ b/src/main/java/ru/betterend/world/biome/cave/EmptySmaragdantCaveBiome.java @@ -2,16 +2,16 @@ package ru.betterend.world.biome.cave; import net.minecraft.resources.ResourceLocation; import ru.bclib.api.biomes.BCLBiomeBuilder; +import ru.bclib.api.biomes.BCLBiomeBuilder.BiomeSupplier; +import ru.bclib.world.biomes.BCLBiomeSettings; import ru.betterend.registry.EndFeatures; import ru.betterend.registry.EndParticles; import ru.betterend.world.biome.EndBiome; -import java.util.function.BiFunction; - public class EmptySmaragdantCaveBiome extends EndCaveBiome.Config { public static class Biome extends EndCaveBiome { - public Biome(ResourceLocation biomeID, net.minecraft.world.level.biome.Biome biome) { - super(biomeID, biome); + public Biome(ResourceLocation biomeID, net.minecraft.world.level.biome.Biome biome, BCLBiomeSettings settings) { + super(biomeID, biome, settings); this.addFloorFeature(EndFeatures.SMARAGDANT_CRYSTAL, 1); this.addFloorFeature(EndFeatures.SMARAGDANT_CRYSTAL_SHARD, 20); @@ -45,7 +45,7 @@ public class EmptySmaragdantCaveBiome extends EndCaveBiome.Config { } @Override - public BiFunction getSupplier() { + public BiomeSupplier getSupplier() { return EmptySmaragdantCaveBiome.Biome::new; } } diff --git a/src/main/java/ru/betterend/world/biome/cave/EndCaveBiome.java b/src/main/java/ru/betterend/world/biome/cave/EndCaveBiome.java index 0b1a1db3..d1047305 100644 --- a/src/main/java/ru/betterend/world/biome/cave/EndCaveBiome.java +++ b/src/main/java/ru/betterend/world/biome/cave/EndCaveBiome.java @@ -8,8 +8,10 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.GenerationStep; import net.minecraft.world.level.levelgen.feature.Feature; import ru.bclib.api.biomes.BCLBiomeBuilder; +import ru.bclib.api.biomes.BCLBiomeBuilder.BiomeSupplier; import ru.bclib.api.biomes.BiomeAPI; import ru.bclib.util.WeightedList; +import ru.bclib.world.biomes.BCLBiomeSettings; import ru.bclib.world.features.BCLFeature; import ru.betterend.BetterEnd; import ru.betterend.registry.EndSounds; @@ -17,7 +19,6 @@ import ru.betterend.world.biome.EndBiome; import ru.betterend.world.features.terrain.caves.CaveChunkPopulatorFeature; import java.util.Random; -import java.util.function.BiFunction; public class EndCaveBiome extends EndBiome { public static abstract class Config extends EndBiome.Config { @@ -45,7 +46,7 @@ public class EndCaveBiome extends EndBiome { } @Override - public BiFunction getSupplier() { + public BiomeSupplier getSupplier() { return EndCaveBiome::new; } } @@ -53,8 +54,8 @@ public class EndCaveBiome extends EndBiome { private WeightedList> floorFeatures = new WeightedList>(); private WeightedList> ceilFeatures = new WeightedList>(); - public EndCaveBiome(ResourceLocation biomeID, Biome biome) { - super(biomeID, biome); + public EndCaveBiome(ResourceLocation biomeID, Biome biome, BCLBiomeSettings settings) { + super(biomeID, biome, settings); } public void addFloorFeature(Feature feature, float weight) { diff --git a/src/main/java/ru/betterend/world/biome/cave/JadeCaveBiome.java b/src/main/java/ru/betterend/world/biome/cave/JadeCaveBiome.java index 90382c99..39e22937 100644 --- a/src/main/java/ru/betterend/world/biome/cave/JadeCaveBiome.java +++ b/src/main/java/ru/betterend/world/biome/cave/JadeCaveBiome.java @@ -5,20 +5,20 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; import net.minecraft.world.level.block.state.BlockState; import ru.bclib.api.biomes.BCLBiomeBuilder; +import ru.bclib.api.biomes.BCLBiomeBuilder.BiomeSupplier; +import ru.bclib.world.biomes.BCLBiomeSettings; import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.registry.EndBlocks; import ru.betterend.world.biome.EndBiome; -import java.util.function.BiFunction; - public class JadeCaveBiome extends EndCaveBiome.Config { public static class Biome extends EndCaveBiome { private static final OpenSimplexNoise WALL_NOISE = new OpenSimplexNoise("jade_cave".hashCode()); private static final OpenSimplexNoise DEPTH_NOISE = new OpenSimplexNoise("depth_noise".hashCode()); private static final BlockState[] JADE = new BlockState[3]; - public Biome(ResourceLocation biomeID, net.minecraft.world.level.biome.Biome biome) { - super(biomeID, biome); + public Biome(ResourceLocation biomeID, net.minecraft.world.level.biome.Biome biome, BCLBiomeSettings settings) { + super(biomeID, biome, settings); JADE[0] = EndBlocks.VIRID_JADESTONE.stone.defaultBlockState(); JADE[1] = EndBlocks.AZURE_JADESTONE.stone.defaultBlockState(); @@ -47,7 +47,7 @@ public class JadeCaveBiome extends EndCaveBiome.Config { } @Override - public BiFunction getSupplier() { + public BiomeSupplier getSupplier() { return JadeCaveBiome.Biome::new; } } diff --git a/src/main/java/ru/betterend/world/biome/cave/LushAuroraCaveBiome.java b/src/main/java/ru/betterend/world/biome/cave/LushAuroraCaveBiome.java index 95518656..fd452ad1 100644 --- a/src/main/java/ru/betterend/world/biome/cave/LushAuroraCaveBiome.java +++ b/src/main/java/ru/betterend/world/biome/cave/LushAuroraCaveBiome.java @@ -4,19 +4,19 @@ import net.minecraft.core.BlockPos; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.state.BlockState; import ru.bclib.api.biomes.BCLBiomeBuilder; +import ru.bclib.api.biomes.BCLBiomeBuilder.BiomeSupplier; import ru.bclib.blocks.BlockProperties; import ru.bclib.interfaces.SurfaceMaterialProvider; +import ru.bclib.world.biomes.BCLBiomeSettings; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndFeatures; import ru.betterend.registry.EndParticles; import ru.betterend.world.biome.EndBiome; -import java.util.function.BiFunction; - public class LushAuroraCaveBiome extends EndCaveBiome.Config { public static class Biome extends EndCaveBiome { - public Biome(ResourceLocation biomeID, net.minecraft.world.level.biome.Biome biome) { - super(biomeID, biome); + public Biome(ResourceLocation biomeID, net.minecraft.world.level.biome.Biome biome, BCLBiomeSettings settings) { + super(biomeID, biome, settings); this.addFloorFeature(EndFeatures.BIG_AURORA_CRYSTAL, 1); this.addFloorFeature(EndFeatures.CAVE_BUSH, 5); @@ -63,7 +63,7 @@ public class LushAuroraCaveBiome extends EndCaveBiome.Config { } @Override - public BiFunction getSupplier() { + public BiomeSupplier getSupplier() { return LushAuroraCaveBiome.Biome::new; } diff --git a/src/main/java/ru/betterend/world/biome/cave/LushSmaragdantCaveBiome.java b/src/main/java/ru/betterend/world/biome/cave/LushSmaragdantCaveBiome.java index 6674466b..240e7a52 100644 --- a/src/main/java/ru/betterend/world/biome/cave/LushSmaragdantCaveBiome.java +++ b/src/main/java/ru/betterend/world/biome/cave/LushSmaragdantCaveBiome.java @@ -3,18 +3,18 @@ package ru.betterend.world.biome.cave; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.state.BlockState; import ru.bclib.api.biomes.BCLBiomeBuilder; +import ru.bclib.api.biomes.BCLBiomeBuilder.BiomeSupplier; import ru.bclib.interfaces.SurfaceMaterialProvider; +import ru.bclib.world.biomes.BCLBiomeSettings; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndFeatures; import ru.betterend.registry.EndParticles; import ru.betterend.world.biome.EndBiome; -import java.util.function.BiFunction; - public class LushSmaragdantCaveBiome extends EndCaveBiome.Config { public static class Biome extends EndCaveBiome { - public Biome(ResourceLocation biomeID, net.minecraft.world.level.biome.Biome biome) { - super(biomeID, biome); + public Biome(ResourceLocation biomeID, net.minecraft.world.level.biome.Biome biome, BCLBiomeSettings settings) { + super(biomeID, biome, settings); this.addFloorFeature(EndFeatures.SMARAGDANT_CRYSTAL, 1); this.addFloorFeature(EndFeatures.SMARAGDANT_CRYSTAL_SHARD, 20); @@ -48,7 +48,7 @@ public class LushSmaragdantCaveBiome extends EndCaveBiome.Config { } @Override - public BiFunction getSupplier() { + public BiomeSupplier getSupplier() { return LushSmaragdantCaveBiome.Biome::new; } diff --git a/src/main/java/ru/betterend/world/features/CavePumpkinFeature.java b/src/main/java/ru/betterend/world/features/CavePumpkinFeature.java index 6af34e7d..424a4348 100644 --- a/src/main/java/ru/betterend/world/features/CavePumpkinFeature.java +++ b/src/main/java/ru/betterend/world/features/CavePumpkinFeature.java @@ -4,7 +4,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.util.BlocksHelper; import ru.bclib.world.features.DefaultFeature; import ru.betterend.blocks.EndBlockProperties; @@ -18,7 +18,7 @@ public class CavePumpkinFeature extends DefaultFeature { final Random random = featureConfig.random(); final BlockPos pos = featureConfig.origin(); final WorldGenLevel world = featureConfig.level(); - if (!world.getBlockState(pos.above()).is(TagAPI.BLOCK_GEN_TERRAIN) || !world.isEmptyBlock(pos) || !world.isEmptyBlock( + if (!world.getBlockState(pos.above()).is(CommonBlockTags.GEN_END_STONES) || !world.isEmptyBlock(pos) || !world.isEmptyBlock( pos.below())) { return false; } diff --git a/src/main/java/ru/betterend/world/features/CrashedShipFeature.java b/src/main/java/ru/betterend/world/features/CrashedShipFeature.java index 124e07ea..dbf45baa 100644 --- a/src/main/java/ru/betterend/world/features/CrashedShipFeature.java +++ b/src/main/java/ru/betterend/world/features/CrashedShipFeature.java @@ -18,7 +18,7 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProc import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.util.MHelper; import ru.bclib.util.StructureHelper; import ru.bclib.world.features.NBTStructureFeature; @@ -55,7 +55,7 @@ public class CrashedShipFeature extends NBTStructureFeature { if (x * x + z * z < 3600) { return false; } - return pos.getY() > 5 && world.getBlockState(pos.below()).is(TagAPI.BLOCK_GEN_TERRAIN); + return pos.getY() > 5 && world.getBlockState(pos.below()).is(CommonBlockTags.GEN_END_STONES); } @Override diff --git a/src/main/java/ru/betterend/world/features/FullHeightScatterFeature.java b/src/main/java/ru/betterend/world/features/FullHeightScatterFeature.java index 0adf51e5..754b1bbd 100644 --- a/src/main/java/ru/betterend/world/features/FullHeightScatterFeature.java +++ b/src/main/java/ru/betterend/world/features/FullHeightScatterFeature.java @@ -9,11 +9,11 @@ import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConf import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.world.features.DefaultFeature; +import ru.betterend.util.GlobalState; import java.util.Random; public abstract class FullHeightScatterFeature extends DefaultFeature { - private static final MutableBlockPos POS = new MutableBlockPos(); private final int radius; public FullHeightScatterFeature(int radius) { @@ -26,6 +26,7 @@ public abstract class FullHeightScatterFeature extends DefaultFeature { @Override public boolean place(FeaturePlaceContext featureConfig) { + final MutableBlockPos POS = GlobalState.stateForThread().POS; final Random random = featureConfig.random(); final BlockPos center = featureConfig.origin(); final WorldGenLevel world = featureConfig.level(); diff --git a/src/main/java/ru/betterend/world/features/InvertedScatterFeature.java b/src/main/java/ru/betterend/world/features/InvertedScatterFeature.java index ba38dfb4..e0aa1df2 100644 --- a/src/main/java/ru/betterend/world/features/InvertedScatterFeature.java +++ b/src/main/java/ru/betterend/world/features/InvertedScatterFeature.java @@ -9,11 +9,11 @@ import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConf import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.world.features.DefaultFeature; +import ru.betterend.util.GlobalState; import java.util.Random; public abstract class InvertedScatterFeature extends DefaultFeature { - private static final MutableBlockPos POS = new MutableBlockPos(); private final int radius; public InvertedScatterFeature(int radius) { @@ -26,6 +26,7 @@ public abstract class InvertedScatterFeature extends DefaultFeature { @Override public boolean place(FeaturePlaceContext featureConfig) { + final MutableBlockPos POS = GlobalState.stateForThread().POS; final Random random = featureConfig.random(); final BlockPos center = featureConfig.origin(); final WorldGenLevel world = featureConfig.level(); diff --git a/src/main/java/ru/betterend/world/features/ScatterFeature.java b/src/main/java/ru/betterend/world/features/ScatterFeature.java index 7539ec00..74dc0ccb 100644 --- a/src/main/java/ru/betterend/world/features/ScatterFeature.java +++ b/src/main/java/ru/betterend/world/features/ScatterFeature.java @@ -5,15 +5,15 @@ import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.world.features.DefaultFeature; +import ru.betterend.util.GlobalState; import java.util.Random; public abstract class ScatterFeature extends DefaultFeature { - private static final MutableBlockPos POS = new MutableBlockPos(); private final int radius; public ScatterFeature(int radius) { @@ -32,7 +32,7 @@ public abstract class ScatterFeature extends DefaultFeature { if (pos.getY() < 5) { return false; } - else if (!world.getBlockState(pos.below()).is(TagAPI.BLOCK_END_GROUND)) { + else if (!world.getBlockState(pos.below()).is(CommonBlockTags.END_STONES)) { return false; } return true; @@ -57,6 +57,7 @@ public abstract class ScatterFeature extends DefaultFeature { @Override public boolean place(FeaturePlaceContext featureConfig) { + final MutableBlockPos POS = GlobalState.stateForThread().POS; final Random random = featureConfig.random(); BlockPos center = featureConfig.origin(); final WorldGenLevel world = featureConfig.level(); diff --git a/src/main/java/ru/betterend/world/features/SilkMothNestFeature.java b/src/main/java/ru/betterend/world/features/SilkMothNestFeature.java index 3e918d28..bc1a18f8 100644 --- a/src/main/java/ru/betterend/world/features/SilkMothNestFeature.java +++ b/src/main/java/ru/betterend/world/features/SilkMothNestFeature.java @@ -14,12 +14,11 @@ import ru.bclib.blocks.BlockProperties; import ru.bclib.util.BlocksHelper; import ru.bclib.world.features.DefaultFeature; import ru.betterend.registry.EndBlocks; +import ru.betterend.util.GlobalState; import java.util.Random; public class SilkMothNestFeature extends DefaultFeature { - private static final MutableBlockPos POS = new MutableBlockPos(); - private boolean canGenerate(WorldGenLevel world, BlockPos pos) { BlockState state = world.getBlockState(pos.above()); if (state.is(BlockTags.LEAVES) || state.is(BlockTags.LOGS)) { @@ -35,6 +34,7 @@ public class SilkMothNestFeature extends DefaultFeature { @Override public boolean place(FeaturePlaceContext featureConfig) { + final MutableBlockPos POS = GlobalState.stateForThread().POS; final Random random = featureConfig.random(); final BlockPos center = featureConfig.origin(); final WorldGenLevel world = featureConfig.level(); diff --git a/src/main/java/ru/betterend/world/features/UnderwaterPlantScatter.java b/src/main/java/ru/betterend/world/features/UnderwaterPlantScatter.java index 38106f16..35c3ae9e 100644 --- a/src/main/java/ru/betterend/world/features/UnderwaterPlantScatter.java +++ b/src/main/java/ru/betterend/world/features/UnderwaterPlantScatter.java @@ -4,18 +4,18 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.Blocks; +import ru.betterend.util.GlobalState; import java.util.Random; public abstract class UnderwaterPlantScatter extends ScatterFeature { - private static final MutableBlockPos POS = new MutableBlockPos(); - public UnderwaterPlantScatter(int radius) { super(radius); } @Override protected BlockPos getCenterGround(WorldGenLevel world, BlockPos pos) { + final MutableBlockPos POS = GlobalState.stateForThread().POS; POS.setX(pos.getX()); POS.setZ(pos.getZ()); POS.setY(0); diff --git a/src/main/java/ru/betterend/world/features/bushes/BushFeature.java b/src/main/java/ru/betterend/world/features/bushes/BushFeature.java index 6f11fef4..344d9b5d 100644 --- a/src/main/java/ru/betterend/world/features/bushes/BushFeature.java +++ b/src/main/java/ru/betterend/world/features/bushes/BushFeature.java @@ -9,7 +9,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.sdf.SDF; import ru.bclib.sdf.operator.SDFDisplacement; import ru.bclib.sdf.operator.SDFScale3D; @@ -39,8 +39,8 @@ public class BushFeature extends DefaultFeature { final Random random = featureConfig.random(); final BlockPos pos = featureConfig.origin(); final WorldGenLevel world = featureConfig.level(); - if (!world.getBlockState(pos.below()).is(TagAPI.BLOCK_END_GROUND) && !world.getBlockState(pos.above()) - .is(TagAPI.BLOCK_END_GROUND)) + if (!world.getBlockState(pos.below()).is(CommonBlockTags.END_STONES) && !world.getBlockState(pos.above()) + .is(CommonBlockTags.END_STONES)) return false; float radius = MHelper.randRange(1.8F, 3.5F, random); diff --git a/src/main/java/ru/betterend/world/features/bushes/BushWithOuterFeature.java b/src/main/java/ru/betterend/world/features/bushes/BushWithOuterFeature.java index b87a4fa1..0708463a 100644 --- a/src/main/java/ru/betterend/world/features/bushes/BushWithOuterFeature.java +++ b/src/main/java/ru/betterend/world/features/bushes/BushWithOuterFeature.java @@ -10,7 +10,7 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.sdf.SDF; import ru.bclib.sdf.operator.SDFDisplacement; import ru.bclib.sdf.operator.SDFScale3D; @@ -43,8 +43,8 @@ public class BushWithOuterFeature extends DefaultFeature { final Random random = featureConfig.random(); final BlockPos pos = featureConfig.origin(); final WorldGenLevel world = featureConfig.level(); - if (!world.getBlockState(pos.below()).is(TagAPI.BLOCK_END_GROUND) && !world.getBlockState(pos.above()) - .is(TagAPI.BLOCK_END_GROUND)) + if (!world.getBlockState(pos.below()).is(CommonBlockTags.END_STONES) && !world.getBlockState(pos.above()) + .is(CommonBlockTags.END_STONES)) return false; float radius = MHelper.randRange(1.8F, 3.5F, random); diff --git a/src/main/java/ru/betterend/world/features/bushes/LargeAmaranitaFeature.java b/src/main/java/ru/betterend/world/features/bushes/LargeAmaranitaFeature.java index 4752f2a7..f8698751 100644 --- a/src/main/java/ru/betterend/world/features/bushes/LargeAmaranitaFeature.java +++ b/src/main/java/ru/betterend/world/features/bushes/LargeAmaranitaFeature.java @@ -7,7 +7,7 @@ import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.blocks.BlockProperties; import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.util.BlocksHelper; @@ -23,7 +23,7 @@ public class LargeAmaranitaFeature extends DefaultFeature { final Random random = featureConfig.random(); final BlockPos pos = featureConfig.origin(); final WorldGenLevel world = featureConfig.level(); - if (!world.getBlockState(pos.below()).is(TagAPI.BLOCK_END_GROUND)) return false; + if (!world.getBlockState(pos.below()).is(CommonBlockTags.END_STONES)) return false; MutableBlockPos mut = new MutableBlockPos().set(pos); int height = MHelper.randRange(2, 3, random); diff --git a/src/main/java/ru/betterend/world/features/bushes/Lumecorn.java b/src/main/java/ru/betterend/world/features/bushes/Lumecorn.java index 46f41366..a02a96e7 100644 --- a/src/main/java/ru/betterend/world/features/bushes/Lumecorn.java +++ b/src/main/java/ru/betterend/world/features/bushes/Lumecorn.java @@ -7,7 +7,7 @@ import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.world.features.DefaultFeature; @@ -23,7 +23,7 @@ public class Lumecorn extends DefaultFeature { final Random random = featureConfig.random(); final BlockPos pos = featureConfig.origin(); final WorldGenLevel world = featureConfig.level(); - if (!world.getBlockState(pos.below()).is(TagAPI.BLOCK_END_GROUND)) return false; + if (!world.getBlockState(pos.below()).is(CommonBlockTags.END_STONES)) return false; int height = MHelper.randRange(4, 7, random); MutableBlockPos mut = new MutableBlockPos().set(pos); diff --git a/src/main/java/ru/betterend/world/features/bushes/TenaneaBushFeature.java b/src/main/java/ru/betterend/world/features/bushes/TenaneaBushFeature.java index 9f19222e..e12de794 100644 --- a/src/main/java/ru/betterend/world/features/bushes/TenaneaBushFeature.java +++ b/src/main/java/ru/betterend/world/features/bushes/TenaneaBushFeature.java @@ -10,7 +10,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.blocks.BlockProperties; import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.sdf.SDF; @@ -42,7 +42,7 @@ public class TenaneaBushFeature extends DefaultFeature { final Random random = featureConfig.random(); final BlockPos pos = featureConfig.origin(); final WorldGenLevel world = featureConfig.level(); - if (!world.getBlockState(pos.below()).is(TagAPI.BLOCK_END_GROUND)) return false; + if (!world.getBlockState(pos.below()).is(CommonBlockTags.END_STONES)) return false; float radius = MHelper.randRange(1.8F, 3.5F, random); OpenSimplexNoise noise = new OpenSimplexNoise(random.nextInt()); diff --git a/src/main/java/ru/betterend/world/features/terrain/ArchFeature.java b/src/main/java/ru/betterend/world/features/terrain/ArchFeature.java index ef2fe51c..dc7b15c5 100644 --- a/src/main/java/ru/betterend/world/features/terrain/ArchFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/ArchFeature.java @@ -9,7 +9,7 @@ import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.sdf.SDF; import ru.bclib.sdf.operator.SDFDisplacement; import ru.bclib.sdf.operator.SDFRotation; @@ -41,7 +41,7 @@ public class ArchFeature extends DefaultFeature { world, new BlockPos((origin.getX() & 0xFFFFFFF0) | 7, 0, (origin.getZ() & 0xFFFFFFF0) | 7) ); - if (!world.getBlockState(pos.below(5)).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (!world.getBlockState(pos.below(5)).is(CommonBlockTags.GEN_END_STONES)) { return false; } diff --git a/src/main/java/ru/betterend/world/features/terrain/BigAuroraCrystalFeature.java b/src/main/java/ru/betterend/world/features/terrain/BigAuroraCrystalFeature.java index 82faf6d5..bbef945f 100644 --- a/src/main/java/ru/betterend/world/features/terrain/BigAuroraCrystalFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/BigAuroraCrystalFeature.java @@ -6,7 +6,7 @@ import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.sdf.SDF; import ru.bclib.sdf.operator.SDFRotation; import ru.bclib.sdf.primitive.SDFHexPrism; @@ -40,8 +40,8 @@ public class BigAuroraCrystalFeature extends DefaultFeature { Vector3f vec = MHelper.randomHorizontal(random); prism = new SDFRotation().setRotation(vec, random.nextFloat()).setSource(prism); prism.setReplaceFunction((bState) -> { - return bState.getMaterial().isReplaceable() || bState.is(TagAPI.BLOCK_GEN_TERRAIN) || bState.getMaterial() - .equals(Material.PLANT) || bState + return bState.getMaterial().isReplaceable() || bState.is(CommonBlockTags.GEN_END_STONES) || bState.getMaterial() + .equals(Material.PLANT) || bState .getMaterial() .equals(Material.LEAVES); }); diff --git a/src/main/java/ru/betterend/world/features/terrain/DesertLakeFeature.java b/src/main/java/ru/betterend/world/features/terrain/DesertLakeFeature.java index 8774f75c..4088bf47 100644 --- a/src/main/java/ru/betterend/world/features/terrain/DesertLakeFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/DesertLakeFeature.java @@ -9,13 +9,14 @@ import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.world.features.DefaultFeature; import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.registry.EndBlocks; import ru.betterend.util.BlockFixer; +import ru.betterend.util.GlobalState; import ru.betterend.world.biome.EndBiome; import java.util.Random; @@ -23,10 +24,11 @@ import java.util.Random; public class DesertLakeFeature extends DefaultFeature { private static final BlockState END_STONE = Blocks.END_STONE.defaultBlockState(); private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(15152); - private static final MutableBlockPos POS = new MutableBlockPos(); @Override public boolean place(FeaturePlaceContext featureConfig) { + final MutableBlockPos POS = GlobalState.stateForThread().POS; + final Random random = featureConfig.random(); BlockPos blockPos = featureConfig.origin(); final WorldGenLevel world = featureConfig.level(); @@ -119,11 +121,11 @@ public class DesertLakeFeature extends DefaultFeature { r *= r; if (x2 + z2 <= r) { state = world.getBlockState(POS); - if (state.is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (state.is(CommonBlockTags.GEN_END_STONES)) { BlocksHelper.setWithoutUpdate(world, POS, AIR); } pos = POS.below(); - if (world.getBlockState(pos).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (world.getBlockState(pos).is(CommonBlockTags.GEN_END_STONES)) { state = EndBiome.findTopMaterial(world, pos); //world.getBiome(pos).getGenerationSettings().getSurfaceBuilderConfig().getTopMaterial(); if (y > waterLevel + 1) BlocksHelper.setWithoutUpdate(world, pos, state); else if (y > waterLevel) @@ -178,7 +180,7 @@ public class DesertLakeFeature extends DefaultFeature { BlocksHelper.setWithoutUpdate(world, POS, state); } pos = POS.below(); - if (world.getBlockState(pos).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (world.getBlockState(pos).is(CommonBlockTags.GEN_END_STONES)) { BlocksHelper.setWithoutUpdate(world, pos, EndBlocks.ENDSTONE_DUST.defaultBlockState()); } pos = POS.above(); @@ -191,7 +193,7 @@ public class DesertLakeFeature extends DefaultFeature { // Make border else if (y2 + x2 + z2 <= rb) { state = world.getBlockState(POS); - if (state.is(TagAPI.BLOCK_GEN_TERRAIN) && world.isEmptyBlock(POS.above())) { + if (state.is(CommonBlockTags.GEN_END_STONES) && world.isEmptyBlock(POS.above())) { BlocksHelper.setWithoutUpdate(world, POS, EndBlocks.END_MOSS); } else if (y < waterLevel) { @@ -230,7 +232,7 @@ public class DesertLakeFeature extends DefaultFeature { private boolean canReplace(BlockState state) { return state.getMaterial() - .isReplaceable() || state.is(TagAPI.BLOCK_GEN_TERRAIN) || state.is(EndBlocks.ENDSTONE_DUST) || state.getMaterial() + .isReplaceable() || state.is(CommonBlockTags.GEN_END_STONES) || state.is(EndBlocks.ENDSTONE_DUST) || state.getMaterial() .equals( Material.PLANT) || state .getMaterial() diff --git a/src/main/java/ru/betterend/world/features/terrain/EndLakeFeature.java b/src/main/java/ru/betterend/world/features/terrain/EndLakeFeature.java index 7a9b7dba..86b52b03 100644 --- a/src/main/java/ru/betterend/world/features/terrain/EndLakeFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/EndLakeFeature.java @@ -9,13 +9,14 @@ import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.world.features.DefaultFeature; import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.registry.EndBlocks; import ru.betterend.util.BlockFixer; +import ru.betterend.util.GlobalState; import ru.betterend.world.biome.EndBiome; import java.util.Random; @@ -23,14 +24,13 @@ import java.util.Random; public class EndLakeFeature extends DefaultFeature { private static final BlockState END_STONE = Blocks.END_STONE.defaultBlockState(); private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(15152); - private static final MutableBlockPos POS = new MutableBlockPos(); - public EndLakeFeature(){ } @Override public boolean place(FeaturePlaceContext featureConfig) { + final MutableBlockPos POS = GlobalState.stateForThread().POS; final Random random = featureConfig.random(); BlockPos blockPos = featureConfig.origin(); final WorldGenLevel world = featureConfig.level(); @@ -123,11 +123,11 @@ public class EndLakeFeature extends DefaultFeature { r *= r; if (x2 + z2 <= r) { state = world.getBlockState(POS); - if (state.is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (state.is(CommonBlockTags.GEN_END_STONES)) { BlocksHelper.setWithoutUpdate(world, POS, AIR); } pos = POS.below(); - if (world.getBlockState(pos).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (world.getBlockState(pos).is(CommonBlockTags.GEN_END_STONES)) { state = EndBiome.findTopMaterial(world, pos); if (y > waterLevel + 1) BlocksHelper.setWithoutUpdate(world, pos, state); else if (y > waterLevel) @@ -182,7 +182,7 @@ public class EndLakeFeature extends DefaultFeature { BlocksHelper.setWithoutUpdate(world, POS, state); } pos = POS.below(); - if (world.getBlockState(pos).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (world.getBlockState(pos).is(CommonBlockTags.GEN_END_STONES)) { BlocksHelper.setWithoutUpdate(world, pos, EndBlocks.ENDSTONE_DUST.defaultBlockState()); } pos = POS.above(); @@ -228,7 +228,7 @@ public class EndLakeFeature extends DefaultFeature { private boolean canReplace(BlockState state) { return state.getMaterial() - .isReplaceable() || state.is(TagAPI.BLOCK_GEN_TERRAIN) || state.is(EndBlocks.ENDSTONE_DUST) || state.getMaterial() + .isReplaceable() || state.is(CommonBlockTags.GEN_END_STONES) || state.is(EndBlocks.ENDSTONE_DUST) || state.getMaterial() .equals( Material.PLANT) || state .getMaterial() diff --git a/src/main/java/ru/betterend/world/features/terrain/FallenPillarFeature.java b/src/main/java/ru/betterend/world/features/terrain/FallenPillarFeature.java index b5ca611e..73190f08 100644 --- a/src/main/java/ru/betterend/world/features/terrain/FallenPillarFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/FallenPillarFeature.java @@ -8,7 +8,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.sdf.SDF; import ru.bclib.sdf.operator.SDFDisplacement; import ru.bclib.sdf.operator.SDFRotation; @@ -31,7 +31,7 @@ public class FallenPillarFeature extends DefaultFeature { world, new BlockPos(pos.getX() + random.nextInt(16), pos.getY(), pos.getZ() + random.nextInt(16)) ); - if (!world.getBlockState(pos.below(5)).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (!world.getBlockState(pos.below(5)).is(CommonBlockTags.GEN_END_STONES)) { return false; } @@ -57,7 +57,7 @@ public class FallenPillarFeature extends DefaultFeature { } return info.getState(); }).setReplaceFunction((state) -> { - return state.getMaterial().isReplaceable() || state.is(TagAPI.BLOCK_GEN_TERRAIN) || state.getMaterial() + return state.getMaterial().isReplaceable() || state.is(CommonBlockTags.GEN_END_STONES) || state.getMaterial() .equals(Material.PLANT); }).fillRecursive(world, pos); diff --git a/src/main/java/ru/betterend/world/features/terrain/GeyserFeature.java b/src/main/java/ru/betterend/world/features/terrain/GeyserFeature.java index ca9db523..36bb5819 100644 --- a/src/main/java/ru/betterend/world/features/terrain/GeyserFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/GeyserFeature.java @@ -13,7 +13,7 @@ import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.sdf.SDF; import ru.bclib.sdf.operator.SDFCoordModify; import ru.bclib.sdf.operator.SDFDisplacement; @@ -61,7 +61,7 @@ public class GeyserFeature extends DefaultFeature { MutableBlockPos bpos = new MutableBlockPos().set(pos); bpos.setY(bpos.getY() - 1); BlockState state = world.getBlockState(bpos); - while (state.is(TagAPI.BLOCK_GEN_TERRAIN) || !state.getFluidState().isEmpty() && bpos.getY() > 5) { + while (state.is(CommonBlockTags.GEN_END_STONES) || !state.getFluidState().isEmpty() && bpos.getY() > 5) { bpos.setY(bpos.getY() - 1); state = world.getBlockState(bpos); } @@ -195,7 +195,7 @@ public class GeyserFeature extends DefaultFeature { mut.setY(mut.getY() - 1); state = world.getBlockState(mut); } - if (state.is(TagAPI.BLOCK_GEN_TERRAIN) && !world.getBlockState(mut.above()).is(EndBlocks.HYDROTHERMAL_VENT)) { + if (state.is(CommonBlockTags.GEN_END_STONES) && !world.getBlockState(mut.above()).is(EndBlocks.HYDROTHERMAL_VENT)) { for (int j = 0; j <= dist; j++) { BlocksHelper.setWithoutUpdate(world, mut, EndBlocks.SULPHURIC_ROCK.stone); MHelper.shuffle(HORIZONTAL, random); @@ -240,7 +240,7 @@ public class GeyserFeature extends DefaultFeature { mut.setY(mut.getY() - 1); state = world.getBlockState(mut); } - if (state.is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (state.is(CommonBlockTags.GEN_END_STONES)) { for (int j = 0; j <= dist; j++) { BlocksHelper.setWithoutUpdate(world, mut, EndBlocks.SULPHURIC_ROCK.stone); mut.setY(mut.getY() + 1); @@ -272,11 +272,11 @@ public class GeyserFeature extends DefaultFeature { static { REPLACE1 = (state) -> { - return state.isAir() || (state.is(TagAPI.BLOCK_GEN_TERRAIN)); + return state.isAir() || (state.is(CommonBlockTags.GEN_END_STONES)); }; REPLACE2 = (state) -> { - if (state.is(TagAPI.BLOCK_GEN_TERRAIN) || state.is(EndBlocks.HYDROTHERMAL_VENT) || state.is(EndBlocks.SULPHUR_CRYSTAL)) { + if (state.is(CommonBlockTags.GEN_END_STONES) || state.is(EndBlocks.HYDROTHERMAL_VENT) || state.is(EndBlocks.SULPHUR_CRYSTAL)) { return true; } if (state.getMaterial().equals(Material.PLANT)) { diff --git a/src/main/java/ru/betterend/world/features/terrain/ObsidianBoulderFeature.java b/src/main/java/ru/betterend/world/features/terrain/ObsidianBoulderFeature.java index 736af16c..890385f8 100644 --- a/src/main/java/ru/betterend/world/features/terrain/ObsidianBoulderFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/ObsidianBoulderFeature.java @@ -7,7 +7,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.sdf.SDF; import ru.bclib.sdf.operator.SDFDisplacement; import ru.bclib.sdf.operator.SDFScale3D; @@ -29,7 +29,7 @@ public class ObsidianBoulderFeature extends DefaultFeature { world, new BlockPos(pos.getX() + random.nextInt(16), pos.getY(), pos.getZ() + random.nextInt(16)) ); - if (!world.getBlockState(pos.below()).is(TagAPI.BLOCK_END_GROUND)) { + if (!world.getBlockState(pos.below()).is(CommonBlockTags.END_STONES)) { return false; } @@ -46,7 +46,7 @@ public class ObsidianBoulderFeature extends DefaultFeature { } private void makeBoulder(WorldGenLevel world, BlockPos pos, Random random) { - if (!world.getBlockState(pos.below()).is(TagAPI.BLOCK_END_GROUND)) { + if (!world.getBlockState(pos.below()).is(CommonBlockTags.END_STONES)) { return; } @@ -68,7 +68,7 @@ public class ObsidianBoulderFeature extends DefaultFeature { } return info.getState(); }).setReplaceFunction((state) -> { - return state.getMaterial().isReplaceable() || state.is(TagAPI.BLOCK_GEN_TERRAIN) || state.getMaterial() + return state.getMaterial().isReplaceable() || state.is(CommonBlockTags.GEN_END_STONES) || state.getMaterial() .equals(Material.PLANT); }).fillRecursive(world, pos); } diff --git a/src/main/java/ru/betterend/world/features/terrain/ObsidianPillarBasementFeature.java b/src/main/java/ru/betterend/world/features/terrain/ObsidianPillarBasementFeature.java index 9411bbbf..f56b89c8 100644 --- a/src/main/java/ru/betterend/world/features/terrain/ObsidianPillarBasementFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/ObsidianPillarBasementFeature.java @@ -8,7 +8,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.sdf.SDF; import ru.bclib.sdf.operator.SDFDisplacement; import ru.bclib.sdf.operator.SDFRotation; @@ -33,7 +33,7 @@ public class ObsidianPillarBasementFeature extends DefaultFeature { world, new BlockPos(pos.getX() + random.nextInt(16), pos.getY(), pos.getZ() + random.nextInt(16)) ); - if (!world.getBlockState(pos.below(5)).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (!world.getBlockState(pos.below(5)).is(CommonBlockTags.GEN_END_STONES)) { return false; } @@ -64,7 +64,7 @@ public class ObsidianPillarBasementFeature extends DefaultFeature { } return info.getState(); }).setReplaceFunction((state) -> { - return state.getMaterial().isReplaceable() || state.is(TagAPI.BLOCK_GEN_TERRAIN) || state.getMaterial() + return state.getMaterial().isReplaceable() || state.is(CommonBlockTags.GEN_END_STONES) || state.getMaterial() .equals(Material.PLANT); }).fillRecursive(world, pos); diff --git a/src/main/java/ru/betterend/world/features/terrain/SingleBlockFeature.java b/src/main/java/ru/betterend/world/features/terrain/SingleBlockFeature.java index 416680fe..d98dd712 100644 --- a/src/main/java/ru/betterend/world/features/terrain/SingleBlockFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/SingleBlockFeature.java @@ -7,7 +7,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.util.BlocksHelper; import ru.bclib.world.features.DefaultFeature; @@ -25,7 +25,7 @@ public class SingleBlockFeature extends DefaultFeature { final Random random = featureConfig.random(); final BlockPos pos = featureConfig.origin(); final WorldGenLevel world = featureConfig.level(); - if (!world.getBlockState(pos.below()).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (!world.getBlockState(pos.below()).is(CommonBlockTags.GEN_END_STONES)) { return false; } diff --git a/src/main/java/ru/betterend/world/features/terrain/SmaragdantCrystalFeature.java b/src/main/java/ru/betterend/world/features/terrain/SmaragdantCrystalFeature.java index 4ec06f76..a93b1367 100644 --- a/src/main/java/ru/betterend/world/features/terrain/SmaragdantCrystalFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/SmaragdantCrystalFeature.java @@ -7,7 +7,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.world.features.DefaultFeature; @@ -21,7 +21,7 @@ public class SmaragdantCrystalFeature extends DefaultFeature { final Random random = featureConfig.random(); final BlockPos pos = featureConfig.origin(); final WorldGenLevel world = featureConfig.level(); - if (!world.getBlockState(pos.below()).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (!world.getBlockState(pos.below()).is(CommonBlockTags.GEN_END_STONES)) { return false; } @@ -42,7 +42,7 @@ public class SmaragdantCrystalFeature extends DefaultFeature { mut.setY(mut.getY() - 1); state = world.getBlockState(mut); } - if (state.is(TagAPI.BLOCK_GEN_TERRAIN) && !world.getBlockState(mut.above()).is(crystal.getBlock())) { + if (state.is(CommonBlockTags.GEN_END_STONES) && !world.getBlockState(mut.above()).is(crystal.getBlock())) { for (int j = 0; j <= dist; j++) { BlocksHelper.setWithoutUpdate(world, mut, crystal); mut.setY(mut.getY() + 1); diff --git a/src/main/java/ru/betterend/world/features/terrain/SpireFeature.java b/src/main/java/ru/betterend/world/features/terrain/SpireFeature.java index 04440416..7ffbc296 100644 --- a/src/main/java/ru/betterend/world/features/terrain/SpireFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/SpireFeature.java @@ -11,8 +11,8 @@ import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; import ru.bclib.api.biomes.BiomeAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.sdf.SDF; import ru.bclib.sdf.operator.SDFDisplacement; import ru.bclib.sdf.operator.SDFSmoothUnion; @@ -41,8 +41,8 @@ public class SpireFeature extends DefaultFeature { final ChunkGenerator chunkGenerator = featureConfig.chunkGenerator(); pos = getPosOnSurfaceWG(world, pos); if (pos.getY() < 10 || !world.getBlockState(pos.below(3)) - .is(TagAPI.BLOCK_GEN_TERRAIN) || !world.getBlockState(pos.below(6)) - .is(TagAPI.BLOCK_GEN_TERRAIN)) { + .is(CommonBlockTags.GEN_END_STONES) || !world.getBlockState(pos.below(6)) + .is(CommonBlockTags.GEN_END_STONES)) { return false; } @@ -99,7 +99,7 @@ public class SpireFeature extends DefaultFeature { static { REPLACE = (state) -> { - if (state.is(TagAPI.BLOCK_END_GROUND)) { + if (state.is(CommonBlockTags.END_STONES)) { return true; } if (state.getBlock() instanceof LeavesBlock) { diff --git a/src/main/java/ru/betterend/world/features/terrain/StalactiteFeature.java b/src/main/java/ru/betterend/world/features/terrain/StalactiteFeature.java index 3065a834..a4e8a510 100644 --- a/src/main/java/ru/betterend/world/features/terrain/StalactiteFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/StalactiteFeature.java @@ -9,7 +9,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.blocks.StalactiteBlock; import ru.bclib.util.BlocksHelper; import ru.bclib.world.features.DefaultFeature; @@ -45,7 +45,7 @@ public class StalactiteFeature extends DefaultFeature { mut.setY(pos.getY() + i * dir); BlockState state = world.getBlockState(mut); if (!state.getMaterial().isReplaceable()) { - stalagnate = state.is(TagAPI.BLOCK_GEN_TERRAIN); + stalagnate = state.is(CommonBlockTags.GEN_END_STONES); height = i; break; } diff --git a/src/main/java/ru/betterend/world/features/terrain/SulphuricCaveFeature.java b/src/main/java/ru/betterend/world/features/terrain/SulphuricCaveFeature.java index 00398093..93141653 100644 --- a/src/main/java/ru/betterend/world/features/terrain/SulphuricCaveFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/SulphuricCaveFeature.java @@ -12,7 +12,7 @@ import net.minecraft.world.level.levelgen.Heightmap; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.world.features.DefaultFeature; @@ -44,7 +44,7 @@ public class SulphuricCaveFeature extends DefaultFeature { bpos.setY(top - 1); BlockState state = world.getBlockState(bpos); - while (!state.is(TagAPI.BLOCK_GEN_TERRAIN) && bpos.getY() > 5) { + while (!state.is(CommonBlockTags.GEN_END_STONES) && bpos.getY() > 5) { bpos.setY(bpos.getY() - 1); state = world.getBlockState(bpos); } @@ -53,7 +53,7 @@ public class SulphuricCaveFeature extends DefaultFeature { } top = (int) (bpos.getY() - (radius * 1.3F + 5)); - while (state.is(TagAPI.BLOCK_GEN_TERRAIN) || !state.getFluidState().isEmpty() && bpos.getY() > 5) { + while (state.is(CommonBlockTags.GEN_END_STONES) || !state.getFluidState().isEmpty() && bpos.getY() > 5) { bpos.setY(bpos.getY() - 1); state = world.getBlockState(bpos); } @@ -105,7 +105,7 @@ public class SulphuricCaveFeature extends DefaultFeature { } else if (dist < r2 * r2) { state = world.getBlockState(mut); - if (state.is(TagAPI.BLOCK_GEN_TERRAIN) || state.is(Blocks.AIR)) { + if (state.is(CommonBlockTags.GEN_END_STONES) || state.is(Blocks.AIR)) { double v = noise.eval(x * 0.1, y * 0.1, z * 0.1) + noise.eval( x * 0.03, y * 0.03, @@ -144,7 +144,7 @@ public class SulphuricCaveFeature extends DefaultFeature { mut.setY(mut.getY() - 1); state = world.getBlockState(mut); } - if (state.is(TagAPI.BLOCK_GEN_TERRAIN) && !world.getBlockState(mut.above()) + if (state.is(CommonBlockTags.GEN_END_STONES) && !world.getBlockState(mut.above()) .is(EndBlocks.HYDROTHERMAL_VENT)) { for (int j = 0; j <= dist; j++) { BlocksHelper.setWithoutUpdate(world, mut, EndBlocks.SULPHURIC_ROCK.stone); @@ -182,7 +182,7 @@ public class SulphuricCaveFeature extends DefaultFeature { } private boolean isReplaceable(BlockState state) { - return state.is(TagAPI.BLOCK_GEN_TERRAIN) || state.is(EndBlocks.HYDROTHERMAL_VENT) || state.is(EndBlocks.VENT_BUBBLE_COLUMN) || state + return state.is(CommonBlockTags.GEN_END_STONES) || state.is(EndBlocks.HYDROTHERMAL_VENT) || state.is(EndBlocks.VENT_BUBBLE_COLUMN) || state .is(EndBlocks.SULPHUR_CRYSTAL) || state.getMaterial().isReplaceable() || state.getMaterial() .equals(Material.PLANT) || state .getMaterial() diff --git a/src/main/java/ru/betterend/world/features/terrain/SulphuricLakeFeature.java b/src/main/java/ru/betterend/world/features/terrain/SulphuricLakeFeature.java index 0962cc36..47dde6d6 100644 --- a/src/main/java/ru/betterend/world/features/terrain/SulphuricLakeFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/SulphuricLakeFeature.java @@ -10,7 +10,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Fluids; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.world.features.DefaultFeature; @@ -18,17 +18,16 @@ import ru.betterend.blocks.EndBlockProperties; import ru.betterend.blocks.SulphurCrystalBlock; import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.registry.EndBlocks; +import ru.betterend.util.GlobalState; import java.util.Random; import java.util.Set; public class SulphuricLakeFeature extends DefaultFeature { private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(15152); - private static final MutableBlockPos POS = new MutableBlockPos(); @Override public boolean place(FeaturePlaceContext featureConfig) { - final Random random = featureConfig.random(); BlockPos blockPos = featureConfig.origin(); final WorldGenLevel world = featureConfig.level(); blockPos = getPosOnSurfaceWG(world, blockPos); @@ -37,6 +36,8 @@ public class SulphuricLakeFeature extends DefaultFeature { return false; } + final Random random = featureConfig.random(); + final MutableBlockPos POS = GlobalState.stateForThread().POS; double radius = MHelper.randRange(10.0, 20.0, random); int dist2 = MHelper.floor(radius * 1.5); @@ -61,7 +62,7 @@ public class SulphuricLakeFeature extends DefaultFeature { int dist = x2 + z2; if (dist <= r) { POS.setY(getYOnSurface(world, x, z) - 1); - if (world.getBlockState(POS).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (world.getBlockState(POS).is(CommonBlockTags.GEN_END_STONES)) { if (isBorder(world, POS)) { if (random.nextInt(8) > 0) { brimstone.add(POS.immutable()); @@ -75,6 +76,7 @@ public class SulphuricLakeFeature extends DefaultFeature { else { if (!isAbsoluteBorder(world, POS)) { BlocksHelper.setWithoutUpdate(world, POS, Blocks.WATER); + //world.setBlock(blockPos, Blocks.WATER.defaultBlockState(), 2); world.scheduleTick(POS, Fluids.WATER, 0); brimstone.add(POS.below()); if (random.nextBoolean()) { @@ -97,7 +99,7 @@ public class SulphuricLakeFeature extends DefaultFeature { brimstone.remove(POS); for (Direction dir : BlocksHelper.HORIZONTAL) { BlockPos offseted = POS.relative(dir); - if (world.getBlockState(offseted).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (world.getBlockState(offseted).is(CommonBlockTags.GEN_END_STONES)) { brimstone.add(offseted); } } @@ -106,7 +108,7 @@ public class SulphuricLakeFeature extends DefaultFeature { brimstone.remove(POS); for (Direction dir : BlocksHelper.HORIZONTAL) { BlockPos offseted = POS.relative(dir); - if (world.getBlockState(offseted).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (world.getBlockState(offseted).is(CommonBlockTags.GEN_END_STONES)) { brimstone.add(offseted); } } @@ -123,7 +125,7 @@ public class SulphuricLakeFeature extends DefaultFeature { } else if (dist < r2) { POS.setY(getYOnSurface(world, x, z) - 1); - if (world.getBlockState(POS).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (world.getBlockState(POS).is(CommonBlockTags.GEN_END_STONES)) { brimstone.add(POS.immutable()); if (random.nextBoolean()) { brimstone.add(POS.below()); diff --git a/src/main/java/ru/betterend/world/features/terrain/SurfaceVentFeature.java b/src/main/java/ru/betterend/world/features/terrain/SurfaceVentFeature.java index a7b8133f..1e6dffa4 100644 --- a/src/main/java/ru/betterend/world/features/terrain/SurfaceVentFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/SurfaceVentFeature.java @@ -6,7 +6,7 @@ import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.world.features.DefaultFeature; @@ -25,7 +25,7 @@ public class SurfaceVentFeature extends DefaultFeature { world, new BlockPos(pos.getX() + random.nextInt(16), pos.getY(), pos.getZ() + random.nextInt(16)) ); - if (!world.getBlockState(pos.below(3)).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (!world.getBlockState(pos.below(3)).is(CommonBlockTags.GEN_END_STONES)) { return false; } @@ -46,7 +46,7 @@ public class SurfaceVentFeature extends DefaultFeature { mut.setY(mut.getY() - 1); state = world.getBlockState(mut); } - if (state.is(TagAPI.BLOCK_GEN_TERRAIN) && !world.getBlockState(mut.above()).is(EndBlocks.HYDROTHERMAL_VENT)) { + if (state.is(CommonBlockTags.GEN_END_STONES) && !world.getBlockState(mut.above()).is(EndBlocks.HYDROTHERMAL_VENT)) { for (int j = 0; j <= dist; j++) { BlocksHelper.setWithoutUpdate(world, mut, EndBlocks.SULPHURIC_ROCK.stone); mut.setY(mut.getY() + 1); diff --git a/src/main/java/ru/betterend/world/features/terrain/ThinArchFeature.java b/src/main/java/ru/betterend/world/features/terrain/ThinArchFeature.java index 95bb6edb..3b6c6599 100644 --- a/src/main/java/ru/betterend/world/features/terrain/ThinArchFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/ThinArchFeature.java @@ -9,7 +9,7 @@ import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.sdf.SDF; import ru.bclib.sdf.operator.SDFCoordModify; import ru.bclib.sdf.operator.SDFDisplacement; @@ -36,7 +36,7 @@ public class ThinArchFeature extends DefaultFeature { Random random = featurePlaceContext.random(); BlockPos pos = getPosOnSurfaceWG(world, new BlockPos((origin.getX() & 0xFFFFFFF0) | 7, 0, (origin.getZ() & 0xFFFFFFF0) | 7)); - if (!world.getBlockState(pos.below(5)).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (!world.getBlockState(pos.below(5)).is(CommonBlockTags.GEN_END_STONES)) { return false; } diff --git a/src/main/java/ru/betterend/world/features/terrain/caves/CaveChunkPopulatorFeature.java b/src/main/java/ru/betterend/world/features/terrain/caves/CaveChunkPopulatorFeature.java index e092dec8..8aa761da 100644 --- a/src/main/java/ru/betterend/world/features/terrain/caves/CaveChunkPopulatorFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/caves/CaveChunkPopulatorFeature.java @@ -10,7 +10,7 @@ import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.util.BlocksHelper; import ru.bclib.world.features.DefaultFeature; import ru.betterend.util.BlockFixer; @@ -63,13 +63,13 @@ public class CaveChunkPopulatorFeature extends DefaultFeature { mut.setY(y); BlockState top = chunk.getBlockState(mut); BlockState bottom = chunk.getBlockState(mut2); - if (top.isAir() && (bottom.is(TagAPI.BLOCK_GEN_TERRAIN) || bottom.is(Blocks.STONE))) { + if (top.isAir() && (bottom.is(CommonBlockTags.GEN_END_STONES) || bottom.is(Blocks.STONE))) { mut3.set(mut2).move(sx, 0, sz); floorPositions.add(mut3.immutable()); updateMin(mut3, min); updateMax(mut3, max); } - else if (bottom.isAir() && (top.is(TagAPI.BLOCK_GEN_TERRAIN) || top.is(Blocks.STONE))) { + else if (bottom.isAir() && (top.is(CommonBlockTags.GEN_END_STONES) || top.is(Blocks.STONE))) { mut3.set(mut).move(sx, 0, sz); ceilPositions.add(mut3.immutable()); updateMin(mut3, min); diff --git a/src/main/java/ru/betterend/world/features/terrain/caves/EndCaveFeature.java b/src/main/java/ru/betterend/world/features/terrain/caves/EndCaveFeature.java index c0f202cf..c6b2cee2 100644 --- a/src/main/java/ru/betterend/world/features/terrain/caves/EndCaveFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/caves/EndCaveFeature.java @@ -14,8 +14,8 @@ import net.minecraft.world.level.levelgen.Heightmap; import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -import ru.bclib.api.TagAPI; import ru.bclib.api.biomes.BiomeAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.world.biomes.BCLBiome; @@ -66,11 +66,11 @@ public abstract class EndCaveFeature extends DefaultFeature { caveBlocks.parallelStream().forEach((bpos) -> { if (world.getBlockState(bpos).getMaterial().isReplaceable()) { BlockPos side = bpos.below(); - if (world.getBlockState(side).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (world.getBlockState(side).is(CommonBlockTags.GEN_END_STONES)) { floorPositions.add(side); } side = bpos.above(); - if (world.getBlockState(side).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (world.getBlockState(side).is(CommonBlockTags.GEN_END_STONES)) { ceilPositions.add(side); } } @@ -128,7 +128,7 @@ public abstract class EndCaveFeature extends DefaultFeature { if (wallBlock != null) { for (Vec3i offset : SPHERE) { BlockPos wallPos = pos.offset(offset); - if (!positions.contains(wallPos) && !placed.contains(wallPos) && world.getBlockState(wallPos).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (!positions.contains(wallPos) && !placed.contains(wallPos) && world.getBlockState(wallPos).is(CommonBlockTags.GEN_END_STONES)) { wallBlock = biome.getWall(wallPos); BlocksHelper.setWithoutUpdate(world, wallPos, wallBlock); placed.add(wallPos); @@ -164,7 +164,7 @@ public abstract class EndCaveFeature extends DefaultFeature { bpos.setY(top - 1); BlockState state = world.getBlockState(bpos); - while (!state.is(TagAPI.BLOCK_GEN_TERRAIN) && bpos.getY() > 5) { + while (!state.is(CommonBlockTags.GEN_END_STONES) && bpos.getY() > 5) { bpos.setY(bpos.getY() - 1); state = world.getBlockState(bpos); } @@ -173,7 +173,7 @@ public abstract class EndCaveFeature extends DefaultFeature { } top = (int) (bpos.getY() - (radius * 1.3F + 5)); - while (state.is(TagAPI.BLOCK_GEN_TERRAIN) || !state.getFluidState().isEmpty() && bpos.getY() > 5) { + while (state.is(CommonBlockTags.GEN_END_STONES) || !state.getFluidState().isEmpty() && bpos.getY() > 5) { bpos.setY(bpos.getY() - 1); state = world.getBlockState(bpos); } diff --git a/src/main/java/ru/betterend/world/features/terrain/caves/RoundCaveFeature.java b/src/main/java/ru/betterend/world/features/terrain/caves/RoundCaveFeature.java index 07afd22d..98aea791 100644 --- a/src/main/java/ru/betterend/world/features/terrain/caves/RoundCaveFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/caves/RoundCaveFeature.java @@ -6,7 +6,7 @@ import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.betterend.noise.OpenSimplexNoise; @@ -74,7 +74,7 @@ public class RoundCaveFeature extends EndCaveFeature { } private boolean isReplaceable(BlockState state) { - return state.is(TagAPI.BLOCK_GEN_TERRAIN) || + return state.is(CommonBlockTags.GEN_END_STONES) || state.getMaterial().isReplaceable() || state.getMaterial().equals(Material.PLANT) || state.getMaterial().equals(Material.LEAVES); diff --git a/src/main/java/ru/betterend/world/features/terrain/caves/TunelCaveFeature.java b/src/main/java/ru/betterend/world/features/terrain/caves/TunelCaveFeature.java index 7b23abb4..114ede15 100644 --- a/src/main/java/ru/betterend/world/features/terrain/caves/TunelCaveFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/caves/TunelCaveFeature.java @@ -15,8 +15,8 @@ import net.minecraft.world.level.levelgen.Heightmap.Types; import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -import ru.bclib.api.TagAPI; import ru.bclib.api.biomes.BiomeAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.util.BlocksHelper; import ru.bclib.world.biomes.BCLBiome; import ru.betterend.noise.OpenSimplexNoise; @@ -82,7 +82,7 @@ public class TunelCaveFeature extends EndCaveFeature { ) * 20) * 0.1F) * 0.9F; float dist = (float) noiseD.eval(pos.getX() * 0.1, y * 0.1, pos.getZ() * 0.1) * 0.12F; val = (val + vert * vert + dist) + density + gradient; - if (val < 0.15 && world.getBlockState(pos).is(TagAPI.BLOCK_GEN_TERRAIN) && noWaterNear(world, pos)) { + if (val < 0.15 && world.getBlockState(pos).is(CommonBlockTags.GEN_END_STONES) && noWaterNear(world, pos)) { positions.add(pos.immutable()); } } @@ -141,7 +141,7 @@ public class TunelCaveFeature extends EndCaveFeature { } else if (world.getBlockState(mut).getMaterial().isReplaceable()) { mut.setY(bpos.getY() - 1); - if (world.getBlockState(mut).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (world.getBlockState(mut).is(CommonBlockTags.GEN_END_STONES)) { Set floorPositions = floorSets.get(bio); if (floorPositions == null) { floorPositions = Sets.newHashSet(); @@ -150,7 +150,7 @@ public class TunelCaveFeature extends EndCaveFeature { floorPositions.add(mut.immutable()); } mut.setY(bpos.getY() + 1); - if (world.getBlockState(mut).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (world.getBlockState(mut).is(CommonBlockTags.GEN_END_STONES)) { Set ceilPositions = ceilSets.get(bio); if (ceilPositions == null) { ceilPositions = Sets.newHashSet(); diff --git a/src/main/java/ru/betterend/world/features/trees/DragonTreeFeature.java b/src/main/java/ru/betterend/world/features/trees/DragonTreeFeature.java index 6a46e825..baf18b68 100644 --- a/src/main/java/ru/betterend/world/features/trees/DragonTreeFeature.java +++ b/src/main/java/ru/betterend/world/features/trees/DragonTreeFeature.java @@ -12,7 +12,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.sdf.PosInfo; import ru.bclib.sdf.SDF; import ru.bclib.sdf.operator.SDFDisplacement; @@ -112,7 +112,7 @@ public class DragonTreeFeature extends DefaultFeature { SplineHelper.rotateSpline(branch, angle); SplineHelper.scale(branch, scale); Vector3f last = branch.get(branch.size() - 1); - if (world.getBlockState(pos.offset(last.x(), last.y(), last.z())).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (world.getBlockState(pos.offset(last.x(), last.y(), last.z())).is(CommonBlockTags.GEN_END_STONES)) { SplineHelper.fillSpline(branch, world, EndBlocks.DRAGON_TREE.getBark().defaultBlockState(), pos, REPLACE); } } @@ -196,7 +196,7 @@ public class DragonTreeFeature extends DefaultFeature { static { REPLACE = (state) -> { - /*if (state.is(TagAPI.BLOCK_END_GROUND)) { + /*if (state.is(CommonBlockTags.END_STONES)) { return true; }*/ if (state.getBlock() == EndBlocks.DRAGON_TREE_LEAVES) { diff --git a/src/main/java/ru/betterend/world/features/trees/GiganticAmaranitaFeature.java b/src/main/java/ru/betterend/world/features/trees/GiganticAmaranitaFeature.java index 040c678b..71a31ca2 100644 --- a/src/main/java/ru/betterend/world/features/trees/GiganticAmaranitaFeature.java +++ b/src/main/java/ru/betterend/world/features/trees/GiganticAmaranitaFeature.java @@ -361,7 +361,7 @@ public class GiganticAmaranitaFeature extends DefaultFeature { static { REPLACE = (state) -> { - if (/*state.is(TagAPI.BLOCK_END_GROUND) || */state.getMaterial().equals(Material.PLANT)) { + if (/*state.is(CommonBlockTags.END_STONES) || */state.getMaterial().equals(Material.PLANT)) { return true; } return state.getMaterial().isReplaceable(); diff --git a/src/main/java/ru/betterend/world/features/trees/JellyshroomFeature.java b/src/main/java/ru/betterend/world/features/trees/JellyshroomFeature.java index 696bfeda..e8efe5d0 100644 --- a/src/main/java/ru/betterend/world/features/trees/JellyshroomFeature.java +++ b/src/main/java/ru/betterend/world/features/trees/JellyshroomFeature.java @@ -10,7 +10,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.sdf.SDF; import ru.bclib.sdf.operator.SDFFlatWave; import ru.bclib.sdf.operator.SDFScale3D; @@ -90,7 +90,7 @@ public class JellyshroomFeature extends DefaultFeature { SplineHelper.rotateSpline(branch, angle); SplineHelper.scale(branch, scale); Vector3f last = branch.get(branch.size() - 1); - if (world.getBlockState(pos.offset(last.x(), last.y(), last.z())).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (world.getBlockState(pos.offset(last.x(), last.y(), last.z())).is(CommonBlockTags.GEN_END_STONES)) { SplineHelper.fillSpline(branch, world, wood, pos, REPLACE); } } @@ -123,7 +123,7 @@ public class JellyshroomFeature extends DefaultFeature { SplineHelper.offset(ROOT, new Vector3f(0, -0.45F, 0)); REPLACE = (state) -> { - if (/*state.is(TagAPI.BLOCK_END_GROUND) || */state.getMaterial().equals(Material.PLANT)) { + if (/*state.is(CommonBlockTags.END_STONES) || */state.getMaterial().equals(Material.PLANT)) { return true; } return state.getMaterial().isReplaceable(); diff --git a/src/main/java/ru/betterend/world/features/trees/LacugroveFeature.java b/src/main/java/ru/betterend/world/features/trees/LacugroveFeature.java index 50d72630..5703ab84 100644 --- a/src/main/java/ru/betterend/world/features/trees/LacugroveFeature.java +++ b/src/main/java/ru/betterend/world/features/trees/LacugroveFeature.java @@ -11,7 +11,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.sdf.PosInfo; import ru.bclib.sdf.SDF; import ru.bclib.sdf.operator.SDFDisplacement; @@ -83,7 +83,7 @@ public class LacugroveFeature extends DefaultFeature { boolean generate = false; for (int y = minY; y < maxY; y++) { mut.setY(y); - if (world.getBlockState(mut).is(TagAPI.BLOCK_END_GROUND)) { + if (world.getBlockState(mut).is(CommonBlockTags.END_STONES)) { generate = true; break; } @@ -94,7 +94,7 @@ public class LacugroveFeature extends DefaultFeature { mut.setY(y); BlockState state = world.getBlockState(mut); if (state.getMaterial().isReplaceable() || state.getMaterial() - .equals(Material.PLANT) || state.is(TagAPI.BLOCK_END_GROUND)) { + .equals(Material.PLANT) || state.is(CommonBlockTags.END_STONES)) { BlocksHelper.setWithoutUpdate( world, mut, @@ -189,7 +189,7 @@ public class LacugroveFeature extends DefaultFeature { static { REPLACE = (state) -> { - /*if (state.is(TagAPI.BLOCK_END_GROUND)) { + /*if (state.is(CommonBlockTags.END_STONES)) { return true; }*/ if (EndBlocks.LACUGROVE.isTreeLog(state)) { diff --git a/src/main/java/ru/betterend/world/features/trees/LucerniaFeature.java b/src/main/java/ru/betterend/world/features/trees/LucerniaFeature.java index f1145e30..373f6bb0 100644 --- a/src/main/java/ru/betterend/world/features/trees/LucerniaFeature.java +++ b/src/main/java/ru/betterend/world/features/trees/LucerniaFeature.java @@ -12,7 +12,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.blocks.BlockProperties; import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.sdf.SDF; @@ -187,7 +187,7 @@ public class LucerniaFeature extends DefaultFeature { SplineHelper.rotateSpline(branch, angle); SplineHelper.scale(branch, scale); Vector3f last = branch.get(branch.size() - 1); - if (world.getBlockState(pos.offset(last.x(), last.y(), last.z())).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (world.getBlockState(pos.offset(last.x(), last.y(), last.z())).is(CommonBlockTags.GEN_END_STONES)) { SplineHelper.fillSplineForce(branch, world, EndBlocks.LUCERNIA.getBark().defaultBlockState(), pos, REPLACE); } } @@ -195,7 +195,7 @@ public class LucerniaFeature extends DefaultFeature { static { REPLACE = (state) -> { - /*if (state.is(TagAPI.BLOCK_END_GROUND)) { + /*if (state.is(CommonBlockTags.END_STONES)) { return true; }*/ if (state.getBlock() == EndBlocks.LUCERNIA_LEAVES) { diff --git a/src/main/java/ru/betterend/world/features/trees/MossyGlowshroomFeature.java b/src/main/java/ru/betterend/world/features/trees/MossyGlowshroomFeature.java index cdbc29c3..99b65c3a 100644 --- a/src/main/java/ru/betterend/world/features/trees/MossyGlowshroomFeature.java +++ b/src/main/java/ru/betterend/world/features/trees/MossyGlowshroomFeature.java @@ -171,7 +171,7 @@ public class MossyGlowshroomFeature extends DefaultFeature { .setSourceB(new SDFUnion().setSourceA(HEAD_POS).setSourceB(ROOTS_ROT)); REPLACE = (state) -> { - /*if (state.is(TagAPI.BLOCK_END_GROUND)) { + /*if (state.is(CommonBlockTags.END_STONES)) { return true; }*/ if (state.getMaterial().equals(Material.PLANT)) { diff --git a/src/main/java/ru/betterend/world/features/trees/PythadendronTreeFeature.java b/src/main/java/ru/betterend/world/features/trees/PythadendronTreeFeature.java index 087a1903..17aaac08 100644 --- a/src/main/java/ru/betterend/world/features/trees/PythadendronTreeFeature.java +++ b/src/main/java/ru/betterend/world/features/trees/PythadendronTreeFeature.java @@ -187,7 +187,7 @@ public class PythadendronTreeFeature extends DefaultFeature { static { REPLACE = (state) -> { - /*if (state.is(TagAPI.BLOCK_END_GROUND)) { + /*if (state.is(CommonBlockTags.END_STONES)) { return true; }*/ if (state.getBlock() == EndBlocks.PYTHADENDRON_LEAVES) { diff --git a/src/main/java/ru/betterend/world/features/trees/TenaneaFeature.java b/src/main/java/ru/betterend/world/features/trees/TenaneaFeature.java index 01aa5d65..e8c4492e 100644 --- a/src/main/java/ru/betterend/world/features/trees/TenaneaFeature.java +++ b/src/main/java/ru/betterend/world/features/trees/TenaneaFeature.java @@ -175,7 +175,7 @@ public class TenaneaFeature extends DefaultFeature { static { REPLACE = (state) -> { - /*if (state.is(TagAPI.BLOCK_END_GROUND)) { + /*if (state.is(CommonBlockTags.END_STONES)) { return true; }*/ if (state.getBlock() == EndBlocks.TENANEA_LEAVES) { diff --git a/src/main/java/ru/betterend/world/features/trees/UmbrellaTreeFeature.java b/src/main/java/ru/betterend/world/features/trees/UmbrellaTreeFeature.java index e37207cd..af0ef623 100644 --- a/src/main/java/ru/betterend/world/features/trees/UmbrellaTreeFeature.java +++ b/src/main/java/ru/betterend/world/features/trees/UmbrellaTreeFeature.java @@ -12,7 +12,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.sdf.SDF; import ru.bclib.sdf.operator.SDFFlatWave; import ru.bclib.sdf.operator.SDFScale; @@ -159,7 +159,7 @@ public class UmbrellaTreeFeature extends DefaultFeature { SplineHelper.rotateSpline(branch, angle); SplineHelper.scale(branch, scale); Vector3f last = branch.get(branch.size() - 1); - if (world.getBlockState(pos.offset(last.x(), last.y(), last.z())).is(TagAPI.BLOCK_GEN_TERRAIN)) { + if (world.getBlockState(pos.offset(last.x(), last.y(), last.z())).is(CommonBlockTags.GEN_END_STONES)) { SplineHelper.fillSplineForce(branch, world, wood, pos, REPLACE); } } @@ -218,7 +218,7 @@ public class UmbrellaTreeFeature extends DefaultFeature { SplineHelper.offset(ROOT, new Vector3f(0, -0.45F, 0)); REPLACE = (state) -> { - if (/*state.is(TagAPI.BLOCK_END_GROUND) || */state.getMaterial().equals(Material.PLANT) || state.is(EndBlocks.UMBRELLA_TREE_MEMBRANE)) { + if (/*state.is(CommonBlockTags.END_STONES) || */state.getMaterial().equals(Material.PLANT) || state.is(EndBlocks.UMBRELLA_TREE_MEMBRANE)) { return true; } return state.getMaterial().isReplaceable(); diff --git a/src/main/java/ru/betterend/world/generator/GeneratorOptions.java b/src/main/java/ru/betterend/world/generator/GeneratorOptions.java index 79f0850d..35f2a85f 100644 --- a/src/main/java/ru/betterend/world/generator/GeneratorOptions.java +++ b/src/main/java/ru/betterend/world/generator/GeneratorOptions.java @@ -10,7 +10,6 @@ public class GeneratorOptions { private static boolean hasPillars; private static boolean hasDragonFights; private static boolean changeChorusPlant; - private static boolean removeChorusFromVanillaBiomes; private static boolean newGenerator; private static boolean generateCentralIsland; private static boolean generateObsidianPlatform; @@ -25,6 +24,7 @@ public class GeneratorOptions { private static int islandDistChunk; private static boolean directSpikeHeight; private static int circleRadius = 1000; + private static int circleRadiusSqr; public static void init() { biomeSizeCaves = Configs.GENERATOR_CONFIG.getInt("biomeMap", "biomeSizeCaves", 32); @@ -32,11 +32,6 @@ public class GeneratorOptions { hasPillars = Configs.GENERATOR_CONFIG.getBoolean("spikes", "hasSpikes", true); hasDragonFights = Configs.GENERATOR_CONFIG.getBooleanRoot("hasDragonFights", true); changeChorusPlant = Configs.GENERATOR_CONFIG.getBoolean("chorusPlant", "changeChorusPlant", true); - removeChorusFromVanillaBiomes = Configs.GENERATOR_CONFIG.getBoolean( - "chorusPlant", - "removeChorusFromVanillaBiomes", - true - ); newGenerator = Configs.GENERATOR_CONFIG.getBoolean("customGenerator", "useNewGenerator", true); generateCentralIsland = Configs.GENERATOR_CONFIG.getBoolean("customGenerator", "generateCentralIsland", true); endCityFailChance = Configs.GENERATOR_CONFIG.getInt("customGenerator", "endCityFailChance", 5); @@ -77,6 +72,7 @@ public class GeneratorOptions { replacePortal = Configs.GENERATOR_CONFIG.getBoolean("portal", "customEndPortal", true); replacePillars = Configs.GENERATOR_CONFIG.getBoolean("spikes", "customObsidianSpikes", true); circleRadius = Configs.GENERATOR_CONFIG.getInt("customGenerator", "voidRingSize", 1000); + circleRadiusSqr = circleRadius * circleRadius; islandDistChunk = (circleRadius >> 3); // Twice bigger than normal } @@ -100,10 +96,6 @@ public class GeneratorOptions { return changeChorusPlant; } - public static boolean removeChorusFromVanillaBiomes() { - return removeChorusFromVanillaBiomes; - } - public static boolean useNewGenerator() { return newGenerator; } @@ -140,6 +132,10 @@ public class GeneratorOptions { return circleRadius; } + public static int getIslandDistBlockSqr() { + return circleRadiusSqr; + } + public static int getIslandDistChunk() { return islandDistChunk; } diff --git a/src/main/java/ru/betterend/world/generator/IslandLayer.java b/src/main/java/ru/betterend/world/generator/IslandLayer.java index 76c7a735..94e7fcb1 100644 --- a/src/main/java/ru/betterend/world/generator/IslandLayer.java +++ b/src/main/java/ru/betterend/world/generator/IslandLayer.java @@ -41,10 +41,7 @@ public class IslandLayer { SDF coneBottom = new SDFSmoothUnion().setRadius(0.02F).setSourceA(cone1).setSourceB(cone2); SDF coneTop = new SDFSmoothUnion().setRadius(0.02F).setSourceA(cone3).setSourceB(cone4); - noise = (SDFRadialNoiseMap) new SDFRadialNoiseMap().setSeed(seed) - .setRadius(0.5F) - .setIntensity(0.2F) - .setSource(coneTop); + noise = (SDFRadialNoiseMap) new SDFRadialNoiseMap().setSeed(seed).setRadius(0.5F).setIntensity(0.2F).setSource(coneTop); island = new SDFSmoothUnion().setRadius(0.01F).setSourceA(noise).setSourceB(coneBottom); } @@ -87,7 +84,7 @@ public class IslandLayer { for (int n = 0; n < count; n++) { BlockPos pos = positions.get(n); long d = (long) pos.getX() * (long) pos.getX() + (long) pos.getZ() * (long) pos.getZ(); - if (d < GeneratorOptions.getIslandDistBlock()) { + if (d < GeneratorOptions.getIslandDistBlockSqr()) { positions.remove(n); count--; n--; diff --git a/src/main/java/ru/betterend/world/structures/features/EternalPortalStructure.java b/src/main/java/ru/betterend/world/structures/features/EternalPortalStructure.java index dd27ed41..54cf4d2e 100644 --- a/src/main/java/ru/betterend/world/structures/features/EternalPortalStructure.java +++ b/src/main/java/ru/betterend/world/structures/features/EternalPortalStructure.java @@ -25,9 +25,9 @@ public class EternalPortalStructure extends FeatureBaseStructure { public EternalPortalStructure() { super(PieceGeneratorSupplier.simple( - EternalPortalStructure::checkLocation, - EternalPortalStructure::generatePieces - )); + EternalPortalStructure::checkLocation, + EternalPortalStructure::generatePieces) + ); } protected static boolean checkLocation(PieceGeneratorSupplier.Context context) { diff --git a/src/main/java/ru/betterend/world/structures/piece/CavePiece.java b/src/main/java/ru/betterend/world/structures/piece/CavePiece.java index bd9ecbbf..bee561c0 100644 --- a/src/main/java/ru/betterend/world/structures/piece/CavePiece.java +++ b/src/main/java/ru/betterend/world/structures/piece/CavePiece.java @@ -11,11 +11,12 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.levelgen.structure.BoundingBox; import net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext; -import ru.bclib.api.TagAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.registry.EndStructures; +import ru.betterend.util.GlobalState; import java.util.Random; @@ -49,7 +50,7 @@ public class CavePiece extends BasePiece { double hr = radius * 0.75; double nr = radius * 0.25; - MutableBlockPos pos = new MutableBlockPos(); + final MutableBlockPos pos = GlobalState.stateForThread().POS; for (int x = x1; x <= x2; x++) { int xsq = x - center.getX(); xsq *= xsq; @@ -67,7 +68,7 @@ public class CavePiece extends BasePiece { double r2 = r - 4.5; double dist = xsq + ysq + zsq; if (dist < r2 * r2) { - if (world.getBlockState(pos).is(TagAPI.BLOCK_END_GROUND)) { + if (world.getBlockState(pos).is(CommonBlockTags.END_STONES)) { BlocksHelper.setWithoutUpdate(world, pos, CAVE_AIR); } } diff --git a/src/main/java/ru/betterend/world/structures/piece/CrystalMountainPiece.java b/src/main/java/ru/betterend/world/structures/piece/CrystalMountainPiece.java index 60acae3b..6a822056 100644 --- a/src/main/java/ru/betterend/world/structures/piece/CrystalMountainPiece.java +++ b/src/main/java/ru/betterend/world/structures/piece/CrystalMountainPiece.java @@ -16,11 +16,12 @@ import net.minecraft.world.level.levelgen.Heightmap; import net.minecraft.world.level.levelgen.Heightmap.Types; import net.minecraft.world.level.levelgen.structure.BoundingBox; import net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext; -import ru.bclib.api.TagAPI; import ru.bclib.api.biomes.BiomeAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.util.MHelper; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndStructures; +import ru.betterend.util.GlobalState; import ru.betterend.world.biome.EndBiome; import java.util.Random; @@ -47,7 +48,7 @@ public class CrystalMountainPiece extends MountainPiece { public void postProcess(WorldGenLevel world, StructureFeatureManager arg, ChunkGenerator chunkGenerator, Random random, BoundingBox blockBox, ChunkPos chunkPos, BlockPos blockPos) { int sx = chunkPos.getMinBlockX(); int sz = chunkPos.getMinBlockZ(); - MutableBlockPos pos = new MutableBlockPos(); + final MutableBlockPos pos = GlobalState.stateForThread().POS; ChunkAccess chunk = world.getChunk(chunkPos.x, chunkPos.z); Heightmap map = chunk.getOrCreateHeightmapUnprimed(Types.WORLD_SURFACE); Heightmap map2 = chunk.getOrCreateHeightmapUnprimed(Types.WORLD_SURFACE_WG); @@ -69,7 +70,7 @@ public class CrystalMountainPiece extends MountainPiece { continue; } pos.setY(minY); - while (!chunk.getBlockState(pos).is(TagAPI.BLOCK_GEN_TERRAIN) && pos.getY() > 56 && !chunk.getBlockState( + while (!chunk.getBlockState(pos).is(CommonBlockTags.GEN_END_STONES) && pos.getY() > 56 && !chunk.getBlockState( pos.below()).is(Blocks.CAVE_AIR)) { pos.setY(pos.getY() - 1); } diff --git a/src/main/java/ru/betterend/world/structures/piece/LakePiece.java b/src/main/java/ru/betterend/world/structures/piece/LakePiece.java index 4a582e27..cb8a1b8c 100644 --- a/src/main/java/ru/betterend/world/structures/piece/LakePiece.java +++ b/src/main/java/ru/betterend/world/structures/piece/LakePiece.java @@ -21,8 +21,8 @@ import net.minecraft.world.level.levelgen.Heightmap.Types; import net.minecraft.world.level.levelgen.structure.BoundingBox; import net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext; import net.minecraft.world.level.material.FluidState; -import ru.bclib.api.TagAPI; import ru.bclib.api.biomes.BiomeAPI; +import ru.bclib.api.tag.CommonBlockTags; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.betterend.noise.OpenSimplexNoise; @@ -118,7 +118,7 @@ public class LakePiece extends BasePiece { double dist = x3 + y2 + z3; if (dist < r2) { BlockState state = chunk.getBlockState(mut); - if (state.is(TagAPI.BLOCK_GEN_TERRAIN) || state.isAir()) { + if (state.is(CommonBlockTags.GEN_END_STONES) || state.isAir()) { state = mut.getY() < center.getY() ? WATER : CAVE_AIR; chunk.setBlockState(mut, state, false); } diff --git a/src/main/java/ru/betterend/world/structures/piece/PaintedMountainPiece.java b/src/main/java/ru/betterend/world/structures/piece/PaintedMountainPiece.java index 4c37167c..b27f0f3e 100644 --- a/src/main/java/ru/betterend/world/structures/piece/PaintedMountainPiece.java +++ b/src/main/java/ru/betterend/world/structures/piece/PaintedMountainPiece.java @@ -18,6 +18,7 @@ import net.minecraft.world.level.levelgen.structure.BoundingBox; import net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext; import ru.bclib.util.MHelper; import ru.betterend.registry.EndStructures; +import ru.betterend.util.GlobalState; import java.util.Random; @@ -57,7 +58,7 @@ public class PaintedMountainPiece extends MountainPiece { public void postProcess(WorldGenLevel world, StructureFeatureManager arg, ChunkGenerator chunkGenerator, Random random, BoundingBox blockBox, ChunkPos chunkPos, BlockPos blockPos) { int sx = chunkPos.getMinBlockX(); int sz = chunkPos.getMinBlockZ(); - MutableBlockPos pos = new MutableBlockPos(); + final MutableBlockPos pos = GlobalState.stateForThread().POS; ChunkAccess chunk = world.getChunk(chunkPos.x, chunkPos.z); Heightmap map = chunk.getOrCreateHeightmapUnprimed(Types.WORLD_SURFACE); Heightmap map2 = chunk.getOrCreateHeightmapUnprimed(Types.WORLD_SURFACE_WG); diff --git a/src/main/java/ru/betterend/world/surface/SplitNoiseCondition.java b/src/main/java/ru/betterend/world/surface/SplitNoiseCondition.java index d3e6aa4e..179b30cc 100644 --- a/src/main/java/ru/betterend/world/surface/SplitNoiseCondition.java +++ b/src/main/java/ru/betterend/world/surface/SplitNoiseCondition.java @@ -1,14 +1,20 @@ package ru.betterend.world.surface; +import com.mojang.serialization.Codec; +import net.minecraft.core.Registry; import ru.bclib.interfaces.NumericProvider; import ru.bclib.mixin.common.SurfaceRulesContextAccessor; import ru.bclib.util.MHelper; +import ru.betterend.BetterEnd; import ru.betterend.noise.OpenSimplexNoise; /** * Noise source that returns a value in [0, 1] */ public class SplitNoiseCondition implements NumericProvider { + public static final SplitNoiseCondition DEFAULT = new SplitNoiseCondition(); + public static final Codec CODEC = Codec.BYTE.fieldOf("split_noise").xmap((obj)->DEFAULT, obj -> (byte)0).codec(); + private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(4141); @Override @@ -18,4 +24,13 @@ public class SplitNoiseCondition implements NumericProvider { float noise = (float) NOISE.eval(x * 0.1, z * 0.1) + MHelper.randRange(-0.4F, 0.4F, MHelper.RANDOM); return noise > 0 ? 1 : 0; } + + @Override + public Codec pcodec() { + return CODEC; + } + + static { + Registry.register(NumericProvider.NUMERIC_PROVIDER , BetterEnd.makeID("split_noise"), SplitNoiseCondition.CODEC); + } } diff --git a/src/main/java/ru/betterend/world/surface/SulphuricSurfaceNoiseCondition.java b/src/main/java/ru/betterend/world/surface/SulphuricSurfaceNoiseCondition.java index 1ad16c08..70159892 100644 --- a/src/main/java/ru/betterend/world/surface/SulphuricSurfaceNoiseCondition.java +++ b/src/main/java/ru/betterend/world/surface/SulphuricSurfaceNoiseCondition.java @@ -1,14 +1,20 @@ package ru.betterend.world.surface; +import com.mojang.serialization.Codec; +import net.minecraft.core.Registry; import ru.bclib.interfaces.NumericProvider; import ru.bclib.mixin.common.SurfaceRulesContextAccessor; import ru.bclib.util.MHelper; +import ru.betterend.BetterEnd; import ru.betterend.noise.OpenSimplexNoise; /** * Noise source that returns a value in [0, 3] */ public class SulphuricSurfaceNoiseCondition implements NumericProvider { + public static final SulphuricSurfaceNoiseCondition DEFAULT = new SulphuricSurfaceNoiseCondition(); + public static final Codec CODEC = Codec.BYTE.fieldOf("sulphuric_surf").xmap((obj)->DEFAULT, obj -> (byte)0).codec(); + private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(5123); @Override @@ -21,4 +27,13 @@ public class SulphuricSurfaceNoiseCondition implements NumericProvider { if (value < 0.5) return 2; return 3; } + + @Override + public Codec pcodec() { + return CODEC; + } + + static { + Registry.register(NumericProvider.NUMERIC_PROVIDER , BetterEnd.makeID("sulphuric_surf"), SulphuricSurfaceNoiseCondition.CODEC); + } } diff --git a/src/main/java/ru/betterend/world/surface/UmbraSurfaceNoiseCondition.java b/src/main/java/ru/betterend/world/surface/UmbraSurfaceNoiseCondition.java index 83fea882..4cc3f8d7 100644 --- a/src/main/java/ru/betterend/world/surface/UmbraSurfaceNoiseCondition.java +++ b/src/main/java/ru/betterend/world/surface/UmbraSurfaceNoiseCondition.java @@ -1,14 +1,20 @@ package ru.betterend.world.surface; +import com.mojang.serialization.Codec; +import net.minecraft.core.Registry; import ru.bclib.interfaces.NumericProvider; import ru.bclib.mixin.common.SurfaceRulesContextAccessor; import ru.bclib.util.MHelper; +import ru.betterend.BetterEnd; import ru.betterend.noise.OpenSimplexNoise; /** * Noise source that returns a value in [0, 4] */ public class UmbraSurfaceNoiseCondition implements NumericProvider { + public static final UmbraSurfaceNoiseCondition DEFAULT = new UmbraSurfaceNoiseCondition(); + public static final Codec CODEC = Codec.BYTE.fieldOf("umbra_srf").xmap((obj)->DEFAULT, obj -> (byte)0).codec(); + private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(1512); @Override @@ -26,4 +32,13 @@ public class UmbraSurfaceNoiseCondition implements NumericProvider { if (value > -0.4) return 3; return 4; } + + @Override + public Codec pcodec() { + return CODEC; + } + + static { + Registry.register(NumericProvider.NUMERIC_PROVIDER , BetterEnd.makeID("umbra_srf"), UmbraSurfaceNoiseCondition.CODEC); + } } diff --git a/src/main/resources/assets/betterend/lang/ko_kr.json b/src/main/resources/assets/betterend/lang/ko_kr.json index 9ede3c76..c7c5e956 100644 --- a/src/main/resources/assets/betterend/lang/ko_kr.json +++ b/src/main/resources/assets/betterend/lang/ko_kr.json @@ -1,9 +1,9 @@ { - "itemGroup.betterend.end_items": "더좋은 엔드: 아이템", - "itemGroup.betterend.end_blocks": "더좋은 엔드: 블록", + "itemGroup.betterend.end_items": "더 좋은 엔드: 아이템", + "itemGroup.betterend.end_blocks": "더 좋은 엔드: 블록", "item.betterend.guidebook": "엔드 무작정 따라하기", - "book.betterend.landing": "엔드의 극한환경에서 살아남기 위한 짤막한 가이드", + "book.betterend.landing": "엔드의 극한 환경에서 살아남기 위한 짤막한 가이드", "book.betterend.subtitle": "엔드에서 살아남기", "category.rei.damage.amount&dmg": "도구 손상: %s", @@ -76,7 +76,7 @@ "item.betterend.leather_stripe": "가죽끈", "item.betterend.leather_wrapped_stick": "가죽을 감은 막대기", "item.betterend.elytra_armored": "장갑 겉날개", - "item.betterend.elytra_crystalite": "겉날개 크리스탈라이트", + "item.betterend.elytra_crystalite": "크리스탈라이트 겉날개", "item.betterend.enchanted_membrane": "마법이 부여된 막", "effect.betterend.end_veil": "엔드 베일", @@ -291,8 +291,8 @@ "block.betterend.mossy_glowshroom_bookshelf": "이끼 낀 발광버섯 책장", "block.betterend.pythadendron_bookshelf": "피타덴드론나무 책장", - "block.betterend.murkweed": "컴컴한풀", - "block.betterend.needlegrass": "털수염풀", + "block.betterend.murkweed": "컴컴한 풀", + "block.betterend.needlegrass": "털수염 풀", "block.betterend.twisted_vine": "뒤틀린 덩굴", "block.betterend.shadow_berry": "그림자 열매 씨앗", @@ -327,34 +327,34 @@ "biome.betterend.blossoming_spires": "만발한 첨탑", "block.betterend.amber_grass": "호박 잔디", "block.betterend.amber_grass_path": "호박 잔디 길", - "block.betterend.tenanea_bark": "테나네아나무", - "block.betterend.tenanea_barrel": "테나네아나무 통", - "block.betterend.tenanea_bookshelf": "테나네아나무 책장", - "block.betterend.tenanea_button": "테나네아나무 버튼", - "block.betterend.tenanea_chest": "테나네아나무 상자", - "block.betterend.tenanea_crafting_table": "테나네아나무 제작대", - "block.betterend.tenanea_door": "테나네아나무 문", - "block.betterend.tenanea_fence": "테나네아나무 울타리", - "block.betterend.tenanea_gate": "테나네아나무 울타리 문", - "block.betterend.tenanea_ladder": "테나네아나무 사다리", - "block.betterend.tenanea_leaves": "테나네아나무 잎", - "block.betterend.tenanea_log": "테나네아나무 원목", - "block.betterend.tenanea_planks": "테나네아나무 판자", - "block.betterend.tenanea_plate": "테나네아나무 압력판", - "block.betterend.tenanea_sapling": "테나네아나무 묘목", - "block.betterend.tenanea_sign": "테나네아나무 표지판", - "block.betterend.tenanea_slab": "테나네아나무 반 블록", - "block.betterend.tenanea_stairs": "테나네아나무 계단", - "block.betterend.tenanea_stripped_bark": "껍질 벗긴 테나네아나무", - "block.betterend.tenanea_stripped_log": "껍질 벗긴 테나네아나무 원목", - "block.betterend.tenanea_trapdoor": "테나네아나무 다락문", + "block.betterend.tenanea_bark": "테나니아나무", + "block.betterend.tenanea_barrel": "테나니아나무 통", + "block.betterend.tenanea_bookshelf": "테나니아나무 책장", + "block.betterend.tenanea_button": "테나니아나무 버튼", + "block.betterend.tenanea_chest": "테나니아나무 상자", + "block.betterend.tenanea_crafting_table": "테나니아나무 제작대", + "block.betterend.tenanea_door": "테나니아나무 문", + "block.betterend.tenanea_fence": "테나니아나무 울타리", + "block.betterend.tenanea_gate": "테나니아나무 울타리 문", + "block.betterend.tenanea_ladder": "테나니아나무 사다리", + "block.betterend.tenanea_leaves": "테나니아나무 잎", + "block.betterend.tenanea_log": "테나니아나무 원목", + "block.betterend.tenanea_planks": "테나니아나무 판자", + "block.betterend.tenanea_plate": "테나니아나무 압력판", + "block.betterend.tenanea_sapling": "테나니아나무 묘목", + "block.betterend.tenanea_sign": "테나니아나무 표지판", + "block.betterend.tenanea_slab": "테나니아나무 반 블록", + "block.betterend.tenanea_stairs": "테나니아나무 계단", + "block.betterend.tenanea_stripped_bark": "껍질 벗긴 테나니아나무", + "block.betterend.tenanea_stripped_log": "껍질 벗긴 테나니아나무 원목", + "block.betterend.tenanea_trapdoor": "테나니아나무 다락문", "block.betterend.amber_block": "호박 블록", "block.betterend.amber_ore": "호박 광석", "item.betterend.amber_gem": "호박", "item.betterend.raw_amber": "가공하지 않은 호박", - "block.betterend.tenanea_flowers": "테나네아나무 꽃", - "block.betterend.tenanea_outer_leaves": "테나네아나무 겉잎", + "block.betterend.tenanea_flowers": "테나니아나무 꽃", + "block.betterend.tenanea_outer_leaves": "테나니아나무 겉잎", "block.betterend.pink_moss": "분홍색 이끼", "block.betterend.pink_moss_path": "분홍색 이끼 길", @@ -516,7 +516,7 @@ "block.betterend.lacugrove_composter": "라쿠그로브나무 퇴비통", "block.betterend.mossy_glowshroom_composter": "이끼 낀 발광버섯 퇴비통", "block.betterend.pythadendron_composter": "피타덴드론나무 퇴비통", - "block.betterend.tenanea_composter": "테나네아나무 퇴비통", + "block.betterend.tenanea_composter": "테나니아나무 퇴비통", "biome.betterend.old_bulbis_gardens": "오래된 구근 정원", "block.betterend.ivis_moss": "이비스 이끼", @@ -598,7 +598,7 @@ "item.betterend.silk_fiber": "비단 실", "item.betterend.spawn_egg_silk_moth": "누에나방 생성 알", - "item.betterend.thallasium_raw": "탈라슘 원석 블록", + "item.betterend.thallasium_raw": "탈라슘 원석", "block.betterend.thallasium_ore": "탈라슘 광석", "item.betterend.thallasium_axe": "탈라슘 도끼", "item.betterend.thallasium_hoe": "탈라슘 괭이", @@ -725,7 +725,7 @@ "block.betterend.azure_jadestone_wall": "하늘색 옥석 담장", "block.betterend.chorus_mushroom_seed": "후렴 버섯 씨앗", "block.betterend.end_stone_stalactite": "엔드 돌 종유석", - "block.betterend.end_stone_stalactite_cavemoss": "동굴 이끼가 덮힌 엔드 돌 종유석", + "block.betterend.end_stone_stalactite_cavemoss": "동굴 이끼가 덮인 엔드 돌 종유석", "block.betterend.pearlberry_seed": "펄베리 씨앗", "block.betterend.rubinea": "루비네아", "block.betterend.sandy_jadestone": "모래색 옥석", @@ -744,8 +744,8 @@ "block.betterend.sandy_jadestone_stairs": "모래색 옥석 계단", "block.betterend.sandy_jadestone_tiles": "모래색 옥석 타일", "block.betterend.sandy_jadestone_wall": "모래색 옥석 담장", - "block.betterend.smaragdant_crystal": "스마그댄트 수정", - "block.betterend.smaragdant_crystal_shard": "스마그댄트 수정 조각", + "block.betterend.smaragdant_crystal": "스마라그댄트 수정", + "block.betterend.smaragdant_crystal_shard": "스마라그댄트 수정 조각", "block.betterend.virid_jadestone": "담녹색 옥석", "block.betterend.virid_jadestone_bricks": "담녹색 옥석 벽돌", "block.betterend.virid_jadestone_bricks_slab": "담녹색 옥석 벽돌 반 블록", @@ -768,9 +768,9 @@ "biome.betterend.empty_aurora_cave": "빈 오로라 동굴", "biome.betterend.empty_end_cave": "빈 엔드 동굴", - "biome.betterend.empty_smaragdant_cave": "빈 스마그댄트 동굴", + "biome.betterend.empty_smaragdant_cave": "빈 스마라그댄트 동굴", "biome.betterend.lush_aurora_cave": "무성한 오로라 동굴", - "biome.betterend.lush_smaragdant_cave": "무성한 스마그댄트 동굴", + "biome.betterend.lush_smaragdant_cave": "무성한 스마라그댄트 동굴", "block.betterend.dragon_bone_block": "드래곤 뼈 블록", "block.betterend.dragon_bone_slab": "드래곤 뼈 반 블록", @@ -848,17 +848,17 @@ "block.betterend.hydralux_petal_block_slate_gray": "쥐색 꽃잎 블록", "block.betterend.hydralux_petal_block_violet": "보라색 꽃잎 블록", - "block.betterend.smaragdant_crystal_bricks": "스마그댄트 벽돌", - "block.betterend.smaragdant_crystal_bricks_slab": "스마그댄트 벽돌 반 블록", - "block.betterend.smaragdant_crystal_bricks_stairs": "스마그댄트 벽돌 계단", - "block.betterend.smaragdant_crystal_bricks_wall": "스마그댄트 벽돌 담장", - "block.betterend.smaragdant_crystal_pedestal": "스마그댄트 받침대", - "block.betterend.smaragdant_crystal_pillar": "스마그댄트 기둥", - "block.betterend.smaragdant_crystal_polished": "윤나는 스마그댄트", - "block.betterend.smaragdant_crystal_slab": "스마그댄트 반 블록", - "block.betterend.smaragdant_crystal_stairs": "스마그댄트 계단", - "block.betterend.smaragdant_crystal_tiles": "스마그댄트 타일", - "block.betterend.smaragdant_crystal_wall": "스마그댄트 담장", + "block.betterend.smaragdant_crystal_bricks": "스마라그댄트 벽돌", + "block.betterend.smaragdant_crystal_bricks_slab": "스마라그댄트 벽돌 반 블록", + "block.betterend.smaragdant_crystal_bricks_stairs": "스마라그댄트 벽돌 계단", + "block.betterend.smaragdant_crystal_bricks_wall": "스마라그댄트 벽돌 담장", + "block.betterend.smaragdant_crystal_pedestal": "스마라그댄트 받침대", + "block.betterend.smaragdant_crystal_pillar": "스마라그댄트 기둥", + "block.betterend.smaragdant_crystal_polished": "윤나는 스마라그댄트", + "block.betterend.smaragdant_crystal_slab": "스마라그댄트 반 블록", + "block.betterend.smaragdant_crystal_stairs": "스마라그댄트 계단", + "block.betterend.smaragdant_crystal_tiles": "스마라그댄트 타일", + "block.betterend.smaragdant_crystal_wall": "스마라그댄트 담장", "message.betterend.anvil_damage": "§c피해", "block.betterend.neon_cactus_block": "네온 선인장 블록", @@ -872,9 +872,9 @@ "attribute.name.generic.blindness_resistance": "실명 저항", - "tooltip.armor.crystalite_set": "세트 보너스 : 재생 I", - "tooltip.armor.crystalite_chest": "효과 : 굴착 속도 I", - "tooltip.armor.crystalite_boots": "효과 : 신속 I", + "tooltip.armor.crystalite_set": "세트 보너스: 재생 I", + "tooltip.armor.crystalite_chest": "효과: 채굴 속도 I", + "tooltip.armor.crystalite_boots": "효과: 신속 I", "block.betterend.azure_jadestone_flower_pot": "하늘색 옥석 화분", "block.betterend.endstone_flower_pot": "엔드 돌 화분", @@ -904,7 +904,7 @@ "block.betterend.umbralith_wall": "엄브럴리스 담장", "biome.betterend.umbra_valley": "그림자 계곡", - "block.betterend.inflexia": "인플렉시어", + "block.betterend.inflexia": "인플렉시아", "block.betterend.pallidium_full": "팔리디움 (전체형 커버)", "block.betterend.pallidium_heavy": "팔리디움 (중형 커버)", "block.betterend.pallidium_thin": "팔리디움 (경형 커버)", diff --git a/src/main/resources/data/betterend/patchouli_books/guidebook/ko_kr/categories/biomes.json b/src/main/resources/data/betterend/patchouli_books/guidebook/ko_kr/categories/biomes.json index 40e3c944..892bf62b 100644 --- a/src/main/resources/data/betterend/patchouli_books/guidebook/ko_kr/categories/biomes.json +++ b/src/main/resources/data/betterend/patchouli_books/guidebook/ko_kr/categories/biomes.json @@ -1,5 +1,5 @@ { - "name": "생물 군계", + "name": "생물군계", "description": "작업 중...", "icon": "betterend:end_mycelium" -} \ No newline at end of file +} diff --git a/src/main/resources/data/betterend/patchouli_books/guidebook/ko_kr/categories/end_veil.json b/src/main/resources/data/betterend/patchouli_books/guidebook/ko_kr/categories/end_veil.json index 81cd0798..51ecc404 100644 --- a/src/main/resources/data/betterend/patchouli_books/guidebook/ko_kr/categories/end_veil.json +++ b/src/main/resources/data/betterend/patchouli_books/guidebook/ko_kr/categories/end_veil.json @@ -1,6 +1,6 @@ { "name": "엔드 베일", - "description": "엔더맨의 눈을 봐도 공격하지 않습니다.", + "description": "엔더맨의 눈을 봐도 공격당하지 않습니다.", "icon": "betterend:textures/mob_effect/end_veil.png", "sortnum": 3 -} \ No newline at end of file +} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index c674a170..70b7c827 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -46,7 +46,7 @@ "fabricloader": ">=0.12.9", "fabric": ">=0.44.0", "minecraft": "1.18.x", - "bclib": ">=1.2.0" + "bclib": ">=1.3.5" }, "suggests": { "byg": ">=1.1.3",