diff --git a/gradle.properties b/gradle.properties index fb02eb8..eac6250 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,17 +4,17 @@ # Fabric Properties # check these on https://fabricmc.net/develop - minecraft_version=1.20.3 - yarn_mappings=1.20.3+build.1 - loader_version=0.15.0 + minecraft_version=1.20.4 + yarn_mappings=1.20.4+build.1 + loader_version=0.15.1 # Mod Properties - mod_version = 1.20.3.5 + mod_version = 1.20.4.0 maven_group = de.jottyfan.minecraft archives_base_name = quickiefabric # Dependencies - fabric_version=0.91.1+1.20.3 + fabric_version=0.91.2+1.20.4 # for ExtendedLeavesBlock terraform_wood_api_version=9.0.0-alpha.3 diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockSulforpad.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockSulforpad.java index 470c2c9..1786dd4 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockSulforpad.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockSulforpad.java @@ -12,17 +12,22 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.CropBlock; +import net.minecraft.block.IceBlock; import net.minecraft.block.ShapeContext; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.fluid.FluidState; +import net.minecraft.fluid.Fluids; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.loot.context.LootContextParameterSet.Builder; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.ItemScatterer; import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.random.Random; import net.minecraft.util.shape.VoxelShape; import net.minecraft.world.BlockView; import net.minecraft.world.World; @@ -56,7 +61,8 @@ public class BlockSulforpad extends CropBlock { @Override protected boolean canPlantOnTop(BlockState floor, BlockView world, BlockPos pos) { - return floor.getBlock().equals(Blocks.LAVA) || floor.getBlock().equals(Blocks.LAVA_CAULDRON); + Boolean lavaBase = floor.getBlock().equals(Blocks.LAVA) || floor.getBlock().equals(Blocks.LAVA_CAULDRON); + return lavaBase && world.getBlockState(pos.up()).isAir(); } @Override diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/init/FeaturesManager.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/init/FeaturesManager.java index 02e077e..58560f5 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/init/FeaturesManager.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/init/FeaturesManager.java @@ -61,4 +61,5 @@ public class FeaturesManager { bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_BLOCKSULPHOR); }; } + } diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/init/RegistryManager.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/init/RegistryManager.java index 488801c..5a82ae8 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/init/RegistryManager.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/init/RegistryManager.java @@ -1,5 +1,7 @@ package de.jottyfan.minecraft.quickiefabric.init; +import java.util.List; + import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -22,6 +24,8 @@ import de.jottyfan.minecraft.quickiefabric.event.EventBlockBreak; import de.jottyfan.minecraft.quickiefabric.items.QuickieItems; import de.jottyfan.minecraft.quickiefabric.loot.LootHelper; import de.jottyfan.minecraft.quickiefabric.tools.QuickieTools; +import de.jottyfan.minecraft.quickiefabric.world.gen.feature.SulforpadFeature; +import de.jottyfan.minecraft.quickiefabric.world.gen.feature.SulforpadFeatureConfig; import net.fabricmc.fabric.api.biome.v1.BiomeModifications; import net.fabricmc.fabric.api.biome.v1.BiomeSelectors; import net.fabricmc.fabric.api.biome.v1.ModificationPhase; @@ -40,15 +44,22 @@ import net.minecraft.item.BlockItem; import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; +import net.minecraft.registry.BuiltinRegistries; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.tag.TagKey; import net.minecraft.screen.ScreenHandlerType; import net.minecraft.text.Text; import net.minecraft.util.ActionResult; import net.minecraft.util.Identifier; +import net.minecraft.world.gen.GenerationStep; +import net.minecraft.world.gen.feature.ConfiguredFeature; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.PlacedFeature; +import net.minecraft.world.gen.placementmodifier.SquarePlacementModifier; /** * @@ -300,6 +311,19 @@ public class RegistryManager { // Nether features BiomeModifications.create(new Identifier(QUICKIEFABRIC, "nether_features")).add(ModificationPhase.ADDITIONS, BiomeSelectors.foundInTheNether(), FeaturesManager.netherOres()); + + // Sulforpad feature + Identifier SULFORPAD_FEATURE_ID = new Identifier(QUICKIEFABRIC, "sulforpad_feature"); + Feature SULFORPAD_FEATURE = new SulforpadFeature(SulforpadFeatureConfig.CODEC); + ConfiguredFeature SULFORPAD_FEATURE_CONFIGURED = new ConfiguredFeature<>( + (SulforpadFeature) SULFORPAD_FEATURE, + new SulforpadFeatureConfig(new Identifier(QUICKIEFABRIC, "sulforpad"))); + PlacedFeature SULFORPAD_FEATURE_PLACED = new PlacedFeature(RegistryEntry.of(SULFORPAD_FEATURE_CONFIGURED), List.of(SquarePlacementModifier.of())); +// Registries.register(RegistryKeys.FEATURE, SULFORPAD_FEATURE_ID, SULFORPAD_FEATURE); +// Registries.register(RegistryKeys.CONFIGURED_FEATURE, SULFORPAD_FEATURE_ID, SULFORPAD_FEATURE_CONFIGURED); +// Registries.register(RegistryKeys.PLACED_FEATURE, SULFORPAD_FEATURE_ID, SULFORPAD_FEATURE_PLACED); +// BiomeModifications.addFeature(BiomeSelectors.foundInTheNether(),GenerationStep.Feature.VEGETAL_DECORATION, +// RegistryKey.of(RegistryKeys.PLACED_FEATURE, SULFORPAD_FEATURE_ID)); } public static final void registerLootings() { diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/world/gen/feature/SulforpadFeature.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/world/gen/feature/SulforpadFeature.java new file mode 100644 index 0000000..158e76a --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/world/gen/feature/SulforpadFeature.java @@ -0,0 +1,42 @@ +package de.jottyfan.minecraft.quickiefabric.world.gen.feature; + +import com.mojang.serialization.Codec; + +import de.jottyfan.minecraft.quickiefabric.blocks.QuickieBlocks; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.StructureWorldAccess; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.util.FeatureContext; + +/** + * + * @author jotty + * + */ +public class SulforpadFeature extends Feature { + + public SulforpadFeature(Codec configCodec) { + super(configCodec); + } + + @Override + public boolean generate(FeatureContext context) { + StructureWorldAccess world = context.getWorld(); + BlockPos pos = context.getOrigin(); + BlockState blockState = QuickieBlocks.SULFORPAD.getDefaultState(); + BlockPos currentPos = new BlockPos(pos); + for (int y = 0; y < world.getHeight(); y++) { + currentPos = currentPos.up(); + if (world.getBlockState(currentPos).isOf(Blocks.LAVA)) { + if (world.getBlockState(currentPos.up()).isAir()) { + world.setBlockState(currentPos.up(), blockState, 0x10); + currentPos = currentPos.up(); + return true; + } + } + } + return false; + } +} diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/world/gen/feature/SulforpadFeatureConfig.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/world/gen/feature/SulforpadFeatureConfig.java new file mode 100644 index 0000000..57d0774 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/world/gen/feature/SulforpadFeatureConfig.java @@ -0,0 +1,19 @@ +package de.jottyfan.minecraft.quickiefabric.world.gen.feature; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; + +import net.minecraft.util.Identifier; +import net.minecraft.world.gen.feature.FeatureConfig; + +/** + * + * @author jotty + * + */ +public record SulforpadFeatureConfig(Identifier blockId) implements FeatureConfig { + public static Codec CODEC = RecordCodecBuilder + .create(o -> o.group(Identifier.CODEC.fieldOf("blockID").forGetter(SulforpadFeatureConfig::blockId)).apply(o, + SulforpadFeatureConfig::new)); + +} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 832c892..4074481 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -26,8 +26,8 @@ "quickiefabric.mixins.json" ], "depends": { - "fabricloader": ">=0.15.0", - "minecraft": "~1.20.3", + "fabricloader": ">=0.15.1", + "minecraft": "~1.20.4", "java": ">=17", "fabric-api": "*" },