preparations for 26.3

This commit is contained in:
Jottyfan
2026-07-21 22:59:09 +02:00
parent de33041061
commit 303e594b75
57 changed files with 362 additions and 332 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
# #
#Mon Dec 22 18:46:51 CET 2025 #Mon Jul 20 21:22:00 CEST 2026
eclipse.preferences.version=1 eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=25 org.eclipse.jdt.core.compiler.codegen.targetPlatform=25
+7 -24
View File
@@ -1,5 +1,5 @@
plugins { plugins {
id 'net.fabricmc.fabric-loom' version "${loom_version}" id 'net.fabricmc.fabric-loom'
id 'maven-publish' id 'maven-publish'
} }
@@ -11,22 +11,17 @@ base {
} }
repositories { repositories {
// Add repositories to retrieve artifacts from in here. maven {
// You should only use this when depending on other mods because name = 'Fabric'
// Loom adds the essential maven repositories to download Minecraft and libraries from automatically. url = 'https://maven.fabricmc.net/'
// See https://docs.gradle.org/current/userguide/declaring_repositories.html }
// for more information about repositories. mavenCentral()
} }
dependencies { dependencies {
// To change the versions see the gradle.properties file
minecraft "com.mojang:minecraft:${project.minecraft_version}" minecraft "com.mojang:minecraft:${project.minecraft_version}"
implementation "net.fabricmc:fabric-loader:${project.loader_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}" implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}"
} }
processResources { processResources {
@@ -42,24 +37,18 @@ tasks.withType(JavaCompile).configureEach {
} }
java { 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() withSourcesJar()
sourceCompatibility = JavaVersion.VERSION_25 sourceCompatibility = JavaVersion.VERSION_25
targetCompatibility = JavaVersion.VERSION_25 targetCompatibility = JavaVersion.VERSION_25
} }
jar { jar {
inputs.property "archivesName", project.base.archivesName inputs.property "archivesName", project.base.archivesName
from("LICENSE") { from("LICENSE") {
rename { "${it}_${inputs.properties.archivesName}"} rename { "${it}_${inputs.properties.archivesName}"}
} }
} }
// configure the maven publication
publishing { publishing {
publications { publications {
create("mavenJava", MavenPublication) { create("mavenJava", MavenPublication) {
@@ -67,12 +56,6 @@ publishing {
from components.java from components.java
} }
} }
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
repositories { 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.
} }
} }
+3 -3
View File
@@ -7,14 +7,14 @@ org.gradle.configuration-cache=false
# Fabric Properties # Fabric Properties
# check these on https://fabricmc.net/develop # check these on https://fabricmc.net/develop
minecraft_version=26.2 minecraft_version=26.3-snapshot-5
loader_version=0.19.3 loader_version=0.19.3
loom_version=1.17-SNAPSHOT loom_version=1.17-SNAPSHOT
# Mod Properties # Mod Properties
mod_version=26.2.0.1 mod_version=26.3.0-snapshot-4
maven_group=de.jottyfan.minecraft maven_group=de.jottyfan.minecraft
archives_base_name=quickly archives_base_name=quickly
# Dependencies # Dependencies
fabric_api_version=0.152.1+26.2 fabric_api_version=0.155.3+26.3
+4 -1
View File
@@ -7,4 +7,7 @@ pluginManagement {
mavenCentral() mavenCentral()
gradlePluginPortal() gradlePluginPortal()
} }
} plugins {
id 'net.fabricmc.fabric-loom' version "${loom_version}"
}
}
@@ -7,15 +7,14 @@ import org.apache.logging.log4j.Logger;
import de.jottyfan.minecraft.block.QuicklyBlocks; import de.jottyfan.minecraft.block.QuicklyBlocks;
import de.jottyfan.minecraft.blockentity.QuicklyBlockEntity; import de.jottyfan.minecraft.blockentity.QuicklyBlockEntity;
import de.jottyfan.minecraft.composter.QuicklyComposter;
import de.jottyfan.minecraft.event.QuicklyEvents; import de.jottyfan.minecraft.event.QuicklyEvents;
import de.jottyfan.minecraft.feature.QuicklyFeatures; import de.jottyfan.minecraft.feature.QuicklyFeatures;
import de.jottyfan.minecraft.item.QuicklyItems; import de.jottyfan.minecraft.item.QuicklyItems;
import de.jottyfan.minecraft.loot.QuicklyLootTables;
import de.jottyfan.minecraft.tab.QuicklyTab; import de.jottyfan.minecraft.tab.QuicklyTab;
import net.fabricmc.api.ModInitializer; import net.fabricmc.api.ModInitializer;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
/** /**
* *
* @author jotty * @author jotty
@@ -34,9 +33,7 @@ public class Quickly implements ModInitializer {
List<Block> blocks = QuicklyBlocks.registeredModBlocks(); List<Block> blocks = QuicklyBlocks.registeredModBlocks();
QuicklyBlockEntity.registerBlockEntities(); QuicklyBlockEntity.registerBlockEntities();
QuicklyFeatures.registerFeatures(); QuicklyFeatures.registerFeatures();
QuicklyComposter.registerComposterItems();
QuicklyTab.registerItemGroup(items, blocks); QuicklyTab.registerItemGroup(items, blocks);
QuicklyLootTables.registerChanges();
QuicklyEvents.registerBlockBreak(); QuicklyEvents.registerBlockBreak();
} }
} }
@@ -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.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.entity.BlockEntityTicker;
import net.minecraft.world.level.block.entity.BlockEntityType; 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.BlockState;
import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.StateDefinition.Builder;
import net.minecraft.world.level.block.state.properties.BlockStateProperties; 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 class BlockDrill extends FallingBlock implements EntityBlock {
public static final MapCodec<BlockDrill> CODEC = simpleCodec(BlockDrill::new); public static final MapCodec<BlockDrill> CODEC = MapCodec.unit(() -> new BlockDrill(
BlockBehaviour.Properties.of()
));
private static final Integer MAX_FUEL = 255; private static final Integer MAX_FUEL = 255;
public static final IntegerProperty FUEL = IntegerProperty.create("fuel", 0, MAX_FUEL); 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; return InteractionResult.SUCCESS;
} }
@Override
protected MapCodec<? extends FallingBlock> codec() {
return CODEC;
}
@Override @Override
public int getDustColor(BlockState blockState, BlockGetter level, BlockPos pos) { public int getDustColor(BlockState blockState, BlockGetter level, BlockPos pos) {
return 0; return 0;
@@ -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.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.entity.BlockEntityTicker;
import net.minecraft.world.level.block.entity.BlockEntityType; 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.BlockState;
import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.level.block.state.properties.EnumProperty; 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 class BlockStacker extends Block implements EntityBlock {
public static final MapCodec<BlockStacker> CODEC = simpleCodec(BlockStacker::new); public static final MapCodec<BlockDrill> CODEC = MapCodec.unit(() -> new BlockDrill(
BlockBehaviour.Properties.of()
));
public static final EnumProperty<Direction> SOURCE = EnumProperty.create("source", Direction.class, Direction.NORTH, public static final EnumProperty<Direction> SOURCE = EnumProperty.create("source", Direction.class, Direction.NORTH,
Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN); 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); return new BlockStackerEntity(pos, blockState);
} }
public static MapCodec<BlockStacker> getCodec() { protected MapCodec<? extends Block> codec() {
return CODEC; return CODEC;
} }
public Direction getSource(BlockState state) { public Direction getSource(BlockState state) {
return state.getValue(SOURCE); return state.getValue(SOURCE);
@@ -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);
}
}
@@ -7,7 +7,6 @@ import net.minecraft.core.registries.Registries;
import net.minecraft.resources.Identifier; import net.minecraft.resources.Identifier;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.world.level.levelgen.GenerationStep; import net.minecraft.world.level.levelgen.GenerationStep;
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
import net.minecraft.world.level.levelgen.placement.PlacedFeature; import net.minecraft.world.level.levelgen.placement.PlacedFeature;
/** /**
@@ -16,15 +15,15 @@ import net.minecraft.world.level.levelgen.placement.PlacedFeature;
* *
*/ */
public class QuicklyFeatures { public class QuicklyFeatures {
public static final ResourceKey<ConfiguredFeature<?, ?>> CF_ORETURQUOISE = genCf("oreturquoise"); public static final ResourceKey<?> CF_ORETURQUOISE = genCf("oreturquoise");
public static final ResourceKey<ConfiguredFeature<?, ?>> CF_ORESULFOR = genCf("oresulfor"); public static final ResourceKey<?> CF_ORESULFOR = genCf("oresulfor");
public static final ResourceKey<ConfiguredFeature<?, ?>> CF_OREDEEPSLATESULFUR = genCf("oredepslatesulfor"); public static final ResourceKey<?> CF_OREDEEPSLATESULFUR = genCf("oredepslatesulfor");
public static final ResourceKey<ConfiguredFeature<?, ?>> CF_ORESALPETER = genCf("oresalpeter"); public static final ResourceKey<?> CF_ORESALPETER = genCf("oresalpeter");
public static final ResourceKey<ConfiguredFeature<?, ?>> CF_ORENETHERSULFOR = genCf("orenethersulfor"); public static final ResourceKey<?> CF_ORENETHERSULFOR = genCf("orenethersulfor");
public static final ResourceKey<ConfiguredFeature<?, ?>> CF_DIRTSALPETER = genCf("dirtsalpeter"); public static final ResourceKey<?> CF_DIRTSALPETER = genCf("dirtsalpeter");
public static final ResourceKey<ConfiguredFeature<?, ?>> CF_SANDSALPETER = genCf("sandsalpeter"); public static final ResourceKey<?> CF_SANDSALPETER = genCf("sandsalpeter");
public static final ResourceKey<ConfiguredFeature<?, ?>> CF_ORESANDSALPETER = genCf("oresandsalpeter"); public static final ResourceKey<?> CF_ORESANDSALPETER = genCf("oresandsalpeter");
public static final ResourceKey<ConfiguredFeature<?, ?>> CF_ORESPEEDPOWDER = genCf("orespeedpowder"); public static final ResourceKey<?> CF_ORESPEEDPOWDER = genCf("orespeedpowder");
public static final ResourceKey<PlacedFeature> PF_ORETURQUOISE = genPf("oreturquoise"); public static final ResourceKey<PlacedFeature> PF_ORETURQUOISE = genPf("oreturquoise");
public static final ResourceKey<PlacedFeature> PF_ORESULFOR = genPf("oresulfor"); public static final ResourceKey<PlacedFeature> PF_ORESULFOR = genPf("oresulfor");
@@ -36,8 +35,8 @@ public class QuicklyFeatures {
public static final ResourceKey<PlacedFeature> PF_ORESANDSALPETER = genPf("oresandsalpeter"); public static final ResourceKey<PlacedFeature> PF_ORESANDSALPETER = genPf("oresandsalpeter");
public static final ResourceKey<PlacedFeature> PF_ORESPEEDPOWDER = genPf("orespeedpowder"); public static final ResourceKey<PlacedFeature> PF_ORESPEEDPOWDER = genPf("orespeedpowder");
private static final ResourceKey<ConfiguredFeature<?, ?>> genCf(String name) { private static final ResourceKey<?> genCf(String name) {
return ResourceKey.create(Registries.CONFIGURED_FEATURE, Identifier.fromNamespaceAndPath(Quickly.MOD_ID, name)); return ResourceKey.create(Registries.FEATURE, Identifier.fromNamespaceAndPath(Quickly.MOD_ID, name));
} }
private static final ResourceKey<PlacedFeature> genPf(String name) { private static final ResourceKey<PlacedFeature> genPf(String name) {
@@ -5,10 +5,8 @@ import java.util.List;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import net.minecraft.tags.BlockTags; import net.minecraft.tags.BlockTags;
import net.minecraft.tags.ItemTags; import net.minecraft.world.item.Item;
import net.minecraft.world.item.AxeItem;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.ToolMaterial;
import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.ItemLike;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.LeavesBlock; import net.minecraft.world.level.block.LeavesBlock;
@@ -19,12 +17,12 @@ import net.minecraft.world.level.block.state.BlockState;
* @author jotty * @author jotty
* *
*/ */
public class QAxe extends AxeItem implements ToolRangeable { public class QAxe extends Item implements ToolRangeable {
private final HarvestRange range; private final HarvestRange range;
public QAxe(QIP properties) { 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(); this.range = properties.getHarvestRange();
} }
@@ -7,11 +7,9 @@ import com.google.common.collect.Lists;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.server.level.ServerLevel; 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.Containers;
import net.minecraft.world.InteractionResult; 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.ItemStack;
import net.minecraft.world.item.ToolMaterial; import net.minecraft.world.item.ToolMaterial;
import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.item.context.UseOnContext;
@@ -30,12 +28,11 @@ import net.minecraft.world.phys.Vec3;
* @author jotty * @author jotty
* *
*/ */
public class QHoe extends HoeItem implements ToolRangeable { public class QHoe extends Item implements ToolRangeable {
public QIP properties; public QIP properties;
public QHoe(QIP properties) { public QHoe(QIP properties) {
super(new ToolMaterial(BlockTags.INCORRECT_FOR_DIAMOND_TOOL, properties.getDurability(), 7f, 1f, 15, super(properties.hoe(ToolMaterial.DIAMOND, 0.0f, -3.0f));
ItemTags.DIAMOND_TOOL_MATERIALS), 7f, 3.1f, properties);
this.properties = properties; this.properties = properties;
} }
@@ -1,5 +1,6 @@
package de.jottyfan.minecraft.item; package de.jottyfan.minecraft.item;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@@ -7,11 +8,9 @@ import com.google.common.collect.Lists;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.tags.BlockTags;
import net.minecraft.tags.ItemTags;
import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResult;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.ShovelItem;
import net.minecraft.world.item.ToolMaterial; import net.minecraft.world.item.ToolMaterial;
import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.Level; 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.Blocks;
import net.minecraft.world.level.block.state.BlockState; 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 HarvestRange range;
public QShovel(QIP properties) { 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(); this.range = properties.getHarvestRange();
} }
@@ -52,8 +51,11 @@ public class QShovel extends ShovelItem implements ToolRangeable {
public InteractionResult useOn(UseOnContext context) { public InteractionResult useOn(UseOnContext context) {
InteractionResult result = super.useOn(context); InteractionResult result = super.useOn(context);
if (InteractionResult.SUCCESS.equals(result)) { if (InteractionResult.SUCCESS.equals(result)) {
Set<Block> 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))) { 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; return result;
@@ -14,7 +14,6 @@ import net.minecraft.resources.ResourceKey;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.item.equipment.ArmorType; import net.minecraft.world.item.equipment.ArmorType;
import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.ItemLike;
/** /**
* *
* @author jotty * @author jotty
@@ -40,7 +40,7 @@ public class Stub extends Item {
if (SLASH_MAP.containsKey(clickedBlock)) { if (SLASH_MAP.containsKey(clickedBlock)) {
if (!level.isClientSide()) { if (!level.isClientSide()) {
level.setBlockAndUpdate(pos, Blocks.AIR.defaultBlockState()); 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++) { for (int i = 0; i < 9; i++) {
ItemStack stack = new ItemStack(SLASH_MAP.get(clickedBlock)); ItemStack stack = new ItemStack(SLASH_MAP.get(clickedBlock));
float xScatter = new Random().nextFloat(); float xScatter = new Random().nextFloat();
@@ -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));
}
}
@@ -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 }
]
}
]
}
]
}
]
}
@@ -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 }
]
}
]
}
]
}
]
}
@@ -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
}
}
]
}
]
}
]
}
@@ -0,0 +1,9 @@
{
"components": {
"minecraft:compostable": {
"layers": {
"value": 0.75
}
}
}
}
@@ -0,0 +1,10 @@
{
"components": {
"minecraft:compostable": {
"layers": {
"type": "minecraft:constant",
"value": 0.5
}
}
}
}
@@ -0,0 +1,10 @@
{
"components": {
"minecraft:compostable": {
"layers": {
"type": "minecraft:constant",
"value": 0.75
}
}
}
}
@@ -0,0 +1,10 @@
{
"components": {
"minecraft:compostable": {
"layers": {
"type": "minecraft:constant",
"value": 0.5
}
}
}
}
@@ -0,0 +1,5 @@
{
"components": {
"minecraft:block_transformer": "minecraft:axe"
}
}
@@ -0,0 +1,5 @@
{
"components": {
"minecraft:block_transformer": "minecraft:axe"
}
}
@@ -1,6 +1,6 @@
{ {
"type": "minecraft:crafting_shaped", "type": "minecraft:crafting_shaped",
"category": "tools", "category": "equipment",
"pattern": [ "pattern": [
" #", " #",
"# " "# "
@@ -1,6 +1,6 @@
{ {
"type": "minecraft:crafting_shaped", "type": "minecraft:crafting_shaped",
"category": "tools", "category": "equipment",
"pattern": [ "pattern": [
"ss", "ss",
"s|", "s|",
@@ -1,6 +1,6 @@
{ {
"type": "minecraft:crafting_shaped", "type": "minecraft:crafting_shaped",
"category": "tools", "category": "equipment",
"pattern": [ "pattern": [
"ss", "ss",
" |", " |",
@@ -1,6 +1,6 @@
{ {
"type": "minecraft:crafting_shaped", "type": "minecraft:crafting_shaped",
"category": "tools", "category": "equipment",
"pattern": [ "pattern": [
"sss", "sss",
" | ", " | ",
@@ -1,6 +1,6 @@
{ {
"type": "minecraft:crafting_shaped", "type": "minecraft:crafting_shaped",
"category": "tools", "category": "equipment",
"pattern": [ "pattern": [
"s", "s",
"|", "|",
@@ -1,6 +1,6 @@
{ {
"type": "minecraft:crafting_shaped", "type": "minecraft:crafting_shaped",
"category": "tools", "category": "equipment",
"pattern": [ "pattern": [
" #", " #",
"# " "# "
@@ -1,6 +1,6 @@
{ {
"type": "minecraft:crafting_shaped", "type": "minecraft:crafting_shaped",
"category": "tools", "category": "equipment",
"pattern": [ "pattern": [
"ss", "ss",
"s|", "s|",
@@ -1,6 +1,6 @@
{ {
"type": "minecraft:crafting_shaped", "type": "minecraft:crafting_shaped",
"category": "tools", "category": "equipment",
"pattern": [ "pattern": [
"ss", "ss",
" |", " |",
@@ -1,6 +1,6 @@
{ {
"type": "minecraft:crafting_shaped", "type": "minecraft:crafting_shaped",
"category": "tools", "category": "equipment",
"pattern": [ "pattern": [
"sss", "sss",
" | ", " | ",
@@ -1,6 +1,6 @@
{ {
"type": "minecraft:crafting_shaped", "type": "minecraft:crafting_shaped",
"category": "tools", "category": "equipment",
"pattern": [ "pattern": [
"s", "s",
"|", "|",
@@ -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"
}
}
]
}
}
@@ -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"
}
}
]
}
}
@@ -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"
}
}
]
}
}
@@ -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"
}
}
]
}
}
@@ -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"
}
}
]
}
}
@@ -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"
}
}
]
}
}
@@ -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"
}
}
]
}
}
@@ -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"
}
}
]
}
}
@@ -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"
}
}
]
}
}
@@ -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"
}
}
]
}
@@ -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"
}
}
]
}
@@ -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"
}
}
]
}
@@ -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"
}
}
]
}
@@ -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"
}
}
]
}
@@ -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"
}
}
]
}
@@ -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"
}
}
]
}
@@ -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"
}
}
]
}
@@ -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"
}
}
]
}
+1 -1
View File
@@ -24,7 +24,7 @@
}, },
"depends": { "depends": {
"fabricloader": ">=0.19.3", "fabricloader": ">=0.19.3",
"minecraft": "~26.2-", "minecraft": "~26.3-",
"java": ">=25", "java": ">=25",
"fabric-api": "*" "fabric-api": "*"
} }