Compare commits

...

8 Commits
1.21.3 ... main

Author SHA1 Message Date
Jottyfan
2fedfdc700 first 1.21.5 version 2025-03-29 22:12:42 +01:00
Jottyfan
17a11ce56a fixed exception on too many items in a slot 2025-02-08 17:27:49 +01:00
Jottyfan
81e45c56ce fixes drill harvesting bug - drills can be mined again 2024-12-15 15:01:18 +01:00
Jottyfan
c2558a5324 added recipe for quickiepowder generation out of mossy blocks 2024-12-14 19:11:06 +01:00
Jottyfan
46a21b03c0 fixed block breaking bug 2024-12-12 23:18:34 +01:00
Jottyfan
4ae1e998b0 fixes bug with recreation of block 2024-12-11 22:37:52 +01:00
Jottyfan
06db4df2cb version 1.21.4 2024-12-04 00:55:58 +01:00
Jottyfan
0c744ef52b fixed bug on using rangeable tools 2024-12-01 00:05:36 +01:00
72 changed files with 479 additions and 65 deletions

View File

@ -1,5 +1,5 @@
plugins { plugins {
id 'fabric-loom' version '1.8-SNAPSHOT' id 'fabric-loom' version '1.10-SNAPSHOT'
id 'maven-publish' id 'maven-publish'
} }

View File

@ -4,14 +4,14 @@ org.gradle.parallel=true
# Fabric Properties # Fabric Properties
# check these on https://fabricmc.net/develop # check these on https://fabricmc.net/develop
minecraft_version=1.21.3 minecraft_version=1.21.5
yarn_mappings=1.21.3+build.2 yarn_mappings=1.21.5+build.1
loader_version=0.16.9 loader_version=0.16.10
# Mod Properties # Mod Properties
mod_version=1.21.3.1 mod_version=1.21.5.0
maven_group=de.jottyfan.quickiemod maven_group=de.jottyfan.quickiemod
archives_base_name=quickiemod archives_base_name=quickiemod
# Dependencies # Dependencies
fabric_version=0.108.0+1.21.3 fabric_version=0.119.6+1.21.5

View File

@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
networkTimeout=10000 networkTimeout=10000
validateDistributionUrl=true validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME

View File

@ -65,9 +65,13 @@ public class Quickiemod implements ModInitializer {
registerComposterItems(); registerComposterItems();
registerLootTableChanges(); registerLootTableChanges();
ModItemGroup.registerItemGroup(items, blocks); ModItemGroup.registerItemGroup(items, blocks);
PlayerBlockBreakEvents.AFTER.register((world, player, pos, state, blockEntity) -> { PlayerBlockBreakEvents.BEFORE.register((world, player, pos, state, blockEntity) -> {
Block oldBlock = state.getBlock(); Block oldBlock = state.getBlock();
new EventBlockBreak().doBreakBlock(world, pos, state, player, oldBlock); if (new EventBlockBreak().doBreakBlock(world, pos, state, player, oldBlock)) {
return false;
} else {
return true;
}
}); });
} }
} }

View File

@ -17,6 +17,8 @@ import net.minecraft.loot.context.LootWorldContext.Builder;
import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.RegistryKeys;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.BlockView;
/** /**
* *
@ -45,4 +47,9 @@ public class BlockDirtSalpeter extends FallingBlock {
protected MapCodec<? extends FallingBlock> getCodec() { protected MapCodec<? extends FallingBlock> getCodec() {
return null; return null;
} }
@Override
public int getColor(BlockState state, BlockView world, BlockPos pos) {
return 0;
}
} }

View File

@ -31,6 +31,7 @@ import net.minecraft.util.Identifier;
import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction; import net.minecraft.util.math.Direction;
import net.minecraft.world.BlockView;
import net.minecraft.world.World; import net.minecraft.world.World;
/** /**
@ -41,10 +42,11 @@ import net.minecraft.world.World;
public class BlockDrill extends FallingBlock implements BlockEntityProvider { public class BlockDrill extends FallingBlock implements BlockEntityProvider {
private static final Integer MAX_FUEL = 255; private static final Integer MAX_FUEL = 255;
public static final IntProperty FUEL = IntProperty.of("fuel", 0, MAX_FUEL); public static final IntProperty FUEL = IntProperty.of("fuel", 0, MAX_FUEL);
public static final EnumProperty<Direction> DIRECTION = EnumProperty.of("direction", Direction.class, Direction.values()); public static final EnumProperty<Direction> DIRECTION = EnumProperty.of("direction", Direction.class,
Direction.values());
public BlockDrill(Identifier identifier, Direction direction) { public BlockDrill(Identifier identifier, Direction direction) {
super(AbstractBlock.Settings.create().hardness(2.5f).registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); super(AbstractBlock.Settings.create().hardness(0.5f).registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier)));
setDefaultState(getDefaultState().with(FUEL, 0).with(DIRECTION, direction)); setDefaultState(getDefaultState().with(FUEL, 0).with(DIRECTION, direction));
} }
@ -68,8 +70,20 @@ public class BlockDrill extends FallingBlock implements BlockEntityProvider {
@Override @Override
public BlockState onBreak(World world, BlockPos pos, BlockState state, PlayerEntity player) { public BlockState onBreak(World world, BlockPos pos, BlockState state, PlayerEntity player) {
Integer fuelLeft = state.get(FUEL); Integer fuelLeft = state.get(FUEL);
Direction dir = state.get(DIRECTION);
world.spawnEntity( world.spawnEntity(
new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ModItems.ITEM_CANOLABOTTLE, fuelLeft))); new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ModItems.ITEM_CANOLABOTTLE, fuelLeft)));
Block thisBlock = ModBlocks.BLOCK_DRILL_DOWN;
if (Direction.EAST.equals(dir)) {
thisBlock = ModBlocks.BLOCK_DRILL_EAST;
} else if (Direction.SOUTH.equals(dir)) {
thisBlock = ModBlocks.BLOCK_DRILL_SOUTH;
} else if (Direction.WEST.equals(dir)) {
thisBlock = ModBlocks.BLOCK_DRILL_WEST;
} else if (Direction.NORTH.equals(dir)) {
thisBlock = ModBlocks.BLOCK_DRILL_NORTH;
}
world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(thisBlock)));
return super.onBreak(world, pos, state, player); return super.onBreak(world, pos, state, player);
} }
@ -109,4 +123,9 @@ public class BlockDrill extends FallingBlock implements BlockEntityProvider {
} }
return ActionResult.PASS; return ActionResult.PASS;
} }
@Override
public int getColor(BlockState state, BlockView world, BlockPos pos) {
return 0;
}
} }

View File

@ -13,6 +13,8 @@ import net.minecraft.loot.context.LootWorldContext.Builder;
import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.RegistryKeys;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.BlockView;
import net.minecraft.world.explosion.Explosion; import net.minecraft.world.explosion.Explosion;
/** /**
@ -44,4 +46,10 @@ public class BlockPowder extends FallingBlock {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return null; return null;
} }
@Override
public int getColor(BlockState state, BlockView world, BlockPos pos) {
// TODO Auto-generated method stub
return 0;
}
} }

View File

@ -15,7 +15,9 @@ import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.RegistryKeys;
import net.minecraft.sound.BlockSoundGroup; import net.minecraft.sound.BlockSoundGroup;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.random.Random; import net.minecraft.util.math.random.Random;
import net.minecraft.world.BlockView;
/** /**
* *
@ -40,4 +42,10 @@ public class BlockSandSalpeter extends FallingBlock {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return null; return null;
} }
@Override
public int getColor(BlockState state, BlockView world, BlockPos pos) {
// TODO Auto-generated method stub
return 0;
}
} }

View File

@ -16,6 +16,7 @@ import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.RegistryKeys;
import net.minecraft.screen.ScreenHandler; import net.minecraft.screen.ScreenHandler;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.ItemScatterer; import net.minecraft.util.ItemScatterer;
@ -93,15 +94,15 @@ public class BlockStacker extends BlockWithEntity implements BlockEntityProvider
} }
@Override @Override
public void onStateReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean moved) { protected void onStateReplaced(BlockState state, ServerWorld world, BlockPos pos, boolean moved) {
if (state.getBlock() != newState.getBlock()) { if (state.getBlock() != world.getBlockState(pos).getBlock()) {
BlockEntity blockEntity = world.getBlockEntity(pos); BlockEntity blockEntity = world.getBlockEntity(pos);
if (blockEntity instanceof BlockStackerEntity) { if (blockEntity instanceof BlockStackerEntity) {
ItemScatterer.spawn(world, pos, (BlockStackerEntity) blockEntity); ItemScatterer.spawn(world, pos, (BlockStackerEntity) blockEntity);
// update comparators // update comparators
world.updateComparators(pos, this); world.updateComparators(pos, this);
} }
super.onStateReplaced(state, world, pos, newState, moved); super.onStateReplaced(state, world, pos, moved);
} }
} }

View File

@ -30,7 +30,6 @@ import net.minecraft.world.World;
*/ */
public class ItemHoarderBlockEntity extends LootableContainerBlockEntity { public class ItemHoarderBlockEntity extends LootableContainerBlockEntity {
private DefaultedList<ItemStack> stacks; private DefaultedList<ItemStack> stacks;
private float suckradius; private float suckradius;
@ -44,9 +43,17 @@ public class ItemHoarderBlockEntity extends LootableContainerBlockEntity {
public final static boolean setStackToSlots(ItemStack stack, List<ItemStack> stacks) { public final static boolean setStackToSlots(ItemStack stack, List<ItemStack> stacks) {
for (ItemStack slot : stacks) { for (ItemStack slot : stacks) {
Integer sum = stack.getCount() + slot.getCount();
if (slot.getItem().equals(stack.getItem())) { if (slot.getItem().equals(stack.getItem())) {
slot.increment(stack.getCount()); if (slot.getItem().getMaxCount() >= sum) {
return true; slot.increment(stack.getCount());
return true;
} else {
Integer transferSize = 64 - stack.getCount();
stack.setCount(stack.getCount() - transferSize);
slot.setCount(64);
// to not return sth. here so that the next loop will sum up the result
}
} }
} // if not found, seek for an empty stack instead } // if not found, seek for an empty stack instead
for (ItemStack slot : stacks) { for (ItemStack slot : stacks) {

View File

@ -3,10 +3,10 @@ package de.jottyfan.quickiemod.event;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import de.jottyfan.quickiemod.Quickiemod;
import de.jottyfan.quickiemod.item.HarvestRange; import de.jottyfan.quickiemod.item.HarvestRange;
import de.jottyfan.quickiemod.item.ModItems; import de.jottyfan.quickiemod.item.ModItems;
import de.jottyfan.quickiemod.item.ToolRangeable; import de.jottyfan.quickiemod.item.ToolRangeable;
import de.jottyfan.quickiemod.item.ToolSpeedpowderAxe;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks; import net.minecraft.block.Blocks;
@ -28,23 +28,40 @@ public class EventBlockBreak {
UPWARDS, ALL; UPWARDS, ALL;
} }
public void doBreakBlock(World world, BlockPos blockPos, BlockState blockState, PlayerEntity playerEntity, Block oldBlock) { /**
* break surrounding block if item is of ToolRangeable
*
* @param world
* @param blockPos
* @param blockState
* @param playerEntity
* @param oldBlock
* @return true if this range breaking routine has been used, false otherwise
*/
public boolean doBreakBlock(World world, BlockPos blockPos, BlockState blockState, PlayerEntity playerEntity, Block oldBlock) {
ItemStack mainHandItemStack = playerEntity.getEquippedStack(EquipmentSlot.MAINHAND); ItemStack mainHandItemStack = playerEntity.getEquippedStack(EquipmentSlot.MAINHAND);
if (mainHandItemStack != null) { if (mainHandItemStack != null) {
Item item = mainHandItemStack.getItem(); Item item = mainHandItemStack.getItem();
if (item instanceof ToolRangeable) { if (item instanceof ToolRangeable) {
ToolRangeable tool = (ToolRangeable) item; ToolRangeable tool = (ToolRangeable) item;
if (!world.getBlockState(blockPos).getBlock().equals(oldBlock)) { // not needed when added to before block break
// recreate old block to make it breakable; otherwise, the recursive algorithm stops directly // if (!world.getBlockState(blockPos).getBlock().equals(oldBlock)) {
world.setBlockState(blockPos, oldBlock.getDefaultState()); // // recreate old block to make it breakable; otherwise, the recursive algorithm stops directly
} // // this leads to the BUG that blocks with no neighbour will respawn and drop -> unlimited items.
// world.setBlockState(blockPos, oldBlock.getDefaultState());
// }
int handled = handleRangeableTools(tool, mainHandItemStack, world, oldBlock, blockPos, playerEntity); int handled = handleRangeableTools(tool, mainHandItemStack, world, oldBlock, blockPos, playerEntity);
if (handled >= 255) { if (handled >= 255) {
// reward for using rangeable tool very successful // reward for using rangeable tool very successful
world.spawnEntity( world.spawnEntity(
new ExperienceOrbEntity(world, blockPos.getX(), blockPos.getY(), blockPos.getZ(), handled / 255)); new ExperienceOrbEntity(world, blockPos.getX(), blockPos.getY(), blockPos.getZ(), handled / 255));
} }
return handled > 0; // this way, a rangeable pickaxe can break a dirt block
} else {
return false;
} }
} else {
return false;
} }
} }
@ -63,32 +80,38 @@ public class EventBlockBreak {
BlockPos pos, PlayerEntity player) { BlockPos pos, PlayerEntity player) {
List<Block> validBlocks = tool.getBlockList(currentBlock); List<Block> validBlocks = tool.getBlockList(currentBlock);
HarvestRange range = tool.getRange(itemStack); HarvestRange range = tool.getRange(itemStack);
List<String> visitedBlocks = new ArrayList<>(); if (tool instanceof Item) {
if (tool instanceof ToolSpeedpowderAxe) { Item toolItem = (Item) tool; // a rangeable tool should always be an item
return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.UPWARDS, List<String> visitedBlocks = new ArrayList<>();
player, true); if (ModItems.TOOL_SPEEDPOWDERAXE.getName().equals(toolItem.getName())) {
} else if (ModItems.TOOL_SPEEDPOWDERPICKAXE.getName().equals(tool.getName())) {
return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.ALL,
player, false);
} else if (ModItems.TOOL_SPEEDPOWDERSHOVEL.getName().equals(tool.getName())) {
return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.ALL,
player, false);
} else if (ModItems.TOOL_SPEEDPOWDERHOE.getName().equals(tool.getName())) {
return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.ALL,
player, false);
} else if (ModItems.TOOL_QUICKIEPOWDERAXE.getName().equals(tool.getName())) {
return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.UPWARDS, return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.UPWARDS,
player, true); player, true);
} else if (ModItems.TOOL_QUICKIEPOWDERPICKAXE.getName().equals(tool.getName())) { } else if (ModItems.TOOL_SPEEDPOWDERPICKAXE.getName().equals(toolItem.getName())) {
return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.ALL, return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.ALL,
player, false); player, false);
} else if (ModItems.TOOL_QUICKIEPOWDERSHOVEL.getName().equals(tool.getName())) { } else if (ModItems.TOOL_SPEEDPOWDERSHOVEL.getName().equals(toolItem.getName())) {
return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.ALL, return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.ALL,
player, false); player, false);
} else if (ModItems.TOOL_QUICKIEPOWDERHOE.getName().equals(tool.getName())) { } else if (ModItems.TOOL_SPEEDPOWDERHOE.getName().equals(toolItem.getName())) {
return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.ALL, return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.ALL,
player, false); player, false);
} else if (ModItems.TOOL_QUICKIEPOWDERAXE.getName().equals(toolItem.getName())) {
return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.UPWARDS,
player, true);
} else if (ModItems.TOOL_QUICKIEPOWDERPICKAXE.getName().equals(toolItem.getName())) {
return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.ALL,
player, false);
} else if (ModItems.TOOL_QUICKIEPOWDERSHOVEL.getName().equals(toolItem.getName())) {
return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.ALL,
player, false);
} else if (ModItems.TOOL_QUICKIEPOWDERHOE.getName().equals(toolItem.getName())) {
return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.ALL,
player, false);
} else {
return 0;
}
} else { } else {
Quickiemod.LOGGER.warn("using a tool that is not an item - no rangeable operations are possible.");
return 0; return 0;
} }
} }
@ -109,7 +132,7 @@ public class EventBlockBreak {
private int breakBlockRecursive(List<String> visitedBlocks, World world, List<Block> validBlocks, BlockPos pos, private int breakBlockRecursive(List<String> visitedBlocks, World world, List<Block> validBlocks, BlockPos pos,
ToolRangeable tool, HarvestRange range, BlockBreakDirection blockBreakDirection, PlayerEntity player, ToolRangeable tool, HarvestRange range, BlockBreakDirection blockBreakDirection, PlayerEntity player,
boolean breakLeaves) { boolean breakLeaves) {
boolean ignoreSpawn = visitedBlocks.size() < 1; // with this, the already broken block can be omitted to spawn // boolean ignoreSpawn = visitedBlocks.size() < 1; // with this, the already broken block can be omitted to spawn
if (visitedBlocks.contains(pos.toString())) { if (visitedBlocks.contains(pos.toString())) {
return 0; return 0;
} else if (validBlocks == null) { } else if (validBlocks == null) {
@ -122,9 +145,9 @@ public class EventBlockBreak {
if (tool.canBreakNeighbors(blockState)) { if (tool.canBreakNeighbors(blockState)) {
Block currentBlock = blockState.getBlock(); Block currentBlock = blockState.getBlock();
if (validBlocks.contains(currentBlock)) { if (validBlocks.contains(currentBlock)) {
if (!ignoreSpawn) { // if (!ignoreSpawn) {
Block.dropStacks(blockState, world, pos); // includes xorbs Block.dropStacks(blockState, world, pos); // includes xorbs
} // }
affected += 1; affected += 1;
world.setBlockState(pos, Blocks.AIR.getDefaultState()); world.setBlockState(pos, Blocks.AIR.getDefaultState());
if (range == null || range.getxRange() > 1 || range.getyRange() > 1 || range.getzRange() > 1) { if (range == null || range.getxRange() > 1 || range.getyRange() > 1 || range.getzRange() > 1) {

View File

@ -8,7 +8,6 @@ import net.minecraft.block.Block;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.PickaxeItem;
import net.minecraft.item.ToolMaterial; import net.minecraft.item.ToolMaterial;
import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.RegistryKeys;
@ -21,13 +20,13 @@ import net.minecraft.util.Identifier;
* @author jotty * @author jotty
* *
*/ */
public class ToolQuickiepowderPickaxe extends PickaxeItem implements ToolRangeable { public class ToolQuickiepowderPickaxe extends Item implements ToolRangeable {
public static final int[] DEFAULT_HARVEST_RANGE = new int[] { 6, 6, 6 }; public static final int[] DEFAULT_HARVEST_RANGE = new int[] { 6, 6, 6 };
private final static ToolMaterial MATERIAL = new ToolMaterial(BlockTags.INCORRECT_FOR_DIAMOND_TOOL, 2400, 7f, 1f, 15, ItemTags.DIAMOND_TOOL_MATERIALS); private final static ToolMaterial MATERIAL = new ToolMaterial(BlockTags.INCORRECT_FOR_DIAMOND_TOOL, 2400, 7f, 1f, 15, ItemTags.DIAMOND_TOOL_MATERIALS);
public ToolQuickiepowderPickaxe(Identifier identifier) { public ToolQuickiepowderPickaxe(Identifier identifier) {
super(MATERIAL, 7F, -3.1F, new Item.Settings().useItemPrefixedTranslationKey().registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier))); super(new Item.Settings().pickaxe(MATERIAL, 7F, -3.1F).useItemPrefixedTranslationKey().registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier)));
} }
@Override @Override

View File

@ -5,7 +5,6 @@ import java.util.List;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.text.Text;
/** /**
* *
@ -14,13 +13,6 @@ import net.minecraft.text.Text;
*/ */
public interface ToolRangeable { public interface ToolRangeable {
/**
* dummy to have a getName method that comes with the item
*
* @return the name
*/
public Text getName();
/** /**
* @param stack the item stack that keeps the range * @param stack the item stack that keeps the range
* @return range of blocks to be harvested * @return range of blocks to be harvested

View File

@ -8,7 +8,6 @@ import net.minecraft.block.Block;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.PickaxeItem;
import net.minecraft.item.ToolMaterial; import net.minecraft.item.ToolMaterial;
import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.RegistryKeys;
@ -21,13 +20,13 @@ import net.minecraft.util.Identifier;
* @author jotty * @author jotty
* *
*/ */
public class ToolSpeedpowderPickaxe extends PickaxeItem implements ToolRangeable { public class ToolSpeedpowderPickaxe extends Item implements ToolRangeable {
public static final int[] DEFAULT_HARVEST_RANGE = new int[] { 3, 3, 3 }; public static final int[] DEFAULT_HARVEST_RANGE = new int[] { 3, 3, 3 };
private final static ToolMaterial MATERIAL = new ToolMaterial(BlockTags.INCORRECT_FOR_DIAMOND_TOOL, 800, 7.0F, 1.0F, 15, ItemTags.DIAMOND_TOOL_MATERIALS); private final static ToolMaterial MATERIAL = new ToolMaterial(BlockTags.INCORRECT_FOR_DIAMOND_TOOL, 800, 7.0F, 1.0F, 15, ItemTags.DIAMOND_TOOL_MATERIALS);
public ToolSpeedpowderPickaxe(Identifier identifier) { public ToolSpeedpowderPickaxe(Identifier identifier) {
super(MATERIAL, 7F, -3.1F, new Item.Settings().useItemPrefixedTranslationKey().registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier))); super(new Item.Settings().pickaxe(MATERIAL, 7F, -3.1F).useItemPrefixedTranslationKey().registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier)));
} }
@Override @Override

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/blockquickiepowder"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/blocksalpeter"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/blockspeedpowder"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/blockstackerdown"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/blockstackereast"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/blockstackernorth"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/blockstackersouth"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/blockstackerup"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/blockstackerwest"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/blocksulphor"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/canola"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/canolabottle"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/canolabottlestack"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/canolaseed"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/canolaseed"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/carrotstack"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/cotton"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/cottonseed"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/cottonseed"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/dirtsalpeter"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/drill"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/drilleast"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/drillnorth"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/drillsouth"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/drillwest"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/emptylavahoarder"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/itemhoarder"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/kelpstack"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/lavahoarder"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/monsterhoarder"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/oredeepslatesulphor"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/orenethersulphor"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/oresalpeter"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/oresandsalpeter"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/oresulphor"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/oxidizedcopperpowder"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/quickieingot"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/quickiepowder"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/quickiepowderaxe"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/quickiepowderhoe"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/quickiepowderpickaxe"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/quickiepowdershovel"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/quickiepowderwaterhoe"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/rotten_flesh_stripes"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/salpeter"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:block/sandsalpeter"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/speedingot"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/speedpowder"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/speedpowderaxe"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/speedpowderhoe"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/speedpowderpickaxe"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/speedpowdershears"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/speedpowdershovel"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/speedpowderwaterhoe"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/stub"
}
}

View File

@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "quickiemod:item/sulphor"
}
}

View File

@ -0,0 +1,11 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
"quickiemod:speedpowder",
"minecraft:moss_block"
],
"result": {
"id": "quickiemod:quickiepowder",
"count": 1
}
}

View File

@ -28,8 +28,8 @@
"mixins": [ "mixins": [
], ],
"depends": { "depends": {
"fabricloader": ">=0.16.9", "fabricloader": ">=0.16.10",
"minecraft": "~1.21.3", "minecraft": "~1.21.5",
"java": ">=21", "java": ">=21",
"fabric-api": "*" "fabric-api": "*"
}, },