Compare commits
11 Commits
4c5dea1756
...
main
Author | SHA1 | Date | |
---|---|---|---|
7a9021790f | |||
b9ae4bcd52 | |||
c06c231dce | |||
2fedfdc700 | |||
17a11ce56a | |||
81e45c56ce | |||
c2558a5324 | |||
46a21b03c0 | |||
4ae1e998b0 | |||
06db4df2cb | |||
0c744ef52b |
@ -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'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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.6
|
||||||
yarn_mappings=1.21.3+build.2
|
yarn_mappings=1.21.6+build.1
|
||||||
loader_version=0.16.9
|
loader_version=0.16.14
|
||||||
|
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version=1.21.3.1
|
mod_version=1.21.6.1
|
||||||
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.127.1+1.21.6
|
||||||
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -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
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,8 +2,8 @@ package de.jottyfan.quickiemod;
|
|||||||
|
|
||||||
import de.jottyfan.quickiemod.block.ModBlocks;
|
import de.jottyfan.quickiemod.block.ModBlocks;
|
||||||
import net.fabricmc.api.ClientModInitializer;
|
import net.fabricmc.api.ClientModInitializer;
|
||||||
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
|
import net.fabricmc.fabric.api.client.rendering.v1.BlockRenderLayerMap;
|
||||||
import net.minecraft.client.render.RenderLayer;
|
import net.minecraft.client.render.BlockRenderLayer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -14,7 +14,7 @@ public class QuickiemodClient implements ClientModInitializer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInitializeClient() {
|
public void onInitializeClient() {
|
||||||
BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.BLOCK_COTTONPLANT, RenderLayer.getCutout());
|
BlockRenderLayerMap.putBlock(ModBlocks.BLOCK_COTTONPLANT, BlockRenderLayer.CUTOUT);
|
||||||
BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.BLOCK_CANOLAPLANT, RenderLayer.getCutout());
|
BlockRenderLayerMap.putBlock(ModBlocks.BLOCK_CANOLAPLANT, BlockRenderLayer.CUTOUT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ import net.minecraft.world.tick.OrderedTick;
|
|||||||
*/
|
*/
|
||||||
public class BlockMonsterhoarder extends Block {
|
public class BlockMonsterhoarder extends Block {
|
||||||
|
|
||||||
private static final IntProperty SUCKRADIUS = IntProperty.of("suckradius", 1, 15);
|
private static final IntProperty SUCKRADIUS = IntProperty.of("suckradius", 2, 20);
|
||||||
|
|
||||||
public BlockMonsterhoarder(Identifier identifier) {
|
public BlockMonsterhoarder(Identifier identifier) {
|
||||||
super(AbstractBlock.Settings.create().hardness(2.5f).luminance(state -> state.get(BlockMonsterhoarder.SUCKRADIUS))
|
super(AbstractBlock.Settings.create().hardness(2.5f).luminance(state -> state.get(BlockMonsterhoarder.SUCKRADIUS))
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,10 +16,10 @@ import net.minecraft.inventory.Inventories;
|
|||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.item.Items;
|
import net.minecraft.item.Items;
|
||||||
import net.minecraft.nbt.NbtCompound;
|
|
||||||
import net.minecraft.registry.RegistryWrapper.WrapperLookup;
|
|
||||||
import net.minecraft.screen.NamedScreenHandlerFactory;
|
import net.minecraft.screen.NamedScreenHandlerFactory;
|
||||||
import net.minecraft.screen.ScreenHandler;
|
import net.minecraft.screen.ScreenHandler;
|
||||||
|
import net.minecraft.storage.ReadView;
|
||||||
|
import net.minecraft.storage.WriteView;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import net.minecraft.util.collection.DefaultedList;
|
import net.minecraft.util.collection.DefaultedList;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
@ -78,15 +78,15 @@ public class BlockStackerEntity extends BlockEntity implements NamedScreenHandle
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void readNbt(NbtCompound nbt, WrapperLookup registryLookup) {
|
protected void readData(ReadView view) {
|
||||||
super.readNbt(nbt, registryLookup);
|
super.readData(view);
|
||||||
Inventories.readNbt(nbt, inventory, registryLookup);
|
Inventories.readData(view, inventory);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void writeNbt(NbtCompound nbt, WrapperLookup registryLookup) {
|
protected void writeData(WriteView view) {
|
||||||
Inventories.writeNbt(nbt, inventory, registryLookup);
|
Inventories.writeData(view, inventory);
|
||||||
super.writeNbt(nbt, registryLookup);
|
super.writeData(view);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -14,9 +14,9 @@ import net.minecraft.inventory.Inventories;
|
|||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.item.Items;
|
import net.minecraft.item.Items;
|
||||||
import net.minecraft.nbt.NbtCompound;
|
|
||||||
import net.minecraft.registry.RegistryWrapper.WrapperLookup;
|
|
||||||
import net.minecraft.screen.ScreenHandler;
|
import net.minecraft.screen.ScreenHandler;
|
||||||
|
import net.minecraft.storage.ReadView;
|
||||||
|
import net.minecraft.storage.WriteView;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import net.minecraft.util.collection.DefaultedList;
|
import net.minecraft.util.collection.DefaultedList;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
@ -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) {
|
||||||
@ -81,19 +88,19 @@ public class ItemHoarderBlockEntity extends LootableContainerBlockEntity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void writeNbt(NbtCompound nbt, WrapperLookup registryLookup) {
|
protected void writeData(WriteView view) {
|
||||||
super.writeNbt(nbt, registryLookup);
|
super.writeData(view);
|
||||||
if (!this.writeLootTable(nbt)) {
|
if (!this.writeLootTable(view)) {
|
||||||
Inventories.writeNbt(nbt, this.stacks, registryLookup);
|
Inventories.writeData(view, this.stacks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void readNbt(NbtCompound nbt, WrapperLookup registryLookup) {
|
protected void readData(ReadView view) {
|
||||||
super.readNbt(nbt, registryLookup);
|
super.readData(view);
|
||||||
this.stacks = DefaultedList.ofSize(this.size(), ItemStack.EMPTY);
|
this.stacks = DefaultedList.ofSize(this.size(), ItemStack.EMPTY);
|
||||||
if (!this.readLootTable(nbt)) {
|
if (!this.readLootTable(view)){
|
||||||
Inventories.readNbt(nbt, this.stacks, registryLookup);
|
Inventories.readData(view, this.stacks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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) {
|
||||||
|
@ -39,6 +39,7 @@ public class ModIdentifiers {
|
|||||||
public static final Identifier TOOL_QUICKIEPOWDERPICKAXE = Identifier.of(Quickiemod.MOD_ID, "quickiepowderpickaxe");
|
public static final Identifier TOOL_QUICKIEPOWDERPICKAXE = Identifier.of(Quickiemod.MOD_ID, "quickiepowderpickaxe");
|
||||||
public static final Identifier TOOL_QUICKIEPOWDERSHOVEL = Identifier.of(Quickiemod.MOD_ID, "quickiepowdershovel");
|
public static final Identifier TOOL_QUICKIEPOWDERSHOVEL = Identifier.of(Quickiemod.MOD_ID, "quickiepowdershovel");
|
||||||
public static final Identifier TOOL_QUICKIEPOWDERWATERHOE = Identifier.of(Quickiemod.MOD_ID, "quickiepowderwaterhoe");
|
public static final Identifier TOOL_QUICKIEPOWDERWATERHOE = Identifier.of(Quickiemod.MOD_ID, "quickiepowderwaterhoe");
|
||||||
|
public static final Identifier TOOL_QUICKIEPOWDERSHEARS = Identifier.of(Quickiemod.MOD_ID, "quickiepowdershears");
|
||||||
|
|
||||||
public static final Identifier BLOCK_QUICKIEPOWDER = Identifier.of(Quickiemod.MOD_ID, "blockquickiepowder");
|
public static final Identifier BLOCK_QUICKIEPOWDER = Identifier.of(Quickiemod.MOD_ID, "blockquickiepowder");
|
||||||
public static final Identifier BLOCK_SPEEDPOWDER = Identifier.of(Quickiemod.MOD_ID, "blockspeedpowder");
|
public static final Identifier BLOCK_SPEEDPOWDER = Identifier.of(Quickiemod.MOD_ID, "blockspeedpowder");
|
||||||
|
54
src/main/java/de/jottyfan/quickiemod/item/ItemStub.java
Normal file
54
src/main/java/de/jottyfan/quickiemod/item/ItemStub.java
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
package de.jottyfan.quickiemod.item;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import de.jottyfan.quickiemod.block.ModBlocks;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.block.Blocks;
|
||||||
|
import net.minecraft.entity.ItemEntity;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.item.ItemUsageContext;
|
||||||
|
import net.minecraft.item.Items;
|
||||||
|
import net.minecraft.sound.SoundCategory;
|
||||||
|
import net.minecraft.sound.SoundEvents;
|
||||||
|
import net.minecraft.util.ActionResult;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
public class ItemStub extends AbstractIdentifiedItem {
|
||||||
|
|
||||||
|
public ItemStub(Identifier identifier) {
|
||||||
|
super(identifier, 64);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ActionResult useOnBlock(ItemUsageContext context) {
|
||||||
|
Map<Block, Item> SLASH_MAP = Map.of(
|
||||||
|
Blocks.HAY_BLOCK, Items.WHEAT,
|
||||||
|
Blocks.DRIED_KELP_BLOCK, Items.DRIED_KELP,
|
||||||
|
ModBlocks.BLOCK_KELPSTACK, Items.KELP);
|
||||||
|
|
||||||
|
World world = context.getWorld();
|
||||||
|
BlockPos pos = context.getBlockPos();
|
||||||
|
Block clickedBlock = world.getBlockState(pos).getBlock();
|
||||||
|
if (SLASH_MAP.containsKey(clickedBlock)) {
|
||||||
|
if (!world.isClient()) {
|
||||||
|
world.setBlockState(pos, Blocks.AIR.getDefaultState());
|
||||||
|
world.playSound(null, pos, SoundEvents.ITEM_HOE_TILL,
|
||||||
|
SoundCategory.BLOCKS);
|
||||||
|
for (int i = 0; i < 9; i++) {
|
||||||
|
ItemStack stack = new ItemStack(SLASH_MAP.get(clickedBlock));
|
||||||
|
float xScatter = new Random().nextFloat();
|
||||||
|
float yScatter = new Random().nextFloat();
|
||||||
|
ItemEntity entity = new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(),
|
||||||
|
stack, xScatter, yScatter, 0.2);
|
||||||
|
world.spawnEntity(entity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ActionResult.SUCCESS;
|
||||||
|
}
|
||||||
|
}
|
@ -17,7 +17,7 @@ import net.minecraft.util.Identifier;
|
|||||||
*/
|
*/
|
||||||
public class ModItems {
|
public class ModItems {
|
||||||
public static final Item ITEM_STUB = registerItem(ModIdentifiers.ITEM_STUB,
|
public static final Item ITEM_STUB = registerItem(ModIdentifiers.ITEM_STUB,
|
||||||
new Item64Stack(ModIdentifiers.ITEM_STUB));
|
new ItemStub(ModIdentifiers.ITEM_STUB));
|
||||||
public static final Item ITEM_SPEEDPOWDER = registerItem(ModIdentifiers.ITEM_SPEEDPOWDER,
|
public static final Item ITEM_SPEEDPOWDER = registerItem(ModIdentifiers.ITEM_SPEEDPOWDER,
|
||||||
new Item64Stack(ModIdentifiers.ITEM_SPEEDPOWDER));
|
new Item64Stack(ModIdentifiers.ITEM_SPEEDPOWDER));
|
||||||
public static final Item ITEM_QUICKIEPOWDER = registerItem(ModIdentifiers.ITEM_QUICKIEPOWDER,
|
public static final Item ITEM_QUICKIEPOWDER = registerItem(ModIdentifiers.ITEM_QUICKIEPOWDER,
|
||||||
@ -75,6 +75,8 @@ public class ModItems {
|
|||||||
new ToolQuickiepowderShovel(ModIdentifiers.TOOL_QUICKIEPOWDERSHOVEL));
|
new ToolQuickiepowderShovel(ModIdentifiers.TOOL_QUICKIEPOWDERSHOVEL));
|
||||||
public static final Item TOOL_QUICKIEPOWDERWATERHOE = registerItem(ModIdentifiers.TOOL_QUICKIEPOWDERWATERHOE,
|
public static final Item TOOL_QUICKIEPOWDERWATERHOE = registerItem(ModIdentifiers.TOOL_QUICKIEPOWDERWATERHOE,
|
||||||
new ToolQuickiepowderWaterHoe(ModIdentifiers.TOOL_QUICKIEPOWDERWATERHOE));
|
new ToolQuickiepowderWaterHoe(ModIdentifiers.TOOL_QUICKIEPOWDERWATERHOE));
|
||||||
|
public static final Item TOOL_QUICKIEPOWDERSHEARS = registerItem(ModIdentifiers.TOOL_QUICKIEPOWDERSHEARS,
|
||||||
|
new ToolSpeedpowderShears(ModIdentifiers.TOOL_QUICKIEPOWDERSHEARS));
|
||||||
|
|
||||||
private static final Item registerItem(Identifier identifier, Item item) {
|
private static final Item registerItem(Identifier identifier, Item item) {
|
||||||
return Registry.register(Registries.ITEM, identifier, item);
|
return Registry.register(Registries.ITEM, identifier, item);
|
||||||
@ -112,6 +114,7 @@ public class ModItems {
|
|||||||
items.add(TOOL_QUICKIEPOWDERSHOVEL);
|
items.add(TOOL_QUICKIEPOWDERSHOVEL);
|
||||||
items.add(TOOL_QUICKIEPOWDERHOE);
|
items.add(TOOL_QUICKIEPOWDERHOE);
|
||||||
items.add(TOOL_QUICKIEPOWDERWATERHOE);
|
items.add(TOOL_QUICKIEPOWDERWATERHOE);
|
||||||
|
items.add(TOOL_QUICKIEPOWDERSHEARS);
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -0,0 +1,102 @@
|
|||||||
|
package de.jottyfan.quickiemod.item;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import net.minecraft.component.DataComponentTypes;
|
||||||
|
import net.minecraft.entity.ItemEntity;
|
||||||
|
import net.minecraft.entity.LivingEntity;
|
||||||
|
import net.minecraft.entity.passive.ChickenEntity;
|
||||||
|
import net.minecraft.entity.passive.CowEntity;
|
||||||
|
import net.minecraft.entity.passive.HorseEntity;
|
||||||
|
import net.minecraft.entity.passive.SheepEntity;
|
||||||
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.item.Items;
|
||||||
|
import net.minecraft.item.ShearsItem;
|
||||||
|
import net.minecraft.registry.RegistryKey;
|
||||||
|
import net.minecraft.registry.RegistryKeys;
|
||||||
|
import net.minecraft.util.ActionResult;
|
||||||
|
import net.minecraft.util.DyeColor;
|
||||||
|
import net.minecraft.util.Hand;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author jotty
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class ToolQuickiepowderShears extends ShearsItem {
|
||||||
|
|
||||||
|
public ToolQuickiepowderShears(Identifier identifier) {
|
||||||
|
super(new Item.Settings().component(DataComponentTypes.TOOL, ShearsItem.createToolComponent()).useItemPrefixedTranslationKey().registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ActionResult useOnEntity(ItemStack stack, PlayerEntity user, LivingEntity entity, Hand hand) {
|
||||||
|
Vec3d pos = entity.getPos();
|
||||||
|
Integer amount = 3 + new Random().nextInt(4);
|
||||||
|
if (entity instanceof SheepEntity) {
|
||||||
|
SheepEntity sheep = (SheepEntity) entity;
|
||||||
|
if (sheep.isShearable()) {
|
||||||
|
sheep.setSheared(true);
|
||||||
|
sheep.playAmbientSound();
|
||||||
|
DyeColor color = sheep.getColor();
|
||||||
|
Item item = Items.WHITE_WOOL;
|
||||||
|
if (color.equals(DyeColor.BLACK)) {
|
||||||
|
item = Items.BLACK_WOOL;
|
||||||
|
} else if (color.equals(DyeColor.GRAY)) {
|
||||||
|
item = Items.GRAY_WOOL;
|
||||||
|
} else if (color.equals(DyeColor.LIGHT_GRAY)) {
|
||||||
|
item = Items.LIGHT_GRAY_WOOL;
|
||||||
|
} else if (color.equals(DyeColor.BROWN)) {
|
||||||
|
item = Items.BROWN_WOOL;
|
||||||
|
} else if (color.equals(DyeColor.BLUE)) {
|
||||||
|
item = Items.BLUE_WOOL;
|
||||||
|
} else if (color.equals(DyeColor.LIGHT_BLUE)) {
|
||||||
|
item = Items.LIGHT_BLUE_WOOL;
|
||||||
|
} else if (color.equals(DyeColor.GREEN)) {
|
||||||
|
item = Items.GREEN_WOOL;
|
||||||
|
} else if (color.equals(DyeColor.LIME)) {
|
||||||
|
item = Items.LIME_WOOL;
|
||||||
|
} else if (color.equals(DyeColor.CYAN)) {
|
||||||
|
item = Items.CYAN_WOOL;
|
||||||
|
} else if (color.equals(DyeColor.MAGENTA)) {
|
||||||
|
item = Items.MAGENTA_WOOL;
|
||||||
|
} else if (color.equals(DyeColor.ORANGE)) {
|
||||||
|
item = Items.ORANGE_WOOL;
|
||||||
|
} else if (color.equals(DyeColor.PINK)) {
|
||||||
|
item = Items.PINK_WOOL;
|
||||||
|
} else if (color.equals(DyeColor.PURPLE)) {
|
||||||
|
item = Items.PURPLE_WOOL;
|
||||||
|
} else if (color.equals(DyeColor.RED)) {
|
||||||
|
item = Items.RED_WOOL;
|
||||||
|
} else if (color.equals(DyeColor.YELLOW)) {
|
||||||
|
item = Items.YELLOW_WOOL;
|
||||||
|
}
|
||||||
|
user.getWorld().spawnEntity(new ItemEntity(user.getWorld(), pos.getX(), pos.getY(), pos.getZ(), new ItemStack(item, amount)));
|
||||||
|
return ActionResult.SUCCESS;
|
||||||
|
}
|
||||||
|
} else if (entity instanceof HorseEntity) {
|
||||||
|
HorseEntity horse = (HorseEntity) entity;
|
||||||
|
horse.playAmbientSound();
|
||||||
|
horse.setBaby(true);
|
||||||
|
user.getWorld().spawnEntity(new ItemEntity(user.getWorld(), pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.LEATHER, amount)));
|
||||||
|
return ActionResult.SUCCESS;
|
||||||
|
} else if (entity instanceof CowEntity) {
|
||||||
|
CowEntity cow = (CowEntity) entity;
|
||||||
|
cow.playAmbientSound();
|
||||||
|
cow.setBaby(true);
|
||||||
|
user.getWorld().spawnEntity(new ItemEntity(user.getWorld(), pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.LEATHER, amount)));
|
||||||
|
return ActionResult.SUCCESS;
|
||||||
|
} else if (entity instanceof ChickenEntity) {
|
||||||
|
ChickenEntity chicken = (ChickenEntity) entity;
|
||||||
|
chicken.playAmbientSound();
|
||||||
|
chicken.setBaby(true);
|
||||||
|
user.getWorld().spawnEntity(new ItemEntity(user.getWorld(), pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.FEATHER, amount)));
|
||||||
|
return ActionResult.SUCCESS;
|
||||||
|
}
|
||||||
|
return ActionResult.PASS;
|
||||||
|
}
|
||||||
|
}
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -36,7 +36,7 @@ public class ToolSpeedpowderShears extends ShearsItem {
|
|||||||
@Override
|
@Override
|
||||||
public ActionResult useOnEntity(ItemStack stack, PlayerEntity user, LivingEntity entity, Hand hand) {
|
public ActionResult useOnEntity(ItemStack stack, PlayerEntity user, LivingEntity entity, Hand hand) {
|
||||||
Vec3d pos = entity.getPos();
|
Vec3d pos = entity.getPos();
|
||||||
Integer amount = 3 + new Random().nextInt(4);
|
Integer amount = 1 + new Random().nextInt(4);
|
||||||
if (entity instanceof SheepEntity) {
|
if (entity instanceof SheepEntity) {
|
||||||
SheepEntity sheep = (SheepEntity) entity;
|
SheepEntity sheep = (SheepEntity) entity;
|
||||||
if (sheep.isShearable()) {
|
if (sheep.isShearable()) {
|
||||||
@ -81,16 +81,19 @@ public class ToolSpeedpowderShears extends ShearsItem {
|
|||||||
} else if (entity instanceof HorseEntity) {
|
} else if (entity instanceof HorseEntity) {
|
||||||
HorseEntity horse = (HorseEntity) entity;
|
HorseEntity horse = (HorseEntity) entity;
|
||||||
horse.playAmbientSound();
|
horse.playAmbientSound();
|
||||||
|
horse.setBaby(true);
|
||||||
user.getWorld().spawnEntity(new ItemEntity(user.getWorld(), pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.LEATHER, amount)));
|
user.getWorld().spawnEntity(new ItemEntity(user.getWorld(), pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.LEATHER, amount)));
|
||||||
return ActionResult.SUCCESS;
|
return ActionResult.SUCCESS;
|
||||||
} else if (entity instanceof CowEntity) {
|
} else if (entity instanceof CowEntity) {
|
||||||
CowEntity cow = (CowEntity) entity;
|
CowEntity cow = (CowEntity) entity;
|
||||||
cow.playAmbientSound();
|
cow.playAmbientSound();
|
||||||
|
cow.setBaby(true);
|
||||||
user.getWorld().spawnEntity(new ItemEntity(user.getWorld(), pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.LEATHER, amount)));
|
user.getWorld().spawnEntity(new ItemEntity(user.getWorld(), pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.LEATHER, amount)));
|
||||||
return ActionResult.SUCCESS;
|
return ActionResult.SUCCESS;
|
||||||
} else if (entity instanceof ChickenEntity) {
|
} else if (entity instanceof ChickenEntity) {
|
||||||
ChickenEntity cow = (ChickenEntity) entity;
|
ChickenEntity chicken = (ChickenEntity) entity;
|
||||||
cow.playAmbientSound();
|
chicken.playAmbientSound();
|
||||||
|
chicken.setBaby(true);
|
||||||
user.getWorld().spawnEntity(new ItemEntity(user.getWorld(), pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.FEATHER, amount)));
|
user.getWorld().spawnEntity(new ItemEntity(user.getWorld(), pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.FEATHER, amount)));
|
||||||
return ActionResult.SUCCESS;
|
return ActionResult.SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/blockquickiepowder"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/blocksalpeter"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/blockspeedpowder"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/blockstackerdown"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/blockstackereast"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/blockstackernorth"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/blockstackersouth"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/blockstackerup"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/blockstackerwest"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/blocksulphor"
|
||||||
|
}
|
||||||
|
}
|
6
src/main/resources/assets/quickiemod/items/canola.json
Normal file
6
src/main/resources/assets/quickiemod/items/canola.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/canola"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/canolabottle"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/canolabottlestack"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/canolaseed"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/canolaseed"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/carrotstack"
|
||||||
|
}
|
||||||
|
}
|
6
src/main/resources/assets/quickiemod/items/cotton.json
Normal file
6
src/main/resources/assets/quickiemod/items/cotton.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/cotton"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/cottonseed"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/cottonseed"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/dirtsalpeter"
|
||||||
|
}
|
||||||
|
}
|
6
src/main/resources/assets/quickiemod/items/drill.json
Normal file
6
src/main/resources/assets/quickiemod/items/drill.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/drill"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/drilleast"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/drillnorth"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/drillsouth"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/drillwest"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/emptylavahoarder"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/itemhoarder"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/kelpstack"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/lavahoarder"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/monsterhoarder"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/oredeepslatesulphor"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/orenethersulphor"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/oresalpeter"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/oresandsalpeter"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/oresulphor"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/oxidizedcopperpowder"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/quickieingot"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/quickiepowder"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/quickiepowderaxe"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/quickiepowderhoe"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/quickiepowderpickaxe"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/quickiepowdershears"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/quickiepowdershovel"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/quickiepowderwaterhoe"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/rotten_flesh_stripes"
|
||||||
|
}
|
||||||
|
}
|
6
src/main/resources/assets/quickiemod/items/salpeter.json
Normal file
6
src/main/resources/assets/quickiemod/items/salpeter.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/salpeter"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:block/sandsalpeter"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/speedingot"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/speedpowder"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/speedpowderaxe"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/speedpowderhoe"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/speedpowderpickaxe"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/speedpowdershears"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/speedpowdershovel"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/speedpowderwaterhoe"
|
||||||
|
}
|
||||||
|
}
|
6
src/main/resources/assets/quickiemod/items/stub.json
Normal file
6
src/main/resources/assets/quickiemod/items/stub.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/stub"
|
||||||
|
}
|
||||||
|
}
|
6
src/main/resources/assets/quickiemod/items/sulphor.json
Normal file
6
src/main/resources/assets/quickiemod/items/sulphor.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "quickiemod:item/sulphor"
|
||||||
|
}
|
||||||
|
}
|
@ -13,6 +13,7 @@
|
|||||||
"item.quickiemod.quickiepowdershovel": "Eilpulverschaufel",
|
"item.quickiemod.quickiepowdershovel": "Eilpulverschaufel",
|
||||||
"item.quickiemod.quickiepowderhoe": "Eilpulverfeldhacke",
|
"item.quickiemod.quickiepowderhoe": "Eilpulverfeldhacke",
|
||||||
"item.quickiemod.quickiepowderwaterhoe": "bewässerte Eilpulverfeldhacke",
|
"item.quickiemod.quickiepowderwaterhoe": "bewässerte Eilpulverfeldhacke",
|
||||||
|
"item.quickiemod.quickiepowdershears": "Eilpulverschere",
|
||||||
"item.quickiemod.sulphor": "Schwefel",
|
"item.quickiemod.sulphor": "Schwefel",
|
||||||
"item.quickiemod.salpeter": "Salpeter",
|
"item.quickiemod.salpeter": "Salpeter",
|
||||||
"item.quickiemod.construction0": "leerer Bauplan",
|
"item.quickiemod.construction0": "leerer Bauplan",
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
"item.quickiemod.quickiepowdershovel": "hurrypowder shovel",
|
"item.quickiemod.quickiepowdershovel": "hurrypowder shovel",
|
||||||
"item.quickiemod.quickiepowderhoe": "hurrypowder hoe",
|
"item.quickiemod.quickiepowderhoe": "hurrypowder hoe",
|
||||||
"item.quickiemod.quickiepowderwaterhoe": "watered hurrypowder hoe",
|
"item.quickiemod.quickiepowderwaterhoe": "watered hurrypowder hoe",
|
||||||
|
"item.quickiemod.quickiepowdershears": "hurrypowder shears",
|
||||||
"item.quickiemod.sulphor": "sulfur",
|
"item.quickiemod.sulphor": "sulfur",
|
||||||
"item.quickiemod.salpeter": "salpeter",
|
"item.quickiemod.salpeter": "salpeter",
|
||||||
"item.quickiemod.construction0": "empty building plan",
|
"item.quickiemod.construction0": "empty building plan",
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "quickiemod:item/quickiepowdershears"
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 4.7 KiB |
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"category": "tools",
|
||||||
|
"pattern": [
|
||||||
|
" #",
|
||||||
|
"# "
|
||||||
|
],
|
||||||
|
"key": {
|
||||||
|
"#": "quickiemod:quickieingot"
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"id": "quickiemod:quickiepowdershears"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shapeless",
|
||||||
|
"ingredients": [
|
||||||
|
"quickiemod:speedpowder",
|
||||||
|
"minecraft:moss_block"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"id": "quickiemod:quickiepowder",
|
||||||
|
"count": 1
|
||||||
|
}
|
||||||
|
}
|
@ -28,8 +28,8 @@
|
|||||||
"mixins": [
|
"mixins": [
|
||||||
],
|
],
|
||||||
"depends": {
|
"depends": {
|
||||||
"fabricloader": ">=0.16.9",
|
"fabricloader": ">=0.16.14",
|
||||||
"minecraft": "~1.21.3",
|
"minecraft": "~1.21.6",
|
||||||
"java": ">=21",
|
"java": ">=21",
|
||||||
"fabric-api": "*"
|
"fabric-api": "*"
|
||||||
},
|
},
|
||||||
|
Reference in New Issue
Block a user