diff --git a/README.md b/README.md index ed2a54fa..77e54412 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,7 @@ JSON validation can give snippets for sub items, as well as description, but thi - [Spawn rules](behavior/spawn_rules/spawn_rules.json) - [Trading](behavior/trading/trading.json) - [Jigsaws](behavior/worldgen) +- [Crafting Item Catalog](behavior/item_catalog/crafting_item_catalog.json) ## Resource files diff --git a/source/behavior/biomes/biomes.json b/source/behavior/biomes/biomes.json index 0c6751ff..ca686236 100644 --- a/source/behavior/biomes/biomes.json +++ b/source/behavior/biomes/biomes.json @@ -19,6 +19,7 @@ "minecraft:capped_surface": { "$ref": "./components/capped_surface.json" }, "minecraft:climate": { "$ref": "./components/climate.json" }, "minecraft:consolidated_features": { "$ref": "./components/consolidated_features.json" }, + "minecraft:creature_spawn_probability": { "$ref": "./components/creature_spawn_probability.json" }, "minecraft:frozen_ocean_surface": { "$ref": "./components/frozen_ocean_surface.json" }, "minecraft:legacy_world_generation_rules": { "$ref": "./components/legacy_world_generation_rules.json" diff --git a/source/behavior/biomes/components/creature_spawn_probability.json b/source/behavior/biomes/components/creature_spawn_probability.json new file mode 100644 index 00000000..a803a2ef --- /dev/null +++ b/source/behavior/biomes/components/creature_spawn_probability.json @@ -0,0 +1,16 @@ +{ + "$id": "minecraft.behavior.biomes.components.minecraft.creature_spawn_probability", + "title": "Creature Spawn Probability", + "description": "Probability that creatures will spawn within the biome when a chunk is generated.", + "type": "object", + "additionalProperties": false, + "properties": { + "probability": { + "type": "number", + "title": "Probability", + "description": "Probabiltity between [0.0, 0.75] of creatures spawning within the biome on chunk generation.", + "minimum": 0.0, + "maximum": 0.75 + } + } +} diff --git a/source/behavior/blocks/format/components/item_visual.json b/source/behavior/blocks/format/components/item_visual.json index 33ac4567..04584c4e 100644 --- a/source/behavior/blocks/format/components/item_visual.json +++ b/source/behavior/blocks/format/components/item_visual.json @@ -1,7 +1,7 @@ { "$id": "blockception.minecraft.behavior.blocks.minecraft.item_visual", "title": "Item Visual", - "description": "The description identifier of the geometry and material used to render the item of this block.\nExperimental toggles required: Upcoming Creator Features", + "description": "The description identifier of the geometry and material used to render the item of this block.", "type": "object", "additionalProperties": false, "required": [ "geometry", "material_instances" ], diff --git a/source/behavior/blocks/format/components/liquid_detection.json b/source/behavior/blocks/format/components/liquid_detection.json index e9fbb88f..ac93b123 100644 --- a/source/behavior/blocks/format/components/liquid_detection.json +++ b/source/behavior/blocks/format/components/liquid_detection.json @@ -1,7 +1,7 @@ { "$id": "blockception.minecraft.behavior.blocks.minecraft.liquid_detection", "title": "Liquid Detection", - "description": "The definitions for how a block behaves when detecting liquid. Only one rule definition is allowed per liquid type - if multiple are specified, the first will be used and the rest will be ignored.\nExperimental toggles required: Upcoming Creator Features", + "description": "The definitions for how a block behaves when detecting liquid. Only one rule definition is allowed per liquid type - if multiple are specified, the first will be used and the rest will be ignored.", "type": "object", "additionalProperties": false, "required": [ ], diff --git a/source/behavior/blocks/format/minecraft.block.json b/source/behavior/blocks/format/minecraft.block.json index 2721cd02..4e908c1e 100644 --- a/source/behavior/blocks/format/minecraft.block.json +++ b/source/behavior/blocks/format/minecraft.block.json @@ -112,7 +112,10 @@ "$ref": "../../../general/vanilla/creative_category.json" }, "group": { - "$ref": "../../../general/vanilla/item_group.json" + "title": "Group", + "description": "A translation string of an existing group in minecraft to group this block/item under", + "type": "string", + "pattern": "^[0-9a-zA-Z:_\\.\\-]+$" }, "is_hidden_in_commands": { "title": "Is Hidden In Commands", diff --git a/source/behavior/entities/filters/filters.json b/source/behavior/entities/filters/filters.json index 28f77764..cbe602d2 100644 --- a/source/behavior/entities/filters/filters.json +++ b/source/behavior/entities/filters/filters.json @@ -103,6 +103,7 @@ { "if": { "properties": { "test": { "const": "has_tag" } } }, "then": { "$ref": "./filters/has_tag.json" } }, { "if": { "properties": { "test": { "const": "has_target" } } }, "then": { "$ref": "./filters/has_target.json" } }, { "if": { "properties": { "test": { "const": "has_trade_supply" } } }, "then": { "$ref": "./filters/has_trade_supply.json" } }, + { "if": { "properties": { "test": { "const": "home_distance" } } }, "then": { "$ref": "./filters/home_distance.json" } }, { "if": { "properties": { "test": { "const": "hourly_clock_time" } } }, "then": { "$ref": "./filters/hourly_clock_time.json" } }, { "if": { "properties": { "test": { "const": "in_block" } } }, "then": { "$ref": "./filters/in_block.json" } }, { "if": { "properties": { "test": { "const": "in_caravan" } } }, "then": { "$ref": "./filters/in_caravan.json" } }, @@ -119,6 +120,7 @@ { "if": { "properties": { "test": { "const": "is_avoiding_mobs" } } }, "then": { "$ref": "./filters/is_avoiding_mobs.json" } }, { "if": { "properties": { "test": { "const": "is_biome" } } }, "then": { "$ref": "./filters/is_biome.json" } }, { "if": { "properties": { "test": { "const": "is_block" } } }, "then": { "$ref": "./filters/is_block.json" } }, + { "if": { "properties": { "test": { "const": "is_bound_to_creaking_heart" } } }, "then": { "$ref": "./filters/is_bound_to_creaking_heart.json" } }, { "if": { "properties": { "test": { "const": "is_brightness" } } }, "then": { "$ref": "./filters/is_brightness.json" } }, { "if": { "properties": { "test": { "const": "is_climbing" } } }, "then": { "$ref": "./filters/is_climbing.json" } }, { "if": { "properties": { "test": { "const": "is_color" } } }, "then": { "$ref": "./filters/is_color.json" } }, diff --git a/source/behavior/entities/filters/filters/has_ability.json b/source/behavior/entities/filters/filters/has_ability.json index fad97d0f..60dd0f3c 100644 --- a/source/behavior/entities/filters/filters/has_ability.json +++ b/source/behavior/entities/filters/filters/has_ability.json @@ -19,7 +19,7 @@ "value": { "type": "string", "description": "(Required) The Ability type to test.", - "enum": ["flySpeed", "flying", "instabuild", "invulnerable", "lightning", "mayfly", "mute", "noclip", "walkSpeed", "worldbuilder"], + "enum": ["flySpeed", "flying", "instabuild", "invulnerable", "lightning", "mayfly", "mute", "noclip", "walkSpeed", "worldbuilder", "verticalFlySpeed"], "title": "Value" } }, diff --git a/source/behavior/entities/filters/filters/home_distance.json b/source/behavior/entities/filters/filters/home_distance.json new file mode 100644 index 00000000..320ea4ab --- /dev/null +++ b/source/behavior/entities/filters/filters/home_distance.json @@ -0,0 +1,26 @@ +{ + "$id": "blockception.minecraft.behavior.entities.filters.home_distance", + "type": "object", + "title": "Home Distance", + "description": "Tests the distance between the subject and its home. Returns false if the subject has no home or if their home is in a different dimension.", + "required": ["value"], + "properties": { + "test": { + "type": "string", + "title": "Test", + "description": "The test property." + }, + "operator": { + "$ref": "./types/operator.json" + }, + "subject": { + "$ref": "./types/subject.json" + }, + "value": { + "description": "(Required) A floating point value.", + "type": "number", + "default": true, + "title": "Value" + } + } +} diff --git a/source/behavior/entities/filters/filters/is_bound_to_creaking_heart.json b/source/behavior/entities/filters/filters/is_bound_to_creaking_heart.json new file mode 100644 index 00000000..2223298a --- /dev/null +++ b/source/behavior/entities/filters/filters/is_bound_to_creaking_heart.json @@ -0,0 +1,31 @@ +{ + "$id": "blockception.minecraft.behavior.entities.filters.is_bound_to_creaking_heart", + "type": "object", + "title": "Is Bound To Creaking Heart", + "description": "Tests that the Creaking Heart that spawned the subject Creaking still exists.", + "properties": { + "test": { + "type": "string", + "title": "Test Property", + "description": "The test property." + }, + "operator": { + "$ref": "./types/operator.json" + }, + "subject": { + "$ref": "./types/subject.json" + }, + "value": { + "title": "Value", + "description": "True or false.", + "type": "boolean", + "default": true + } + }, + "examples": [ + { + "test": "is_bound_to_creaking_heart", + "value": false + } + ] +} diff --git a/source/behavior/entities/format/behaviors/go_and_give_items_to_noteblock.json b/source/behavior/entities/format/behaviors/go_and_give_items_to_noteblock.json index e80351ea..b1b09485 100644 --- a/source/behavior/entities/format/behaviors/go_and_give_items_to_noteblock.json +++ b/source/behavior/entities/format/behaviors/go_and_give_items_to_noteblock.json @@ -11,7 +11,7 @@ "listen_time": { "title": "Listen Time", "type": "integer", - "default": 0.0, + "default": 30, "description": "Sets the time an entity should continue delivering items to a noteblock after hearing it." }, "on_item_throw": { diff --git a/source/behavior/entities/format/behaviors/move_outdoors.json b/source/behavior/entities/format/behaviors/move_outdoors.json index 0a385cef..12068198 100644 --- a/source/behavior/entities/format/behaviors/move_outdoors.json +++ b/source/behavior/entities/format/behaviors/move_outdoors.json @@ -17,19 +17,19 @@ "search_count": { "title": "Search Count", "type": "integer", - "default": 0.0, + "default": 10, "description": "The amount of times to try finding a random outdoors position before failing." }, "search_height": { "title": "Search Height", "type": "integer", - "default": 0.0, + "default": 5, "description": "The y range to search for an outdoors position for." }, "search_range": { "title": "Search Range", "type": "integer", - "default": 0.0, + "default": 15, "description": "The x and z range to search for an outdoors position for." }, "timeout_cooldown": { diff --git a/source/behavior/entities/format/behaviors/ram_attack.json b/source/behavior/entities/format/behaviors/ram_attack.json index 284daad3..9313f66c 100644 --- a/source/behavior/entities/format/behaviors/ram_attack.json +++ b/source/behavior/entities/format/behaviors/ram_attack.json @@ -36,7 +36,7 @@ "min_ram_distance": { "title": "Min Ram Distance", "type": "number", - "default": 0.0, + "default": 4.0, "description": "The minimum distance at which the mob can start a ram attack." }, "on_start": { @@ -53,7 +53,7 @@ "ram_distance": { "title": "Ram Distance", "type": "number", - "default": 0.0, + "default": 7.0, "description": "The distance at which the mob start to run with ram speed." }, "ram_impact_sound": { diff --git a/source/behavior/entities/format/behaviors/random_search_and_dig.json b/source/behavior/entities/format/behaviors/random_search_and_dig.json index 31b240fe..0cdf6c70 100644 --- a/source/behavior/entities/format/behaviors/random_search_and_dig.json +++ b/source/behavior/entities/format/behaviors/random_search_and_dig.json @@ -27,13 +27,13 @@ "title": "Digging Duration Range", "$ref": "../../../../general/vectors/number2.json", - "default": [0.0, 0.0], + "default": [8.0, 10.0], "description": "Digging duration in seconds." }, "find_valid_position_retries": { "title": "Find Valid Position Retries", "type": "number", - "default": 0.0, + "default": 5.0, "description": "Amount of retries to find a valid target position within search range." }, "goal_radius": { @@ -80,13 +80,13 @@ "search_range_xz": { "title": "Search Range XZ", "type": "number", - "default": 0.0, + "default": 10.0, "description": "Width and length of the volume around the entity used to find a valid target position" }, "search_range_y": { "title": "Search Range Y", "type": "number", - "default": 0.0, + "default": 7.0, "description": "Height of the volume around the entity used to find a valid target position" }, "spawn_item_after_seconds": { diff --git a/source/behavior/entities/format/behaviors/stay_near_noteblock.json b/source/behavior/entities/format/behaviors/stay_near_noteblock.json index d630db6e..822e217c 100644 --- a/source/behavior/entities/format/behaviors/stay_near_noteblock.json +++ b/source/behavior/entities/format/behaviors/stay_near_noteblock.json @@ -11,7 +11,7 @@ "listen_time": { "title": "Listen Time", "type": "integer", - "default": 0.0, + "default": 30.0, "description": "Sets the time an entity should stay near a noteblock after hearing it." }, "speed": { diff --git a/source/behavior/entities/format/components.json b/source/behavior/entities/format/components.json index 96cadf54..61b2633f 100644 --- a/source/behavior/entities/format/components.json +++ b/source/behavior/entities/format/components.json @@ -165,6 +165,7 @@ "minecraft:ravager_blocked": { "$ref": "./components/ravager_blocked.json" }, "minecraft:rideable": { "$ref": "./components/rideable.json" }, "minecraft:reflect_projectiles": { "$ref": "./components/reflect_projectiles.json" }, + "minecraft:renders_when_invisible": { "$ref": "./components/renders_when_invisible.json" }, "minecraft:scale_by_age": { "$ref": "./components/scale_by_age.json" }, "minecraft:scale": { "$ref": "./components/scale.json" }, "minecraft:scheduler": { "$ref": "./components/scheduler.json" }, diff --git a/source/behavior/entities/format/components/area_attack.json b/source/behavior/entities/format/components/area_attack.json index 957b5b7d..79ee941b 100644 --- a/source/behavior/entities/format/components/area_attack.json +++ b/source/behavior/entities/format/components/area_attack.json @@ -37,7 +37,7 @@ "play_attack_sound": { "title": "Play Attack Sound", "type": "boolean", - "default": 4.94066e-324, + "default": true, "description": "If the entity should play their attack sound when attacking a target." } }, diff --git a/source/behavior/entities/format/components/breedable.json b/source/behavior/entities/format/components/breedable.json index 44753b74..152837e2 100644 --- a/source/behavior/entities/format/components/breedable.json +++ b/source/behavior/entities/format/components/breedable.json @@ -194,7 +194,7 @@ "default": 0, "minimum": 0.0, "maximum": 1.0, - "description": "The percentage chance of a mutation on the entity's color.", + "description": "The percentage chance of the offspring getting its color as if spawned rather than inheriting color from its parents.", "title": "Color" }, "extra_variant": { @@ -227,6 +227,29 @@ "type": "array", "description": "[EXPERIMENTAL] List of attributes that should benefit from parent centric attribute blending. For example, horses blend their health, movement, and jump_strength in their offspring." }, + "property_inheritance": { + "title": "Property Inheritance", + "description": "List of Entity Properties that should be inherited from the parent entities and potentially mutated.", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "mutation_chance": { + "title": "Mutation Chance", + "description": "The chance it should not inherit from either parent", + "type": "number", + "minimum": 0 + }, + "mutation_values": { + "title": "Mutation Values", + "description": "Array of values to select from if mutating and the component has random mutation set", + "type": "array", + "minItems": 1 + } + } + } + }, "random_extra_variant_mutation_interval": { "title": "Random Extra Variant Mutation Interval", "default": 0, @@ -245,6 +268,12 @@ "description": "If true, the babies will be automatically tamed if its parents are.", "title": "Inherit Tamed" }, + "combine_parent_colors": { + "type": "boolean", + "default": true, + "description": "If true, the babies will have their color be mixed.", + "title": "Combine Parent Colors" + }, "require_full_health": { "type": "boolean", "default": false, diff --git a/source/behavior/entities/format/components/looked_at.json b/source/behavior/entities/format/components/looked_at.json index 6da95d66..3e974a89 100644 --- a/source/behavior/entities/format/components/looked_at.json +++ b/source/behavior/entities/format/components/looked_at.json @@ -82,6 +82,12 @@ "description": "Maximum distance this entity will look for another entity looking at it.", "title": "Search Radius" }, + "min_looked_at_duration": { + "type": "number", + "default": 0, + "description": "Defines the minimum, continuous time the owner entity has to be looked at before being considered as such.", + "title": "Min Looked At Duration" + }, "set_target": { "title": "Set Target", "description": "Defines if and how the owner entity will set entities that are looking at it as its combat targets. Valid values:\n- \"never\", looking entities are never set as targets, but events are emitted.\n- \"once_and_stop_scanning\", the first detected looking entity is set as target. Scanning and event emission is suspended if and until the owner entity has a target.\n- \"once_and_keep_scanning\", the first detected looking entity is set as target. Scanning and event emission continues.", diff --git a/source/behavior/entities/format/components/renders_when_invisible.json b/source/behavior/entities/format/components/renders_when_invisible.json new file mode 100644 index 00000000..f914a846 --- /dev/null +++ b/source/behavior/entities/format/components/renders_when_invisible.json @@ -0,0 +1,8 @@ +{ + "$id": "blockception.minecraft.behavior.entities.minecraft.renders_when_invisible", + "title": "Renders When Invisible", + "description": "Marks the entity as being able to fly, the pathfinder won't be restricted to paths where a solid block is required underneath it.", + "type": "object", + "additionalProperties": false, + "properties": {} +} diff --git a/source/behavior/item_catalog/crafting_item_catalog.json b/source/behavior/item_catalog/crafting_item_catalog.json new file mode 100644 index 00000000..a7cd1466 --- /dev/null +++ b/source/behavior/item_catalog/crafting_item_catalog.json @@ -0,0 +1,13 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "blockception.minecraft.behavior.item_catalog.crafting_item_catalog", + "type": "object", + "title": "Crafting Item Catalog", + "description": "Used to define the creative inventory/recipe book", + "required": [ "format_version", "minecraft:crafting_items_catalog" ], + "additionalProperties": false, + "properties": { + "format_version": { "$ref": "../../general/format_version.json" }, + "minecraft:crafting_items_catalog": { "$ref": "./format/crafting_items_catalog.json" } + } +} \ No newline at end of file diff --git a/source/behavior/item_catalog/format/crafting_items_catalog.json b/source/behavior/item_catalog/format/crafting_items_catalog.json new file mode 100644 index 00000000..88af3a57 --- /dev/null +++ b/source/behavior/item_catalog/format/crafting_items_catalog.json @@ -0,0 +1,101 @@ +{ + "$id": "blockception.minecraft.behavior.item_catalog.format.minecraft.crafting_items_catalog", + "type": "object", + "title": "Crafting Items Catalog", + "additionalProperties": false, + "required": [ + "categories" + ], + "definitions": { + "category": { + "title": "Category", + "description": "You can add new items to the existing categories.", + "type": "object", + "additionalProperties": false, + "required": ["category_name", "groups"], + "properties": { + "category_name": { + "title": "Category Name", + "description": "Determines which category this block/item will be placed under in the inventory and crafting table container screens.", + "enum": ["construction", "equipment", "items", "nature"] + }, + "groups": { + "title": "Groups", + "description": "Defines a new group which will be added to the category you specify at the end of all existing items/groups.", + "type": "array", + "items": { + "$ref": "#/definitions/group" + } + } + } + }, + "group": { + "title": "Group", + "description": "Represents a group of items. A group can be collapsible if it is provided with a group identifier, or added a set of loose items without an icon.", + "type": "object", + "additionalProperties": false, + "required": ["items"], + "properties": { + "group_identifier": { + "title": "Group Identifier", + "description": "Optional field to give an icon and name to a group. Otherwise the items are added as loose items. If there are two groups with the same name within a category, they will merge.", + "type": "object", + "additionalProperties": false, + "required": ["name"], + "properties": { + "icon": { + "title": "Icon", + "description": "The item or block that represents the group.", + "type": "string" + }, + "name": { + "title": "Name", + "description": "The localization string that is display when you hover over your group name. The localization string needs to include the namespace.", + "type": "string", + "pattern": "^(?:.)+:(?:.)+$" + } + } + }, + "items": { + "title": "Items", + "description": "List of items to be added", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string", + "description": "The name of an item or block. A namespace for the item is required", + "pattern": "^(?:.)+:(?:.)+$" + }, + { + "type": "object", + "description": "The name of an item or block. A namespace for the item is required", + "properties": { + "name": { + "description": "You can optionally provide an aux value for items that use it at the end. Example: namespace:my_item:1", + "type": "string", + "pattern": "^(?:.)+:(?:.)+$" + } + }, + "required": [ + "name" + ] + } + ] + } + } + } + } + }, + "properties": { + "categories": { + "title": "Categories", + "description": "", + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/definitions/category" + } + } + } +} \ No newline at end of file diff --git a/source/behavior/items/format/components/storage_item.json b/source/behavior/items/format/components/storage_item.json index 6b08f97a..a1e93b51 100644 --- a/source/behavior/items/format/components/storage_item.json +++ b/source/behavior/items/format/components/storage_item.json @@ -31,20 +31,6 @@ "type": "integer", "maximum": 64.0, "default": 64 - }, - "max_weight_limit": { - "title": "Max Weight Limit", - "description": "The maximum allowed weight of the sum of all contained items. Maximum is 64. Default is 64.", - "type": "integer", - "maximum": 64.0, - "default": 64 - }, - "weight_in_storage_item": { - "title": "Weight In Storage Item", - "description": "The weight of this item when inside another Storage Item. Default is 4. 0 means item is not allowed in another Storage Item.", - "type": "integer", - "minimum": 0.0, - "default": 4 } } } \ No newline at end of file diff --git a/source/behavior/items/format/components/storage_weight_limit.json b/source/behavior/items/format/components/storage_weight_limit.json new file mode 100644 index 00000000..11780da1 --- /dev/null +++ b/source/behavior/items/format/components/storage_weight_limit.json @@ -0,0 +1,15 @@ +{ + "$id": "blockception.minecraft.behavior.items.minecraft:storage_weight_limit", + "title": "Storage Weight Limit", + "description": "Specifies the maximum weight limit that a storage item can hold", + "type": "object", + "properties": { + "max_weight_limit": { + "title": "Max Weight Limit", + "description": "The maximum allowed weight of the sum of all contained items.", + "type": "integer", + "maximum": 64.0, + "default": 64 + } + } +} \ No newline at end of file diff --git a/source/behavior/items/format/components/storage_weight_modifier.json b/source/behavior/items/format/components/storage_weight_modifier.json new file mode 100644 index 00000000..47098eff --- /dev/null +++ b/source/behavior/items/format/components/storage_weight_modifier.json @@ -0,0 +1,15 @@ +{ + "$id": "blockception.minecraft.behavior.items.minecraft:storage_weight_modifier", + "title": "Storage Weight Modifier", + "description": "Specifies the maximum weight limit that a storage item can hold.", + "type": "object", + "properties": { + "weight_in_storage_item": { + "title": "Weight In Storage Item", + "description": "The weight of this item when inside another Storage Item. 0 means item is not allowed in another Storage Item.", + "type": "integer", + "minimum": 0.0, + "default": 4 + } + } +} \ No newline at end of file diff --git a/source/behavior/items/format/minecraft.item.json b/source/behavior/items/format/minecraft.item.json index e422ae48..44ebd924 100644 --- a/source/behavior/items/format/minecraft.item.json +++ b/source/behavior/items/format/minecraft.item.json @@ -33,7 +33,10 @@ "additionalProperties": false, "properties": { "group": { - "$ref": "../../../general/vanilla/item_group.json" + "title": "Group", + "description": "A translation string of an existing group in minecraft to group this block/item under", + "type": "string", + "pattern": "^[0-9a-zA-Z:_\\.\\-]+$" }, "category": { "$ref": "../../../general/vanilla/creative_category.json" @@ -83,6 +86,8 @@ "minecraft:should_despawn": { "$ref": "./components/should_despawn.json" }, "minecraft:stacked_by_data": { "$ref": "./components/stacked_by_data.json" }, "minecraft:storage_item": { "$ref": "./components/storage_item.json" }, + "minecraft:storage_weight_limit": { "$ref": "./components/storage_weight_limit.json" }, + "minecraft:storage_weight_modifier": { "$ref": "./components/storage_weight_modifier.json" }, "minecraft:tags": { "$ref": "./components/tags.json" }, "minecraft:throwable": { "$ref": "./components/throwable.json" }, "minecraft:use_animation": { "$ref": "./components/use_animation.json" }, diff --git a/source/behavior/loot_tables/conditions.json b/source/behavior/loot_tables/conditions.json index a8d87cc6..c68dc299 100644 --- a/source/behavior/loot_tables/conditions.json +++ b/source/behavior/loot_tables/conditions.json @@ -11,6 +11,10 @@ "if": { "properties": { "condition": { "type": "string", "const": "has_mark_variant" } } }, "then": { "$ref": "./conditions/has_mark_variant.json" } }, + { + "if": { "properties": { "condition": { "type": "string", "const": "match_tool" } } }, + "then": { "$ref": "./conditions/match_tool.json" } + }, { "if": { "properties": { "condition": { "type": "string", "const": "killed_by_player" } } }, "then": { "$ref": "./conditions/killed_by_player.json" } diff --git a/source/behavior/loot_tables/conditions/match_tool.json b/source/behavior/loot_tables/conditions/match_tool.json new file mode 100644 index 00000000..ffdbea18 --- /dev/null +++ b/source/behavior/loot_tables/conditions/match_tool.json @@ -0,0 +1,60 @@ +{ + "$id": "blockception.minecraft.behavior.condition.match_tool", + "type": "object", + "additionalProperties": false, + "description": "Returns the condition true if the block of the loot table was broken with a specific item.", + "title": "Killed By Player", + "required": ["condition", "item", "count"], + "properties": { + "condition": { "type": "string", "const": "match_tool", "title": "Condition", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED" }, + "item": { + "title": "Item", + "description": "The item to match", + "type": "string" + }, + "count": { + "title": "Count", + "description": "Minimum count to match of the given item", + "type": "integer", + "minimum": 0 + }, + "enchantments": { + "title": "Enchantments", + "description": "List of enchantments to check for", + "type": "array", + "items": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+$": { + "type": "object", + "properties": { + "level": { + "type": "integer" + } + }, + "required": ["level"] + } + }, + "minProperties": 1, + "maxProperties": 1 + }, + "minItems": 1 + }, + "minecraft:match_tool_filter_all": { + "title": "Match Tool Filter All", + "description": "List of tags the item must have", + "type": "array", + "items": { + "type": "string" + } + }, + "minecraft:match_tool_filter_none": { + "title": "Match Tool Filter None", + "description": "List of tags the item must NOT have", + "type": "array", + "items": { + "type": "string" + } + } + } +} \ No newline at end of file diff --git a/source/behavior/loot_tables/functions.json b/source/behavior/loot_tables/functions.json index ae31e596..6c03aaf9 100644 --- a/source/behavior/loot_tables/functions.json +++ b/source/behavior/loot_tables/functions.json @@ -19,6 +19,7 @@ "random_block_state", "random_dye", "set_actor_id", + "set_armor_trim", "set_banner_details", "set_book_contents", "set_count", @@ -42,6 +43,7 @@ "minecraft:random_block_state", "minecraft:random_dye", "minecraft:set_actor_id", + "minecraft:set_armor_trim", "minecraft:set_banner_details", "minecraft:set_book_contents", "minecraft:set_count", @@ -74,6 +76,7 @@ { "if": { "properties": { "function": { "type": "string", "pattern": "^(minecraft:)*random_aux_value$" } } }, "then": { "$ref": "./functions/random_aux_value.json" } }, { "if": { "properties": { "function": { "type": "string", "pattern": "^(minecraft:)*random_block_state$" } } }, "then": { "$ref": "./functions/random_block_state.json" } }, { "if": { "properties": { "function": { "type": "string", "pattern": "^(minecraft:)*set_actor_id$" } } }, "then": { "$ref": "./functions/set_actor_id.json" } }, + { "if": { "properties": { "function": { "type": "string", "pattern": "^(minecraft:)*set_armor_trim$" } } }, "then": { "$ref": "./functions/set_armor_trim.json" } }, { "if": { "properties": { "function": { "type": "string", "pattern": "^(minecraft:)*set_banner_details$" } } }, "then": { "$ref": "./functions/set_banner_details.json" } }, { "if": { "properties": { "function": { "type": "string", "pattern": "^(minecraft:)*set_book_contents$" } } }, "then": { "$ref": "./functions/set_book_contents.json" } }, { "if": { "properties": { "function": { "type": "string", "pattern": "^(minecraft:)*set_count$" } } }, "then": { "$ref": "./functions/set_count.json" } }, diff --git a/source/behavior/loot_tables/functions/set_armor_trim.json b/source/behavior/loot_tables/functions/set_armor_trim.json new file mode 100644 index 00000000..26d05d52 --- /dev/null +++ b/source/behavior/loot_tables/functions/set_armor_trim.json @@ -0,0 +1,60 @@ +{ + "$id": "blockception.minecraft.behavior.loot_tables.set_armor_trim", + "additionalProperties": false, + "type": "object", + "description": "The function set_armor_trim.", + "title": "Set Armor Trim", + "required": ["function", "material", "pattern"], + "properties": { + "function": { + "type": "string", + "const": "set_armor_trim", + "title": "Function", + "description": "UNDOCUMENTED.", + "$comment": "UNDOCUMENTED" + }, + "material": { + "title": "Material", + "description": "Trim's material", + "type": "string", + "enum": [ + "amethyst", + "copper", + "diamond", + "emerald", + "gold", + "iron", + "lapis", + "netherite", + "quartz", + "redstone", + "resin" + ] + }, + "pattern": { + "title": "Pattern", + "description": "Trim pattern", + "type": "string", + "enum": [ + "sentry", + "vex", + "wild", + "coast", + "dune", + "wayfinder", + "shaper", + "raiser", + "host", + "ward", + "silence", + "tide", + "snout", + "rib", + "eye", + "spire", + "flow", + "bolt" + ] + } + } +} diff --git a/source/behavior/loot_tables/loot_tables.json b/source/behavior/loot_tables/loot_tables.json index 20fc44d7..33ae1454 100644 --- a/source/behavior/loot_tables/loot_tables.json +++ b/source/behavior/loot_tables/loot_tables.json @@ -5,23 +5,6 @@ "description": "A minecraft loot table.", "title": "Loot Table", "type": "object", - "examples": [ - { - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "item", - "name": "minecraft:spawn_egg", - "weight": 1, - "functions": [{ "function": "set_count", "count": { "min": 1, "max": 1 } }, { "function": "set_actor_id" }] - } - ] - } - ] - } - ], "definitions": { "pools_spec": { "title": "Pools", diff --git a/source/compress_specification.json b/source/compress_specification.json index d2b922ca..5a093e5e 100644 --- a/source/compress_specification.json +++ b/source/compress_specification.json @@ -18,10 +18,11 @@ { "Source": "./behavior/recipes/recipes.json", "Destination": "../behavior/recipes/recipes.json" }, { "Source": "./behavior/spawn_rules/spawn_rules.json", "Destination": "../behavior/spawn_rules/spawn_rules.json" }, { "Source": "./behavior/trading/trading.json", "Destination": "../behavior/trading/trading.json" }, - { "Source": "./behavior/worldgen/jigsaw_structures/jigsaw.json", "Destination": "../worldgen/jigsaw_structures/jigsaw.json" }, - { "Source": "./behavior/worldgen/processors/processor_list.json", "Destination": "../worldgen/processors/processor_list.json" }, - { "Source": "./behavior/worldgen/structure_sets/structure_set.json", "Destination": "../worldgen/structure_sets/structure_set.json" }, - { "Source": "./behavior/worldgen/template_pools/template_pool.json", "Destination": "../worldgen/template_pools/template_pool.json" }, + { "Source": "./behavior/worldgen/jigsaw_structures/jigsaw.json", "Destination": "../behavior/worldgen/jigsaw_structures/jigsaw.json" }, + { "Source": "./behavior/worldgen/processors/processor_list.json", "Destination": "../behavior/worldgen/processors/processor_list.json" }, + { "Source": "./behavior/worldgen/structure_sets/structure_set.json", "Destination": "../behavior/worldgen/structure_sets/structure_set.json" }, + { "Source": "./behavior/worldgen/template_pools/template_pool.json", "Destination": "../behavior/worldgen/template_pools/template_pool.json" }, + { "Source": "./behavior/item_catalog/crafting_item_catalog.json", "Destination": "../behavior/item_catalog/crafting_item_catalog.json" }, { "Source": "./general/manifest.json", "Destination": "../general/manifest.json" }, { "Source": "./general/world_x_packs.json", "Destination": "../general/world_x_packs.json" }, diff --git a/source/general/format_version.json b/source/general/format_version.json index dc80e434..95400567 100644 --- a/source/general/format_version.json +++ b/source/general/format_version.json @@ -4,7 +4,7 @@ "description": "A version that tells minecraft what type of data format can be expected when reading this file.", "pattern": "^([1-9]+)\\.([0-9]+)\\.([0-9]+)$", "type": "string", - "default": "1.21.50", - "examples": ["1.21.50", "1.20.81", "1.20.40", "1.19.0", "1.12.0", "1.10.0", "1.8.0"], + "default": "1.21.60", + "examples": ["1.21.50", "1.20.80", "1.20.40", "1.19.0", "1.12.0", "1.10.0", "1.8.0"], "defaultSnippets": [{ "label": "New Format version", "body": "1.${1|8,10,12,17,18,19,20|}.${3|2|0|}" }] } diff --git a/source/general/vanilla/item_group.json b/source/general/vanilla/item_group.json deleted file mode 100644 index 5d2bea37..00000000 --- a/source/general/vanilla/item_group.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "$id": "blockception.minecraft.general.vanilla.item_group", - "type": "string", - "title": "Item Group", - "description": "A translation string of an existing group in minecraft to group this block/item under", - "enum": [ - "itemGroup.name.anvil", - "itemGroup.name.arrow", - "itemGroup.name.axe", - "itemGroup.name.banner", - "itemGroup.name.banner_pattern", - "itemGroup.name.bed", - "itemGroup.name.boat", - "itemGroup.name.boots", - "itemGroup.name.buttons", - "itemGroup.name.candles", - "itemGroup.name.chalkboard", - "itemGroup.name.chest", - "itemGroup.name.chestboat", - "itemGroup.name.chestplate", - "itemGroup.name.concrete", - "itemGroup.name.concretePowder", - "itemGroup.name.cookedFood", - "itemGroup.name.copper", - "itemGroup.name.coral", - "itemGroup.name.coral_decorations", - "itemGroup.name.crop", - "itemGroup.name.door", - "itemGroup.name.dye", - "itemGroup.name.enchantedBook", - "itemGroup.name.fence", - "itemGroup.name.fenceGate", - "itemGroup.name.firework", - "itemGroup.name.fireworkStars", - "itemGroup.name.flower", - "itemGroup.name.glass", - "itemGroup.name.glassPane", - "itemGroup.name.glazedTerracotta", - "itemGroup.name.goatHorn", - "itemGroup.name.grass", - "itemGroup.name.hanging_sign", - "itemGroup.name.helmet", - "itemGroup.name.hoe", - "itemGroup.name.horseArmor", - "itemGroup.name.leaves", - "itemGroup.name.leggings", - "itemGroup.name.lingeringPotion", - "itemGroup.name.log", - "itemGroup.name.minecart", - "itemGroup.name.miscFood", - "itemGroup.name.mobEgg", - "itemGroup.name.monsterStoneEgg", - "itemGroup.name.mushroom", - "itemGroup.name.netherWartBlock", - "itemGroup.name.ore", - "itemGroup.name.permission", - "itemGroup.name.pickaxe", - "itemGroup.name.planks", - "itemGroup.name.potion", - "itemGroup.name.potterySherds", - "itemGroup.name.pressurePlate", - "itemGroup.name.rail", - "itemGroup.name.rawFood", - "itemGroup.name.record", - "itemGroup.name.sandstone", - "itemGroup.name.sapling", - "itemGroup.name.sculk", - "itemGroup.name.seed", - "itemGroup.name.shovel", - "itemGroup.name.shulkerBox", - "itemGroup.name.sign", - "itemGroup.name.skull", - "itemGroup.name.slab", - "itemGroup.name.smithing_templates", - "itemGroup.name.splashPotion", - "itemGroup.name.stainedClay", - "itemGroup.name.stairs", - "itemGroup.name.stone", - "itemGroup.name.stoneBrick", - "itemGroup.name.sword", - "itemGroup.name.trapdoor", - "itemGroup.name.walls", - "itemGroup.name.wood", - "itemGroup.name.wool", - "itemGroup.name.woolCarpet" - ] -} diff --git a/source/resource/biomes/format/components/water_appearance.json b/source/resource/biomes/format/components/water_appearance.json index f3d5b00d..3cef724e 100644 --- a/source/resource/biomes/format/components/water_appearance.json +++ b/source/resource/biomes/format/components/water_appearance.json @@ -12,6 +12,13 @@ "type": "string", "format": "color-hex", "examples": ["#FFFFFF"] + }, + "surface_opacity": { + "title": "Surface Opacity", + "description": "Opacity of the water surface (0 for invisible and 1 for opaque)", + "type": "number", + "minimum": 0, + "maximum": 1 } } } diff --git a/source/resource/blocks.json b/source/resource/blocks.json index 371b672c..e845600e 100644 --- a/source/resource/blocks.json +++ b/source/resource/blocks.json @@ -90,116 +90,7 @@ "sound": { "type": "string", "title": "Sound", - "description": "The sound definition of this block.", - "enum": [ - "amethyst_block", - "amethyst_cluster", - "ancient_debris", - "anvil", - "azalea", - "azalea_leaves", - "bamboo", - "bamboo_sapling", - "bamboo_wood", - "bamboo_wood_hanging_sign", - "basalt", - "big_dripleaf", - "bone_block", - "calcite", - "candle", - "cave_vines", - "chain", - "cherry_leaves", - "cherry_wood", - "cherry_wood_hanging_sign", - "chiseled_bookshelf", - "cloth", - "comparator", - "copper", - "copper_bulb", - "copper_grate", - "coral", - "creaking_heart", - "decorated_pot", - "deepslate", - "deepslate_bricks", - "dirt_with_roots", - "dripstone_block", - "eyeblossom", - "frog_spawn", - "froglight", - "fungus", - "glass", - "glow_lichen", - "grass", - "gravel", - "hanging_roots", - "hanging_sign", - "heavy_core", - "honey_block", - "itemframe", - "ladder", - "lantern", - "large_amethyst_bud", - "lever", - "lodestone", - "mangrove_roots", - "medium_amethyst_bud", - "metal", - "mob_spawner", - "moss_block", - "moss_carpet", - "mud", - "mud_bricks", - "muddy_mangrove_roots", - "nether_brick", - "nether_gold_ore", - "nether_sprouts", - "nether_wart", - "nether_wood", - "nether_wood_hanging_sign", - "netherite", - "netherrack", - "nylium", - "packed_mud", - "pale_hanging_moss", - "pink_petals", - "pointed_dripstone", - "polished_tuff", - "powder_snow", - "resin", - "resin_brick", - "roots", - "sand", - "scaffolding", - "sculk", - "sculk_catalyst", - "sculk_sensor", - "sculk_shrieker", - "sculk_vein", - "shroomlight", - "slime", - "small_amethyst_bud", - "snow", - "soul_sand", - "soul_soil", - "sponge", - "spore_blossom", - "stem", - "stone", - "suspicious_gravel", - "suspicious_sand", - "sweet_berry_bush", - "trial_spawner", - "tuff", - "tuff_bricks", - "turtle_egg", - "vault", - "vines", - "web", - "wet_sponge", - "wood" - ] + "description": "The sound definition of this block." }, "textures": { "$ref": "#/definitions/texture", "title": "Textures", "description": "Textures." } } diff --git a/source/resource/sounds.json b/source/resource/sounds.json index 64bccca7..bc1789d1 100644 --- a/source/resource/sounds.json +++ b/source/resource/sounds.json @@ -78,6 +78,11 @@ "description": "A single block sound definition.", "additionalProperties": false, "properties": { + "base": { + "title": "Base", + "description": "Specifying another block sound they should use sounds for if they do not define a sound themselves", + "type": "string" + }, "volume": { "$ref": "#/definitions/volume" }, "pitch": { "$ref": "#/definitions/pitch" }, "events": { diff --git a/vscode-settings.json b/vscode-settings.json index a9f6a46b..a37e3f3e 100644 --- a/vscode-settings.json +++ b/vscode-settings.json @@ -457,6 +457,21 @@ "*rp*/textures/*/**/*.{json,jsonc,json5}" ], "url": "https://raw.githubusercontent.com/Blockception/Minecraft-bedrock-json-schemas/main/resource/textures/ui_texture_definition.json" + }, + { + "fileMatch": [ + "behavior_packs/*/item_catalog/*.{json,jsonc,json5}", + "*behavior*pack*/item_catalog/*.{json,jsonc,json5}", + "*Behavior*Pack*/item_catalog/*.{json,jsonc,json5}", + "*BP*/item_catalog/*.{json,jsonc,json5}", + "*bp*/item_catalog/*.{json,jsonc,json5}", + "behavior_packs/*/item_catalog/**/*.{json,jsonc,json5}", + "*behavior*pack*/item_catalog/**/*.{json,jsonc,json5}", + "*Behavior*Pack*/item_catalog/**/*.{json,jsonc,json5}", + "*BP*/item_catalog/**/*.{json,jsonc,json5}", + "*bp*/item_catalog/**/*.{json,jsonc,json5}" + ], + "url": "https://raw.githubusercontent.com/Blockception/Minecraft-bedrock-json-schemas/main/behavior/item_catalog/crafting_item_catalog.json" } ] }