Configuration
unbreakables-common.toml
Name | Description | Type | Default Value | Valid Values |
---|---|---|---|---|
rulesets | IDs of inbuilt rulesets to enable. For example, "waystones:generated_waystones" makes all generated waystones breakable. | List | [] | |
rules | List of custom rules with comma-separated parameters in parentheses. Conditions can be defined as comma-separated list in square brackets. Will be applied in order. | List | [] |
Unbreakable Rules
Unbreakable Rules are defined in the following format:
[condition1, condition2] modifier()
Example:
[is_block(minecraft:dirt)] refuse(You cannot break dirt)
[is_tag(minecraft:planks)] refuse(You cannot break planks)
[is_state(lit, true)] refuse(You cannot break lit furnaces)
These definitions are run in-order. Modifiers will only run if all conditions pass.
For example, to disallow generated waystones from being broken, you could use the following rule:
[is_tag(waystones:waystones), is_not_state(origin, player)] refuse($chat.waystones.cannot_break_waystone)
When defining custom rules in the rules
property of the config file, make sure the entire rule is contained within quotes. Additionally, do not use quotes inside the rule itself.
unbreakables-common.toml
rules = [ "[is_block(minecraft:dirt)] refuse(You cannot break dirt)" ]
Modifiers
Modifier | Description | Example |
---|---|---|
add_level_cost(levels) | Adds the specified amount to the warp level cost | add_level_cost(1) |
multiply_level_cost(levels) | Multiplies the warp level cost by the specified amount | multiply_level_cost(2) |
scaled_add_level_cost(variable, scale) | Adds levels to the cost of the warp in the amount of the specified variable and scale factor | scaled_add_level_cost(distance, 0.01) |
min_level_cost(levels) | Clamps the level cost to the given minimum value. | min_level_cost(1) |
max_level_cost(levels) | Clamps the level cost to the given maximum value. | max_level_cost(3) |
add_xp_cost(levels) | Adds the specified amount to the warp XP cost | add_xp_cost(1) |
multiply_xp_cost(levels) | Multiplies the warp XP cost by the specified amount | multiply_xp_cost(2) |
scaled_add_xp_cost(variable, scale) | Adds levels to the cost of the warp in the amount of the specified variable and scale factor | scaled_add_xp_cost(distance, 0.01) |
min_xp_cost(levels) | Clamps the XP cost to the given minimum value. | min_xp_cost(1) |
max_xp_cost(levels) | Clamps the XP cost to the given maximum value. | max_xp_cost(3) |
add_item_cost(item, count) | Adds the specified amount to the warp item cost | add_item_cost(minecraft:diamond, 1) |
multiply_item_cost(item, multiplier) | Multiplies the warp item cost by the specified amount | multiply_item_cost(minecraft:diamond, 2) |
scaled_add_item_cost(variable, item, scale) | Adds items to the cost of the warp in the amount of the specified variable and scale factor | scaled_add_item_cost(distance, minecraft:diamond, 0.01) |
min_item_cost(item, min) | Clamps the item cost to the given minimum value. | min_item_cost(minecraft:diamond, 1) |
max_item_cost(item, max) | Clamps the item cost to the given maximum value. | max_item_cost(minecraft:diamond, 3) |
refuse(message) | Refuses the warp with the specified message. Prepend message with $ to use a translation key. | refuse(You are not allowed to warp here.) or refuse($your.custom.translation.key) |
Conditions
Condition | Description | Example |
---|---|---|
is_block(namespace:path) | Passes if the block is the specified block | is_block(minecraft:dirt) or is_block(#minecraft:planks) |
is_not_block(namespace:path) | Passes if the block is not the specified block | is_not_block(minecraft:dirt) |
is_tag(namespace:path) | Passes if the block has the specified tag | is_tag(waystones:waystones) |
is_not_tag(namespace:path) | Passes if the block does not have the specified tag | is_not_tag(waystones:waystones) |
is_state(state, value) | Passes if the block has the specified state | is_state(lit, true) |
is_not_state(state, value) | Passes if the block does not have the specified state | is_not_state(waystones:origin, player) |
is_in_dimension(namespace:path) | Passes if the block is within the specified dimension | is_in_dimension(minecraft:the_nether) |
is_not_in_dimension(namespace:path) | Passes if the block is not within the specified dimension | is_not_in_dimension(minecraft:overworld) |
is_in_biome(namespace:path) | Passes if the block is within the specified biome | is_in_biome(minecraft:desert) |
is_not_in_biome(namespace:path) | Passes if the block is not within the specified biome | is_not_in_biome(minecraft:desert) |
has_effect(namespace:path, minimumLevel) | Passes if the player has the specified effect | has_effect(minecraft:strength, 1) |
not_has_effect(namespace:path) | Passes if the player does not have the specified effect | not_has_effect(minecraft:strength) |
is_tool(namespace:path) | Passes if the player is holding the specified tool | is_tool(minecraft:diamond_pickaxe) |
is_not_tool(namespace:path) | Passes if the player is not holding the specified tool | is_not_tool(minecraft:diamond_pickaxe) |
is_enchanted(namespace:path, minimumLevel) | Passes if the player's tool holds the given enchantment | is_enchanted(minecraft:silk_touch, 1) |
is_not_enchanted(namespace:path, minimumLevel) | Passes if the player's tool does not hold the given enchantment | is_not_enchanted(minecraft:silk_touch, 1) |
players_nearby(distance, minimum) | Passes if there are enough other players within range | players_nearby(10, 1) |
not_players_nearby(distance, minimum) | Passes if there are enough other players within range | not_players_nearby(10, 1) |
mobs_nearby(distance, minimum) | Passes if there are enough mobs within range | mobs_nearby(10, 1) |
not_mobs_nearby(distance, minimum) | Passes if there are enough mobs within range | not_mobs_nearby(10, 1) |
animals_nearby(distance, minimum) | Passes if there are enough animals within range | animals_nearby(10, 1) |
not_animals_nearby(distance, minimum) | Passes if there are enough animals within range | not_animals_nearby(10, 1) |
entity_nearby(namespace:path, distance, minimum) | Passes if there are enough entities within range | entity_nearby(minecraft:pig, 10, 1) |
not_entity_nearby(namespace:path, distance, minimum) | Passes if there are enough entities within range | not_entity_nearby(minecraft:pig, 10, 1) |
is_above_y(y) | Passes if the block is above the given y-level | is_above_y(100) |
is_below_y(y) | Passes if the block is below the given y-level | is_below_y(100) |
is_within(minX, minY, minZ, maxX, maxY, maxZ) | Passes if the block is within the given region | is_within(0, 0, 0, 100, 100, 100) |
is_not_within(minX, minY, minZ, maxX, maxY, maxZ) | Passes if the player is not within the given region | is_not_within(0, 0, 0, 100, 100, 100) |
is_at(x, y, z) | Passes if the block is at the given coordinates | is_at(0, 0, 0) |
is_not_at(x, y, z) | Passes if the block is not at the given coordinates | is_not_at(0, 0, 0) |
is_near(x, y, z, distance) | Passes if the block is within the given distance of the given coordinates | is_near(0, 0, 0, 10) |
is_not_near(x, y, z, distance) | Passes if the block is not within the given distance of the given coordinates | is_not_near(0, 0, 0, 10) |