aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionKill.java
diff options
context:
space:
mode:
authorsyeyoung <cyong06@naver.com>2021-02-10 17:58:54 +0900
committersyeyoung <cyong06@naver.com>2021-02-10 17:58:54 +0900
commitb6a7d4231a245a4d0ba772761319bd180c44944d (patch)
treee253ed6275ef87426e3de5f9b5529e6bdeba7901 /src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionKill.java
parent2223e55d5d9c61f4ab93d8dab0b5f9820272c8fe (diff)
downloadSkyblock-Dungeons-Guide-b6a7d4231a245a4d0ba772761319bd180c44944d.tar.gz
Skyblock-Dungeons-Guide-b6a7d4231a245a4d0ba772761319bd180c44944d.tar.bz2
Skyblock-Dungeons-Guide-b6a7d4231a245a4d0ba772761319bd180c44944d.zip
lots of things
Diffstat (limited to 'src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionKill.java')
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionKill.java23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionKill.java b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionKill.java
index ff26fe20..26046201 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionKill.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionKill.java
@@ -2,17 +2,21 @@ package kr.syeyoung.dungeonsguide.dungeon.actions;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
+import kr.syeyoung.dungeonsguide.dungeon.EntitySpawnManager;
import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
+import kr.syeyoung.dungeonsguide.e;
import lombok.Data;
import lombok.EqualsAndHashCode;
import net.minecraft.entity.Entity;
+import net.minecraft.util.Vec3;
+import net.minecraftforge.event.entity.living.LivingDeathEvent;
import java.util.HashSet;
import java.util.Set;
@Data
-public class ActionKill implements Action {
+public class ActionKill extends AbstractAction {
private Set<Action> preRequisite = new HashSet<Action>();
private OffsetPoint target;
private Predicate<Entity> predicate = Predicates.alwaysFalse();
@@ -28,6 +32,23 @@ public class ActionKill implements Action {
}
@Override
+ public boolean isComplete(DungeonRoom dungeonRoom) {
+ return killed;
+ }
+
+ private boolean killed = false;
+ @Override
+ public void onLivingDeath(DungeonRoom dungeonRoom, LivingDeathEvent event) {
+ if (killed) return;
+
+ Vec3 spawnLoc = EntitySpawnManager.getSpawnLocation().get(event.entity.getEntityId());
+ if (spawnLoc == null) return;
+ if (target.getBlockPos(dungeonRoom).distanceSq(spawnLoc.xCoord, spawnLoc.yCoord, spawnLoc.zCoord) > radius * radius) return;
+ if (!predicate.apply(event.entity)) return;
+ killed = true;
+ }
+
+ @Override
public String toString() {
return "KillEntity\n- target: "+target.toString()+"\n- radius: "+radius+"\n- predicate: "+(predicate == null ? "null" : predicate.getClass().getSimpleName());
}