From c47fddee94608b81f9f32b0b7c818ffb39a07b8a Mon Sep 17 00:00:00 2001 From: meetcshah19 Date: Tue, 10 Aug 2021 03:53:18 +0530 Subject: [PATCH 1/6] Add luring behavior --- assets/behaviors/lure.behavior | 24 ++++++++++++++++++++++++ assets/prefabs/animals/sheepBase.prefab | 6 ++++++ 2 files changed, 30 insertions(+) create mode 100644 assets/behaviors/lure.behavior diff --git a/assets/behaviors/lure.behavior b/assets/behaviors/lure.behavior new file mode 100644 index 0000000..cc82913 --- /dev/null +++ b/assets/behaviors/lure.behavior @@ -0,0 +1,24 @@ +{ + dynamic: [ + { + guard: { + componentPresent: "Behaviors:FindNearbyPlayers", + values: ["N charactersWithinRange nonEmpty"], + child: { + sequence: [ + { sleep: {time: 0.1f }}, + check_luring_item_in_use, + followCharacter, + { lookup: {tree: "Behaviors:follow" }} + ] + } + } + }, + { + lookup: { + tree: "Behaviors:stray" + } + } + ] +} + diff --git a/assets/prefabs/animals/sheepBase.prefab b/assets/prefabs/animals/sheepBase.prefab index 46061e9..77cc239 100644 --- a/assets/prefabs/animals/sheepBase.prefab +++ b/assets/prefabs/animals/sheepBase.prefab @@ -87,5 +87,11 @@ "engine:debris", "engine:sensor" ] + }, + "Behavior": { + "tree": "WildAnimals:lure" + }, + "FindNearbyPlayers": { + "searchRadius": 8 } } From 8aa84a0c624cfa6fc30fb3c48c05c3ccc4c39cc0 Mon Sep 17 00:00:00 2001 From: meetcshah19 Date: Fri, 13 Aug 2021 19:36:33 +0530 Subject: [PATCH 2/6] add luring action --- .../actions/CheckLuringItemInUseAction.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/main/java/org/terasology/wildAnimals/actions/CheckLuringItemInUseAction.java diff --git a/src/main/java/org/terasology/wildAnimals/actions/CheckLuringItemInUseAction.java b/src/main/java/org/terasology/wildAnimals/actions/CheckLuringItemInUseAction.java new file mode 100644 index 0000000..1b3df8f --- /dev/null +++ b/src/main/java/org/terasology/wildAnimals/actions/CheckLuringItemInUseAction.java @@ -0,0 +1,39 @@ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 + +package org.terasology.wildAnimals.actions; + + +import org.terasology.behaviors.components.FindNearbyPlayersComponent; +import org.terasology.engine.entitySystem.entity.EntityRef; +import org.terasology.engine.logic.behavior.BehaviorAction; +import org.terasology.engine.logic.behavior.core.Actor; +import org.terasology.engine.logic.behavior.core.BaseAction; +import org.terasology.engine.logic.behavior.core.BehaviorState; +import org.terasology.engine.logic.characters.CharacterHeldItemComponent; +import org.terasology.engine.world.block.BlockUri; +import org.terasology.engine.world.block.items.BlockItemComponent; + +/** + * Behavior node that checks if the current held item can be used to lure + */ + +@BehaviorAction(name = "check_luring_item_in_use") +public class CheckLuringItemInUseAction extends BaseAction { + + public static final String LURING_ITEM = "CoreAssets:Grass"; + + @Override + public BehaviorState modify(Actor actor, BehaviorState behaviorState) { + FindNearbyPlayersComponent component = actor.getComponent(FindNearbyPlayersComponent.class); + EntityRef player = component.closestCharacter; + CharacterHeldItemComponent characterHeldItemComponent = player.getComponent(CharacterHeldItemComponent.class); + EntityRef heldItem = characterHeldItemComponent.selectedItem; + BlockItemComponent blockItemComponent = heldItem.getComponent(BlockItemComponent.class); + if (blockItemComponent != null && blockItemComponent.blockFamily.getURI().equals(new BlockUri(LURING_ITEM))) { + return BehaviorState.SUCCESS; + } + return BehaviorState.FAILURE; + } +} + From 41511ff67a42f11cd5bb639e9288942d84887d8a Mon Sep 17 00:00:00 2001 From: meetcshah19 Date: Mon, 23 Aug 2021 14:43:45 +0530 Subject: [PATCH 3/6] Change luring item to list --- .../wildAnimals/actions/CheckLuringItemInUseAction.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/terasology/wildAnimals/actions/CheckLuringItemInUseAction.java b/src/main/java/org/terasology/wildAnimals/actions/CheckLuringItemInUseAction.java index 1b3df8f..b2347f9 100644 --- a/src/main/java/org/terasology/wildAnimals/actions/CheckLuringItemInUseAction.java +++ b/src/main/java/org/terasology/wildAnimals/actions/CheckLuringItemInUseAction.java @@ -21,7 +21,7 @@ @BehaviorAction(name = "check_luring_item_in_use") public class CheckLuringItemInUseAction extends BaseAction { - public static final String LURING_ITEM = "CoreAssets:Grass"; + public static final String[] LURING_ITEMS = {"CoreAssets:Grass"}; @Override public BehaviorState modify(Actor actor, BehaviorState behaviorState) { @@ -30,8 +30,10 @@ public BehaviorState modify(Actor actor, BehaviorState behaviorState) { CharacterHeldItemComponent characterHeldItemComponent = player.getComponent(CharacterHeldItemComponent.class); EntityRef heldItem = characterHeldItemComponent.selectedItem; BlockItemComponent blockItemComponent = heldItem.getComponent(BlockItemComponent.class); - if (blockItemComponent != null && blockItemComponent.blockFamily.getURI().equals(new BlockUri(LURING_ITEM))) { - return BehaviorState.SUCCESS; + for (String item : LURING_ITEMS) { + if (blockItemComponent != null && blockItemComponent.blockFamily.getURI().equals(new BlockUri(item))) { + return BehaviorState.SUCCESS; + } } return BehaviorState.FAILURE; } From 3cb8316a4ba67d98444c015ebebddf6c4e8591d0 Mon Sep 17 00:00:00 2001 From: meetcshah19 Date: Mon, 23 Aug 2021 14:48:58 +0530 Subject: [PATCH 4/6] increase luring radius --- assets/prefabs/animals/sheepBase.prefab | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/prefabs/animals/sheepBase.prefab b/assets/prefabs/animals/sheepBase.prefab index 77cc239..9560903 100644 --- a/assets/prefabs/animals/sheepBase.prefab +++ b/assets/prefabs/animals/sheepBase.prefab @@ -92,6 +92,6 @@ "tree": "WildAnimals:lure" }, "FindNearbyPlayers": { - "searchRadius": 8 + "searchRadius": 12 } } From 409d0e6eae2f4c4658621b43e656fb35ea59b151 Mon Sep 17 00:00:00 2001 From: meetcshah19 Date: Mon, 30 Aug 2021 18:07:19 +0530 Subject: [PATCH 5/6] Add more luring items --- .../wildAnimals/actions/CheckLuringItemInUseAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/terasology/wildAnimals/actions/CheckLuringItemInUseAction.java b/src/main/java/org/terasology/wildAnimals/actions/CheckLuringItemInUseAction.java index b2347f9..329ce2f 100644 --- a/src/main/java/org/terasology/wildAnimals/actions/CheckLuringItemInUseAction.java +++ b/src/main/java/org/terasology/wildAnimals/actions/CheckLuringItemInUseAction.java @@ -21,7 +21,7 @@ @BehaviorAction(name = "check_luring_item_in_use") public class CheckLuringItemInUseAction extends BaseAction { - public static final String[] LURING_ITEMS = {"CoreAssets:Grass"}; + public static final String[] LURING_ITEMS = {"CoreAssets:TallGrass1","CoreAssets:TallGrass2","CoreAssets:TallGrass3","CoreAssets:Lavender","CoreAssets:Dandelion","CoreAssets:Dandelion"}; @Override public BehaviorState modify(Actor actor, BehaviorState behaviorState) { From fb7e3df2c7935675885cc7f04295381659cb8fe3 Mon Sep 17 00:00:00 2001 From: Josephine Rueckert Date: Tue, 31 Aug 2021 20:00:37 +0200 Subject: [PATCH 6/6] chore: fix checkstyle warnings --- .../wildAnimals/actions/CheckLuringItemInUseAction.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/terasology/wildAnimals/actions/CheckLuringItemInUseAction.java b/src/main/java/org/terasology/wildAnimals/actions/CheckLuringItemInUseAction.java index 329ce2f..9ce0387 100644 --- a/src/main/java/org/terasology/wildAnimals/actions/CheckLuringItemInUseAction.java +++ b/src/main/java/org/terasology/wildAnimals/actions/CheckLuringItemInUseAction.java @@ -21,7 +21,13 @@ @BehaviorAction(name = "check_luring_item_in_use") public class CheckLuringItemInUseAction extends BaseAction { - public static final String[] LURING_ITEMS = {"CoreAssets:TallGrass1","CoreAssets:TallGrass2","CoreAssets:TallGrass3","CoreAssets:Lavender","CoreAssets:Dandelion","CoreAssets:Dandelion"}; + static final String[] LURING_ITEMS = { + "CoreAssets:TallGrass1", + "CoreAssets:TallGrass2", + "CoreAssets:TallGrass3", + "CoreAssets:Lavender", + "CoreAssets:Dandelion" + }; @Override public BehaviorState modify(Actor actor, BehaviorState behaviorState) {