Jump to content

Search the Community

Showing results for tags 'tools'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • Minecraft Forge
    • Releases
    • Support & Bug Reports
    • Suggestions
    • General Discussion
  • Mod Developer Central
    • Modder Support
    • User Submitted Tutorials
  • Non-Forge
    • Site News (non-forge)
    • Minecraft General
    • Off-topic
  • Forge Mods
    • Mods

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start









Yahoo IM

MSN Messenger

Personal Text

Found 5 results

  1. Hi! I’m looking to commission a custom Minecraft mod for version 1.19.2 on Forge. I want to have a balanced Copper tools and armor mod that snugly fits the copper tier between the Stone/ Chainmail and Iron Tiers. Here are the stats I have planned: - Copper Helmet: 2 Armor Points, 121 Durability - Copper Chestplate: 5 Armor Points, 2 Armor Toughness, 177 Durability - Copper Leggings: 4 Armor Points, 2 Armor Toughness, 165 Durability - Copper Boots: 2 Armor Points, 143 Durability - Copper Tools: Same Efficiency, but 0.5 less damage than Iron Tier, and 181 Durability for each tool. I only want to add the basic tools such as a sword, pickaxe, axe, shovel, and hoe. Please let me know of any balancing changes you would make and where I could go right now to commission such a mod.
  2. (Note: I am reiterating what I said in my previous post to reach a broader amount of people and hopefully find a solution quicker). I have been trying to add a weapon to the game though I am finding it difficult as the code I have followed from the tutorial uses a recipe, among other things. I am not wanting to use these as I want the weapon to be found in structures. public static final Tier DAMAGED_WAR_AXE = TierSortingRegistry.registerTier( new ForgeTier(1, 175, 5f, 4.0F, 1.5F, ModTags.Blocks.NEEDS_X_TOOL, () -> Ingredient.of(ModItems.X.get())), new ResourceLocation(DroidsAncientRelics.MOD_ID, "x"), List.of(Tiers.X), List.of()); This is what the code looks like, I have used X's to replace what may/may not be needed or what is yet to be used. I am looking for some advice or/and fixed code.
  3. I am wanting to add an axe to my mod though I do not want it to have a recipe, the reason for this being that I want you to only be able to find it in a structure. I have looked on both here and elsewhere on the internet and have found nothing... How would this be done? (Video for reference.)
  4. I have a tool that harvests multiple crops at once, that either replants or harvests the crops depending on an enchant on the tool. The harvesting and loot dropping works fine, but when it comes to updating what block is rendering, only the clicked block is updated properly, while the others drop the loot but appear to say as the fully grown crop, until right clicked again. The normal path for the tool is to just break the crop, as if the player harvested the crop. The other path is to reset the growth of the crop and drop the crop's loot, minus one seed. I have already tried all combinations of method parameters for setBlock() and destroyBlock(), and the updateing of the crop blocks still does not happen. The code thus far: public class ScytheItem extends HoeItem { public ScytheItem(Tier tier, int atkBase, float atkSpeed) { super(tier, atkBase, atkSpeed, new Item.Properties().stacksTo(1)); } @Override public @NotNull InteractionResult useOn(@NotNull UseOnContext context) { Level level = context.getLevel(); Player player = context.getPlayer(); InteractionHand hand = context.getHand(); ItemStack stack = context.getItemInHand(); if (!level.isClientSide() && player != null) { BlockPos pos = context.getClickedPos(); Block block = level.getBlockState(pos).getBlock(); if(block instanceof CropBlock) { level.playSound(null, pos, block.getSoundType(level.getBlockState(pos), level, pos, player).getBreakSound(), SoundSource.BLOCKS, 1.0F, AOTMain.RANDOM.nextFloat()); Map<Enchantment, Integer> enchantments = stack.getAllEnchantments(); int harvestSize = 1 + enchantments.getOrDefault(EnchantmentInit.HARVESTING_SIZE.get(), 0); for (int xOff = -harvestSize; xOff <= harvestSize; xOff++) { for (int zOff = -harvestSize; zOff <= harvestSize; zOff++) { BlockPos newPos = pos.offset(xOff, 0, zOff); Block blockAt = level.getBlockState(newPos).getBlock(); if (blockAt instanceof CropBlock crop) { if (crop.isMaxAge(level.getBlockState(newPos))) { if (enchantments.containsKey(EnchantmentInit.AUTO_PLANTER.get())) { dropLoot(level, newPos, level.getBlockState(newPos), block); level.setBlock(newPos, crop.getStateForAge(0), Block.UPDATE_CLIENTS); // the broken bit } else level.destroyBlock(newPos, true); // the broken bit } } } } stack.hurtAndBreak(1, player, (p) -> p.broadcastBreakEvent(hand)); } } return super.useOn(context); } private void dropLoot(@NotNull Level level, @NotNull BlockPos pos, @NotNull BlockState state, @NotNull Block block) { List<ItemStack> drops = getDrops(level, pos, state); findSeeds(block, drops).ifPresent(seed -> seed.shrink(1)); drops.forEach((drop) -> Block.popResource(level, pos, drop)); } private List<ItemStack> getDrops(@NotNull Level level, @NotNull BlockPos pos, @NotNull BlockState state) { return Block.getDrops(state, (ServerLevel) level, pos, null); } private Optional<ItemStack> findSeeds(@NotNull Block block, final Collection<ItemStack> stacks) { Item seedsItem = block.asItem(); return stacks.stream().filter((stack) -> stack.getItem() == seedsItem).findAny(); } }
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.