Interface ToolComponent

All Superinterfaces:
ConfigurationSerializable

@Experimental public interface ToolComponent extends ConfigurationSerializable
Represents a component which can turn any item into a tool.
  • Method Details

    • getDefaultMiningSpeed

      float getDefaultMiningSpeed()
      Get the default mining speed of this tool. This value is used by the tool if no rule explicitly overrides it. 1.0 is standard mining speed.
      Returns:
      the default mining speed
      See Also:
    • setDefaultMiningSpeed

      void setDefaultMiningSpeed(float speed)
      Set the default mining speed of this tool. This value is used by the tool if no rule explicitly overrides it. 1.0 is standard mining speed.
      Parameters:
      speed - the speed to set
    • getDamagePerBlock

      int getDamagePerBlock()
      Get the amount of durability to be removed from the tool each time a block is broken.
      Returns:
      the damage per block
    • setDamagePerBlock

      void setDamagePerBlock(int damage)
      Set the amount of durability to be removed from the tool each time a block is broken.
      Parameters:
      damage - the damage to set. Must be 0 or a positive integer
    • getRules

      @NotNull List<ToolComponent.ToolRule> getRules()
      Get the list of ToolRules that apply to this tool.
      Returns:
      all tool rules. The mutability of the returned list cannot be guaranteed, but its contents are mutable and can have their values changed
    • setRules

      void setRules(@NotNull List<ToolComponent.ToolRule> rules)
      Set the list of ToolRules to apply to this tool. This will remove any existing tool rules.
      Parameters:
      rules - the rules to set
    • addRule

      @NotNull ToolComponent.ToolRule addRule(@NotNull Material block, @Nullable Float speed, @Nullable Boolean correctForDrops)
      Add a new rule to this tool component, which provides further information about a specific block type.
      Parameters:
      block - the block type to which the rule applies
      speed - the mining speed to use when mining the block, or null to use the default mining speed
      correctForDrops - whether or not this tool, when mining the block, is considered the optimal tool for the block and will drop its items when broken, or null to use the default tool checking behavior defined by Minecraft
      Returns:
      the ToolComponent.ToolRule instance that was added to this tool
    • addRule

      @NotNull ToolComponent.ToolRule addRule(@NotNull Collection<Material> blocks, @Nullable Float speed, @Nullable Boolean correctForDrops)
      Add a new rule to this tool component, which provides further information about a collection of block types.
      Parameters:
      blocks - the block types to which the rule applies
      speed - the mining speed to use when mining one of the blocks, or null to use the default mining speed
      correctForDrops - whether or not this tool, when mining one of the blocks, is considered the optimal tool for the block and will drop its items when broken, or null to use the default tool checking behavior defined by Minecraft
      Returns:
      the ToolComponent.ToolRule instance that was added to this tool
    • addRule

      @NotNull ToolComponent.ToolRule addRule(@NotNull Tag<Material> tag, @Nullable Float speed, @Nullable Boolean correctForDrops)
      Add a new rule to this tool component, which provides further information about a collection of block types represented by a block Tag.
      Parameters:
      tag - the block tag containing block types to which the rule applies.
      speed - the mining speed to use when mining one of the blocks, or null to use the default mining speed
      correctForDrops - whether or not this tool, when mining one of the blocks, is considered the optimal tool for the block and will drop its items when broken, or null to use the default tool checking behavior defined by Minecraft
      Returns:
      the ToolComponent.ToolRule instance that was added to this tool
      Throws:
      IllegalArgumentException - if the passed tag is not a block tag
    • removeRule

      boolean removeRule(@NotNull ToolComponent.ToolRule rule)
      Remove the given ToolComponent.ToolRule from this tool.
      Parameters:
      rule - the rule to remove
      Returns:
      true if the rule was removed, false if this component did not contain a matching rule