diff --git a/source/behavior/biomes/components/mountain_parameters.json b/source/behavior/biomes/components/mountain_parameters.json index 705b0f95..915aab53 100644 --- a/source/behavior/biomes/components/mountain_parameters.json +++ b/source/behavior/biomes/components/mountain_parameters.json @@ -7,12 +7,6 @@ "minProperties": 0, "maxProperties": 3, "properties": { - "peaks_factor": { - "type": "number", - "title": "Peaks factor", - "description": "UNDOCUMENTED.", - "$comment": "UNDOCUMENTED" - }, "steep_material_adjustment": { "type": "object", "title": "Steep material adjustment", diff --git a/source/behavior/blocks/format/components/destruction_particles.json b/source/behavior/blocks/format/components/destruction_particles.json new file mode 100644 index 00000000..776c5c56 --- /dev/null +++ b/source/behavior/blocks/format/components/destruction_particles.json @@ -0,0 +1,21 @@ +{ + "$id": "blockception.minecraft.behavior.blocks.minecraft.destruction_particles", + "title": "Destruction Particles", + "description": "[Experimental] Sets the particles that will be used when block is destroyed. This component can be omitted.", + "type": "object", + "additionalProperties": false, + "required": ["texture"], + "properties": { + "texture": { + "title": "Texture", + "description": "The texture name used for the particle.", + "type": "string" + }, + "tint_method": { + "title": "Tint Method", + "description": "Tint multiplied to the color. Tint method logic varies, but often refers to the \"rain\" and \"temperature\" of the biome the block is placed in to compute the tint.", + "type": "string", + "$ref": "../../../../general/vanilla/tint_methods.json" + } + } +} \ No newline at end of file diff --git a/source/behavior/blocks/format/components/map_color.json b/source/behavior/blocks/format/components/map_color.json index fc51277e..e33750d8 100644 --- a/source/behavior/blocks/format/components/map_color.json +++ b/source/behavior/blocks/format/components/map_color.json @@ -2,37 +2,63 @@ "$id": "blockception.minecraft.behavior.blocks.minecraft.map_color", "title": "Map Color", "description": "Sets the color of the block when rendered to a map. The color is represented as a hex value in the format \"#RRGGBB\". May also be expressed as an array of [R, G, B] from 0 to 255. If this component is omitted, the block will not show up on the map.", - "oneOf": [ + "definitions": { + "color": { + "oneOf": [ + { + "type": "string", + "format": "colox-hex", + "default": "#FFFFFF" + }, + { + "type": "array", + "items": [ + { + "title": "Red", + "type": "integer", + "default": 0, + "minimum": 0, + "maximum": 255 + }, + { + "title": "Green", + "type": "integer", + "default": 0, + "minimum": 0, + "maximum": 255 + }, + { + "title": "Blue", + "type": "integer", + "default": 0, + "minimum": 0, + "maximum": 255 + } + ] + } + ] + } + }, + "anyOf": [ { - "type": "string", - "format": "colox-hex", - "default": "#FFFFFF" + "$ref": "#/definitions/color" }, { - "type": "array", - "items": [ - { - "title": "Red", - "type": "integer", - "default": 0, - "minimum": 0, - "maximum": 255 - }, - { - "title": "Green", - "type": "integer", - "default": 0, - "minimum": 0, - "maximum": 255 + "type": "object", + "additionalProperties": false, + "required": ["color"], + "properties": { + "color": { + "title": "Color", + "$ref": "#/definitions/color" }, - { - "title": "Blue", - "type": "integer", - "default": 0, - "minimum": 0, - "maximum": 255 + "tint_method": { + "title": "Tint Method", + "description": "Tint multiplied to the color. Tint method logic varies, but often refers to the \"rain\" and \"temperature\" of the biome the block is placed in to compute the tint.", + "type": "string", + "$ref": "../../../../general/vanilla/tint_methods.json" } - ] + } } ], "examples": ["#FFFFFF", [255, 255, 255]] diff --git a/source/behavior/blocks/format/components/material_instances.json b/source/behavior/blocks/format/components/material_instances.json index 8f85d332..108c90a5 100644 --- a/source/behavior/blocks/format/components/material_instances.json +++ b/source/behavior/blocks/format/components/material_instances.json @@ -57,6 +57,17 @@ "title": "Texture", "type": "string", "description": "Texture name for the material." + }, + "isotropic": { + "title": "Isotropic", + "description": "[Experimental] Controls rotating the face UVs randomly based on BlockPos", + "type": "boolean" + }, + "tint_method": { + "title": "Tint Method", + "description": "[Experimental] Tint multiplied to the color. Tint method logic varies, but often refers to the \"rain\" and \"temperature\" of the biome the block is placed in to compute the tint.", + "type": "string", + "$ref": "../../../../general/vanilla/tint_methods.json" } } } diff --git a/source/behavior/blocks/format/components/replaceable.json b/source/behavior/blocks/format/components/replaceable.json new file mode 100644 index 00000000..1f58efbe --- /dev/null +++ b/source/behavior/blocks/format/components/replaceable.json @@ -0,0 +1,8 @@ +{ + "$id": "blockception.minecraft.behavior.blocks.minecraft.replaceable", + "title": "Replaceable", + "description": "A block with this component can be replaced when another block is placed in the same block position. Experimental toggles required: Upcoming Creator Features", + "type": "object", + "additionalProperties": false, + "properties": {} +} diff --git a/source/behavior/blocks/format/minecraft.block.json b/source/behavior/blocks/format/minecraft.block.json index 4e908c1e..e76001ab 100644 --- a/source/behavior/blocks/format/minecraft.block.json +++ b/source/behavior/blocks/format/minecraft.block.json @@ -19,6 +19,7 @@ "minecraft:crafting_table": { "$ref": "./components/crafting_table.json" }, "minecraft:destructible_by_explosion": { "$ref": "./components/destructible_by_explosion.json" }, "minecraft:destructible_by_mining": { "$ref": "./components/destructible_by_mining.json" }, + "minecraft:destruction_particles": { "$ref": "./components/destruction_particles.json" }, "minecraft:display_name": { "$ref": "./components/display_name.json" }, "minecraft:flammable": { "$ref": "./components/flammable.json" }, "minecraft:friction": { "$ref": "./components/friction.json" }, @@ -32,6 +33,7 @@ "minecraft:material_instances": { "$ref": "./components/material_instances.json" }, "minecraft:placement_filter": { "$ref": "./components/placement_filter.json" }, "minecraft:redstone_conductivity": { "$ref": "./components/redstone_conductivity.json" }, + "minecraft:replaceable": { "$ref": "./components/replaceable.json" }, "minecraft:selection_box": { "$ref": "./components/selection_box.json" }, "minecraft:transformation": { "$ref": "./components/transformation.json" }, "minecraft:custom_components": { "$ref": "./components/custom_components.json" }, diff --git a/source/behavior/entities/entities.json b/source/behavior/entities/entities.json index ed47342c..ae0ee379 100644 --- a/source/behavior/entities/entities.json +++ b/source/behavior/entities/entities.json @@ -35,6 +35,12 @@ "required": ["format_version", "minecraft:entity"], "additionalProperties": false, "properties": { + "use_beta_features": { + "title": "Use Beta Features", + "description": "Allows an entity to use experimental features.", + "type": "boolean", + "default": false + }, "format_version": { "$ref": "../../general/format_version.json" }, "minecraft:entity": { "$ref": "./format/minecraft.entity.json" } } diff --git a/source/behavior/entities/format/behaviors/float_wander.json b/source/behavior/entities/format/behaviors/float_wander.json index 6e761fd8..e5bbb1c6 100644 --- a/source/behavior/entities/format/behaviors/float_wander.json +++ b/source/behavior/entities/format/behaviors/float_wander.json @@ -39,6 +39,12 @@ "description": "If true, the mob will randomly pick a new point while moving to the previously selected one.", "title": "Random Reselect" }, + "use_home_position_restriction": { + "title": "Use Home Position Restriction", + "description": "If true, the mob will respect home position restrictions when choosing new target positions. If false, it will choose target position without considering home restrictions.", + "type": "boolean", + "default": false + }, "float_duration": { "$ref": "../types/range_number_type.json", "default": [0.0, 0.0], diff --git a/source/behavior/entities/format/behaviors/move_around_target.json b/source/behavior/entities/format/behaviors/move_around_target.json index 3841f49c..02328735 100644 --- a/source/behavior/entities/format/behaviors/move_around_target.json +++ b/source/behavior/entities/format/behaviors/move_around_target.json @@ -21,6 +21,13 @@ "description": "The range of distances from the target entity within which the goal should look for a position to move the owner entity to.", "$ref": "../../../../general/vectors/number2.json" }, + "destination_pos_spread_degrees": { + "title": "Desitnation Pos Spread Degrees", + "description": "UNDOCUMENTED", + "type": "number", + "minimum": 0, + "maximum": 360 + }, "height_difference_limit": { "title": "Height Difference Limit", "type": "number", diff --git a/source/behavior/entities/format/components.json b/source/behavior/entities/format/components.json index 61b2633f..6cdfdca2 100644 --- a/source/behavior/entities/format/components.json +++ b/source/behavior/entities/format/components.json @@ -23,6 +23,7 @@ "minecraft:barter": { "$ref": "./components/barter.json" }, "minecraft:block_climber": { "$ref": "./components/block_climber.json" }, "minecraft:block_sensor": { "$ref": "./components/block_sensor.json" }, + "minecraft:body_rotation_axis_aligned": { "$ref": "./components/body_rotation_axis_aligned.json" }, "minecraft:body_rotation_blocked": { "$ref": "./components/body_rotation_blocked.json" }, "minecraft:boostable": { "$ref": "./components/boostable.json" }, "minecraft:boss": { "$ref": "./components/boss.json" }, @@ -83,6 +84,7 @@ "minecraft:horse.jump_strength": { "$ref": "./components/horse.jump_strength.json" }, "minecraft:hurt_on_condition": { "$ref": "./components/hurt_on_condition.json" }, "minecraft:hurt_when_wet": { "$ref": "./components/hurt_when_wet.json" }, + "minecraft:input_air_controlled": { "$ref": "./components/input_air_controlled.json" }, "minecraft:input_ground_controlled": { "$ref": "./components/input_ground_controlled.json" }, "minecraft:inside_block_notifier": { "$ref": "./components/inside_block_notifier.json" }, "minecraft:insomnia": { "$ref": "./components/insomnia.json" }, @@ -92,6 +94,7 @@ "minecraft:is_baby": { "$ref": "./components/is_baby.json" }, "minecraft:is_charged": { "$ref": "./components/is_charged.json" }, "minecraft:is_chested": { "$ref": "./components/is_chested.json" }, + "minecraft:is_collidable": { "$ref": "./components/is_collidable.json" }, "minecraft:is_dyeable": { "$ref": "./components/is_dyeable.json" }, "minecraft:is_hidden_when_invisible": { "$ref": "./components/is_hidden_when_invisible.json" }, "minecraft:is_ignited": { "$ref": "./components/is_ignited.json" }, diff --git a/source/behavior/entities/format/components/attack.json b/source/behavior/entities/format/components/attack.json index 67697ee0..ba3b16c7 100644 --- a/source/behavior/entities/format/components/attack.json +++ b/source/behavior/entities/format/components/attack.json @@ -4,7 +4,7 @@ "additionalProperties": false, "title": "Attack", "description": "Defines an entity's melee attack and any additional effects on it.", - "required": ["damage"], + "required": [ "damage" ], "properties": { "damage": { "title": "Damage", @@ -18,11 +18,19 @@ "title": "Effect Name" }, "effect_duration": { - "type": "number", - "default": 1, + "anyOf": [ + { + "type": "integer", + "default": 1, + "minimum": 0 + }, + { + "const": "infinite" + } + ], "description": "Duration in seconds of the status ailment applied to the damaged entity.", "title": "Effect Duration" } }, - "examples": [{ "damage": 1 }, { "damage": 1, "effect_name": "example", "effect_duration": 1 }] + "examples": [ { "damage": 1 }, { "damage": 1, "effect_name": "example", "effect_duration": 1 } ] } diff --git a/source/behavior/entities/format/components/body_rotation_axis_aligned.json b/source/behavior/entities/format/components/body_rotation_axis_aligned.json new file mode 100644 index 00000000..42147347 --- /dev/null +++ b/source/behavior/entities/format/components/body_rotation_axis_aligned.json @@ -0,0 +1,9 @@ +{ + "$id": "blockception.minecraft.behavior.entities.minecraft.body_rotation_axis_aligned", + "type": "object", + "title": "Body Rotation Axis Aligned", + "description": "Causes the entity's body to automatically rotate to align with the nearest cardinal direction based on its current facing direction.\nCombining this with the \"minecraft:body_rotation_blocked\" component will cause the entity to align to the nearest cardinal direction and remain fixed in that orientation, regardless of future changes in its facing direction.", + "additionalProperties": false, + "properties": {}, + "examples": [{}] +} diff --git a/source/behavior/entities/format/components/breedable.json b/source/behavior/entities/format/components/breedable.json index 152837e2..8d83a1da 100644 --- a/source/behavior/entities/format/components/breedable.json +++ b/source/behavior/entities/format/components/breedable.json @@ -233,8 +233,7 @@ "type": "array", "items": { "type": "object", - "additionalProperties": false, - "properties": { + "additionalProperties": { "mutation_chance": { "title": "Mutation Chance", "description": "The chance it should not inherit from either parent", @@ -247,6 +246,9 @@ "type": "array", "minItems": 1 } + }, + "propertyNames": { + "pattern": "^[0-9a-zA-Z:_\\.\\-]+$" } } }, diff --git a/source/behavior/entities/format/components/collision_box.json b/source/behavior/entities/format/components/collision_box.json index 01970fe7..323f23f3 100644 --- a/source/behavior/entities/format/components/collision_box.json +++ b/source/behavior/entities/format/components/collision_box.json @@ -4,18 +4,22 @@ "title": "Collision Box", "additionalProperties": false, "description": "Sets the width and height of the Entity's collision box.", - "required": [], + "required": [ ], "properties": { "height": { "title": "Height", "type": "number", "default": 1.0, + "minimum": -100000000, + "maximum": 100000000, "description": "Height of the collision box in blocks. A negative value will be assumed to be 0." }, "width": { "title": "Width", "type": "number", "default": 1.0, + "minimum": -100000000, + "maximum": 100000000, "description": "Width of the collision box in blocks. A negative value will be assumed to be 0." } }, diff --git a/source/behavior/entities/format/components/combat_regeneration.json b/source/behavior/entities/format/components/combat_regeneration.json index 7ee4b507..c14dcdac 100644 --- a/source/behavior/entities/format/components/combat_regeneration.json +++ b/source/behavior/entities/format/components/combat_regeneration.json @@ -18,8 +18,16 @@ "title": "Apply To Self" }, "regeneration_duration": { - "type": "integer", - "default": 5, + "anyOf": [ + { + "type": "integer", + "default": 5, + "minimum": 0 + }, + { + "const": "infinite" + } + ], "description": "The duration in seconds of Regeneration I added to the mob.", "title": "Regeneration Duration" } diff --git a/source/behavior/entities/format/components/entity_sensor.json b/source/behavior/entities/format/components/entity_sensor.json index 776d6ed8..6c7a9c4a 100644 --- a/source/behavior/entities/format/components/entity_sensor.json +++ b/source/behavior/entities/format/components/entity_sensor.json @@ -12,6 +12,12 @@ "type": "number", "default": -1 }, + "y_offset": { + "title": "Y Offset", + "description": "Vertical offset applied to the entity's position when computing the distance from other entities.", + "type": "number", + "default": 0 + }, "event_filters": { "$ref": "../../filters/filters.json" }, @@ -105,6 +111,12 @@ "default": true, "description": "If true the sensor range is additive on top of the entity's size.", "title": "Relative Range" + }, + "find_players_only": { + "type": "boolean", + "default": true, + "description": "Limits the search to Players only for all subsensors.", + "title": "Find Players Only" } } } diff --git a/source/behavior/entities/format/components/healable.json b/source/behavior/entities/format/components/healable.json index ac2b6a70..ddfe68a0 100644 --- a/source/behavior/entities/format/components/healable.json +++ b/source/behavior/entities/format/components/healable.json @@ -16,9 +16,17 @@ "type": "string" }, "duration": { - "type": "integer", - "default": 0, - "minimum": 0, + "title": "Duration", + "anyOf": [ + { + "type": "integer", + "default": 1, + "minimum": 0 + }, + { + "const": "infinite" + } + ], "description": "The duration of the effect." }, "amplifier": { diff --git a/source/behavior/entities/format/components/input_air_controlled.json b/source/behavior/entities/format/components/input_air_controlled.json new file mode 100644 index 00000000..605fcdf4 --- /dev/null +++ b/source/behavior/entities/format/components/input_air_controlled.json @@ -0,0 +1,21 @@ +{ + "$id": "blockception.minecraft.behavior.entities.minecraft.input_air_controlled", + "description": "When configured as a rideable entity, the entity will be controlled using WASD controls and mouse to move in three dimensions.\nOnly available with `\"use_beta_features\": true` and likely to be drastically changed or removed.", + "type": "object", + "title": "Input Air Controlled", + "additionalProperties": false, + "properties": { + "backwards_movement_modifier": { + "title": "Backwards Movement Modifier", + "description": "Modifies speed going backwards.", + "type": "number", + "minimum": 0 + }, + "strafe_speed_modifier": { + "title": "Strafe Speed Modifier", + "description": "Modifies the strafe speed.", + "type": "number", + "minimum": 0 + } + } +} diff --git a/source/behavior/entities/format/components/is_collidable.json b/source/behavior/entities/format/components/is_collidable.json new file mode 100644 index 00000000..d92f4f36 --- /dev/null +++ b/source/behavior/entities/format/components/is_collidable.json @@ -0,0 +1,9 @@ +{ + "$id": "blockception.minecraft.behavior.entities.minecraft.is_collidable", + "description": "Allows other mobs to have vertical and horizontal collisions with this mob. For a collision to occur, both mobs must have a \"minecraft:collision_box\" component. This component can only be used on mobs and enables collisions exclusively between mobs.\nPlease note that this type of collision is unreliable for moving collidable mobs. It is recommended to use this component only in scenarios where the collidable mob remains stationary.\nCollidable behavior is closely related to stackable behavior. While the \"minecraft:is_collidable\" component governs how other mobs interact with the component's owner, the \"minecraft:is_stackable\" component describes how an entity interacts with others of its own kind.", + "type": "object", + "title": "Is Collidable", + "additionalProperties": false, + "required": [ ], + "properties": { } +} diff --git a/source/behavior/entities/format/components/mob_effect.json b/source/behavior/entities/format/components/mob_effect.json index 3f82da06..a5be3d49 100644 --- a/source/behavior/entities/format/components/mob_effect.json +++ b/source/behavior/entities/format/components/mob_effect.json @@ -19,8 +19,16 @@ }, "effect_time": { "title": "Effect Time", - "type": "integer", - "default": 10, + "anyOf": [ + { + "type": "integer", + "default": 10, + "minimum": 0 + }, + { + "const": "infinite" + } + ], "description": "How long the applied mob effect lasts in seconds." }, "entity_filter": { diff --git a/source/behavior/entities/format/components/projectile.json b/source/behavior/entities/format/components/projectile.json index adacfd94..fa534275 100644 --- a/source/behavior/entities/format/components/projectile.json +++ b/source/behavior/entities/format/components/projectile.json @@ -128,7 +128,7 @@ }, "offset": { "type": "array", - "default": [0, 0.0, 0], + "default": [ 0, 0.0, 0 ], "description": "The offset from the entity's anchor where the projectile will spawn.", "title": "Offset", "$ref": "../../../../general/vectors/number3.json" @@ -220,7 +220,7 @@ "additionalProperties": false, "properties": { "shape": { - "enum": ["sphere", "cube"], + "enum": [ "sphere", "cube" ], "default": "sphere", "description": "The shape of the area that is frozen.", "title": "Shape" @@ -404,26 +404,59 @@ }, "duration": { "title": "Duration", - "type": "integer", - "default": 1, + "anyOf": [ + { + "type": "integer", + "default": 1, + "minimum": 0 + }, + { + "const": "infinite" + } + ], "description": "The effect's duration." }, "durationeasy": { "title": "Duration Easy", - "type": "integer", - "default": 0, + "anyOf": [ + { + "type": "integer", + "default": 0, + "minimum": 0 + }, + { + "const": "infinite" + } + ], "description": "The effect's duration on easy mode." }, "durationhard": { "title": "Duration Hard", - "type": "integer", - "default": 800, + "anyOf": [ + { + "type": "integer", + "default": 800, + "minimum": 0 + }, + { + "const": "infinite" + } + ], "description": "The effect's duration on hard mode." }, "durationnormal": { "title": "Duration Normal", "type": "integer", - "default": 200, + "anyOf": [ + { + "type": "integer", + "default": 200, + "minimum": 0 + }, + { + "const": "infinite" + } + ], "description": "The effect's duration on normal mode." }, "effect": { @@ -474,6 +507,14 @@ "type": "string", "default": "not set", "description": "The id of the particle to spawn on hit." + }, + "particle_item_name": { + "title": "Particle Item Name", + "description": "Maps an item name to an actor filter to determine what the name of the item used in the particle should be.", + "type": "object", + "additionalProperties": { + "$ref": "../../filters/filters.json" + } } } }, @@ -488,7 +529,7 @@ "type": "object", "description": "Removes the projectile.", "additionalProperties": true, - "properties": {} + "properties": { } }, "spawn_aoe_cloud": { "title": "Spawn AOE Cloud", @@ -593,6 +634,14 @@ "type": "string", "default": "not set", "description": "The entity that will spawn." + }, + "on_spawn": { + "title": "On Spawn", + "description": "Triggered on the newly spawned entity with other set to the owning entity.", + "type": "array", + "items": { + "$ref": "../types/trigger.json" + } } } }, @@ -716,9 +765,9 @@ "lightning": false, "liquid_inertia": 0.6, "multiple_targets": true, - "offset": [], + "offset": [ ], "on_fire_time": 5, - "on_hit": {}, + "on_hit": { }, "particle": "iconcrack", "potion_effect": -1, "power": 1.3, diff --git a/source/behavior/entities/format/components/renders_when_invisible.json b/source/behavior/entities/format/components/renders_when_invisible.json index f914a846..442fda8f 100644 --- a/source/behavior/entities/format/components/renders_when_invisible.json +++ b/source/behavior/entities/format/components/renders_when_invisible.json @@ -1,8 +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.", + "description": "When set, the entity will render even when invisible. Appropriate rendering behavior can then be specified in the corresponding \"minecraft:client_entity\".", "type": "object", "additionalProperties": false, - "properties": {} + "properties": { } } diff --git a/source/behavior/entities/format/components/rideable.json b/source/behavior/entities/format/components/rideable.json index 3ecef486..a5353fc6 100644 --- a/source/behavior/entities/format/components/rideable.json +++ b/source/behavior/entities/format/components/rideable.json @@ -1,6 +1,6 @@ { "$id": "blockception.minecraft.behavior.entities.minecraft.rideable", - "description": "Determines whether this entity can be ridden. Allows specifying the different seat positions and quantity.", + "description": "Determines whether this entity can be ridden. Allows specifying the different seat positions and amount.", "type": "object", "title": "Rideable", "additionalProperties": false, @@ -45,7 +45,7 @@ "controlling_seat": { "type": "integer", "default": 0, - "description": "The seat that designates the driver of the entity.", + "description": "The seat that designates the driver of the entity. Entities with the \"minecraft:behavior.controlled_by_player\" goal ignore this field and give control to any player in any seat.", "title": "Controlling Seat" }, "crouching_skip_interact": { @@ -71,7 +71,7 @@ }, "passenger_max_width": { "title": "Passenger Max Width", - "description": "The max width a mob can be to be a passenger. A value of 0 ignores this parameter.", + "description": "The max width a mob can have to be a rider. A value of 0 ignores this parameter.", "type": "number", "default": 0.0 }, diff --git a/source/behavior/entities/format/components/spell_effects.json b/source/behavior/entities/format/components/spell_effects.json index e2c58d1a..1dc536b6 100644 --- a/source/behavior/entities/format/components/spell_effects.json +++ b/source/behavior/entities/format/components/spell_effects.json @@ -4,7 +4,7 @@ "title": "Spell Effects", "additionalProperties": false, "description": "Defines what mob effects to add and remove to the entity when adding this component.", - "required": [], + "required": [ ], "properties": { "add_effects": { "type": "array", @@ -32,8 +32,16 @@ "duration": { "title": "Duration", "description": "The amount of time in seconds the effect should last. This allows for fractional numbers. For example, instant effects should be set to 0.05 seconds (one tick).", - "type": "number", - "minimum": 0 + "anyOf": [ + { + "type": "integer", + "default": 1, + "minimum": 0 + }, + { + "const": "infinite" + } + ] }, "display_on_screen_animation": { "type": "boolean", @@ -63,7 +71,7 @@ { "type": "array", "items": { - "type": ["string"], + "type": [ "string" ], "title": "Spell Effect ID", "description": "identifier of the effect to be removed from this entity after adding this component." } @@ -76,7 +84,7 @@ }, "examples": [ { - "add_effects": [] + "add_effects": [ ] } ] } diff --git a/source/behavior/entities/format/events.json b/source/behavior/entities/format/events.json index 3971c2a4..f46ec51e 100644 --- a/source/behavior/entities/format/events.json +++ b/source/behavior/entities/format/events.json @@ -15,8 +15,15 @@ "component_groups": { "title": "Component Groups", "description": "The components groups to add or remove.", - "type": "array", - "items": { "type": "string", "description": "A reference to a component group.", "title": "Component Groups" } + "anyOf": [ + { + "type": "array", + "items": { "type": "string", "description": "A reference to a component group.", "title": "Component Groups" } + }, + { + "type": "string", "description": "A reference to a component group.", "title": "Component Groups" + } + ] } } }, @@ -190,6 +197,40 @@ "type": "string" } } + }, + "stop_movement": { + "title": "Stop Movement", + "description": "Stops the entity's movement", + "type": "object", + "additionalProperties": false, + "properties": { + "stop_vertical_movement": { + "title": "Stop Vertical Movement", + "description": "Specifies whether vertical movement should be stopped", + "type": "boolean", + "default": false + }, + "stop_horizontal_movement": { + "title": "Stop Horizontal Movement", + "description": "Specifies whether horizontal movement should be stopped", + "type": "boolean", + "default": false + } + } + }, + "set_home_position": { + "title": "Set Home Position", + "description": "Sets the entity's home position to its current position", + "type": "object", + "additionalProperties": false, + "properties": { } + }, + "first_valid": { + "title": "First Valid", + "description": "Will evaluate every filter in order and execute the first valid one", + "type": "object", + "additionalProperties": false, + "properties": { } } } }, diff --git a/source/behavior/features/features/minecraft.cave_carver_feature.json b/source/behavior/features/features/minecraft.cave_carver_feature.json index 1640892d..74f45c47 100644 --- a/source/behavior/features/features/minecraft.cave_carver_feature.json +++ b/source/behavior/features/features/minecraft.cave_carver_feature.json @@ -11,7 +11,7 @@ "fill_with": { "title": "Fill With", "description": "Reference to the block to fill the cave with.", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "width_modifier": { "title": "Width Modifier", diff --git a/source/behavior/features/features/minecraft.fossil_feature.json b/source/behavior/features/features/minecraft.fossil_feature.json index 487c3490..4a0d69c4 100644 --- a/source/behavior/features/features/minecraft.fossil_feature.json +++ b/source/behavior/features/features/minecraft.fossil_feature.json @@ -11,7 +11,7 @@ "ore_block": { "title": "Ore Block", "description": "Reference to the block to fill the cave with.", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "max_empty_corners": { "title": "Max Empty Corners", diff --git a/source/behavior/features/features/minecraft.geode_feature.json b/source/behavior/features/features/minecraft.geode_feature.json index e5678487..150c82f2 100644 --- a/source/behavior/features/features/minecraft.geode_feature.json +++ b/source/behavior/features/features/minecraft.geode_feature.json @@ -70,31 +70,31 @@ "title": "Filler", "type": "string", "description": "The block to fill the inside of the geode.", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "inner_layer": { "title": "Inner Layer", "type": "string", "description": "The block that forms the inside layer of the geode shell.", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "alternate_inner_layer": { "title": "Alternate Inner Layer", "type": "string", "description": "The block that has a chance of generating instead of inner_layer.", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "middle_layer": { "title": "Middle Layer", "type": "string", "description": "The block that forms the middle layer of the geode shell.", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "outer_layer": { "title": "Outer Layer", "type": "string", "description": "The block that forms the outer shell of the geode.", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "inner_placements": { "title": "Inner Placements", @@ -104,7 +104,7 @@ "items": { "title": "Block Reference", "description": "A block that may be replaced during placement.", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" } }, "min_outer_wall_distance": { diff --git a/source/behavior/features/features/minecraft.growing_plant_feature.json b/source/behavior/features/features/minecraft.growing_plant_feature.json index f2159364..e9e65d35 100644 --- a/source/behavior/features/features/minecraft.growing_plant_feature.json +++ b/source/behavior/features/features/minecraft.growing_plant_feature.json @@ -44,7 +44,7 @@ "title": "Plant Body Block", "description": "Plant body block.", "type": "string", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, { "title": "Age", diff --git a/source/behavior/features/features/minecraft.multiface_feature.json b/source/behavior/features/features/minecraft.multiface_feature.json index 13791218..4b049470 100644 --- a/source/behavior/features/features/minecraft.multiface_feature.json +++ b/source/behavior/features/features/minecraft.multiface_feature.json @@ -12,7 +12,7 @@ "title": "Places Block", "description": "Reference to the block to be placed.", "type": "string", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "search_range": { "title": "Search Range", @@ -51,7 +51,7 @@ "items": { "title": "Block", "description": " A list of blocks that the block in this feature can be placed on. Omit this field to allow any block to be placed on.", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" } } } diff --git a/source/behavior/features/features/minecraft.nether_cave_carver_feature.json b/source/behavior/features/features/minecraft.nether_cave_carver_feature.json index 364b7725..23a02df5 100644 --- a/source/behavior/features/features/minecraft.nether_cave_carver_feature.json +++ b/source/behavior/features/features/minecraft.nether_cave_carver_feature.json @@ -12,7 +12,7 @@ "title": "Identifier", "description": "Reference to the block to fill the cave with.", "type": "string", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "width_modifier": { "title": "Identifier", diff --git a/source/behavior/features/features/minecraft.ore_feature.json b/source/behavior/features/features/minecraft.ore_feature.json index 90320cac..9294042c 100644 --- a/source/behavior/features/features/minecraft.ore_feature.json +++ b/source/behavior/features/features/minecraft.ore_feature.json @@ -28,7 +28,7 @@ "places_block": { "title": "Places Block", "description": "Reference to the block to be placed.", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "may_replace": { "title": "May Replace", @@ -36,7 +36,7 @@ "type": "array", "minItems": 1, "items": { - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" } } } diff --git a/source/behavior/features/features/minecraft.partially_exposed_blob_feature.json b/source/behavior/features/features/minecraft.partially_exposed_blob_feature.json index e0246117..823b66f4 100644 --- a/source/behavior/features/features/minecraft.partially_exposed_blob_feature.json +++ b/source/behavior/features/features/minecraft.partially_exposed_blob_feature.json @@ -11,7 +11,7 @@ "places_block": { "title": "Places Block", "description": "Reference to the block to be placed.", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "placement_radius_around_floor": { "title": "Placement Radius Around Floor", diff --git a/source/behavior/features/features/minecraft.scatter_feature.json b/source/behavior/features/features/minecraft.scatter_feature.json index f157f2b8..9cc3de27 100644 --- a/source/behavior/features/features/minecraft.scatter_feature.json +++ b/source/behavior/features/features/minecraft.scatter_feature.json @@ -3,7 +3,7 @@ "title": "Scatter Feature", "description": "`minecraft:scatter_feature` scatters a feature throughout a chunk. The `x`, `y`, and `z` fields are per-coordinate parameters.\nNote that coordinates represent an offset from the input position, not an absolute position. Coordinates may be a single value, a random distribution, or molang expression that resolves to a numeric value. The `coordinate_eval_order` field is provided for finer control of coordinate resolution (particularly when using the `grid` distribution). `iterations` controls how many individual placements should occur if the `scatter_chance` check succeeds. The `scatter_chance` check happens once, so either all placements will run or none will.\nSucceeds if: At least one feature placement succeeds.\nFails if: All feature placements fail.", "additionalProperties": false, - "required": ["description", "places_feature", "iterations"], + "required": ["description", "places_feature"], "definitions": { "coord_dist": { "title": "Coordinate", diff --git a/source/behavior/features/features/minecraft.single_block_feature.json b/source/behavior/features/features/minecraft.single_block_feature.json index 6c8f7ba8..41954f62 100644 --- a/source/behavior/features/features/minecraft.single_block_feature.json +++ b/source/behavior/features/features/minecraft.single_block_feature.json @@ -7,8 +7,8 @@ "definitions": { "block_side": { "oneOf": [ - { "title": "Block", "description": "Reference to the block it may attach to.", "type": "string", "$ref": "../../../general/block/identifier.json" }, - { "type": "array", "items": { "title": "Block", "description": "Reference to the block it may attach to.", "type": "string", "$ref": "../../../general/block/identifier.json" } } + { "title": "Block", "description": "Reference to the block it may attach to.", "type": "string", "$ref": "../../../general/block/reference.json" }, + { "type": "array", "items": { "title": "Block", "description": "Reference to the block it may attach to.", "type": "string", "$ref": "../../../general/block/reference.json" } } ] } }, @@ -22,7 +22,7 @@ "title": "Places Block", "description": "Reference to the block to be placed.", "type": "string", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, { "title": "Places Block", @@ -34,7 +34,7 @@ "description": "Reference to the block to be placed.", "type": "array", "items": [ - { "title": "Block", "description": "Reference to the block to be placed.", "$ref": "../../../general/block/identifier.json" }, + { "title": "Block", "description": "Reference to the block to be placed.", "$ref": "../../../general/block/reference.json" }, { "title": "Weight", "description": "Random weight of this block. A higher number will increase the probability of this block to be picked during placement.", @@ -113,7 +113,7 @@ "title": "Block", "description": "A block that may be replaced during placement. Omit this field to allow any block to be replaced.", "type": "string", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" } } } diff --git a/source/behavior/features/features/minecraft.structure_template_feature.json b/source/behavior/features/features/minecraft.structure_template_feature.json index e9fb62ef..830bf2ba 100644 --- a/source/behavior/features/features/minecraft.structure_template_feature.json +++ b/source/behavior/features/features/minecraft.structure_template_feature.json @@ -60,7 +60,7 @@ "items": { "title": "Block", "type": "string", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" } }, "block_whitelist": { @@ -70,7 +70,7 @@ "items": { "title": "Block", "type": "string", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" } } } diff --git a/source/behavior/features/features/minecraft.tree_feature.json b/source/behavior/features/features/minecraft.tree_feature.json index 6a82241c..32ffbed3 100644 --- a/source/behavior/features/features/minecraft.tree_feature.json +++ b/source/behavior/features/features/minecraft.tree_feature.json @@ -112,7 +112,7 @@ "title": "Decoration Block", "description": "The block used for decorating the trunk.", "type": "string", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "num_steps": { "title": "Num Steps", @@ -228,7 +228,7 @@ "hanging_block": { "title": "Hanging Block", "description": "The block to be used as a hanging block.", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "hanging_block_placement_chance": { "title": "Hanging Block Placement Chance", @@ -380,7 +380,7 @@ "title": "Leaf Block", "description": "The block thata forms the canopy of the tree.", "type": "string", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "trunk_width": { "title": "Trunk Width", @@ -415,7 +415,7 @@ "title": "Decoration Block", "description": "The block used for decorating the trunk.", "type": "string", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "num_steps": { "title": "Num Steps", @@ -440,7 +440,7 @@ "title": "Trunk Block", "description": "The block that forms the tree trunk.", "type": "string", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" } }, "properties": { @@ -450,10 +450,10 @@ "base_block": { "title": "Base Block", "oneOf": [ - { "$ref": "../../../general/block/identifier.json" }, + { "$ref": "../../../general/block/reference.json" }, { "type": "array", - "items": { "title": "Block", "$ref": "../../../general/block/identifier.json" } + "items": { "title": "Block", "$ref": "../../../general/block/reference.json" } } ] }, @@ -469,7 +469,7 @@ "description": "List of blocks that the base cluster of a tree can replace.", "type": "array", "items": { - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" } }, "num_clusters": { @@ -491,7 +491,7 @@ "description": "List of blocks where a tree can grow on.", "type": "array", "items": { - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" } }, "may_replace": { @@ -499,7 +499,7 @@ "description": "List of blocks that a tree can replace.", "type": "array", "items": { - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" } }, "may_grow_through": { @@ -507,7 +507,7 @@ "description": "List of blocks that a tree can grow through.", "type": "array", "items": { - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" } }, "acacia_trunk": { @@ -1131,7 +1131,7 @@ "title": "Decoration Block", "description": "The block used for decorating the trunk.", "type": "string", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "num_steps": { "title": "Num Steps", @@ -1247,7 +1247,7 @@ "hanging_block": { "title": "Hanging Block", "description": "The block to be used as a hanging block.", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "hanging_block_placement_chance": { "title": "Hanging Block Placement Chance", @@ -1452,7 +1452,7 @@ "title": "Root Block", "description": "Block used for roots.", "type": "string", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "above_root": { "title": "Above Root", @@ -1469,19 +1469,19 @@ "title": "Above Root Block", "description": "The block placed on the top of the roots.", "type": "string", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "muddy_root_block": { "title": "Muddy Root Block", "description": "The block used for muddy roots.", "type": "string", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "mud_block": { "title": "Mud Block", "description": "The block used to determine if a muddy root should be placed.", "type": "string", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "y_offset": { "title": "Y Offset", @@ -1493,7 +1493,7 @@ "description": "List of blocks that a root can grow through.", "type": "array", "items": { - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" } }, "root_decoration": { diff --git a/source/behavior/features/features/minecraft.underwater_cave_carver_feature.json b/source/behavior/features/features/minecraft.underwater_cave_carver_feature.json index 9f483e8b..1eb51244 100644 --- a/source/behavior/features/features/minecraft.underwater_cave_carver_feature.json +++ b/source/behavior/features/features/minecraft.underwater_cave_carver_feature.json @@ -11,7 +11,7 @@ "fill_with": { "title": "Fill With", "description": "Reference to the block to fill the cave with.", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "width_modifier": { "title": "Width Modifier", @@ -73,7 +73,7 @@ "replace_air_with": { "title": "Replace Air With", "description": "Reference to the block to replace air blocks with.", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" } } } \ No newline at end of file diff --git a/source/behavior/features/features/minecraft.vegetation_patch_feature.json b/source/behavior/features/features/minecraft.vegetation_patch_feature.json index ef433ad6..8aedff90 100644 --- a/source/behavior/features/features/minecraft.vegetation_patch_feature.json +++ b/source/behavior/features/features/minecraft.vegetation_patch_feature.json @@ -15,14 +15,14 @@ "items": { "title": "Replace Block", "type": "string", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" } }, "ground_block": { "title": "Ground Block", "description": "Block used to create a base for the vegetation patch.", "type": "string", - "$ref": "../../../general/block/identifier.json" + "$ref": "../../../general/block/reference.json" }, "vegetation_feature": { "title": "Vegetation Feature", diff --git a/source/behavior/items/format/components/repairable.json b/source/behavior/items/format/components/repairable.json index 429abc37..18bffa01 100644 --- a/source/behavior/items/format/components/repairable.json +++ b/source/behavior/items/format/components/repairable.json @@ -20,7 +20,7 @@ "description": "Items that can be used to repeair it", "$comment": "List of items", "type": "array", - "items": { "type": "string", "title": "Item", "description": "Item identifier" } + "items": { "$ref": "../../../../general/item/descriptor.json" } }, "repair_amount": { "title": "Repair Amount", diff --git a/source/behavior/loot_tables/conditions/match_tool.json b/source/behavior/loot_tables/conditions/match_tool.json index ffdbea18..38a46b11 100644 --- a/source/behavior/loot_tables/conditions/match_tool.json +++ b/source/behavior/loot_tables/conditions/match_tool.json @@ -55,6 +55,14 @@ "items": { "type": "string" } + }, + "minecraft:match_tool_filter_any": { + "title": "Match Tool Filter Any", + "description": "List of tags the item must have at least one of", + "type": "array", + "items": { + "type": "string" + } } } } \ No newline at end of file diff --git a/source/general/vanilla/tint_methods.json b/source/general/vanilla/tint_methods.json new file mode 100644 index 00000000..74cf679c --- /dev/null +++ b/source/general/vanilla/tint_methods.json @@ -0,0 +1,15 @@ +{ + "$id": "blockception.minecraft.general.vanilla.tint_methods", + "type": "string", + "title": "Tint Method", + "description": "Tint multiplied to the color.", + "enum": [ + "none", + "default_foliage", + "birch_foliage", + "evergreen_foliage", + "dry_foliage", + "grass", + "water" + ] +} \ No newline at end of file diff --git a/source/resource/animation_controllers/animation_controller.json b/source/resource/animation_controllers/animation_controller.json index e489e14f..783adc02 100644 --- a/source/resource/animation_controllers/animation_controller.json +++ b/source/resource/animation_controllers/animation_controller.json @@ -164,6 +164,12 @@ "effect": { "description": "Valid sound effect names should be listed in the entity's resource_definition json file.", "type": "string" + }, + "locator": { + "type": "string", + "title": "Locator", + "description": + "The name of a locator on the actor where the effect should be located." } } } diff --git a/source/resource/animations/actor_animation.json b/source/resource/animations/actor_animation.json index c5b727c8..d49b980a 100644 --- a/source/resource/animations/actor_animation.json +++ b/source/resource/animations/actor_animation.json @@ -12,7 +12,7 @@ } } ], - "examples": [{ "format_version": "1.10.0", "animations": { "animation.annie.idle": { "loop": true, "animation_length": 2.12, "bones": {} } } }], + "examples": [ { "format_version": "1.10.0", "animations": { "animation.annie.idle": { "loop": true, "animation_length": 2.12, "bones": { } } } } ], "additionalProperties": false, "type": "object", "title": "Actor Animation", @@ -23,7 +23,7 @@ "type": "object", "title": "Particle Effect", "additionalProperties": false, - "required": ["effect"], + "required": [ "effect" ], "properties": { "effect": { "type": "string", "title": "Particle Id", "description": "The name of a particle effect that should be played." }, "locator": { "type": "string", "title": "Locator", "description": "The name of a locator on the actor where the effect should be located." }, @@ -44,7 +44,7 @@ "title": "Position Array", "description": "An array of 3 items that describe the bones position.", "type": "array", - "examples": [[0, 0, 0]], + "examples": [ [ 0, 0, 0 ] ], "maxItems": 3, "minItems": 3, "items": [ @@ -57,7 +57,7 @@ "title": "Rotation Array", "description": "An array of 3 items that describe the bones rotation.", "type": "array", - "examples": [[0, 0, 0]], + "examples": [ [ 0, 0, 0 ] ], "maxItems": 3, "minItems": 3, "items": [ @@ -70,7 +70,7 @@ "title": "Scale Array", "description": "An array of 3 items that describe the bones scale.", "type": "array", - "examples": [[0, 0, 0]], + "examples": [ [ 0, 0, 0 ] ], "maxItems": 3, "minItems": 3, "items": [ @@ -88,13 +88,19 @@ "title": "Effect", "type": "string", "description": "Valid sound effect names should be listed in the entity's resource_definition json file." + }, + "locator": { + "type": "string", + "title": "Locator", + "description": + "The name of a locator on the actor where the effect should be located." } } } }, - "required": ["format_version", "animations"], + "required": [ "format_version", "animations" ], "properties": { - "format_version": { "type": "string", "enum": ["1.8.0", "1.10.0"] }, + "format_version": { "type": "string", "enum": [ "1.8.0", "1.10.0" ] }, "animations": { "title": "Animations Schema", "description": "The animation specification.", @@ -125,7 +131,7 @@ "bones": { "title": "Bones", "description": "Defines how the bones in an animation move or transform.", - "propertyNames": { "examples": ["leftArm"] }, + "propertyNames": { "examples": [ "leftArm" ] }, "type": "object", "minProperties": 1, "additionalProperties": { @@ -141,7 +147,7 @@ { "type": "array", "$ref": "#/definitions/PositionV3" }, { "type": "object", - "propertyNames": { "pattern": "^(\\d+\\.\\d+|\\d+)$", "examples": ["0.0", "1.0"] }, + "propertyNames": { "pattern": "^(\\d+\\.\\d+|\\d+)$", "examples": [ "0.0", "1.0" ] }, "additionalProperties": { "title": "Timeline Object", "description": "A single point in time.", @@ -157,7 +163,7 @@ "title": "Lerp Mode", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", - "enum": ["linear", "catmullrom"] + "enum": [ "linear", "catmullrom" ] }, "pre": { "title": "Pre", @@ -185,7 +191,7 @@ { "type": "array", "$ref": "#/definitions/RotationV3" }, { "type": "object", - "propertyNames": { "pattern": "^(\\d+\\.\\d+|\\d+)$", "examples": ["0.0", "1.0"] }, + "propertyNames": { "pattern": "^(\\d+\\.\\d+|\\d+)$", "examples": [ "0.0", "1.0" ] }, "additionalProperties": { "title": "Timeline Object", "description": "A single point in time.", @@ -206,7 +212,7 @@ "title": "Lerp Mode", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", - "enum": ["linear", "catmullrom"] + "enum": [ "linear", "catmullrom" ] }, "pre": { "title": "Pre", @@ -247,7 +253,7 @@ { "$ref": "#/definitions/ScaleV3" }, { "type": "object", - "propertyNames": { "pattern": "^(\\d+\\.\\d+|\\d+)$", "examples": ["0.0", "1.0"] }, + "propertyNames": { "pattern": "^(\\d+\\.\\d+|\\d+)$", "examples": [ "0.0", "1.0" ] }, "additionalProperties": { "title": "Timeline Object", "description": "A single point in time.", @@ -268,7 +274,7 @@ "title": "Lerp Mode", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", - "enum": ["linear", "catmullrom"] + "enum": [ "linear", "catmullrom" ] }, "pre": { "title": "Pre", @@ -295,7 +301,7 @@ "loop": { "title": "Loop", "description": "Should this animation stop, loop, or stay on the last frame when finished (true, false, hold_on_last_frame).", - "oneOf": [{ "type": "boolean" }, { "type": "string", "enum": ["hold_on_last_frame"] }] + "oneOf": [ { "type": "boolean" }, { "type": "string", "enum": [ "hold_on_last_frame" ] } ] }, "loop_delay": { "title": "Loop Delay", @@ -312,8 +318,8 @@ "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "type": "object", - "propertyNames": { "pattern": "^(\\d+\\.\\d+|\\d+)$", "examples": ["0.0", "1.0"] }, - "examples": [{ "0.0": {} }], + "propertyNames": { "pattern": "^(\\d+\\.\\d+|\\d+)$", "examples": [ "0.0", "1.0" ] }, + "examples": [ { "0.0": { } } ], "additionalProperties": { "title": "Timeline Object", "description": "A single point in time.", @@ -333,7 +339,7 @@ "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "type": "object", - "propertyNames": { "pattern": "^(\\d+\\.\\d+|\\d+)$", "examples": ["0.0", "1.0"] }, + "propertyNames": { "pattern": "^(\\d+\\.\\d+|\\d+)$", "examples": [ "0.0", "1.0" ] }, "additionalProperties": { "title": "Timeline Object", "description": "A single point in time.", @@ -347,8 +353,8 @@ "title": "Timeline", "description": "The time line.", "type": "object", - "propertyNames": { "pattern": "^(\\d+\\.\\d+|\\d+)$", "examples": ["0.0", "1.0"] }, - "examples": [{ "0.0": {} }], + "propertyNames": { "pattern": "^(\\d+\\.\\d+|\\d+)$", "examples": [ "0.0", "1.0" ] }, + "examples": [ { "0.0": { } } ], "additionalProperties": { "oneOf": [ { "type": "string", "title": "Molang", "description": "Variable definition.", "pattern": "^(v|variable)\\..*=.*;$" }, diff --git a/source/resource/biomes/format/components/atmosphere_identifier.json b/source/resource/biomes/format/components/atmosphere_identifier.json new file mode 100644 index 00000000..987345c1 --- /dev/null +++ b/source/resource/biomes/format/components/atmosphere_identifier.json @@ -0,0 +1,15 @@ +{ + "$id": "blockception.minecraft.resource.biomes.minecraft.atmosphere_identifier", + "title": "Atmosphere Identifier", + "description": "[INTERNAL - WORK IN PROGRESS] Set the atmosphere settings used during deferred rendering.\nBiomes without this component will have default atmosphere settings.", + "type": "object", + "additionalProperties": false, + "required": ["atmosphere_identifier"], + "properties": { + "atmosphere_identifier": { + "title": "Atmosphere Identifier", + "description": "Identifier of atmosphere definition to use", + "type": "string" + } + } +} diff --git a/source/resource/biomes/format/components/color_grading_identifier.json b/source/resource/biomes/format/components/color_grading_identifier.json new file mode 100644 index 00000000..2e27ac56 --- /dev/null +++ b/source/resource/biomes/format/components/color_grading_identifier.json @@ -0,0 +1,15 @@ +{ + "$id": "blockception.minecraft.resource.biomes.minecraft.color_grading_identifier", + "title": "Color Grading Identifier", + "description": "[INTERNAL - WORK IN PROGRESS] Set the color_grading settings used during deferred rendering.\nBiomes without this component will have default color_grading settings.", + "type": "object", + "additionalProperties": false, + "required": ["color_grading_identifier"], + "properties": { + "color_grading_identifier": { + "title": "Color Grading Identifier", + "description": "Identifier of color_grading definition to use", + "type": "string" + } + } +} diff --git a/source/resource/biomes/format/components/dry_foliage_color.json b/source/resource/biomes/format/components/dry_foliage_color.json new file mode 100644 index 00000000..8cfb96fd --- /dev/null +++ b/source/resource/biomes/format/components/dry_foliage_color.json @@ -0,0 +1,47 @@ +{ + "$id": "blockception.minecraft.resource.biomes.minecraft.dry_foliage_color", + "title": "Dry Foliage Color", + "description": "Set the dry foliage color used during rendering. Biomes without this component will have default dry foliage color behavior.", + "type": "object", + "additionalProperties": false, + "required": ["color"], + "properties": { + "color": { + "title": "Color", + "description": "RGB color of dry foliage", + "oneOf": [ + { + "type": "string", + "format": "colox-hex", + "default": "#FFFFFF" + }, + { + "type": "array", + "items": [ + { + "title": "Red", + "type": "integer", + "default": 0, + "minimum": 0, + "maximum": 255 + }, + { + "title": "Green", + "type": "integer", + "default": 0, + "minimum": 0, + "maximum": 255 + }, + { + "title": "Blue", + "type": "integer", + "default": 0, + "minimum": 0, + "maximum": 255 + } + ] + } + ] + } + } +} diff --git a/source/resource/biomes/format/components/lighting_identifier.json b/source/resource/biomes/format/components/lighting_identifier.json new file mode 100644 index 00000000..c9df4a7d --- /dev/null +++ b/source/resource/biomes/format/components/lighting_identifier.json @@ -0,0 +1,15 @@ +{ + "$id": "blockception.minecraft.resource.biomes.minecraft.lighting_identifier", + "title": "Lighting Identifier", + "description": "[INTERNAL - WORK IN PROGRESS] Set the lighting settings used during deferred rendering.\nBiomes without this component will have default lighting settings.", + "type": "object", + "additionalProperties": false, + "required": ["lighting_identifier"], + "properties": { + "lighting_identifier": { + "title": "Lighting Identifier", + "description": "Identifier of lighting definition to use", + "type": "string" + } + } +} diff --git a/source/resource/biomes/format/components/water_identifier.json b/source/resource/biomes/format/components/water_identifier.json new file mode 100644 index 00000000..45885f84 --- /dev/null +++ b/source/resource/biomes/format/components/water_identifier.json @@ -0,0 +1,15 @@ +{ + "$id": "blockception.minecraft.resource.biomes.minecraft.water_identifier", + "title": "Water Identifier", + "description": "[INTERNAL - WORK IN PROGRESS] Set the water settings used during deferred rendering.\nBiomes without this component will have default water settings.", + "type": "object", + "additionalProperties": false, + "required": ["water_identifier"], + "properties": { + "water_identifier": { + "title": "Water Identifier", + "description": "Identifier of water definition to use", + "type": "string" + } + } +} diff --git a/source/resource/biomes/format/minecraft.client_biome.json b/source/resource/biomes/format/minecraft.client_biome.json index fafb218c..30724044 100644 --- a/source/resource/biomes/format/minecraft.client_biome.json +++ b/source/resource/biomes/format/minecraft.client_biome.json @@ -15,12 +15,17 @@ "properties": { // Components "minecraft:ambient_sounds": { "$ref": "./components/ambient_sounds.json" }, + "minecraft:atmosphere_identifier": { "$ref": "./components/atmosphere_identifier.json" }, "minecraft:biome_music": { "$ref": "./components/biome_music.json" }, + "minecraft:color_grading_identifier": { "$ref": "./components/color_grading_identifier.json" }, + "minecraft:dry_foliage_color": { "$ref": "./components/dry_foliage_color.json" }, "minecraft:fog_appearance": { "$ref": "./components/fog_appearance.json" }, "minecraft:foliage_appearance": { "$ref": "./components/foliage_appearance.json" }, "minecraft:grass_appearance": { "$ref": "./components/grass_appearance.json" }, + "minecraft:lighting_identifier": { "$ref": "./components/lighting_identifier.json" }, "minecraft:sky_color": { "$ref": "./components/sky_color.json" }, - "minecraft:water_appearance": { "$ref": "./components/water_appearance.json" } + "minecraft:water_appearance": { "$ref": "./components/water_appearance.json" }, + "minecraft:water_identifier": { "$ref": "./components/water_identifier.json" } } } }, diff --git a/source/resource/sounds.json b/source/resource/sounds.json index bc1789d1..44ebd3c1 100644 --- a/source/resource/sounds.json +++ b/source/resource/sounds.json @@ -42,7 +42,7 @@ { "type": "object", "additionalProperties": false, - "required": ["sound"], + "required": [ "sound" ], "properties": { "volume": { "$ref": "#/definitions/volume" }, "sound": { "type": "string", "title": "Sound Event", "description": "The sound event described in sound_definitions.json" }, @@ -63,6 +63,38 @@ "title": "Events", "propertyNames": { "pattern": "[a-z\\._]+" }, "additionalProperties": { "$ref": "#/definitions/sound_event" } + }, + "variants": { + "title": "Variants", + "description": "Defines sound variants based on the runtime entity", + "type": "object", + "additionalProperties": false, + "properties": { + "key": { + "title": "Key", + "description": "Key returning the enum string for variants, can use any Molang expression resulting in a string.", + "type": "string" + }, + "map": { + "title": "Map", + "description": "Contains key-value pairs of a variant identifier and the sound events it overrides", + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": false, + "properties": { + "volume": { "$ref": "#/definitions/volume" }, + "pitch": { "$ref": "#/definitions/pitch" }, + "events": { + "type": "object", + "title": "Events", + "propertyNames": { "pattern": "[a-z\\._]+" }, + "additionalProperties": { "$ref": "#/definitions/sound_event" } + } + } + } + } + } } } } @@ -163,7 +195,7 @@ "events": { "type": "object", "title": "Events", - "propertyNames": { "enum": ["default", "fall", "step", "hit", "jump", "land"] }, + "propertyNames": { "enum": [ "default", "fall", "step", "hit", "jump", "land" ] }, "additionalProperties": { "title": "Sound Event", "description": "A single sound event definition.",