diff --git a/src/main/java/de/jottyfan/minecraft/block/BlockLavahoarder.java b/src/main/java/de/jottyfan/minecraft/block/BlockLavahoarder.java index 86aaa17..e1bf4a7 100644 --- a/src/main/java/de/jottyfan/minecraft/block/BlockLavahoarder.java +++ b/src/main/java/de/jottyfan/minecraft/block/BlockLavahoarder.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; +import de.jottyfan.minecraft.item.QuicklyItems; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; @@ -11,6 +12,7 @@ import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; @@ -39,28 +41,29 @@ public class BlockLavahoarder extends Block { } public static final void spawnRandomItems(Level level, BlockPos pos, Integer count) { - Integer which = new Random().nextInt(10); + Integer which = level.getRandom().nextInt(10); + ItemStack stack = null; if (which < 1) { - level.addFreshEntity(new ItemEntity(level, pos.getX(), pos.getY(), pos.getZ(), - new ItemStack(Items.DIAMOND, new Random().nextInt(count + 2)))); + stack = new ItemStack(Items.DIAMOND, level.getRandom().nextInt(count + 2)); } else if (which < 2) { - level.addFreshEntity(new ItemEntity(level, pos.getX(), pos.getY(), pos.getZ(), - new ItemStack(Items.EMERALD, new Random().nextInt(count + 1)))); + stack = new ItemStack(Items.EMERALD, level.getRandom().nextInt(count + 1)); } else if (which < 3) { - level.addFreshEntity(new ItemEntity(level, pos.getX(), pos.getY(), pos.getZ(), - new ItemStack(Items.RAW_GOLD, new Random().nextInt(count)))); + stack = new ItemStack(Items.RAW_GOLD, level.getRandom().nextInt(count)); } else if (which < 4) { - level.addFreshEntity(new ItemEntity(level, pos.getX(), pos.getY(), pos.getZ(), - new ItemStack(Items.RAW_IRON, new Random().nextInt(count + 1)))); + stack = new ItemStack(Items.RAW_IRON, level.getRandom().nextInt(count + 1)); } else if (which < 5) { - level.addFreshEntity(new ItemEntity(level, pos.getX(), pos.getY(), pos.getZ(), - new ItemStack(Items.RAW_COPPER, new Random().nextInt(count + 2)))); + stack = new ItemStack(Items.RAW_COPPER, level.getRandom().nextInt(count + 2)); } else if (which < 6) { - level.addFreshEntity(new ItemEntity(level, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.OBSIDIAN))); + stack = new ItemStack(Items.OBSIDIAN); } else if (which < 7) { - level.addFreshEntity(new ItemEntity(level, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.LAPIS_LAZULI))); -// } else if (which < 8) { -// level.addFreshEntity(new ItemEntity(level, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(QuicklyItems.SULFOR))); + stack = new ItemStack(Items.LAPIS_LAZULI); + } else if (which < 8) { + stack = new ItemStack(QuicklyItems.RAWTURQUOISE); +// } else if (which < 9) { +// stack = new ItemStack(QuicklyItems.SULFOR); + } + if (stack != null) { + level.addFreshEntity(new ItemEntity(level, pos.getX(), pos.getY(), pos.getZ(), stack)); } } diff --git a/src/main/java/de/jottyfan/minecraft/block/BlockOre.java b/src/main/java/de/jottyfan/minecraft/block/BlockOre.java new file mode 100644 index 0000000..ea89a6b --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/block/BlockOre.java @@ -0,0 +1,47 @@ +package de.jottyfan.minecraft.block; + +import java.util.Arrays; +import java.util.List; + +import net.minecraft.core.BlockPos; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.storage.loot.LootParams.Builder; +import net.minecraft.world.phys.BlockHitResult; + +/** + * + * @author jotty + * + */ +public class BlockOre extends Block { + + private SoundEvent soundEvent; + private ItemStack dropItems; + + public BlockOre(Properties properties, SoundEvent soundEvent, ItemStack dropItems) { + super(properties.requiresCorrectToolForDrops()); + this.soundEvent = soundEvent; + this.dropItems = dropItems; + } + + @Override + protected List getDrops(BlockState state, Builder builder) { + ItemStack droppable = dropItems == null ? new ItemStack(this.asItem()) : dropItems; + return Arrays.asList(new ItemStack[] { droppable }); + } + + @Override + protected void onProjectileHit(final Level level, final BlockState state, final BlockHitResult hitResult, + final Projectile projectile) { + if (!level.isClientSide() && soundEvent != null) { + BlockPos hitPos = hitResult.getBlockPos(); + level.playSound(null, hitPos, soundEvent, SoundSource.BLOCKS, 1.0F, 0.5F + level.getRandom().nextFloat() * 1.2F); + } + } +} diff --git a/src/main/java/de/jottyfan/minecraft/block/BlockOreDeepslateTurquoise.java b/src/main/java/de/jottyfan/minecraft/block/BlockOreDeepslateTurquoise.java deleted file mode 100644 index 1853282..0000000 --- a/src/main/java/de/jottyfan/minecraft/block/BlockOreDeepslateTurquoise.java +++ /dev/null @@ -1,27 +0,0 @@ -package de.jottyfan.minecraft.block; - - -import java.util.Arrays; -import java.util.List; - -import de.jottyfan.minecraft.item.QuicklyItems; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.storage.loot.LootParams.Builder; - -/** - * - * @author jotty - * - */ -public class BlockOreDeepslateTurquoise extends BlockOreTurquoise { - - public BlockOreDeepslateTurquoise(Properties properties) { - super(properties); - } - - @Override - protected List getDrops(BlockState state, Builder builder) { - return Arrays.asList(new ItemStack[] { new ItemStack(QuicklyItems.RAWTURQUOISE, 2) }); - } -} diff --git a/src/main/java/de/jottyfan/minecraft/block/BlockOreTurquoise.java b/src/main/java/de/jottyfan/minecraft/block/BlockOreTurquoise.java deleted file mode 100644 index cbb10e2..0000000 --- a/src/main/java/de/jottyfan/minecraft/block/BlockOreTurquoise.java +++ /dev/null @@ -1,28 +0,0 @@ -package de.jottyfan.minecraft.block; - -import java.util.Arrays; -import java.util.List; - -import de.jottyfan.minecraft.item.QuicklyItems; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.AmethystBlock; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.storage.loot.LootParams.Builder; - -/** - * - * @author jotty - * - */ -public class BlockOreTurquoise extends AmethystBlock { - - public BlockOreTurquoise(Properties properties) { - super(properties.strength(3.0f).sound(SoundType.AMETHYST).requiresCorrectToolForDrops()); - } - - @Override - protected List getDrops(BlockState state, Builder builder) { - return Arrays.asList(new ItemStack[] { new ItemStack(QuicklyItems.RAWTURQUOISE) }); - } -} diff --git a/src/main/java/de/jottyfan/minecraft/block/QuicklyBlocks.java b/src/main/java/de/jottyfan/minecraft/block/QuicklyBlocks.java index a231fbe..cb4c5f6 100644 --- a/src/main/java/de/jottyfan/minecraft/block/QuicklyBlocks.java +++ b/src/main/java/de/jottyfan/minecraft/block/QuicklyBlocks.java @@ -3,15 +3,18 @@ package de.jottyfan.minecraft.block; import java.util.function.Function; import de.jottyfan.minecraft.Quickly; +import de.jottyfan.minecraft.item.QuicklyItems; import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; +import net.minecraft.sounds.SoundEvents; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.CreativeModeTabs; import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.SoundType; @@ -26,19 +29,21 @@ public class QuicklyBlocks { public static final Block KELPBUNDLE = registerBlock("kelpbundle", Properties.of().instabreak().sound(SoundType.WET_GRASS).strength(0.1f).friction(0.95f)); public static final Block TURQUOISEBLOCK = registerBlock("blockturquoise", Properties.of().strength(1.5f)); - public static final Block ORETURQUOISE = registerBlock("oreturquoise", p -> new BlockOreTurquoise(p)); + public static final Block ORETURQUOISE = registerBlock("oreturquoise", + properties -> new BlockOre(properties.strength(3.0f).sound(SoundType.AMETHYST), SoundEvents.AMETHYST_BLOCK_CHIME, + new ItemStack(QuicklyItems.RAWTURQUOISE))); public static final Block OREDEEPSLATETURQUOISE = registerBlock("oredeepslateturquoise", - properties -> new BlockOreDeepslateTurquoise(properties)); + properties -> new BlockOre(properties, SoundEvents.AMETHYST_BLOCK_CHIME, + new ItemStack(QuicklyItems.RAWTURQUOISE, 2))); public static final Block COTTONPLANT = registerBlock("blockcottonplant", Properties.ofFullCopy(Blocks.WHEAT), properties -> new BlockPlant(properties, "cottonseed", "cotton")); public static final Block CANOLAPLANT = registerBlock("blockcanolaplant", Properties.ofFullCopy(Blocks.WHEAT), properties -> new BlockPlant(properties, "canolaseed", "canola")); - public static final Block LAVAHOARDER = registerBlock("lavahoarder", Properties.of().strength(2.5f).lightLevel(state -> 15), - properties -> new BlockLavahoarder(properties)); + public static final Block LAVAHOARDER = registerBlock("lavahoarder", + Properties.of().strength(2.5f).lightLevel(state -> 15), properties -> new BlockLavahoarder(properties)); public static final Block EMPTYLAVAHOARDER = registerBlock("emptylavahoarder", Properties.of().strength(2.5f), properties -> new BlockEmptyLavahoarder(properties)); - private static final Block registerBlock(String name, Properties properties) { return QuicklyBlocks.registerBlock(name, properties, p -> new Block(p)); } diff --git a/src/main/java/de/jottyfan/minecraft/item/Stub.java b/src/main/java/de/jottyfan/minecraft/item/Stub.java index 2f8d6ce..ed90aff 100644 --- a/src/main/java/de/jottyfan/minecraft/item/Stub.java +++ b/src/main/java/de/jottyfan/minecraft/item/Stub.java @@ -24,19 +24,16 @@ import net.minecraft.world.level.block.Blocks; */ public class Stub extends Item { - // @formatter:off - private static final Map SLASH_MAP = Map.of( - Blocks.HAY_BLOCK, Items.WHEAT, - Blocks.DRIED_KELP_BLOCK, Items.DRIED_KELP, - QuicklyBlocks.KELPBUNDLE, Items.KELP); - // @formatter:on - public Stub(Properties properties) { super(properties.stacksTo(64)); } @Override public InteractionResult useOn(UseOnContext context) { + Map SLASH_MAP = Map.of( + Blocks.HAY_BLOCK, Items.WHEAT, + Blocks.DRIED_KELP_BLOCK, Items.DRIED_KELP, + QuicklyBlocks.KELPBUNDLE, Items.KELP); Level level = context.getLevel(); BlockPos pos = context.getClickedPos(); Block clickedBlock = level.getBlockState(pos).getBlock();