diff --git a/.vscode/easy.code-snippets b/.vscode/easy.code-snippets index da46af76a..797c08044 100644 --- a/.vscode/easy.code-snippets +++ b/.vscode/easy.code-snippets @@ -1,7 +1,7 @@ { "speed_multiplier": { "prefix": "snippet.speed_multiplier", - "body": ["\"priority\": { \"$ref\": \"types/base_priority.json\" },", "\"speed_multiplier\": { \"$ref\": \"types/base_speed_multiplier.json\" },"] + "body": [ "\"priority\": { \"$ref\": \"types/base_priority.json\" },", "\"speed_multiplier\": { \"$ref\": \"types/base_speed_multiplier.json\" }," ] }, "priority": { "prefix": "snippet.priority", @@ -22,5 +22,9 @@ "string": { "prefix": "json.string", "body": "\"title\": \"\",\n\"description\": \"\",\n\"type\": \"string\"" + }, + "boolean": { + "prefix": "json.boolean", + "body": "\"title\": \"\",\n\"description\": \"\",\n\"type\": \"boolean\",\n\"default\": false" } } diff --git a/source/behavior/blocks/format/components/redstone_conductivity.json b/source/behavior/blocks/format/components/redstone_conductivity.json index 15e1e1006..3fa8ef552 100644 --- a/source/behavior/blocks/format/components/redstone_conductivity.json +++ b/source/behavior/blocks/format/components/redstone_conductivity.json @@ -1,7 +1,7 @@ { "$id": "blockception.minecraft.behavior.blocks.minecraft.redstone_conductivity", "title": "Redstone Conductivity", - "description": "The basic redstone properties of a block; if the component is not provided the default values are used. Requires the Upcoming Creator Features experiment.", + "description": "The basic redstone properties of a block; if the component is not provided the default values are used.", "type": "object", "additionalProperties": false, "required": [ ], diff --git a/source/behavior/entities/format/components.json b/source/behavior/entities/format/components.json index 271b0dec7..10d1d71d3 100644 --- a/source/behavior/entities/format/components.json +++ b/source/behavior/entities/format/components.json @@ -108,7 +108,7 @@ "minecraft:knockback_resistance": { "$ref": "./components/attribute.json" }, "minecraft:lava_movement": { "$ref": "./components/attribute.json" }, "minecraft:leashable": { "$ref": "./components/leashable.json" }, - "minecraft:lookat": { "$ref": "./components/lookat.json" }, + "minecraft:looked_at": { "$ref": "./components/looked_at.json" }, "minecraft:loot": { "$ref": "./components/loot.json" }, "minecraft:luck": { "$ref": "./components/attribute.json" }, "minecraft:managed_wandering_trader": { "$ref": "./components/managed_wandering_trader.json" }, @@ -185,6 +185,7 @@ "minecraft:trade_table": { "$ref": "./components/trade_table.json" }, "minecraft:trail": { "$ref": "./components/trail.json" }, "minecraft:transformation": { "$ref": "./components/transformation.json" }, + "minecraft:transient": { "$ref": "./components/transient.json" }, "minecraft:trust": { "$ref": "./components/trust.json" }, "minecraft:trusting": { "$ref": "./components/trusting.json" }, "minecraft:type_family": { "$ref": "./components/type_family.json" }, diff --git a/source/behavior/entities/format/components/damage_sensor.json b/source/behavior/entities/format/components/damage_sensor.json index 39e5946e9..93aa68898 100644 --- a/source/behavior/entities/format/components/damage_sensor.json +++ b/source/behavior/entities/format/components/damage_sensor.json @@ -49,10 +49,20 @@ "title": "Damage Multiplier" }, "deals_damage": { - "type": "boolean", - "default": true, - "description": "If true, the damage dealt to the entity will take away health from it, set to false to make the entity ignore that damage.", - "title": "Deals Damage" + "anyOf": [ + { + "type": "boolean", + "default": true, + "description": "If true, the damage dealt to the entity will take away health from it, set to false to make the entity ignore that damage.", + "title": "Deals Damage" + }, + { + "default": "yes", + "title": "Deals Damage", + "enum": [ "yes", "no", "no_but_side_effects_apply" ], + "description": "Defines how received damage affects the entity:\n- 'yes', received damage is applied to the entity.\n- 'no', received damage is not applied to the entity.\n- 'no_but_side_effects_apply', received damage is not applied to the entity, but the side effects of the attack are. This means that the attacker's weapon loses durability, enchantment side effects are applied, and so on." + } + ] }, "on_damage": { "type": "object", diff --git a/source/behavior/entities/format/components/explode.json b/source/behavior/entities/format/components/explode.json index 48eced44c..13e5bb59e 100644 --- a/source/behavior/entities/format/components/explode.json +++ b/source/behavior/entities/format/components/explode.json @@ -5,6 +5,12 @@ "additionalProperties": false, "description": "Defines how the entity explodes.", "properties": { + "allow_underwater": { + "title": "Allow Underwater", + "description": "If true, the explosion will affect blocks and entities under water.", + "type": "boolean", + "default": false + }, "breaks_blocks": { "type": "boolean", "default": true, @@ -17,6 +23,12 @@ "description": "If true, blocks in the explosion radius will be set on fire.", "title": "Causes Fire" }, + "damage_scaling": { + "title": "Damage Scaling", + "description": "A scale factor applied to the explosion's damage to entities. A value of 0 prevents the explosion from dealing any damage. Negative values cause the explosion to heal entities instead.", + "type": "number", + "default": 1.0 + }, "destroy_affected_by_griefing": { "type": "boolean", "default": false, @@ -56,16 +68,46 @@ "description": "If true, the fuse is already lit when this component is added to the entity.", "title": "Fuse Lit" }, + "knockback_scaling": { + "title": "Knockback Scaling", + "description": "A scale factor applied to the knockback force caused by the explosion.", + "type": "number", + "default": 1.0 + }, "max_resistance": { "type": "number", "description": "A blocks explosion resistance will be capped at this value when an explosion occurs.", "title": "Maximum Resistance" }, + "negates_fall_damage": { + "title": "Negates Fall Damage", + "description": "Defines whether the explosion should apply fall damage negation to Players above the point of collision.", + "type": "boolean", + "default": false + }, + "particle_effect": { + "title": "Particle Effect", + "description": "The name of the particle effect to use.", + "enum": ["explosion", "wind_burst", "breeze_wind_burst"], + "default": "explosion" + }, "power": { "type": "number", "default": 3, "description": "The radius of the explosion in blocks and the amount of damage the explosion deals.", "title": "Power" + }, + "sound_effect": { + "title": "Sound Effect", + "description": "The name of the sound effect played when the explosion triggers.", + "type": "string", + "default": "explode" + }, + "toggles_blocks": { + "title": "Toggles Blocks", + "description": "If true, the explosion will toggle blocks in the explosion radius.", + "type": "boolean", + "default": false } }, "examples": [ diff --git a/source/behavior/entities/format/components/home.json b/source/behavior/entities/format/components/home.json index a2b5dfd8c..63689c253 100644 --- a/source/behavior/entities/format/components/home.json +++ b/source/behavior/entities/format/components/home.json @@ -21,12 +21,18 @@ "type": "string", "$ref": "../../../../general/item/identifier.json" } + }, + "restriction_type": { + "title": "Restriction Type", + "description": "Defines how the the entity will be restricted to its home position. The possible values are:\n- 'none', which poses no restriction.\n- 'random_movement', which restricts randomized movement to be around the home position.\n- [Beta] 'all_movement', which restricts any kind of movement to be around the home position. However, entities that somehow got too far away from their home will always be able to move closer to it, if prompted to do so.", + "enum": [ "none", "random_movement", "all_movement" ], + "default": "none" } }, "examples": [ { "restriction_radius": -1, - "home_block_list": [] + "home_block_list": [ ] } ] } diff --git a/source/behavior/entities/format/components/lookat.json b/source/behavior/entities/format/components/lookat.json deleted file mode 100644 index 4357b6beb..000000000 --- a/source/behavior/entities/format/components/lookat.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "$id": "blockception.minecraft.behavior.entities.minecraft.lookat", - "description": "Defines the behavior when another entity looks at this entity.", - "type": "object", - "title": "Lookat", - "additionalProperties": false, - "properties": { - "allow_invulnerable": { - "type": "boolean", - "default": false, - "description": "If true, invulnerable entities (e.g. Players in creative mode) are considered valid targets.", - "title": "Allow Invulnerable" - }, - "filters": { - "$ref": "../../filters/filters.json", - "description": "Defines the entities that can trigger this component.", - "title": "Filters" - }, - "look_cooldown": { - "$ref": "../types/range_number_type.json", - "default": [0.0, 0.0], - "description": "The range for the random amount of time during which the entity is `cooling down` and won't get angered or look for a target.", - "title": "Look Cooldown" - }, - "look_event": { - "description": "The event identifier to run when the entities specified in filters look at this entity.", - "title": "Look Event", - "$ref": "../types/event_object.json" - }, - "search_radius": { - "type": "number", - "default": 10, - "description": "Maximum distance this entity will look for another entity looking at it.", - "title": "Search Radius" - }, - "set_target": { - "type": "boolean", - "default": true, - "description": "If true, this entity will set the attack target as the entity that looked at it.", - "title": "Set Target" - } - }, - "examples": [ - { - "allow_invulnerable": false, - "search_radius": 10, - "set_target": true - } - ] -} diff --git a/source/behavior/entities/format/components/looked_at.json b/source/behavior/entities/format/components/looked_at.json new file mode 100644 index 000000000..13f9b165d --- /dev/null +++ b/source/behavior/entities/format/components/looked_at.json @@ -0,0 +1,84 @@ +{ + "$id": "blockception.minecraft.behavior.entities.minecraft.looked_at", + "description": "Defines the behavior when another entity looks at this entity.", + "type": "object", + "title": "Looked At", + "additionalProperties": false, + "properties": { + "field_of_view": { + "type": "number", + "default": 26, + "description": "[Beta] Defines, in degrees, the width of the field of view for entities looking at the owner entity. If 'scale_fov_by_distance' is set to true, this value corresponds to the field of view at a distance of one block between the entities.", + "title": "Field Of View" + }, + "filters": { + "$ref": "../../filters/filters.json", + "description": "Defines the entities that can trigger this component.", + "title": "Filters" + }, + "find_players_only": { + "title": "Find Players Only", + "description": "[Beta] Limits the search to only the nearest Player that meets the specified \"filters\" rather than all nearby entities.", + "type": "boolean", + "default": false + }, + "line_of_sight_obstruction_type": { + "title": "Line Of Sight Obstruction Type", + "description": "[Beta] Defines the type of block shape used to check for line of sight obstructions.", + "type": "string", + "enum": [ "outline", "collision", "collision_for_camera" ], + "default": "collision" + }, + "look_at_locations": { + "title": "Look At Locations", + "description": "[Beta] A list of locations on the owner entity towards which line of sight checks are performed. At least one location must be unobstructed for the entity to be considered as looked at.", + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "enum": [ "head", "body", "feet" ] + } + }, + "looked_at_cooldown": { + "$ref": "../types/range_number_type.json", + "default": [ 0.0, 0.0 ], + "description": "The range for the random amount of time during which the entity is `cooling down` and won't get angered or look for a target.", + "title": "Look Cooldown" + }, + "looked_at_event": { + "description": "The event identifier to run when the entities specified in filters look at this entity.", + "title": "Looked At Event", + "$ref": "../types/event_object.json" + }, + "not_looked_at_event": { + "description": "[Beta] Defines the event to trigger when no entity is found looking at the owner entity.", + "title": "Not Looked At Event", + "$ref": "../types/event_object.json" + }, + "scale_fov_by_distance": { + "title": "Scale Fov By Distance", + "description": "[Beta] When true, the field of view narrows as the distance between the owner entity and the entity looking at it increases. This ensures that the width of the view cone remains somewhat constant towards the owner entity position, regardless of distance.", + "type": "boolean", + "default": false + }, + "search_radius": { + "type": "number", + "default": 10, + "description": "Maximum distance this entity will look for another entity looking at it.", + "title": "Search Radius" + }, + "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- [Beta] \"once_and_keep_scanning\", the first detected looking entity is set as target. Scanning and event emission continues.", + "type": "string", + "default": "once_and_stop_scanning", + "enum": [ "never", "once_and_stop_scanning", "once_and_keep_scanning" ] + } + }, + "examples": [ + { + "search_radius": 10, + "set_target": true + } + ] +} diff --git a/source/behavior/entities/format/components/projectile.json b/source/behavior/entities/format/components/projectile.json index c91765b5a..6f0a4ffcc 100644 --- a/source/behavior/entities/format/components/projectile.json +++ b/source/behavior/entities/format/components/projectile.json @@ -633,6 +633,12 @@ "description": "Determines the velocity of the projectile.", "title": "Power" }, + "reflect_immunity": { + "type": "number", + "default": 0, + "description": "During the specified time, in seconds, the projectile cannot be reflected by hitting it", + "title": "Reflect Immunity" + }, "reflect_on_hurt": { "type": "boolean", "default": false, diff --git a/source/behavior/entities/format/components/transient.json b/source/behavior/entities/format/components/transient.json new file mode 100644 index 000000000..1c87d6dd6 --- /dev/null +++ b/source/behavior/entities/format/components/transient.json @@ -0,0 +1,9 @@ +{ + "$id": "blockception.minecraft.behavior.entities.minecraft.transient", + "type": "object", + "title": "Transient", + "additionalProperties": false, + "description": "An entity with this component will NEVER persist, and forever disappear when unloaded.", + "required": [ ], + "properties": { } +} diff --git a/source/behavior/entities/format/events.json b/source/behavior/entities/format/events.json index bfd20b9e3..52fafca3b 100644 --- a/source/behavior/entities/format/events.json +++ b/source/behavior/entities/format/events.json @@ -10,7 +10,7 @@ "title": "Add Or Remove", "description": "The components groups to add or remove.", "type": "object", - "examples": [{ "component_groups": ["self:variant1"] }], + "examples": [ { "component_groups": [ "self:variant1" ] } ], "properties": { "component_groups": { "title": "Component Groups", @@ -23,23 +23,23 @@ "event_base": { "additionalProperties": false, "type": "object", - "examples": [{}, { "add": { "component_groups": [] } }, { "remove": { "component_groups": [] } }], + "examples": [ { }, { "add": { "component_groups": [ ] } }, { "remove": { "component_groups": [ ] } } ], "defaultSnippets": [ - { "label": "New Add Event", "body": { "add": { "component_groups": ["$1"] } } }, - { "label": "New Remove Event", "body": { "remove": { "component_groups": ["$1"] } } }, + { "label": "New Add Event", "body": { "add": { "component_groups": [ "$1" ] } } }, + { "label": "New Remove Event", "body": { "remove": { "component_groups": [ "$1" ] } } }, { "label": "New Random Event", "body": { "randomize": [ - { "add": { "component_groups": ["$1"] }, "weight": 1 }, - { "add": { "component_groups": ["$2"] }, "weight": 1 } + { "add": { "component_groups": [ "$1" ] }, "weight": 1 }, + { "add": { "component_groups": [ "$2" ] }, "weight": 1 } ] } }, { "label": "New Sequence Events", "body": { - "sequence": [{ "add": { "component_groups": ["$1"] } }, { "add": { "component_groups": ["$2"] } }] + "sequence": [ { "add": { "component_groups": [ "$1" ] } }, { "add": { "component_groups": [ "$2" ] } } ] } } ], @@ -68,7 +68,7 @@ "items": { "description": "Randomly selects one of the following items based upon their weight and the total weights.", "title": "Randomize", - "examples": [{ "add": { "component_groups": ["foo:example"] }, "weight": 1 }], + "examples": [ { "add": { "component_groups": [ "foo:example" ] }, "weight": 1 } ], "$ref": "#/definitions/weighted_event_base" } }, @@ -83,6 +83,26 @@ "$ref": "#/definitions/event_base" } }, + "execute_event_on_home_block": { + "title": "Execute Event On Home Block", + "description": "Allows the entity to execute an event on the block at its home position", + "type": "object", + "additionalProperties": false, + "properties": { + "event": { + "title": "Event", + "description": "The event to execute", + "type": "string" + } + } + }, + "reset_target": { + "title": "Reset Target", + "description": "Allows an entity to reset its target.", + "type": "object", + "additionalProperties": false, + "properties": { } + }, "emit_vibration": { "title": "Emit Vibration", "description": "UNDOCUMENTED", @@ -97,9 +117,9 @@ } }, "examples": [ - { "vibration": "shear"}, - { "vibration": "entity_act"}, - { "vibration": "entity_interact"} + { "vibration": "shear" }, + { "vibration": "entity_act" }, + { "vibration": "entity_interact" } ] }, "set_property": { @@ -108,9 +128,9 @@ "type": "object", "additionalProperties": { "title": "Property", - "type": ["string", "number", "integer", "boolean"], + "type": [ "string", "number", "integer", "boolean" ], "description": "The value to set the property to.", - "examples": [false, 0, 0.0, "math.random(0, 10)"] + "examples": [ false, 0, 0.0, "math.random(0, 10)" ] }, "examples": [ { "example:property": false }, @@ -130,14 +150,14 @@ { "type": "string", "pattern": "^[^/].*$", - "examples": ["say Hello World"] + "examples": [ "say Hello World" ] }, { "type": "array", "items": { "type": "string", "description": "The command to execute.", - "examples": ["say Hello World"], + "examples": [ "say Hello World" ], "pattern": "^[^/].*$" } } @@ -150,23 +170,23 @@ "weighted_event_base": { "additionalProperties": false, "type": "object", - "examples": [{}, { "add": { "component_groups": [] } }, { "remove": { "component_groups": [] } }], + "examples": [ { }, { "add": { "component_groups": [ ] } }, { "remove": { "component_groups": [ ] } } ], "defaultSnippets": [ - { "label": "New Add Event", "body": { "add": { "component_groups": ["$1"] } } }, - { "label": "New Remove Event", "body": { "remove": { "component_groups": ["$1"] } } }, + { "label": "New Add Event", "body": { "add": { "component_groups": [ "$1" ] } } }, + { "label": "New Remove Event", "body": { "remove": { "component_groups": [ "$1" ] } } }, { "label": "New Random Event", "body": { "randomize": [ - { "add": { "component_groups": ["$1"] }, "weight": 1 }, - { "add": { "component_groups": ["$2"] }, "weight": 1 } + { "add": { "component_groups": [ "$1" ] }, "weight": 1 }, + { "add": { "component_groups": [ "$2" ] }, "weight": 1 } ] } }, { "label": "New Sequence Events", "body": { - "sequence": [{ "add": { "component_groups": ["$1"] } }, { "add": { "component_groups": ["$2"] } }] + "sequence": [ { "add": { "component_groups": [ "$1" ] } }, { "add": { "component_groups": [ "$2" ] } } ] } } ], @@ -195,7 +215,7 @@ "items": { "description": "Randomly selects one of the following items based upon their weight and the total weights.", "title": "Randomize", - "examples": [{ "add": { "component_groups": ["foo:example"] }, "weight": 1 }], + "examples": [ { "add": { "component_groups": [ "foo:example" ] }, "weight": 1 } ], "$ref": "#/definitions/weighted_event_base" } }, @@ -224,9 +244,9 @@ } }, "examples": [ - { "vibration": "shear"}, - { "vibration": "entity_act"}, - { "vibration": "entity_interact"} + { "vibration": "shear" }, + { "vibration": "entity_act" }, + { "vibration": "entity_interact" } ] }, "set_property": { @@ -235,9 +255,9 @@ "type": "object", "additionalProperties": { "title": "Property", - "type": ["string", "number", "integer", "boolean"], + "type": [ "string", "number", "integer", "boolean" ], "description": "The value to set the property to.", - "examples": [false, 0, 0.0, "math.random(0, 10)"] + "examples": [ false, 0, 0.0, "math.random(0, 10)" ] }, "examples": [ { "example:property": false }, @@ -257,14 +277,14 @@ { "type": "string", "pattern": "^[^/].*$", - "examples": ["say Hello World"] + "examples": [ "say Hello World" ] }, { "type": "array", "items": { "type": "string", "description": "The command to execute.", - "examples": ["say Hello World"], + "examples": [ "say Hello World" ], "pattern": "^[^/].*$" } } diff --git a/source/behavior/features/features/minecraft.single_block_feature.json b/source/behavior/features/features/minecraft.single_block_feature.json index 0470c671c..6c8f7ba89 100644 --- a/source/behavior/features/features/minecraft.single_block_feature.json +++ b/source/behavior/features/features/minecraft.single_block_feature.json @@ -3,11 +3,11 @@ "description": "`minecraft:single_block_feature` places a single block in the world. The `may_place_on` and `may_replace` fields are allowlists which specify where the block can be placed. If these fields are omitted, the block can be placed anywhere. The block's internal survivability and placement rules can optionally be enforced with the `enforce_survivability_rules` and `enforce_placement_rules` fields. These rules are specified per-block and are typically designed to produce high quality gameplay or natural behavior. However, enabling this enforcement may make it harder to debug placement failures.\n Succeeds if: The block is successfully placed in the world.\n Fails if: The block fails to be placed.", "type": "object", "additionalProperties": false, - "required": ["description", "places_block", "enforce_placement_rules", "enforce_survivability_rules"], + "required": [ "description", "places_block", "enforce_placement_rules", "enforce_survivability_rules" ], "definitions": { "block_side": { "oneOf": [ - { "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/identifier.json" }, { "type": "array", "items": { "title": "Block", "description": "Reference to the block it may attach to.", "type": "string", "$ref": "../../../general/block/identifier.json" } } ] } @@ -17,10 +17,33 @@ "$ref": "../types/description.json" }, "places_block": { - "title": "Places Block", - "description": "Reference to the block to be placed.", - "type": "string", - "$ref": "../../../general/block/identifier.json" + "anyOf": [ + { + "title": "Places Block", + "description": "Reference to the block to be placed.", + "type": "string", + "$ref": "../../../general/block/identifier.json" + }, + { + "title": "Places Block", + "description": " Collection of weighted block references that will be placed.", + "type": "array", + "minItems": 1, + "items": { + "title": "Block", + "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": "Weight", + "description": "Random weight of this block. A higher number will increase the probability of this block to be picked during placement.", + "type": "number" + } + ] + } + } + ] }, "enforce_placement_rules": { "title": "Enforce Placement Rules", @@ -32,6 +55,11 @@ "description": "If true, enforce the block's canSurvive check.", "type": "boolean" }, + "randomize_rotation": { + "title": "Randomize Rotation", + "description": "If true, randomizes the block's cardinal orientation.", + "type": "boolean" + }, "may_attach_to": { "title": "May Attach To", "description": "The list of valid block and block faces the given block may attach to when being placed.", @@ -56,7 +84,25 @@ "east": { "title": "East", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "$ref": "#/definitions/block_side" }, "west": { "title": "West", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "$ref": "#/definitions/block_side" }, "all": { "title": "All", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "$ref": "#/definitions/block_side" }, - "sides": { "title": "Sides", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "$ref": "#/definitions/block_side" } + "sides": { "title": "Sides", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "$ref": "#/definitions/block_side" }, + "diagonal": { "title": "Diagonal", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "$ref": "#/definitions/block_side" } + } + }, + "may_not_attach_to": { + "title": "May Not Attach To", + "description": "Denylist which specifies where the block can't be placed.", + "type": "object", + "additionalProperties": false, + "properties": { + "top": { "title": "Top", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "$ref": "#/definitions/block_side" }, + "bottom": { "title": "Bottom", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "$ref": "#/definitions/block_side" }, + "north": { "title": "North", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "$ref": "#/definitions/block_side" }, + "south": { "title": "South", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "$ref": "#/definitions/block_side" }, + "east": { "title": "East", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "$ref": "#/definitions/block_side" }, + "west": { "title": "West", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "$ref": "#/definitions/block_side" }, + "all": { "title": "All", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "$ref": "#/definitions/block_side" }, + "sides": { "title": "Sides", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "$ref": "#/definitions/block_side" }, + "diagonal": { "title": "Diagonal", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "$ref": "#/definitions/block_side" } } }, "may_replace": { diff --git a/source/behavior/items/format/components/block_placer.json b/source/behavior/items/format/components/block_placer.json index 1149a7aab..c26f1e519 100644 --- a/source/behavior/items/format/components/block_placer.json +++ b/source/behavior/items/format/components/block_placer.json @@ -4,7 +4,7 @@ "description": "Planter item component. planter items are items that can be planted.", "type": "object", "additionalProperties": false, - "required": ["block"], + "required": [ "block" ], "definitions": { "use_on_item": { "type": "object", @@ -20,6 +20,12 @@ "title": "Use On", "type": "array", "items": { "$ref": "#/definitions/use_on_item" } + }, + "replace_block_item": { + "title": "Replace Block Item", + "description": "Allows you to specify that this item should replace the default item created for the data-driven block it places.", + "type": "boolean", + "default": false } } } diff --git a/source/behavior/items/format/components/bundle_interaction.json b/source/behavior/items/format/components/bundle_interaction.json index 6d509b796..67168195c 100644 --- a/source/behavior/items/format/components/bundle_interaction.json +++ b/source/behavior/items/format/components/bundle_interaction.json @@ -1,7 +1,7 @@ { "$id": "blockception.minecraft.behavior.items.minecraft:bundle_interaction", "title": "Bundle Interaction", - "description": "[EXPERIMENTAL] Adds bundle-specific interactions and tooltip to the item.", + "description": "Adds bundle-specific interactions and tooltip to the item.", "type": "object", "properties": { "num_viewable_slots": { diff --git a/source/behavior/items/format/components/storage_item.json b/source/behavior/items/format/components/storage_item.json index 97f668d9e..6b08f97a2 100644 --- a/source/behavior/items/format/components/storage_item.json +++ b/source/behavior/items/format/components/storage_item.json @@ -1,7 +1,7 @@ { "$id": "blockception.minecraft.behavior.items.minecraft:storage_item", "title": "Storage Item", - "description": "[EXPERIMENTAL] Storage Items can be used by other components to store other items within this item.", + "description": "Storage Items can be used by other components to store other items within this item.", "type": "object", "properties": { "allow_nested_storage_items": { diff --git a/source/behavior/loot_tables/conditions.json b/source/behavior/loot_tables/conditions.json index aca112c46..a8d87cc60 100644 --- a/source/behavior/loot_tables/conditions.json +++ b/source/behavior/loot_tables/conditions.json @@ -19,6 +19,10 @@ "if": { "properties": { "condition": { "type": "string", "const": "killed_by_player_or_pets" } } }, "then": { "$ref": "./conditions/killed_by_player_or_pets.json" } }, + { + "if": { "properties": { "condition": { "type": "string", "const": "killed_by_entity" } } }, + "then": { "$ref": "./conditions/killed_by_entity.json" } + }, { "if": { "properties": { "condition": { "type": "string", "const": "random_chance" } } }, "then": { "$ref": "./conditions/random_chance.json" } diff --git a/source/behavior/loot_tables/conditions/killed_by_entity.json b/source/behavior/loot_tables/conditions/killed_by_entity.json new file mode 100644 index 000000000..275f7310a --- /dev/null +++ b/source/behavior/loot_tables/conditions/killed_by_entity.json @@ -0,0 +1,15 @@ +{ + "$id": "blockception.minecraft.behavior.condition.killed_by_entity", + "type": "object", + "additionalProperties": false, + "description": "Returns the condition true if the actor of the loot table is killed by a specific entity type.", + "title": "Killed By Entity", + "properties": { + "condition": { "type": "string", "title": "Condition", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED" }, + "entity_type": { + "title": "Entity Type", + "description": "The entity type to match", + "type": "string" + } + } +} \ No newline at end of file