diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 18469c4..1d08c0d 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,5 +1,5 @@ # -#Mon Dec 22 18:46:51 CET 2025 +#Mon Jul 20 21:22:00 CEST 2026 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=25 diff --git a/build.gradle b/build.gradle index 54f9068..d541110 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'net.fabricmc.fabric-loom' version "${loom_version}" + id 'net.fabricmc.fabric-loom' id 'maven-publish' } @@ -11,22 +11,17 @@ base { } repositories { - // Add repositories to retrieve artifacts from in here. - // You should only use this when depending on other mods because - // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. - // See https://docs.gradle.org/current/userguide/declaring_repositories.html - // for more information about repositories. + maven { + name = 'Fabric' + url = 'https://maven.fabricmc.net/' + } + mavenCentral() } dependencies { - // To change the versions see the gradle.properties file minecraft "com.mojang:minecraft:${project.minecraft_version}" - implementation "net.fabricmc:fabric-loader:${project.loader_version}" - - // Fabric API. This is technically optional, but you probably want it anyway. implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}" - } processResources { @@ -42,24 +37,18 @@ tasks.withType(JavaCompile).configureEach { } 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() - sourceCompatibility = JavaVersion.VERSION_25 targetCompatibility = JavaVersion.VERSION_25 } jar { inputs.property "archivesName", project.base.archivesName - from("LICENSE") { rename { "${it}_${inputs.properties.archivesName}"} } } -// configure the maven publication publishing { publications { create("mavenJava", MavenPublication) { @@ -67,12 +56,6 @@ publishing { from components.java } } - - // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. repositories { - // Add repositories to publish to here. - // Notice: This block does NOT have the same function as the block in the top level. - // The repositories here will be used for publishing your artifact, not for - // retrieving dependencies. } -} \ No newline at end of file +} diff --git a/gradle.properties b/gradle.properties index ad1ef7c..5fd3ea2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,14 +7,14 @@ org.gradle.configuration-cache=false # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=26.2 +minecraft_version=26.3-snapshot-5 loader_version=0.19.3 loom_version=1.17-SNAPSHOT # Mod Properties -mod_version=26.2.0.1 +mod_version=26.3.0-snapshot-4 maven_group=de.jottyfan.minecraft archives_base_name=quickly # Dependencies -fabric_api_version=0.152.1+26.2 \ No newline at end of file +fabric_api_version=0.155.3+26.3 diff --git a/settings.gradle b/settings.gradle index 75c4d72..e25459a 100644 --- a/settings.gradle +++ b/settings.gradle @@ -7,4 +7,7 @@ pluginManagement { mavenCentral() gradlePluginPortal() } -} \ No newline at end of file + plugins { + id 'net.fabricmc.fabric-loom' version "${loom_version}" + } +} diff --git a/src/main/java/de/jottyfan/minecraft/Quickly.java b/src/main/java/de/jottyfan/minecraft/Quickly.java index f498feb..a8c4120 100644 --- a/src/main/java/de/jottyfan/minecraft/Quickly.java +++ b/src/main/java/de/jottyfan/minecraft/Quickly.java @@ -7,15 +7,14 @@ import org.apache.logging.log4j.Logger; import de.jottyfan.minecraft.block.QuicklyBlocks; import de.jottyfan.minecraft.blockentity.QuicklyBlockEntity; -import de.jottyfan.minecraft.composter.QuicklyComposter; import de.jottyfan.minecraft.event.QuicklyEvents; import de.jottyfan.minecraft.feature.QuicklyFeatures; import de.jottyfan.minecraft.item.QuicklyItems; -import de.jottyfan.minecraft.loot.QuicklyLootTables; import de.jottyfan.minecraft.tab.QuicklyTab; import net.fabricmc.api.ModInitializer; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; + /** * * @author jotty @@ -34,9 +33,7 @@ public class Quickly implements ModInitializer { List blocks = QuicklyBlocks.registeredModBlocks(); QuicklyBlockEntity.registerBlockEntities(); QuicklyFeatures.registerFeatures(); - QuicklyComposter.registerComposterItems(); QuicklyTab.registerItemGroup(items, blocks); - QuicklyLootTables.registerChanges(); QuicklyEvents.registerBlockBreak(); } } \ No newline at end of file diff --git a/src/main/java/de/jottyfan/minecraft/block/BlockDrill.java b/src/main/java/de/jottyfan/minecraft/block/BlockDrill.java index 4306afc..91d617c 100644 --- a/src/main/java/de/jottyfan/minecraft/block/BlockDrill.java +++ b/src/main/java/de/jottyfan/minecraft/block/BlockDrill.java @@ -30,6 +30,7 @@ import net.minecraft.world.level.block.FallingBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -44,7 +45,9 @@ import net.minecraft.world.phys.BlockHitResult; * */ public class BlockDrill extends FallingBlock implements EntityBlock { - public static final MapCodec CODEC = simpleCodec(BlockDrill::new); + public static final MapCodec CODEC = MapCodec.unit(() -> new BlockDrill( + BlockBehaviour.Properties.of() + )); private static final Integer MAX_FUEL = 255; public static final IntegerProperty FUEL = IntegerProperty.create("fuel", 0, MAX_FUEL); @@ -131,11 +134,6 @@ public class BlockDrill extends FallingBlock implements EntityBlock { return InteractionResult.SUCCESS; } - @Override - protected MapCodec codec() { - return CODEC; - } - @Override public int getDustColor(BlockState blockState, BlockGetter level, BlockPos pos) { return 0; diff --git a/src/main/java/de/jottyfan/minecraft/block/BlockStacker.java b/src/main/java/de/jottyfan/minecraft/block/BlockStacker.java index a3d7b8b..0208377 100644 --- a/src/main/java/de/jottyfan/minecraft/block/BlockStacker.java +++ b/src/main/java/de/jottyfan/minecraft/block/BlockStacker.java @@ -18,6 +18,7 @@ import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.EnumProperty; @@ -29,7 +30,9 @@ import net.minecraft.world.level.storage.loot.LootParams.Builder; * */ public class BlockStacker extends Block implements EntityBlock { - public static final MapCodec CODEC = simpleCodec(BlockStacker::new); + public static final MapCodec CODEC = MapCodec.unit(() -> new BlockDrill( + BlockBehaviour.Properties.of() + )); public static final EnumProperty SOURCE = EnumProperty.create("source", Direction.class, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN); @@ -70,9 +73,9 @@ public class BlockStacker extends Block implements EntityBlock { return new BlockStackerEntity(pos, blockState); } - public static MapCodec getCodec() { - return CODEC; - } + protected MapCodec codec() { + return CODEC; + } public Direction getSource(BlockState state) { return state.getValue(SOURCE); diff --git a/src/main/java/de/jottyfan/minecraft/composter/QuicklyComposter.java b/src/main/java/de/jottyfan/minecraft/composter/QuicklyComposter.java deleted file mode 100644 index 4fd1133..0000000 --- a/src/main/java/de/jottyfan/minecraft/composter/QuicklyComposter.java +++ /dev/null @@ -1,20 +0,0 @@ -package de.jottyfan.minecraft.composter; - -import de.jottyfan.minecraft.item.QuicklyItems; -import net.fabricmc.fabric.api.registry.CompostableRegistry; - -/** - * - * @author jotty - * - */ -public class QuicklyComposter { - - public static final void registerComposterItems() { - CompostableRegistry.INSTANCE.add(QuicklyItems.COTTONSEED, 0.5f); - CompostableRegistry.INSTANCE.add(QuicklyItems.COTTON, 0.75f); - CompostableRegistry.INSTANCE.add(QuicklyItems.CANOLASEED, 0.5f); - CompostableRegistry.INSTANCE.add(QuicklyItems.CANOLA, 0.75f); - } - -} diff --git a/src/main/java/de/jottyfan/minecraft/feature/QuicklyFeatures.java b/src/main/java/de/jottyfan/minecraft/feature/QuicklyFeatures.java index 48e903e..a46404e 100644 --- a/src/main/java/de/jottyfan/minecraft/feature/QuicklyFeatures.java +++ b/src/main/java/de/jottyfan/minecraft/feature/QuicklyFeatures.java @@ -7,7 +7,6 @@ import net.minecraft.core.registries.Registries; import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.levelgen.GenerationStep; -import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.placement.PlacedFeature; /** @@ -16,15 +15,15 @@ import net.minecraft.world.level.levelgen.placement.PlacedFeature; * */ public class QuicklyFeatures { - public static final ResourceKey> CF_ORETURQUOISE = genCf("oreturquoise"); - public static final ResourceKey> CF_ORESULFOR = genCf("oresulfor"); - public static final ResourceKey> CF_OREDEEPSLATESULFUR = genCf("oredepslatesulfor"); - public static final ResourceKey> CF_ORESALPETER = genCf("oresalpeter"); - public static final ResourceKey> CF_ORENETHERSULFOR = genCf("orenethersulfor"); - public static final ResourceKey> CF_DIRTSALPETER = genCf("dirtsalpeter"); - public static final ResourceKey> CF_SANDSALPETER = genCf("sandsalpeter"); - public static final ResourceKey> CF_ORESANDSALPETER = genCf("oresandsalpeter"); - public static final ResourceKey> CF_ORESPEEDPOWDER = genCf("orespeedpowder"); + public static final ResourceKey CF_ORETURQUOISE = genCf("oreturquoise"); + public static final ResourceKey CF_ORESULFOR = genCf("oresulfor"); + public static final ResourceKey CF_OREDEEPSLATESULFUR = genCf("oredepslatesulfor"); + public static final ResourceKey CF_ORESALPETER = genCf("oresalpeter"); + public static final ResourceKey CF_ORENETHERSULFOR = genCf("orenethersulfor"); + public static final ResourceKey CF_DIRTSALPETER = genCf("dirtsalpeter"); + public static final ResourceKey CF_SANDSALPETER = genCf("sandsalpeter"); + public static final ResourceKey CF_ORESANDSALPETER = genCf("oresandsalpeter"); + public static final ResourceKey CF_ORESPEEDPOWDER = genCf("orespeedpowder"); public static final ResourceKey PF_ORETURQUOISE = genPf("oreturquoise"); public static final ResourceKey PF_ORESULFOR = genPf("oresulfor"); @@ -36,8 +35,8 @@ public class QuicklyFeatures { public static final ResourceKey PF_ORESANDSALPETER = genPf("oresandsalpeter"); public static final ResourceKey PF_ORESPEEDPOWDER = genPf("orespeedpowder"); - private static final ResourceKey> genCf(String name) { - return ResourceKey.create(Registries.CONFIGURED_FEATURE, Identifier.fromNamespaceAndPath(Quickly.MOD_ID, name)); + private static final ResourceKey genCf(String name) { + return ResourceKey.create(Registries.FEATURE, Identifier.fromNamespaceAndPath(Quickly.MOD_ID, name)); } private static final ResourceKey genPf(String name) { diff --git a/src/main/java/de/jottyfan/minecraft/item/QAxe.java b/src/main/java/de/jottyfan/minecraft/item/QAxe.java index 6f09fab..b231b06 100644 --- a/src/main/java/de/jottyfan/minecraft/item/QAxe.java +++ b/src/main/java/de/jottyfan/minecraft/item/QAxe.java @@ -5,10 +5,8 @@ import java.util.List; import com.google.common.collect.Lists; import net.minecraft.tags.BlockTags; -import net.minecraft.tags.ItemTags; -import net.minecraft.world.item.AxeItem; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.ToolMaterial; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.LeavesBlock; @@ -19,12 +17,12 @@ import net.minecraft.world.level.block.state.BlockState; * @author jotty * */ -public class QAxe extends AxeItem implements ToolRangeable { +public class QAxe extends Item implements ToolRangeable { private final HarvestRange range; public QAxe(QIP properties) { - super(new ToolMaterial(BlockTags.INCORRECT_FOR_DIAMOND_TOOL, properties.getDurability(), 7f, 1f, 15, ItemTags.DIAMOND_TOOL_MATERIALS), 7f, 3.1f, properties); + super(properties); this.range = properties.getHarvestRange(); } diff --git a/src/main/java/de/jottyfan/minecraft/item/QHoe.java b/src/main/java/de/jottyfan/minecraft/item/QHoe.java index 552046c..223b5c2 100644 --- a/src/main/java/de/jottyfan/minecraft/item/QHoe.java +++ b/src/main/java/de/jottyfan/minecraft/item/QHoe.java @@ -7,11 +7,9 @@ import com.google.common.collect.Lists; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.ItemTags; import net.minecraft.world.Containers; import net.minecraft.world.InteractionResult; -import net.minecraft.world.item.HoeItem; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ToolMaterial; import net.minecraft.world.item.context.UseOnContext; @@ -30,12 +28,11 @@ import net.minecraft.world.phys.Vec3; * @author jotty * */ -public class QHoe extends HoeItem implements ToolRangeable { +public class QHoe extends Item implements ToolRangeable { public QIP properties; public QHoe(QIP properties) { - super(new ToolMaterial(BlockTags.INCORRECT_FOR_DIAMOND_TOOL, properties.getDurability(), 7f, 1f, 15, - ItemTags.DIAMOND_TOOL_MATERIALS), 7f, 3.1f, properties); + super(properties.hoe(ToolMaterial.DIAMOND, 0.0f, -3.0f)); this.properties = properties; } diff --git a/src/main/java/de/jottyfan/minecraft/item/QShovel.java b/src/main/java/de/jottyfan/minecraft/item/QShovel.java index 587f3a3..c7496db 100644 --- a/src/main/java/de/jottyfan/minecraft/item/QShovel.java +++ b/src/main/java/de/jottyfan/minecraft/item/QShovel.java @@ -1,5 +1,6 @@ package de.jottyfan.minecraft.item; +import java.util.HashSet; import java.util.List; import java.util.Set; @@ -7,11 +8,9 @@ import com.google.common.collect.Lists; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.ItemTags; import net.minecraft.world.InteractionResult; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.ShovelItem; import net.minecraft.world.item.ToolMaterial; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; @@ -19,11 +18,11 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; -public class QShovel extends ShovelItem implements ToolRangeable { +public class QShovel extends Item implements ToolRangeable { public HarvestRange range; public QShovel(QIP properties) { - super(new ToolMaterial(BlockTags.INCORRECT_FOR_DIAMOND_TOOL, properties.getDurability(), 7f, 1f, 15, ItemTags.DIAMOND_TOOL_MATERIALS), 7F, -3.1F, properties); + super(properties.shovel(ToolMaterial.DIAMOND, 1.5f, -3.0f)); this.range = properties.getHarvestRange(); } @@ -52,8 +51,11 @@ public class QShovel extends ShovelItem implements ToolRangeable { public InteractionResult useOn(UseOnContext context) { InteractionResult result = super.useOn(context); if (InteractionResult.SUCCESS.equals(result)) { + Set flattenables = new HashSet<>(); + flattenables.add(Blocks.DIRT); + flattenables.add(Blocks.GRASS_BLOCK); for (BlockPos pos : range.getRangeAsBlockPosArray(context.getClickedPos(), true, new BlockPos(1, 1, 1))) { - createPath(context.getLevel(), pos, context.getClickedFace(), FLATTENABLES.keySet()); + createPath(context.getLevel(), pos, context.getClickedFace(), flattenables); } } return result; diff --git a/src/main/java/de/jottyfan/minecraft/item/QuicklyItems.java b/src/main/java/de/jottyfan/minecraft/item/QuicklyItems.java index 2e48675..e6961f9 100644 --- a/src/main/java/de/jottyfan/minecraft/item/QuicklyItems.java +++ b/src/main/java/de/jottyfan/minecraft/item/QuicklyItems.java @@ -14,7 +14,6 @@ import net.minecraft.resources.ResourceKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.equipment.ArmorType; import net.minecraft.world.level.ItemLike; - /** * * @author jotty diff --git a/src/main/java/de/jottyfan/minecraft/item/Stub.java b/src/main/java/de/jottyfan/minecraft/item/Stub.java index ed90aff..150e45f 100644 --- a/src/main/java/de/jottyfan/minecraft/item/Stub.java +++ b/src/main/java/de/jottyfan/minecraft/item/Stub.java @@ -40,7 +40,7 @@ public class Stub extends Item { if (SLASH_MAP.containsKey(clickedBlock)) { if (!level.isClientSide()) { level.setBlockAndUpdate(pos, Blocks.AIR.defaultBlockState()); - level.playSound(null, pos, SoundEvents.HOE_TILL, SoundSource.BLOCKS); + level.playPlayerSound(SoundEvents.HOE_TILL.value(), SoundSource.BLOCKS, 1f, 1f); for (int i = 0; i < 9; i++) { ItemStack stack = new ItemStack(SLASH_MAP.get(clickedBlock)); float xScatter = new Random().nextFloat(); diff --git a/src/main/java/de/jottyfan/minecraft/loot/QuicklyLootTables.java b/src/main/java/de/jottyfan/minecraft/loot/QuicklyLootTables.java deleted file mode 100644 index d6f9c20..0000000 --- a/src/main/java/de/jottyfan/minecraft/loot/QuicklyLootTables.java +++ /dev/null @@ -1,47 +0,0 @@ -package de.jottyfan.minecraft.loot; - -import de.jottyfan.minecraft.item.QuicklyItems; -import net.fabricmc.fabric.api.loot.v3.LootTableEvents; -import net.minecraft.resources.Identifier; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.storage.loot.LootPool; -import net.minecraft.world.level.storage.loot.entries.LootItem; -import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction; -import net.minecraft.world.level.storage.loot.predicates.LootItemRandomChanceCondition; -import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; -import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; - -/** - * - * @author jotty - * - */ -public class QuicklyLootTables { - - public static final void registerChanges() { - LootTableEvents.MODIFY.register((key, tableBuilder, source, registries) -> { - if (source.isBuiltin()) { - Identifier shortGrass = Identifier.fromNamespaceAndPath("minecraft", "blocks/short_grass"); - Identifier tallGrass = Identifier.fromNamespaceAndPath("minecraft", "blocks/tall_grass"); - if (key.identifier().equals(shortGrass)) { - tableBuilder.withPool(harvestItemByChance(QuicklyItems.COTTONSEED, 0.05f)); - } else if (key.identifier().equals(tallGrass)) { - tableBuilder.withPool(harvestItemByChance(QuicklyItems.CANOLASEED, 0.03f)); - } - } - if (key.identifier().equals(Identifier.fromNamespaceAndPath("minecraft", "chests/simple_dungeon"))) { - LootPool.Builder poolBuilder = LootPool.lootPool().setRolls(UniformGenerator.between(1.0f, 8.0f)); - for (Item item : QuicklyItems.registeredModItems()) { - poolBuilder.add( - LootItem.lootTableItem(item).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0f, 5.0f)))); - } - tableBuilder.withPool(poolBuilder); - } - }); - } - - private static final LootPool.Builder harvestItemByChance(Item item, float chance) { - return LootPool.lootPool().setRolls(ConstantValue.exactly(1f)) - .when(LootItemRandomChanceCondition.randomChance(chance)).add(LootItem.lootTableItem(item)); - } -} diff --git a/src/main/resources/data/c/tags/item/axes.json b/src/main/resources/data/c/tags/item/tools/axes.json similarity index 100% rename from src/main/resources/data/c/tags/item/axes.json rename to src/main/resources/data/c/tags/item/tools/axes.json diff --git a/src/main/resources/data/c/tags/item/hoes.json b/src/main/resources/data/c/tags/item/tools/hoes.json similarity index 100% rename from src/main/resources/data/c/tags/item/hoes.json rename to src/main/resources/data/c/tags/item/tools/hoes.json diff --git a/src/main/resources/data/c/tags/item/pickaxes.json b/src/main/resources/data/c/tags/item/tools/pickaxes.json similarity index 100% rename from src/main/resources/data/c/tags/item/pickaxes.json rename to src/main/resources/data/c/tags/item/tools/pickaxes.json diff --git a/src/main/resources/data/c/tags/item/shovels.json b/src/main/resources/data/c/tags/item/tools/shovels.json similarity index 100% rename from src/main/resources/data/c/tags/item/shovels.json rename to src/main/resources/data/c/tags/item/tools/shovels.json diff --git a/src/main/resources/data/minecraft/loot_tables/blocks/short_grass.json b/src/main/resources/data/minecraft/loot_tables/blocks/short_grass.json new file mode 100644 index 0000000..7e1f8fb --- /dev/null +++ b/src/main/resources/data/minecraft/loot_tables/blocks/short_grass.json @@ -0,0 +1,29 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": { "type": "minecraft:constant", "value": 1.0 }, + "entries": [ + { + "type": "minecraft:alternative", + "children": [ + { + "type": "minecraft:item", + "name": "minecraft:short_grass", + "conditions": [ + { "condition": "minecraft:match_tool", "predicate": { "items": "#minecraft:shears" } } + ] + }, + { + "type": "minecraft:item", + "name": "quickly:cottonseed", + "conditions": [ + { "condition": "minecraft:random_chance", "chance": 0.05 } + ] + } + ] + } + ] + } + ] +} diff --git a/src/main/resources/data/minecraft/loot_tables/blocks/tall_grass.json b/src/main/resources/data/minecraft/loot_tables/blocks/tall_grass.json new file mode 100644 index 0000000..05e9941 --- /dev/null +++ b/src/main/resources/data/minecraft/loot_tables/blocks/tall_grass.json @@ -0,0 +1,29 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": { "type": "minecraft:constant", "value": 1.0 }, + "entries": [ + { + "type": "minecraft:alternative", + "children": [ + { + "type": "minecraft:item", + "name": "minecraft:tall_grass", + "conditions": [ + { "condition": "minecraft:match_tool", "predicate": { "items": "#minecraft:shears" } } + ] + }, + { + "type": "minecraft:item", + "name": "quickly:canolaseed", + "conditions": [ + { "condition": "minecraft:random_chance", "chance": 0.03 } + ] + } + ] + } + ] + } + ] +} diff --git a/src/main/resources/data/minecraft/loot_tables/chests/simple_dungeon.json b/src/main/resources/data/minecraft/loot_tables/chests/simple_dungeon.json new file mode 100644 index 0000000..598eb89 --- /dev/null +++ b/src/main/resources/data/minecraft/loot_tables/chests/simple_dungeon.json @@ -0,0 +1,29 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 8.0 + }, + "entries": [ + { + "type": "minecraft:tag", + "name": "quickly:dungeon_loot", + "expand": true, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 5.0 + } + } + ] + } + ] + } + ] +} diff --git a/src/main/resources/data/quickly/items/canola.json b/src/main/resources/data/quickly/items/canola.json new file mode 100644 index 0000000..085979b --- /dev/null +++ b/src/main/resources/data/quickly/items/canola.json @@ -0,0 +1,9 @@ +{ + "components": { + "minecraft:compostable": { + "layers": { + "value": 0.75 + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/quickly/items/canolaseed.json b/src/main/resources/data/quickly/items/canolaseed.json new file mode 100644 index 0000000..29e494e --- /dev/null +++ b/src/main/resources/data/quickly/items/canolaseed.json @@ -0,0 +1,10 @@ +{ + "components": { + "minecraft:compostable": { + "layers": { + "type": "minecraft:constant", + "value": 0.5 + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/quickly/items/cotton.json b/src/main/resources/data/quickly/items/cotton.json new file mode 100644 index 0000000..4740a0d --- /dev/null +++ b/src/main/resources/data/quickly/items/cotton.json @@ -0,0 +1,10 @@ +{ + "components": { + "minecraft:compostable": { + "layers": { + "type": "minecraft:constant", + "value": 0.75 + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/quickly/items/cottonseed.json b/src/main/resources/data/quickly/items/cottonseed.json new file mode 100644 index 0000000..29e494e --- /dev/null +++ b/src/main/resources/data/quickly/items/cottonseed.json @@ -0,0 +1,10 @@ +{ + "components": { + "minecraft:compostable": { + "layers": { + "type": "minecraft:constant", + "value": 0.5 + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/quickly/items/quickiepowderaxe.json b/src/main/resources/data/quickly/items/quickiepowderaxe.json new file mode 100644 index 0000000..10d2ecc --- /dev/null +++ b/src/main/resources/data/quickly/items/quickiepowderaxe.json @@ -0,0 +1,5 @@ +{ + "components": { + "minecraft:block_transformer": "minecraft:axe" + } +} \ No newline at end of file diff --git a/src/main/resources/data/quickly/items/speedpowderaxe.json b/src/main/resources/data/quickly/items/speedpowderaxe.json new file mode 100644 index 0000000..10d2ecc --- /dev/null +++ b/src/main/resources/data/quickly/items/speedpowderaxe.json @@ -0,0 +1,5 @@ +{ + "components": { + "minecraft:block_transformer": "minecraft:axe" + } +} \ No newline at end of file diff --git a/src/main/resources/data/quickly/recipe/shaped_quickiepowder_shears.json b/src/main/resources/data/quickly/recipe/shaped_quickiepowder_shears.json index 2bdc844..1783322 100644 --- a/src/main/resources/data/quickly/recipe/shaped_quickiepowder_shears.json +++ b/src/main/resources/data/quickly/recipe/shaped_quickiepowder_shears.json @@ -1,6 +1,6 @@ { "type": "minecraft:crafting_shaped", - "category": "tools", + "category": "equipment", "pattern": [ " #", "# " diff --git a/src/main/resources/data/quickly/recipe/shaped_quickiepowderaxe.json b/src/main/resources/data/quickly/recipe/shaped_quickiepowderaxe.json index 770ebf6..d008f87 100644 --- a/src/main/resources/data/quickly/recipe/shaped_quickiepowderaxe.json +++ b/src/main/resources/data/quickly/recipe/shaped_quickiepowderaxe.json @@ -1,6 +1,6 @@ { "type": "minecraft:crafting_shaped", - "category": "tools", + "category": "equipment", "pattern": [ "ss", "s|", diff --git a/src/main/resources/data/quickly/recipe/shaped_quickiepowderhoe.json b/src/main/resources/data/quickly/recipe/shaped_quickiepowderhoe.json index 20cad3a..320aaa3 100644 --- a/src/main/resources/data/quickly/recipe/shaped_quickiepowderhoe.json +++ b/src/main/resources/data/quickly/recipe/shaped_quickiepowderhoe.json @@ -1,6 +1,6 @@ { "type": "minecraft:crafting_shaped", - "category": "tools", + "category": "equipment", "pattern": [ "ss", " |", diff --git a/src/main/resources/data/quickly/recipe/shaped_quickiepowderpickaxe.json b/src/main/resources/data/quickly/recipe/shaped_quickiepowderpickaxe.json index 1483c1f..628f9b4 100644 --- a/src/main/resources/data/quickly/recipe/shaped_quickiepowderpickaxe.json +++ b/src/main/resources/data/quickly/recipe/shaped_quickiepowderpickaxe.json @@ -1,6 +1,6 @@ { "type": "minecraft:crafting_shaped", - "category": "tools", + "category": "equipment", "pattern": [ "sss", " | ", diff --git a/src/main/resources/data/quickly/recipe/shaped_quickiepowdershovel.json b/src/main/resources/data/quickly/recipe/shaped_quickiepowdershovel.json index 831bba9..75215c7 100644 --- a/src/main/resources/data/quickly/recipe/shaped_quickiepowdershovel.json +++ b/src/main/resources/data/quickly/recipe/shaped_quickiepowdershovel.json @@ -1,6 +1,6 @@ { "type": "minecraft:crafting_shaped", - "category": "tools", + "category": "equipment", "pattern": [ "s", "|", diff --git a/src/main/resources/data/quickly/recipe/shaped_speedpowder_shears.json b/src/main/resources/data/quickly/recipe/shaped_speedpowder_shears.json index 2e20382..f1996ac 100644 --- a/src/main/resources/data/quickly/recipe/shaped_speedpowder_shears.json +++ b/src/main/resources/data/quickly/recipe/shaped_speedpowder_shears.json @@ -1,6 +1,6 @@ { "type": "minecraft:crafting_shaped", - "category": "tools", + "category": "equipment", "pattern": [ " #", "# " diff --git a/src/main/resources/data/quickly/recipe/shaped_speedpowderaxe.json b/src/main/resources/data/quickly/recipe/shaped_speedpowderaxe.json index ea47473..a4894e6 100644 --- a/src/main/resources/data/quickly/recipe/shaped_speedpowderaxe.json +++ b/src/main/resources/data/quickly/recipe/shaped_speedpowderaxe.json @@ -1,6 +1,6 @@ { "type": "minecraft:crafting_shaped", - "category": "tools", + "category": "equipment", "pattern": [ "ss", "s|", diff --git a/src/main/resources/data/quickly/recipe/shaped_speedpowderhoe.json b/src/main/resources/data/quickly/recipe/shaped_speedpowderhoe.json index c3421e7..2bd97cc 100644 --- a/src/main/resources/data/quickly/recipe/shaped_speedpowderhoe.json +++ b/src/main/resources/data/quickly/recipe/shaped_speedpowderhoe.json @@ -1,6 +1,6 @@ { "type": "minecraft:crafting_shaped", - "category": "tools", + "category": "equipment", "pattern": [ "ss", " |", diff --git a/src/main/resources/data/quickly/recipe/shaped_speedpowderpickaxe.json b/src/main/resources/data/quickly/recipe/shaped_speedpowderpickaxe.json index 441abbe..1f5aeee 100644 --- a/src/main/resources/data/quickly/recipe/shaped_speedpowderpickaxe.json +++ b/src/main/resources/data/quickly/recipe/shaped_speedpowderpickaxe.json @@ -1,6 +1,6 @@ { "type": "minecraft:crafting_shaped", - "category": "tools", + "category": "equipment", "pattern": [ "sss", " | ", diff --git a/src/main/resources/data/quickly/recipe/shaped_speedpowdershovel.json b/src/main/resources/data/quickly/recipe/shaped_speedpowdershovel.json index fae8c14..84eebca 100644 --- a/src/main/resources/data/quickly/recipe/shaped_speedpowdershovel.json +++ b/src/main/resources/data/quickly/recipe/shaped_speedpowdershovel.json @@ -1,6 +1,6 @@ { "type": "minecraft:crafting_shaped", - "category": "tools", + "category": "equipment", "pattern": [ "s", "|", diff --git a/src/main/resources/data/quickly/worldgen/configured_feature/dirtsalpeter.json b/src/main/resources/data/quickly/worldgen/configured_feature/dirtsalpeter.json deleted file mode 100644 index bfebacd..0000000 --- a/src/main/resources/data/quickly/worldgen/configured_feature/dirtsalpeter.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 4, - "targets": [ - { - "state": { - "Name": "quickly:dirtsalpeter" - }, - "target": { - "predicate_type": "minecraft:block_match", - "block": "minecraft:dirt" - } - } - ] - } -} \ No newline at end of file diff --git a/src/main/resources/data/quickly/worldgen/configured_feature/oredeepslatesulfor.json b/src/main/resources/data/quickly/worldgen/configured_feature/oredeepslatesulfor.json deleted file mode 100644 index 73d1031..0000000 --- a/src/main/resources/data/quickly/worldgen/configured_feature/oredeepslatesulfor.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 20, - "targets": [ - { - "state": { - "Name": "quickly:oredeepslatesulfor" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } -} \ No newline at end of file diff --git a/src/main/resources/data/quickly/worldgen/configured_feature/orenethersulfor.json b/src/main/resources/data/quickly/worldgen/configured_feature/orenethersulfor.json deleted file mode 100644 index b57b6ff..0000000 --- a/src/main/resources/data/quickly/worldgen/configured_feature/orenethersulfor.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 20, - "targets": [ - { - "state": { - "Name": "quickly:orenethersulfor" - }, - "target": { - "predicate_type": "minecraft:block_match", - "block": "minecraft:netherrack" - } - } - ] - } -} \ No newline at end of file diff --git a/src/main/resources/data/quickly/worldgen/configured_feature/oresalpeter.json b/src/main/resources/data/quickly/worldgen/configured_feature/oresalpeter.json deleted file mode 100644 index f462b34..0000000 --- a/src/main/resources/data/quickly/worldgen/configured_feature/oresalpeter.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 12, - "targets": [ - { - "state": { - "Name": "quickly:oresalpeter" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - } - ] - } -} \ No newline at end of file diff --git a/src/main/resources/data/quickly/worldgen/configured_feature/oresandsalpeter.json b/src/main/resources/data/quickly/worldgen/configured_feature/oresandsalpeter.json deleted file mode 100644 index 4ec09cc..0000000 --- a/src/main/resources/data/quickly/worldgen/configured_feature/oresandsalpeter.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 6, - "targets": [ - { - "state": { - "Name": "quickly:oresandsalpeter" - }, - "target": { - "predicate_type": "minecraft:block_match", - "block": "minecraft:sandstone" - } - } - ] - } -} \ No newline at end of file diff --git a/src/main/resources/data/quickly/worldgen/configured_feature/orespeedpowder.json b/src/main/resources/data/quickly/worldgen/configured_feature/orespeedpowder.json deleted file mode 100644 index 9992ca6..0000000 --- a/src/main/resources/data/quickly/worldgen/configured_feature/orespeedpowder.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 7, - "targets": [ - { - "state": { - "Name": "quickly:orespeedpowder" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "quickly:oredeepslatespeedpowder" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } -} \ No newline at end of file diff --git a/src/main/resources/data/quickly/worldgen/configured_feature/oresulfor.json b/src/main/resources/data/quickly/worldgen/configured_feature/oresulfor.json deleted file mode 100644 index 6fe03e8..0000000 --- a/src/main/resources/data/quickly/worldgen/configured_feature/oresulfor.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 10, - "targets": [ - { - "state": { - "Name": "quickly:oresulfor" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - } - ] - } -} \ No newline at end of file diff --git a/src/main/resources/data/quickly/worldgen/configured_feature/oreturquoise.json b/src/main/resources/data/quickly/worldgen/configured_feature/oreturquoise.json deleted file mode 100644 index a2ff09d..0000000 --- a/src/main/resources/data/quickly/worldgen/configured_feature/oreturquoise.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 10, - "targets": [ - { - "state": { - "Name": "quickly:oreturquoise" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "quickly:oredeepslateturquoise" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } -} \ No newline at end of file diff --git a/src/main/resources/data/quickly/worldgen/configured_feature/sandsalpeter.json b/src/main/resources/data/quickly/worldgen/configured_feature/sandsalpeter.json deleted file mode 100644 index a9fe7ab..0000000 --- a/src/main/resources/data/quickly/worldgen/configured_feature/sandsalpeter.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 8, - "targets": [ - { - "state": { - "Name": "quickly:sandsalpeter" - }, - "target": { - "predicate_type": "minecraft:block_match", - "block": "minecraft:sand" - } - } - ] - } -} \ No newline at end of file diff --git a/src/main/resources/data/quickly/worldgen/feature/dirtsalpeter.json b/src/main/resources/data/quickly/worldgen/feature/dirtsalpeter.json new file mode 100644 index 0000000..ea7082e --- /dev/null +++ b/src/main/resources/data/quickly/worldgen/feature/dirtsalpeter.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:ore", + "discard_chance_on_air_exposure": 0.0, + "size": 4, + "targets": [ + { + "state": { + "Name": "quickly:dirtsalpeter" + }, + "target": { + "predicate_type": "minecraft:block_match", + "block": "minecraft:dirt" + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/quickly/worldgen/feature/oredeepslatesulfor.json b/src/main/resources/data/quickly/worldgen/feature/oredeepslatesulfor.json new file mode 100644 index 0000000..46b0aaf --- /dev/null +++ b/src/main/resources/data/quickly/worldgen/feature/oredeepslatesulfor.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:ore", + "discard_chance_on_air_exposure": 0.0, + "size": 20, + "targets": [ + { + "state": { + "Name": "quickly:oredeepslatesulfor" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/quickly/worldgen/feature/orenethersulfor.json b/src/main/resources/data/quickly/worldgen/feature/orenethersulfor.json new file mode 100644 index 0000000..6411d71 --- /dev/null +++ b/src/main/resources/data/quickly/worldgen/feature/orenethersulfor.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:ore", + "discard_chance_on_air_exposure": 0.0, + "size": 20, + "targets": [ + { + "state": { + "Name": "quickly:orenethersulfor" + }, + "target": { + "predicate_type": "minecraft:block_match", + "block": "minecraft:netherrack" + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/quickly/worldgen/feature/oresalpeter.json b/src/main/resources/data/quickly/worldgen/feature/oresalpeter.json new file mode 100644 index 0000000..07f4744 --- /dev/null +++ b/src/main/resources/data/quickly/worldgen/feature/oresalpeter.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:ore", + "discard_chance_on_air_exposure": 0.0, + "size": 12, + "targets": [ + { + "state": { + "Name": "quickly:oresalpeter" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/quickly/worldgen/feature/oresandsalpeter.json b/src/main/resources/data/quickly/worldgen/feature/oresandsalpeter.json new file mode 100644 index 0000000..26bc536 --- /dev/null +++ b/src/main/resources/data/quickly/worldgen/feature/oresandsalpeter.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:ore", + "discard_chance_on_air_exposure": 0.0, + "size": 6, + "targets": [ + { + "state": { + "Name": "quickly:oresandsalpeter" + }, + "target": { + "predicate_type": "minecraft:block_match", + "block": "minecraft:sandstone" + } + } + ] +} diff --git a/src/main/resources/data/quickly/worldgen/feature/orespeedpowder.json b/src/main/resources/data/quickly/worldgen/feature/orespeedpowder.json new file mode 100644 index 0000000..baee449 --- /dev/null +++ b/src/main/resources/data/quickly/worldgen/feature/orespeedpowder.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:ore", + "discard_chance_on_air_exposure": 0.0, + "size": 7, + "targets": [ + { + "state": { + "Name": "quickly:orespeedpowder" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "quickly:oredeepslatespeedpowder" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/quickly/worldgen/feature/oresulfor.json b/src/main/resources/data/quickly/worldgen/feature/oresulfor.json new file mode 100644 index 0000000..301af3e --- /dev/null +++ b/src/main/resources/data/quickly/worldgen/feature/oresulfor.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:ore", + "discard_chance_on_air_exposure": 0.0, + "size": 10, + "targets": [ + { + "state": { + "Name": "quickly:oresulfor" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/quickly/worldgen/feature/oreturquoise.json b/src/main/resources/data/quickly/worldgen/feature/oreturquoise.json new file mode 100644 index 0000000..f9dedc1 --- /dev/null +++ b/src/main/resources/data/quickly/worldgen/feature/oreturquoise.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:ore", + "discard_chance_on_air_exposure": 0.0, + "size": 10, + "targets": [ + { + "state": { + "Name": "quickly:oreturquoise" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "quickly:oredeepslateturquoise" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/quickly/worldgen/feature/sandsalpeter.json b/src/main/resources/data/quickly/worldgen/feature/sandsalpeter.json new file mode 100644 index 0000000..637cd93 --- /dev/null +++ b/src/main/resources/data/quickly/worldgen/feature/sandsalpeter.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:ore", + "discard_chance_on_air_exposure": 0.0, + "size": 8, + "targets": [ + { + "state": { + "Name": "quickly:sandsalpeter" + }, + "target": { + "predicate_type": "minecraft:block_match", + "block": "minecraft:sand" + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index f0b4244..79229e3 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -24,7 +24,7 @@ }, "depends": { "fabricloader": ">=0.19.3", - "minecraft": "~26.2-", + "minecraft": "~26.3-", "java": ">=25", "fabric-api": "*" }