Compare commits
No commits in common. "main" and "1.21.4" have entirely different histories.
@ -1,5 +1,5 @@
|
||||
plugins {
|
||||
id 'fabric-loom' version '1.10-SNAPSHOT'
|
||||
id 'fabric-loom' version '1.9-SNAPSHOT'
|
||||
id 'maven-publish'
|
||||
}
|
||||
|
||||
|
@ -4,14 +4,14 @@ org.gradle.parallel=true
|
||||
|
||||
# Fabric Properties
|
||||
# check these on https://fabricmc.net/develop
|
||||
minecraft_version=1.21.5
|
||||
yarn_mappings=1.21.5+build.1
|
||||
loader_version=0.16.10
|
||||
minecraft_version=1.21.4
|
||||
yarn_mappings=1.21.4+build.1
|
||||
loader_version=0.16.9
|
||||
|
||||
# Mod Properties
|
||||
mod_version=1.21.5.0
|
||||
mod_version=1.21.4.0
|
||||
maven_group=de.jottyfan.quickiemod
|
||||
archives_base_name=quickiemod
|
||||
|
||||
# Dependencies
|
||||
fabric_version=0.119.6+1.21.5
|
||||
fabric_version=0.110.5+1.21.4
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,6 +1,6 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
@ -65,13 +65,9 @@ public class Quickiemod implements ModInitializer {
|
||||
registerComposterItems();
|
||||
registerLootTableChanges();
|
||||
ModItemGroup.registerItemGroup(items, blocks);
|
||||
PlayerBlockBreakEvents.BEFORE.register((world, player, pos, state, blockEntity) -> {
|
||||
PlayerBlockBreakEvents.AFTER.register((world, player, pos, state, blockEntity) -> {
|
||||
Block oldBlock = state.getBlock();
|
||||
if (new EventBlockBreak().doBreakBlock(world, pos, state, player, oldBlock)) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
new EventBlockBreak().doBreakBlock(world, pos, state, player, oldBlock);
|
||||
});
|
||||
}
|
||||
}
|
@ -17,8 +17,6 @@ import net.minecraft.loot.context.LootWorldContext.Builder;
|
||||
import net.minecraft.registry.RegistryKey;
|
||||
import net.minecraft.registry.RegistryKeys;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.BlockView;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -47,9 +45,4 @@ public class BlockDirtSalpeter extends FallingBlock {
|
||||
protected MapCodec<? extends FallingBlock> getCodec() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getColor(BlockState state, BlockView world, BlockPos pos) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -31,7 +31,6 @@ import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.hit.BlockHitResult;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Direction;
|
||||
import net.minecraft.world.BlockView;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
/**
|
||||
@ -42,11 +41,10 @@ import net.minecraft.world.World;
|
||||
public class BlockDrill extends FallingBlock implements BlockEntityProvider {
|
||||
private static final Integer MAX_FUEL = 255;
|
||||
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) {
|
||||
super(AbstractBlock.Settings.create().hardness(0.5f).registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier)));
|
||||
super(AbstractBlock.Settings.create().hardness(2.5f).registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier)));
|
||||
setDefaultState(getDefaultState().with(FUEL, 0).with(DIRECTION, direction));
|
||||
}
|
||||
|
||||
@ -70,20 +68,8 @@ public class BlockDrill extends FallingBlock implements BlockEntityProvider {
|
||||
@Override
|
||||
public BlockState onBreak(World world, BlockPos pos, BlockState state, PlayerEntity player) {
|
||||
Integer fuelLeft = state.get(FUEL);
|
||||
Direction dir = state.get(DIRECTION);
|
||||
world.spawnEntity(
|
||||
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);
|
||||
}
|
||||
|
||||
@ -123,9 +109,4 @@ public class BlockDrill extends FallingBlock implements BlockEntityProvider {
|
||||
}
|
||||
return ActionResult.PASS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getColor(BlockState state, BlockView world, BlockPos pos) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -13,8 +13,6 @@ import net.minecraft.loot.context.LootWorldContext.Builder;
|
||||
import net.minecraft.registry.RegistryKey;
|
||||
import net.minecraft.registry.RegistryKeys;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.BlockView;
|
||||
import net.minecraft.world.explosion.Explosion;
|
||||
|
||||
/**
|
||||
@ -46,10 +44,4 @@ public class BlockPowder extends FallingBlock {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getColor(BlockState state, BlockView world, BlockPos pos) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -15,9 +15,7 @@ import net.minecraft.registry.RegistryKey;
|
||||
import net.minecraft.registry.RegistryKeys;
|
||||
import net.minecraft.sound.BlockSoundGroup;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.random.Random;
|
||||
import net.minecraft.world.BlockView;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -42,10 +40,4 @@ public class BlockSandSalpeter extends FallingBlock {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getColor(BlockState state, BlockView world, BlockPos pos) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -16,7 +16,6 @@ import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.registry.RegistryKey;
|
||||
import net.minecraft.registry.RegistryKeys;
|
||||
import net.minecraft.screen.ScreenHandler;
|
||||
import net.minecraft.server.world.ServerWorld;
|
||||
import net.minecraft.util.ActionResult;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.ItemScatterer;
|
||||
@ -94,15 +93,15 @@ public class BlockStacker extends BlockWithEntity implements BlockEntityProvider
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStateReplaced(BlockState state, ServerWorld world, BlockPos pos, boolean moved) {
|
||||
if (state.getBlock() != world.getBlockState(pos).getBlock()) {
|
||||
public void onStateReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean moved) {
|
||||
if (state.getBlock() != newState.getBlock()) {
|
||||
BlockEntity blockEntity = world.getBlockEntity(pos);
|
||||
if (blockEntity instanceof BlockStackerEntity) {
|
||||
ItemScatterer.spawn(world, pos, (BlockStackerEntity) blockEntity);
|
||||
// update comparators
|
||||
world.updateComparators(pos, this);
|
||||
}
|
||||
super.onStateReplaced(state, world, pos, moved);
|
||||
super.onStateReplaced(state, world, pos, newState, moved);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -30,6 +30,7 @@ import net.minecraft.world.World;
|
||||
*/
|
||||
public class ItemHoarderBlockEntity extends LootableContainerBlockEntity {
|
||||
|
||||
|
||||
private DefaultedList<ItemStack> stacks;
|
||||
private float suckradius;
|
||||
|
||||
@ -43,17 +44,9 @@ public class ItemHoarderBlockEntity extends LootableContainerBlockEntity {
|
||||
|
||||
public final static boolean setStackToSlots(ItemStack stack, List<ItemStack> stacks) {
|
||||
for (ItemStack slot : stacks) {
|
||||
Integer sum = stack.getCount() + slot.getCount();
|
||||
if (slot.getItem().equals(stack.getItem())) {
|
||||
if (slot.getItem().getMaxCount() >= sum) {
|
||||
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
|
||||
for (ItemStack slot : stacks) {
|
||||
|
@ -7,6 +7,7 @@ import de.jottyfan.quickiemod.Quickiemod;
|
||||
import de.jottyfan.quickiemod.item.HarvestRange;
|
||||
import de.jottyfan.quickiemod.item.ModItems;
|
||||
import de.jottyfan.quickiemod.item.ToolRangeable;
|
||||
import de.jottyfan.quickiemod.item.ToolSpeedpowderAxe;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
@ -28,40 +29,23 @@ public class EventBlockBreak {
|
||||
UPWARDS, ALL;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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) {
|
||||
public void doBreakBlock(World world, BlockPos blockPos, BlockState blockState, PlayerEntity playerEntity, Block oldBlock) {
|
||||
ItemStack mainHandItemStack = playerEntity.getEquippedStack(EquipmentSlot.MAINHAND);
|
||||
if (mainHandItemStack != null) {
|
||||
Item item = mainHandItemStack.getItem();
|
||||
if (item instanceof ToolRangeable) {
|
||||
ToolRangeable tool = (ToolRangeable) item;
|
||||
// not needed when added to before block break
|
||||
// if (!world.getBlockState(blockPos).getBlock().equals(oldBlock)) {
|
||||
// // 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());
|
||||
// }
|
||||
if (!world.getBlockState(blockPos).getBlock().equals(oldBlock)) {
|
||||
// recreate old block to make it breakable; otherwise, the recursive algorithm stops directly
|
||||
world.setBlockState(blockPos, oldBlock.getDefaultState());
|
||||
}
|
||||
int handled = handleRangeableTools(tool, mainHandItemStack, world, oldBlock, blockPos, playerEntity);
|
||||
if (handled >= 255) {
|
||||
// reward for using rangeable tool very successful
|
||||
world.spawnEntity(
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -83,7 +67,7 @@ public class EventBlockBreak {
|
||||
if (tool instanceof Item) {
|
||||
Item toolItem = (Item) tool; // a rangeable tool should always be an item
|
||||
List<String> visitedBlocks = new ArrayList<>();
|
||||
if (ModItems.TOOL_SPEEDPOWDERAXE.getName().equals(toolItem.getName())) {
|
||||
if (tool instanceof ToolSpeedpowderAxe) {
|
||||
return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.UPWARDS,
|
||||
player, true);
|
||||
} else if (ModItems.TOOL_SPEEDPOWDERPICKAXE.getName().equals(toolItem.getName())) {
|
||||
@ -132,7 +116,7 @@ public class EventBlockBreak {
|
||||
private int breakBlockRecursive(List<String> visitedBlocks, World world, List<Block> validBlocks, BlockPos pos,
|
||||
ToolRangeable tool, HarvestRange range, BlockBreakDirection blockBreakDirection, PlayerEntity player,
|
||||
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())) {
|
||||
return 0;
|
||||
} else if (validBlocks == null) {
|
||||
@ -145,9 +129,9 @@ public class EventBlockBreak {
|
||||
if (tool.canBreakNeighbors(blockState)) {
|
||||
Block currentBlock = blockState.getBlock();
|
||||
if (validBlocks.contains(currentBlock)) {
|
||||
// if (!ignoreSpawn) {
|
||||
if (!ignoreSpawn) {
|
||||
Block.dropStacks(blockState, world, pos); // includes xorbs
|
||||
// }
|
||||
}
|
||||
affected += 1;
|
||||
world.setBlockState(pos, Blocks.AIR.getDefaultState());
|
||||
if (range == null || range.getxRange() > 1 || range.getyRange() > 1 || range.getzRange() > 1) {
|
||||
|
@ -8,6 +8,7 @@ import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.PickaxeItem;
|
||||
import net.minecraft.item.ToolMaterial;
|
||||
import net.minecraft.registry.RegistryKey;
|
||||
import net.minecraft.registry.RegistryKeys;
|
||||
@ -20,13 +21,13 @@ import net.minecraft.util.Identifier;
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
public class ToolQuickiepowderPickaxe extends Item implements ToolRangeable {
|
||||
public class ToolQuickiepowderPickaxe extends PickaxeItem implements ToolRangeable {
|
||||
|
||||
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);
|
||||
|
||||
public ToolQuickiepowderPickaxe(Identifier identifier) {
|
||||
super(new Item.Settings().pickaxe(MATERIAL, 7F, -3.1F).useItemPrefixedTranslationKey().registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier)));
|
||||
super(MATERIAL, 7F, -3.1F, new Item.Settings().useItemPrefixedTranslationKey().registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -8,6 +8,7 @@ import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.PickaxeItem;
|
||||
import net.minecraft.item.ToolMaterial;
|
||||
import net.minecraft.registry.RegistryKey;
|
||||
import net.minecraft.registry.RegistryKeys;
|
||||
@ -20,13 +21,13 @@ import net.minecraft.util.Identifier;
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
public class ToolSpeedpowderPickaxe extends Item implements ToolRangeable {
|
||||
public class ToolSpeedpowderPickaxe extends PickaxeItem implements ToolRangeable {
|
||||
|
||||
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);
|
||||
|
||||
public ToolSpeedpowderPickaxe(Identifier identifier) {
|
||||
super(new Item.Settings().pickaxe(MATERIAL, 7F, -3.1F).useItemPrefixedTranslationKey().registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier)));
|
||||
super(MATERIAL, 7F, -3.1F, new Item.Settings().useItemPrefixedTranslationKey().registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,11 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:crafting_shapeless",
|
||||
"ingredients": [
|
||||
"quickiemod:speedpowder",
|
||||
"minecraft:moss_block"
|
||||
],
|
||||
"result": {
|
||||
"id": "quickiemod:quickiepowder",
|
||||
"count": 1
|
||||
}
|
||||
}
|
@ -28,8 +28,8 @@
|
||||
"mixins": [
|
||||
],
|
||||
"depends": {
|
||||
"fabricloader": ">=0.16.10",
|
||||
"minecraft": "~1.21.5",
|
||||
"fabricloader": ">=0.16.9",
|
||||
"minecraft": "~1.21.4",
|
||||
"java": ">=21",
|
||||
"fabric-api": "*"
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user