From 692b72df7d2bd5e04c061002910daa61d45dc8dc Mon Sep 17 00:00:00 2001 From: Defendi Date: Tue, 19 Nov 2024 17:22:33 -0300 Subject: [PATCH] new features with problems WIP --- .../defendi/crazyideas/block/ModBlocks.java | 15 +++- .../datagen/ModBlockLootTableProvider.java | 4 +- .../datagen/ModBlockStateProvider.java | 2 + .../datagen/ModBlockTagProvider.java | 8 +- .../datagen/ModItemModelProvider.java | 1 + .../crazyideas/item/ModCreativeModeTabs.java | 2 + .../com/defendi/crazyideas/item/ModItems.java | 41 ++++++++-- .../crazyideas/item/tool/HammerItem.java | 76 +++++++++++++++++++ .../crazyideas/item/tool/ModToolTiers.java | 10 +++ 9 files changed, 146 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/defendi/crazyideas/item/tool/HammerItem.java diff --git a/src/main/java/com/defendi/crazyideas/block/ModBlocks.java b/src/main/java/com/defendi/crazyideas/block/ModBlocks.java index 3936f7a..6434c0d 100644 --- a/src/main/java/com/defendi/crazyideas/block/ModBlocks.java +++ b/src/main/java/com/defendi/crazyideas/block/ModBlocks.java @@ -22,12 +22,13 @@ public class ModBlocks { public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, CrazyIdeas.MOD_ID); + // SACRED BLOCK --------------------------------------------------------------------------- public static RegistryObject HOLY_METAL_BLOCK = registryBlock( "holy_metal_block", () -> new Block(BlockBehaviour.Properties.of() .mapColor(MapColor.METAL) .sound(SoundType.METAL) - .instrument(NoteBlockInstrument.IRON_XYLOPHONE) + .instrument(NoteBlockInstrument.HARP) .requiresCorrectToolForDrops() .strength(8.0F, 6.0F) ) @@ -54,6 +55,18 @@ public class ModBlocks { ) ); + // SINFUL BLOCK --------------------------------------------------------------------------- + public static RegistryObject EVIL_METAL_BLOCK = registryBlock( + "evil_metal_block", + () -> new Block(BlockBehaviour.Properties.of() + .mapColor(MapColor.NETHER) + .sound(SoundType.METAL) + .instrument(NoteBlockInstrument.GUITAR) + .requiresCorrectToolForDrops() + .strength(8.0f, 6.0f) + ) + ); + private static RegistryObject registryBlock(String name, Supplier block) { RegistryObject toReturn = BLOCKS.register(name, block); registerBlockItem(name, toReturn); diff --git a/src/main/java/com/defendi/crazyideas/datagen/ModBlockLootTableProvider.java b/src/main/java/com/defendi/crazyideas/datagen/ModBlockLootTableProvider.java index f24db5b..690206d 100644 --- a/src/main/java/com/defendi/crazyideas/datagen/ModBlockLootTableProvider.java +++ b/src/main/java/com/defendi/crazyideas/datagen/ModBlockLootTableProvider.java @@ -18,15 +18,15 @@ protected ModBlockLootTableProvider(HolderLookup.Provider pRegistries) { @Override protected void generate() { dropSelf(ModBlocks.HOLY_METAL_BLOCK.get()); - this.add( ModBlocks.HOLY_CATALYST_BLOCK.get(), block -> createSilkTouchOnlyTable( ModBlocks.HOLY_CATALYST_BLOCK.get() ) ); - dropSelf(ModBlocks.HOLY_LAMP.get()); + + dropSelf(ModBlocks.EVIL_METAL_BLOCK.get()); } @Override diff --git a/src/main/java/com/defendi/crazyideas/datagen/ModBlockStateProvider.java b/src/main/java/com/defendi/crazyideas/datagen/ModBlockStateProvider.java index 59bafac..9ac3d88 100644 --- a/src/main/java/com/defendi/crazyideas/datagen/ModBlockStateProvider.java +++ b/src/main/java/com/defendi/crazyideas/datagen/ModBlockStateProvider.java @@ -21,6 +21,8 @@ protected void registerStatesAndModels() { blockWithItem(ModBlocks.HOLY_METAL_BLOCK); blockWithItem(ModBlocks.HOLY_CATALYST_BLOCK); holyLampBlock(); + + blockWithItem(ModBlocks.EVIL_METAL_BLOCK); } private void blockWithItem(RegistryObject blockRegistryObject) { diff --git a/src/main/java/com/defendi/crazyideas/datagen/ModBlockTagProvider.java b/src/main/java/com/defendi/crazyideas/datagen/ModBlockTagProvider.java index 2254a2e..d2f4927 100644 --- a/src/main/java/com/defendi/crazyideas/datagen/ModBlockTagProvider.java +++ b/src/main/java/com/defendi/crazyideas/datagen/ModBlockTagProvider.java @@ -21,12 +21,16 @@ public ModBlockTagProvider(PackOutput output, CompletableFuture { + pOutput.accept(ModItems.EVIL_METAL.get()); + pOutput.accept(ModBlocks.EVIL_METAL_BLOCK.get()); pOutput.accept(ModItems.HELL_FUEL.get()); }) .build() diff --git a/src/main/java/com/defendi/crazyideas/item/ModItems.java b/src/main/java/com/defendi/crazyideas/item/ModItems.java index bc68052..1be4495 100644 --- a/src/main/java/com/defendi/crazyideas/item/ModItems.java +++ b/src/main/java/com/defendi/crazyideas/item/ModItems.java @@ -9,7 +9,9 @@ import com.defendi.crazyideas.item.tool.SwordUnbreakableItem; import com.defendi.crazyideas.item.utility.ChiselItem; import com.defendi.crazyideas.item.utility.MetalDetectorItem; +import net.minecraft.world.item.DiggerItem; import net.minecraft.world.item.Item; +import net.minecraft.world.item.PickaxeItem; import net.minecraft.world.item.SwordItem; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.registries.DeferredRegister; @@ -20,6 +22,7 @@ public class ModItems { public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, CrazyIdeas.MOD_ID); + // SACRED ITEMS ------------------------------------------------------------------------- public static final RegistryObject HOLY_METAL = ITEMS.register( "holy_metal", () -> new Item( @@ -40,6 +43,35 @@ public class ModItems { ) ); + // SINFUL ITEMS ------------------------------------------------------------------------- + public static final RegistryObject EVIL_METAL = ITEMS.register( + "evil_metal", + () -> new Item( + new Item.Properties() + ) + ); + + public static final RegistryObject HELL_FUEL = ITEMS.register( + "hell_fuel", + () -> new FuelItem( + new Item.Properties(), + 25600 + ) + ); + + public static final RegistryObject EVIL_METAL_HAMMER = ITEMS.register( + "evil_metal_hammer", + () -> new DiggerItem( + new Item.Properties() + .attributes(PickaxeItem.createAttributes( + ModToolTiers.EVIL_METAL, + 6, + -3.5f + )) + ) + ) + + // UTILITY ITEMS ------------------------------------------------------------------------- public static final RegistryObject METAL_DETECTOR = ITEMS.register( "metal_detector", () -> new MetalDetectorItem( @@ -56,6 +88,7 @@ public class ModItems { ) ); + // JAPAN ITEMS ---------------------------------------------------------------------- public static final RegistryObject SENZU_BEAN = ITEMS.register( "senzu_bean", () -> new SenzuBeanItem( @@ -65,14 +98,6 @@ public class ModItems { ) ); - public static final RegistryObject HELL_FUEL = ITEMS.register( - "hell_fuel", - () -> new FuelItem( - new Item.Properties(), - 25600 - ) - ); - // public static final RegistryObject MOTHER_FLAME = ITEMS.register( // "mother_flame", // () -> new Item( diff --git a/src/main/java/com/defendi/crazyideas/item/tool/HammerItem.java b/src/main/java/com/defendi/crazyideas/item/tool/HammerItem.java new file mode 100644 index 0000000..190841e --- /dev/null +++ b/src/main/java/com/defendi/crazyideas/item/tool/HammerItem.java @@ -0,0 +1,76 @@ +package com.defendi.crazyideas.item.tool; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.item.DiggerItem; +import net.minecraft.world.item.Tier; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.HitResult; + +import java.util.ArrayList; +import java.util.List; + +public class HammerItem extends DiggerItem { + public HammerItem(Tier pTier, Properties pProperties) { + super(pTier, BlockTags.MINEABLE_WITH_PICKAXE, pProperties); + } + + public static List getBlockToBeDestroyed(int range, BlockPos initialBlockPos, ServerPlayer player) { + List positions = new ArrayList<>(); + + BlockHitResult traceResult = player.level().clip( + new ClipContext( + player.getEyePosition(1f), + (player.getEyePosition(1f)).add(player.getViewVector(1f).scale(6f)), + ClipContext.Block.COLLIDER, + ClipContext.Fluid.NONE, + player + ) + ); + + if (traceResult.getType() == HitResult.Type.MISS) { + return positions; + } + + if (traceResult.getDirection() == Direction.DOWN || traceResult.getDirection() == Direction.UP) { + for (int x = 0; x <= range; x++) { + for (int z = 0; z < range; z++){ + positions.add(new BlockPos( + initialBlockPos.getX() + x, + initialBlockPos.getY(), + initialBlockPos.getZ() + z + )); + } + } + } + + if (traceResult.getDirection() == Direction.NORTH || traceResult.getDirection() == Direction.SOUTH) { + for (int x = 0; x <= range; x++) { + for (int y = 0; y < range; y++){ + positions.add(new BlockPos( + initialBlockPos.getX() + x, + initialBlockPos.getY() + y, + initialBlockPos.getZ() + )); + } + } + } + + if (traceResult.getDirection() == Direction.NORTH || traceResult.getDirection() == Direction.SOUTH) { + for (int z = 0; z <= range; z++) { + for (int y = 0; y < range; y++){ + positions.add(new BlockPos( + initialBlockPos.getX(), + initialBlockPos.getY() + y, + initialBlockPos.getZ() + z + )); + } + } + } + + return positions; + } +} diff --git a/src/main/java/com/defendi/crazyideas/item/tool/ModToolTiers.java b/src/main/java/com/defendi/crazyideas/item/tool/ModToolTiers.java index 4aee352..dc7e384 100644 --- a/src/main/java/com/defendi/crazyideas/item/tool/ModToolTiers.java +++ b/src/main/java/com/defendi/crazyideas/item/tool/ModToolTiers.java @@ -19,6 +19,16 @@ public class ModToolTiers { ModTags.Blocks.INCORRECT_FOR_HOLY_METAL_TOOL ); + public static final Tier EVIL_METAL = new ForgeTier( + 4000, + 8, + 11f, + 35, + ModTags.Blocks.NEED_HOLY_METAL_TOOL, + () -> Ingredient.of(ModItems.HOLY_METAL.get()), + ModTags.Blocks.INCORRECT_FOR_HOLY_METAL_TOOL + ); + public static final Tier ANGEL_TOOL = new ForgeTier( -1, 10,