aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/thatgravyboat/skyblockhud/handlers/sbentities
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/thatgravyboat/skyblockhud/handlers/sbentities')
-rw-r--r--src/main/java/com/thatgravyboat/skyblockhud/handlers/sbentities/EntityTypeHelper.java21
-rw-r--r--src/main/java/com/thatgravyboat/skyblockhud/handlers/sbentities/EntityTypeRegistry.java25
-rw-r--r--src/main/java/com/thatgravyboat/skyblockhud/handlers/sbentities/SkyBlockEntity.java26
3 files changed, 72 insertions, 0 deletions
diff --git a/src/main/java/com/thatgravyboat/skyblockhud/handlers/sbentities/EntityTypeHelper.java b/src/main/java/com/thatgravyboat/skyblockhud/handlers/sbentities/EntityTypeHelper.java
new file mode 100644
index 0000000..afff109
--- /dev/null
+++ b/src/main/java/com/thatgravyboat/skyblockhud/handlers/sbentities/EntityTypeHelper.java
@@ -0,0 +1,21 @@
+package com.thatgravyboat.skyblockhud.handlers.sbentities;
+
+import com.thatgravyboat.skyblockhud.location.LocationHandler;
+import com.thatgravyboat.skyblockhud.location.Locations;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.monster.EntityEnderman;
+import net.minecraft.init.Blocks;
+
+public class EntityTypeHelper {
+
+ public static boolean isZealot(Entity entity) {
+ if (entity instanceof EntityEnderman) {
+ EntityEnderman enderman = ((EntityEnderman) entity);
+ double maxHealthBase = enderman.getAttributeMap().getAttributeInstanceByName("generic.maxHealth").getBaseValue();
+ if (maxHealthBase == 13000d || (maxHealthBase == 2000d && enderman.getHeldBlockState().getBlock().equals(Blocks.end_portal_frame))) {
+ return LocationHandler.getCurrentLocation().equals(Locations.DRAGONSNEST);
+ }
+ }
+ return false;
+ }
+}
diff --git a/src/main/java/com/thatgravyboat/skyblockhud/handlers/sbentities/EntityTypeRegistry.java b/src/main/java/com/thatgravyboat/skyblockhud/handlers/sbentities/EntityTypeRegistry.java
new file mode 100644
index 0000000..d45fa1f
--- /dev/null
+++ b/src/main/java/com/thatgravyboat/skyblockhud/handlers/sbentities/EntityTypeRegistry.java
@@ -0,0 +1,25 @@
+package com.thatgravyboat.skyblockhud.handlers.sbentities;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Maps;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.monster.EntityEnderman;
+
+import java.util.List;
+import java.util.Map;
+
+public class EntityTypeRegistry {
+
+ private static final Map<Class<? extends Entity>, List<SkyBlockEntity>> entities = Maps.newHashMap();
+
+ static {
+ entities.put(EntityEnderman.class, ImmutableList.of(SkyBlockEntity.of("zealot", EntityTypeHelper::isZealot)));
+ }
+
+ public static String getEntityId(Entity entity){
+ if (!entities.containsKey(entity.getClass())) return null;
+ for (SkyBlockEntity skyBlockEntity : entities.get(entity.getClass())) if (skyBlockEntity.isEntity(entity)) return skyBlockEntity.getName();
+ return null;
+ }
+
+}
diff --git a/src/main/java/com/thatgravyboat/skyblockhud/handlers/sbentities/SkyBlockEntity.java b/src/main/java/com/thatgravyboat/skyblockhud/handlers/sbentities/SkyBlockEntity.java
new file mode 100644
index 0000000..ca10b53
--- /dev/null
+++ b/src/main/java/com/thatgravyboat/skyblockhud/handlers/sbentities/SkyBlockEntity.java
@@ -0,0 +1,26 @@
+package com.thatgravyboat.skyblockhud.handlers.sbentities;
+
+import net.minecraft.entity.Entity;
+
+import java.util.function.Predicate;
+
+public class SkyBlockEntity {
+
+ private final String name;
+ private final Predicate<Entity> predicate;
+
+ public static SkyBlockEntity of(String name, Predicate<Entity> predicate){
+ return new SkyBlockEntity(name, predicate);
+ }
+
+ private SkyBlockEntity(String name, Predicate<Entity> predicate){
+ this.name = name;
+ this.predicate = predicate;
+ }
+
+ public String getName(){ return name; }
+
+ public boolean isEntity(Entity entity) {
+ return predicate.test(entity);
+ }
+}