From b79f694f7a337b0f23a6a79216cf84cce40ad70e Mon Sep 17 00:00:00 2001 From: DaanV2 Date: Tue, 24 Oct 2023 21:58:11 +0200 Subject: [PATCH] Updating filters and behaviors --- source/behavior/entities/filters/filters.json | 7 ++ .../filters/filters/actor_health.json | 33 ++++++ .../filters/filters/all_slots_empty.json | 33 ++++++ .../filters/filters/any_slot_empty.json | 33 ++++++ .../filters/filters/in_overworld.json | 32 +++++ .../filters/filters/is_sneak_held.json | 31 +++++ .../filters/filters/taking_fire_damage.json | 32 +++++ .../filters/filters/target_distance.json | 26 ++++ .../filters/types/equipment_location.json | 8 ++ .../format/behaviors/delayed_attack.json | 6 + .../format/behaviors/melee_attack.json | 7 +- ...nearest_prioritized_attackable_target.json | 6 + .../behaviors/random_look_around_and_sit.json | 6 + .../behaviors/random_search_and_dig.json | 112 ++++++++++++++++++ .../format/behaviors/stomp_attack.json | 7 +- .../entities/format/behaviors/timer_flag.json | 31 +++++ .../behavior/entities/format/components.json | 4 + .../entities/format/components/breedable.json | 35 +++++- .../format/components/collision_box.json | 12 +- .../format/components/equip_item.json | 14 ++- .../format/components/projectile.json | 13 ++ .../format/components/shareables.json | 5 + .../entities/format/types/entity_types.json | 6 + .../render_controllers.json | 5 + source/resource/sounds/sound_definitions.json | 8 +- 25 files changed, 496 insertions(+), 16 deletions(-) create mode 100644 source/behavior/entities/filters/filters/actor_health.json create mode 100644 source/behavior/entities/filters/filters/all_slots_empty.json create mode 100644 source/behavior/entities/filters/filters/any_slot_empty.json create mode 100644 source/behavior/entities/filters/filters/in_overworld.json create mode 100644 source/behavior/entities/filters/filters/is_sneak_held.json create mode 100644 source/behavior/entities/filters/filters/taking_fire_damage.json create mode 100644 source/behavior/entities/filters/filters/target_distance.json create mode 100644 source/behavior/entities/filters/filters/types/equipment_location.json create mode 100644 source/behavior/entities/format/behaviors/random_search_and_dig.json create mode 100644 source/behavior/entities/format/behaviors/timer_flag.json diff --git a/source/behavior/entities/filters/filters.json b/source/behavior/entities/filters/filters.json index 5c4bd906..0e94aab8 100644 --- a/source/behavior/entities/filters/filters.json +++ b/source/behavior/entities/filters/filters.json @@ -80,6 +80,9 @@ } }, "allOf": [ + { "if": { "properties": { "test": { "const": "actor_health" } } }, "then": { "$ref": "./filters/actor_health.json" } }, + { "if": { "properties": { "test": { "const": "all_slots_empty" } } }, "then": { "$ref": "./filters/all_slots_empty.json" } }, + { "if": { "properties": { "test": { "const": "any_slots_empty" } } }, "then": { "$ref": "./filters/any_slots_empty.json" } }, { "if": { "properties": { "test": { "const": "bool_property" } } }, "then": { "$ref": "./filters/bool_property.json" } }, { "if": { "properties": { "test": { "const": "clock_time" } } }, "then": { "$ref": "./filters/clock_time.json" } }, { "if": { "properties": { "test": { "const": "distance_to_nearest_player" } } }, "then": { "$ref": "./filters/distance_to_nearest_player.json" } }, @@ -106,6 +109,7 @@ { "if": { "properties": { "test": { "const": "in_contact_with_water" } } }, "then": { "$ref": "./filters/in_contact_with_water.json" } }, { "if": { "properties": { "test": { "const": "in_lava" } } }, "then": { "$ref": "./filters/in_lava.json" } }, { "if": { "properties": { "test": { "const": "in_nether" } } }, "then": { "$ref": "./filters/in_nether.json" } }, + { "if": { "properties": { "test": { "const": "in_overworld" } } }, "then": { "$ref": "./filters/in_overworld.json" } }, { "if": { "properties": { "test": { "const": "in_water_or_rain" } } }, "then": { "$ref": "./filters/in_water_or_rain.json" } }, { "if": { "properties": { "test": { "const": "in_water" } } }, "then": { "$ref": "./filters/in_water.json" } }, { "if": { "properties": { "test": { "const": "inactivity_timer" } } }, "then": { "$ref": "./filters/inactivity_timer.json" } }, @@ -134,6 +138,7 @@ { "if": { "properties": { "test": { "const": "is_riding" } } }, "then": { "$ref": "./filters/is_riding.json" } }, { "if": { "properties": { "test": { "const": "is_skin_id" } } }, "then": { "$ref": "./filters/is_skin_id.json" } }, { "if": { "properties": { "test": { "const": "is_sleeping" } } }, "then": { "$ref": "./filters/is_sleeping.json" } }, + { "if": { "properties": { "test": { "const": "is_sneak_held" } } }, "then": { "$ref": "./filters/is_sneak_held.json" } }, { "if": { "properties": { "test": { "const": "is_sneaking" } } }, "then": { "$ref": "./filters/is_sneaking.json" } }, { "if": { "properties": { "test": { "const": "is_snow_covered" } } }, "then": { "$ref": "./filters/is_snow_covered.json" } }, { "if": { "properties": { "test": { "const": "is_target" } } }, "then": { "$ref": "./filters/is_target.json" } }, @@ -152,6 +157,8 @@ { "if": { "properties": { "test": { "const": "random_chance" } } }, "then": { "$ref": "./filters/random_chance.json" } }, { "if": { "properties": { "test": { "const": "rider_count" } } }, "then": { "$ref": "./filters/rider_count.json" } }, { "if": { "properties": { "test": { "const": "surface_mob" } } }, "then": { "$ref": "./filters/surface_mob.json" } }, + { "if": { "properties": { "test": { "const": "taking_fire_damage" } } }, "then": { "$ref": "./filters/taking_fire_damage.json" } }, + { "if": { "properties": { "test": { "const": "target_distance" } } }, "then": { "$ref": "./filters/target_distance.json" } }, { "if": { "properties": { "test": { "const": "trusts" } } }, "then": { "$ref": "./filters/trusts.json" } }, { "if": { "properties": { "test": { "const": "weather_at_position" } } }, "then": { "$ref": "./filters/weather_at_position.json" } }, { "if": { "properties": { "test": { "const": "weather" } } }, "then": { "$ref": "./filters/weather.json" } }, diff --git a/source/behavior/entities/filters/filters/actor_health.json b/source/behavior/entities/filters/filters/actor_health.json new file mode 100644 index 00000000..eec15080 --- /dev/null +++ b/source/behavior/entities/filters/filters/actor_health.json @@ -0,0 +1,33 @@ +{ + "$id": "blockception.minecraft.behavior.entities.filters.actor_health", + "type": "object", + "title": "Actor Health", + "description": "Tests the health of the subject.", + "required": ["value"], + "examples": [{ "test": "actor_health", "value": 10 }], + "properties": { + "test": { + "type": "string", + "title": "Test Property", + "description": "Tests the health of the subject." + }, + "operator": { + "$ref": "./types/operator.json", + "description": "(Optional) The comparison to apply with `value`.", + "default": "equals", + "title": "Operator" + }, + "subject": { + "$ref": "./types/subject.json", + "description": "(Optional) The subject of this filter test.", + "default": "self", + "title": "Subject" + }, + "value": { + "type": "integer", + "description": "(Required) A integer value.", + "title": "Value", + "examples": [0, 1] + } + } +} diff --git a/source/behavior/entities/filters/filters/all_slots_empty.json b/source/behavior/entities/filters/filters/all_slots_empty.json new file mode 100644 index 00000000..739b48c1 --- /dev/null +++ b/source/behavior/entities/filters/filters/all_slots_empty.json @@ -0,0 +1,33 @@ +{ + "$id": "blockception.minecraft.behavior.entities.filters.all_slots_empty", + "type": "object", + "title": "All Slots Empty", + "description": "Returns true when the designated equipment location for the subject entity is completely empty.", + "required": ["value"], + "examples": [{ "test": "all_slots_empty", "subject": "self", "operator": "equals", "value": "any" }, { "test": "all_slots_empty" }], + "properties": { + "test": { + "type": "string", + "title": "Test Property", + "description": "Returns true when the designated equipment location for the subject entity is completely empty." + }, + "operator": { + "$ref": "./types/operator.json", + "description": "(Optional) The comparison to apply with `value`.", + "default": "equals", + "title": "Operator" + }, + "subject": { + "$ref": "./types/subject.json", + "description": "(Optional) The subject of this filter test.", + "default": "self", + "title": "Subject" + }, + "value": { + "title": "Value", + "description": "The equipment location to test.", + "type": "integer", + "$ref": "./types/equipment_location.json" + } + } +} diff --git a/source/behavior/entities/filters/filters/any_slot_empty.json b/source/behavior/entities/filters/filters/any_slot_empty.json new file mode 100644 index 00000000..110d654f --- /dev/null +++ b/source/behavior/entities/filters/filters/any_slot_empty.json @@ -0,0 +1,33 @@ +{ + "$id": "blockception.minecraft.behavior.entities.filters.any_slots_empty", + "type": "object", + "title": "Any Slots Empty", + "description": "Returns true when the designated equipment location for the subject entity has any empty slot.", + "required": ["value"], + "examples": [{ "test": "any_slots_empty", "subject": "self", "operator": "equals", "value": "any" }, { "test": "Any_slots_empty" }], + "properties": { + "test": { + "type": "string", + "title": "Test Property", + "description": "Returns true when the designated equipment location for the subject entity has any empty slot." + }, + "operator": { + "$ref": "./types/operator.json", + "description": "(Optional) The comparison to apply with `value`.", + "default": "equals", + "title": "Operator" + }, + "subject": { + "$ref": "./types/subject.json", + "description": "(Optional) The subject of this filter test.", + "default": "self", + "title": "Subject" + }, + "value": { + "title": "Value", + "description": "The equipment location to test.", + "type": "integer", + "$ref": "./types/equipment_location.json" + } + } +} diff --git a/source/behavior/entities/filters/filters/in_overworld.json b/source/behavior/entities/filters/filters/in_overworld.json new file mode 100644 index 00000000..5b6126d0 --- /dev/null +++ b/source/behavior/entities/filters/filters/in_overworld.json @@ -0,0 +1,32 @@ +{ + "$id": "blockception.minecraft.behavior.entities.filters.in_overworld", + "type": "object", + "title": "In Overworld", + "description": "Returns true when the subject entity is in Overworld.", + "properties": { + "test": { + "type": "string", + "title": "Test", + "description": "The test property." + }, + "operator": { + "$ref": "./types/operator.json" + }, + "subject": { + "$ref": "./types/subject.json" + }, + "value": { + "description": "True or false.", + "type": "boolean", + "default": true, + "title": "Value" + } + }, + "examples": [ + { + "test": "in_overworld", + "value": true + }, + { "test": "in_overworld" } + ] +} diff --git a/source/behavior/entities/filters/filters/is_sneak_held.json b/source/behavior/entities/filters/filters/is_sneak_held.json new file mode 100644 index 00000000..6f9970be --- /dev/null +++ b/source/behavior/entities/filters/filters/is_sneak_held.json @@ -0,0 +1,31 @@ +{ + "$id": "blockception.minecraft.behavior.entities.filters.is_sneak_held", + "type": "object", + "title": "Is Sneak Held", + "description": "Returns true if the subject entity has the sneak input held.", + "properties": { + "test": { + "type": "string", + "title": "Test Property", + "description": "The test property." + }, + "operator": { + "$ref": "./types/operator.json" + }, + "subject": { + "$ref": "./types/subject.json" + }, + "value": { + "title": "Value", + "description": "True or false.", + "type": "boolean", + "default": true + } + }, + "examples": [ + { + "test": "is_sneak_held", + "value": true + } + ] +} diff --git a/source/behavior/entities/filters/filters/taking_fire_damage.json b/source/behavior/entities/filters/filters/taking_fire_damage.json new file mode 100644 index 00000000..d40e2594 --- /dev/null +++ b/source/behavior/entities/filters/filters/taking_fire_damage.json @@ -0,0 +1,32 @@ +{ + "$id": "blockception.minecraft.behavior.entities.filters.taking_fire_damage", + "type": "object", + "title": "Taking Fire Damage", + "description": "Tests if the subject is taking fire damage. Requires the damage_sensor component", + "properties": { + "test": { + "type": "string", + "title": "Test", + "description": "Tests if the subject is taking fire damage. Requires the damage_sensor component" + }, + "operator": { + "$ref": "./types/operator.json" + }, + "subject": { + "$ref": "./types/subject.json" + }, + "value": { + "description": "True or false.", + "type": "boolean", + "default": true, + "title": "Value" + } + }, + "examples": [ + { + "test": "taking_fire_damage", + "value": true + }, + { "test": "taking_fire_damage" } + ] +} diff --git a/source/behavior/entities/filters/filters/target_distance.json b/source/behavior/entities/filters/filters/target_distance.json new file mode 100644 index 00000000..22a05eb0 --- /dev/null +++ b/source/behavior/entities/filters/filters/target_distance.json @@ -0,0 +1,26 @@ +{ + "$id": "blockception.minecraft.behavior.entities.filters.target_distance", + "type": "object", + "title": "Target Distance", + "description": "Tests the distance between the calling entity and its target.", + "required": ["value"], + "properties": { + "test": { + "type": "string", + "title": "Test", + "description": "The test property." + }, + "operator": { + "$ref": "./types/operator.json" + }, + "subject": { + "$ref": "./types/subject.json" + }, + "value": { + "description": "(Required) A floating point value.", + "type": "number", + "default": true, + "title": "Value" + } + } +} diff --git a/source/behavior/entities/filters/filters/types/equipment_location.json b/source/behavior/entities/filters/filters/types/equipment_location.json new file mode 100644 index 00000000..1e29ecf7 --- /dev/null +++ b/source/behavior/entities/filters/filters/types/equipment_location.json @@ -0,0 +1,8 @@ +{ + "$id": "blockception.minecraft.behavior.entities.filters.equipment_location", + "title": "Equipment Location", + "type": "string", + "description": "The equipment location to test.", + "default": "self", + "enum": ["any", "armor", "feet", "hand", "head", "inventory", "leg", "torse"] +} diff --git a/source/behavior/entities/format/behaviors/delayed_attack.json b/source/behavior/entities/format/behaviors/delayed_attack.json index 5ad483f3..7c417995 100644 --- a/source/behavior/entities/format/behaviors/delayed_attack.json +++ b/source/behavior/entities/format/behaviors/delayed_attack.json @@ -25,6 +25,12 @@ "default": "N/A", "description": "Defines the entity types this entity will attack." }, + "can_spread_on_fire": { + "title": "Can Spread On Fire", + "type": "boolean", + "default": false, + "description": "If the entity is on fire, this allows the entity's target to catch on fire after being hi" + }, "cooldown_time": { "title": "Cooldown Time", "type": "number", diff --git a/source/behavior/entities/format/behaviors/melee_attack.json b/source/behavior/entities/format/behaviors/melee_attack.json index 69de1394..6c572f22 100644 --- a/source/behavior/entities/format/behaviors/melee_attack.json +++ b/source/behavior/entities/format/behaviors/melee_attack.json @@ -12,7 +12,6 @@ "speed_multiplier": { "$ref": "./types/speed_multiplier.json" }, - "attack_once": { "title": "Attack Once", "type": "boolean", @@ -25,6 +24,12 @@ "default": "N/A", "description": "Defines the entity types this entity will attack." }, + "can_spread_on_fire": { + "title": "Can Spread On Fire", + "type": "boolean", + "default": false, + "description": "If the entity is on fire, this allows the entity's target to catch on fire after being hi" + }, "cooldown_time": { "title": "Cooldown Time", "type": "number", diff --git a/source/behavior/entities/format/behaviors/nearest_prioritized_attackable_target.json b/source/behavior/entities/format/behaviors/nearest_prioritized_attackable_target.json index caa8f914..bf7d07b3 100644 --- a/source/behavior/entities/format/behaviors/nearest_prioritized_attackable_target.json +++ b/source/behavior/entities/format/behaviors/nearest_prioritized_attackable_target.json @@ -19,6 +19,12 @@ "description": "Time in seconds before selecting a target.", "title": "Attack Interval" }, + "cooldown": { + "title": "Cooldown", + "description": "The amount of time in seconds that the mob has to wait before selecting a target of the same type again", + "default": 0.0, + "type": "number" + }, "must_reach": { "type": "boolean", "default": false, diff --git a/source/behavior/entities/format/behaviors/random_look_around_and_sit.json b/source/behavior/entities/format/behaviors/random_look_around_and_sit.json index b67fec8c..ae819e34 100644 --- a/source/behavior/entities/format/behaviors/random_look_around_and_sit.json +++ b/source/behavior/entities/format/behaviors/random_look_around_and_sit.json @@ -14,6 +14,12 @@ "default": false, "description": "If the goal should continue to be used as long as the mob is leashed." }, + "continue_sitting_on_reload": { + "title": "Continue Sitting On Reload", + "type": "boolean", + "default": false, + "description": "The mob will stay sitting on reload." + }, "max_angle_of_view_horizontal": { "title": "Max Angle Of View Horizontal", "type": "number", diff --git a/source/behavior/entities/format/behaviors/random_search_and_dig.json b/source/behavior/entities/format/behaviors/random_search_and_dig.json new file mode 100644 index 00000000..eed6f128 --- /dev/null +++ b/source/behavior/entities/format/behaviors/random_search_and_dig.json @@ -0,0 +1,112 @@ +{ + "$id": "blockception.minecraft.behavior.entities.minecraft.behavior.random_search_and_dig", + "additionalProperties": false, + "description": "Allows this entity to locate a random target block that it can path find to. Once found, the entity will move towards it and dig up an item.", + "type": "object", + "title": "Random Look Around", + "required": [], + "properties": { + "priority": { "$ref": "types/priority.json" }, + "speed_multiplier": { "$ref": "types/speed_multiplier.json" }, + + "cooldown_range": { + "title": "Cooldown Range", + "default": [0.0, 0.0], + "description": "Goal cooldown range in seconds.", + "$ref": "../../../../general/vectors/number2.json" + }, + "digging_duration_range": { + "title": "Digging Duration Range", + + "$ref": "../../../../general/vectors/number2.json", + "default": [0.0, 0.0], + "description": "Digging duration in seconds." + }, + "find_valid_position_retries": { + "title": "Find Valid Position Retries", + "type": "number", + "default": 0.0, + "description": "Amount of retries to find a valid target position within search range." + }, + "goal_radius": { + "title": "Goal Radius", + "type": "number", + "default": 1500000, + "description": "Distance in blocks within the entity to considers it has reached it's target position." + }, + "item_table": { + "title": "Item Table", + "type": "string", + "default": "", + "description": "File path relative to the resource pack root for items to spawn list (loot table format)." + }, + "on_digging_start": { + "title": "On Digging Start", + "$ref": "../types/trigger.json", + "description": "Event to run when the goal ends searching has begins digging." + }, + "on_fail_during_digging": { + "title": "On Fail During Digging", + "$ref": "../types/trigger.json", + "description": "Event to run when the goal failed while in digging state." + }, + "on_fail_during_searching": { + "title": "On Fail During Searching", + "$ref": "../types/trigger.json", + "description": "Event to run when the goal failed while in searching state." + }, + "on_item_found": { + "title": "On Item Found", + "$ref": "../types/trigger.json", + "description": "Event to run when the goal find a item." + }, + "on_searching_start": { + "title": "On Searching Start", + "$ref": "../types/trigger.json", + "description": "Event to run when the goal starts searching." + }, + "on_success": { + "title": "On Success", + "$ref": "../types/trigger.json", + "description": "Event to run when searching and digging has ended." + }, + "search_range_xz": { + "title": "Search Range XZ", + "type": "number", + "default": 0.0, + "description": "Width and length of the volume around the entity used to find a valid target position" + }, + "search_range_y": { + "title": "Search Range Y", + "type": "number", + "default": 0.0, + "description": "Height of the volume around the entity used to find a valid target position" + }, + "spawn_item_after_seconds": { + "title": "Spawn Item After Seconds", + "type": "number", + "default": 0.0, + "description": "Digging duration before spawning item in seconds." + }, + "spawn_item_pos_offset": { + "title": "Spawn Item Pos Offset", + "type": "number", + "default": 0.0, + "description": "Distance to offset the item's spawn location in the direction the mob is facing." + }, + "target_blocks": { + "title": "Target Blocks", + "type": "array", + "description": "List of target block types the goal will look to dig on. Overrides the default list.", + "items": { + "$ref": "../../../../general/block/reference.json" + } + }, + "target_dig_position_offset": { + "title": "Target Dig Position Offset", + "type": "number", + "default": 2250000, + "description": "Dig target position offset from the feet position of the mob in their facing direction." + } + } +} diff --git a/source/behavior/entities/format/behaviors/stomp_attack.json b/source/behavior/entities/format/behaviors/stomp_attack.json index dac59e04..7e69778f 100644 --- a/source/behavior/entities/format/behaviors/stomp_attack.json +++ b/source/behavior/entities/format/behaviors/stomp_attack.json @@ -8,7 +8,6 @@ "properties": { "priority": { "$ref": "types/priority.json" }, "speed_multiplier": { "$ref": "types/speed_multiplier.json" }, - "attack_once": { "title": "Attack Once", "type": "boolean", @@ -21,6 +20,12 @@ "default": "N/A", "description": "Defines the entity types this entity will attack." }, + "can_spread_on_fire": { + "title": "Can Spread On Fire", + "type": "boolean", + "default": false, + "description": "If the entity is on fire, this allows the entity's target to catch on fire after being hi" + }, "cooldown_time": { "title": "Cooldown Time", "type": "number", diff --git a/source/behavior/entities/format/behaviors/timer_flag.json b/source/behavior/entities/format/behaviors/timer_flag.json new file mode 100644 index 00000000..09ea4675 --- /dev/null +++ b/source/behavior/entities/format/behaviors/timer_flag.json @@ -0,0 +1,31 @@ +{ + "$id": "blockception.minecraft.behavior.entities.minecraft.behavior.timer_flag", + "title": "Timer Flag", + "description": "Fires an event when this behavior starts, then waits for a duration before stopping. When stopping due to that timeout or due to being interrupted by another behavior, fires another event. query.timer_flag_ will return 1.0 on both the client and server when this behavior is running, and 0.0 otherwise.", + "type": "object", + "additionalProperties": false, + "properties": { + "cooldown_range": { + "title": "Cooldown Range", + "$ref": "../../../../general/vectors/number2.json", + "default": [10.0, 10.0], + "description": "Goal cooldown range in seconds." + }, + "duration_range": { + "title": "Duration Range", + "$ref": "../../../../general/vectors/number2.json", + "default": [2.0, 2.0], + "description": "Goal duration range in seconds." + }, + "on_end": { + "title": "On End", + "$ref": "../types/trigger.json", + "description": "Event to run when the goal ends." + }, + "on_start": { + "title": "On Start", + "$ref": "../types/trigger.json", + "description": "Event to run when the goal starts." + } + } +} diff --git a/source/behavior/entities/format/components.json b/source/behavior/entities/format/components.json index 5b8ee839..f3036d9d 100644 --- a/source/behavior/entities/format/components.json +++ b/source/behavior/entities/format/components.json @@ -348,6 +348,10 @@ "minecraft:behavior.take_flower": { "$ref": "./behaviors/take_flower.json" }, "minecraft:behavior.target_when_pushed": { "$ref": "./behaviors/target_when_pushed.json" }, "minecraft:behavior.tempt": { "$ref": "./behaviors/tempt.json" }, + "minecraft:behavior.timer_flag_1": { "$ref": "./behaviors/timer_flag.json" }, + "minecraft:behavior.timer_flag_2": { "$ref": "./behaviors/timer_flag.json" }, + "minecraft:behavior.timer_flag_3": { "$ref": "./behaviors/timer_flag.json" }, + "minecraft:behavior.random_search_and_dig": { "$ref": "./behaviors/random_search_and_dig.json" }, "minecraft:behavior.trade_interest": { "$ref": "./behaviors/trade_interest.json" }, "minecraft:behavior.trade_with_player": { "$ref": "./behaviors/trade_with_player.json" }, "minecraft:behavior.vex_copy_owner_target": { "$ref": "./behaviors/vex_copy_owner_target.json" }, diff --git a/source/behavior/entities/format/components/breedable.json b/source/behavior/entities/format/components/breedable.json index 097de90d..e1c691b7 100644 --- a/source/behavior/entities/format/components/breedable.json +++ b/source/behavior/entities/format/components/breedable.json @@ -75,7 +75,7 @@ "title": "Allow Sitting" }, "blend_attributes": { - "description": "If true, the entities will blend their attributes in the offspring after they breed. For example, horses blend their health, movement, and jump_strength in their offspring.", + "description": "If true, the entities will blend their attributes in the offspring after they breed.", "type": "boolean", "default": true, "title": "Blend Attributes" @@ -123,6 +123,12 @@ } ] }, + "causes_pregnancy": { + "type": "boolean", + "default": false, + "description": "If true, the entity will become pregnant instead of spawning a baby.", + "title": "Causes Pregnancy" + }, "deny_parents_variant": { "type": "object", "description": "Determines how likely the baby of parents with the same variant will deny that variant and take a random variant within the given range instead.", @@ -210,11 +216,28 @@ }, "title": "Mutation Factor" }, - "causes_pregnancy": { - "type": "boolean", - "default": false, - "description": "If true, the entity will become pregnant instead of spawning a baby.", - "title": "Causes Pregnancy" + "mutation_strategy": { + "title": "Mutation Strategy", + "type": "string", + "default": "none", + "description": "Strategy used for mutating variants and extra variants for offspring. Current valid alternatives are 'random' and 'none'." + }, + "parent_centric_attribute_blending": { + "title": "Parent Centric Attribute Blending", + "type": "array", + "description": "[EXPERIMENTAL] List of attributes that should benefit from parent centric attribute blending. For example, horses blend their health, movement, and jump_strength in their offspring." + }, + "random_extra_variant_mutation_interval": { + "title": "Random Extra Variant Mutation Interval", + "default": 0, + "$ref": "../../../../general/vectors/number2.json", + "description": "Range used to determine random extra variant." + }, + "random_variant_mutation_interval": { + "title": "Random Variant Mutation Interval", + "default": 0, + "$ref": "../../../../general/vectors/number2.json", + "description": "Range used to determine random variant." }, "inherit_tamed": { "type": "boolean", diff --git a/source/behavior/entities/format/components/collision_box.json b/source/behavior/entities/format/components/collision_box.json index 564b54f8..01970fe7 100644 --- a/source/behavior/entities/format/components/collision_box.json +++ b/source/behavior/entities/format/components/collision_box.json @@ -7,16 +7,16 @@ "required": [], "properties": { "height": { + "title": "Height", "type": "number", - "default": 1, - "description": "Height of the collision box in blocks. A negative value will be assumed to be 0", - "title": "Height" + "default": 1.0, + "description": "Height of the collision box in blocks. A negative value will be assumed to be 0." }, "width": { + "title": "Width", "type": "number", - "default": 1, - "description": "Width and Depth of the collision box in blocks. A negative value will be assumed to be 0", - "title": "Width" + "default": 1.0, + "description": "Width of the collision box in blocks. A negative value will be assumed to be 0." } }, "examples": [ diff --git a/source/behavior/entities/format/components/equip_item.json b/source/behavior/entities/format/components/equip_item.json index 072efbd1..52b1851c 100644 --- a/source/behavior/entities/format/components/equip_item.json +++ b/source/behavior/entities/format/components/equip_item.json @@ -4,5 +4,17 @@ "title": "Equip Item", "description": "The entity puts on the desired equipment.", "additionalProperties": false, - "properties": {} + "properties": { + "excluded_items": { + "title": "Excluded Items", + "type": "array", + "description": "List of items that the entity should not equip.", + "items": { + "type": "string", + "$ref": "../../../../../general/item/descriptor.json", + "description": "Item that the entity should not equip.", + "title": "Excluded Items" + } + } + } } diff --git a/source/behavior/entities/format/components/projectile.json b/source/behavior/entities/format/components/projectile.json index 912fa803..c34ffb21 100644 --- a/source/behavior/entities/format/components/projectile.json +++ b/source/behavior/entities/format/components/projectile.json @@ -131,6 +131,19 @@ "description": "Defines the behaviors that may execute on a projectile's hit, including impact damage, impact effect, and stuck in ground. See more on these parameters below.", "title": "On Hit", "properties": { + "arrow_effect": { + "title": "Arrow Effect", + "type": "object", + "description": "The target receives a mob effect. See the table below for all arrow_effect parameters.", + "additionalProperties": false, + "properties": { + "apply_effect_to_blocking_targets": { + "type": "boolean", + "title": "Apply Effect To Blocking Targets", + "description": "If true, the effect will be applied to blocking targets." + } + } + }, "catch_fire": { "title": "Catch Fire", "type": "boolean", diff --git a/source/behavior/entities/format/components/shareables.json b/source/behavior/entities/format/components/shareables.json index e10ae71d..9003952d 100644 --- a/source/behavior/entities/format/components/shareables.json +++ b/source/behavior/entities/format/components/shareables.json @@ -106,6 +106,11 @@ } } } + }, + "singular_pickup": { + "type": "boolean", + "description": "Determines whether the mob can only pickup one item at a time.", + "title": "Singular Pickup" } }, "examples": [ diff --git a/source/behavior/entities/format/types/entity_types.json b/source/behavior/entities/format/types/entity_types.json index b0465b8d..24dc35fc 100644 --- a/source/behavior/entities/format/types/entity_types.json +++ b/source/behavior/entities/format/types/entity_types.json @@ -9,6 +9,12 @@ "additionalProperties": false, "properties": { "filters": { "$ref": "../../filters/filters.json" }, + "cooldown": { + "title": "Cooldown", + "description": "The amount of time in seconds that the mob has to wait before selecting a target of the same type again", + "default": 0.0, + "type": "number" + }, "max_dist": { "type": "number", "description": "Maximum distance this mob can be away to be a valid choice.", diff --git a/source/resource/render_controllers/render_controllers.json b/source/resource/render_controllers/render_controllers.json index ff2ff7fb..a40837a1 100644 --- a/source/resource/render_controllers/render_controllers.json +++ b/source/resource/render_controllers/render_controllers.json @@ -190,6 +190,11 @@ "additionalProperties": { "oneOf": [{ "type": "string" }, { "type": "boolean" }, { "type": "number" }] } } }, + "rebuild_animation_matrices": { + "type": "boolean", + "description": "Whenever or not to rebuild the animation matrices.", + "title": "Rebuild Animation Matrices" + }, "textures": { "title": "Textures", "description": "The texture to apply, multiple texture can be used as to create an overlay effect, a specific material is required though.", diff --git a/source/resource/sounds/sound_definitions.json b/source/resource/sounds/sound_definitions.json index b37156df..20170c5b 100644 --- a/source/resource/sounds/sound_definitions.json +++ b/source/resource/sounds/sound_definitions.json @@ -87,7 +87,13 @@ "max_distance": { "title": "Max Distance", "description": "UNDOCUMENTED.", - "type": "number", + "type": ["number", "null"], + "minimum": 0 + }, + "min_distance": { + "title": "Min Distance", + "description": "UNDOCUMENTED.", + "type": ["number", "null"], "minimum": 0 } }