From 2cbaae4300993b3b07ba230274c00a0453a3c926 Mon Sep 17 00:00:00 2001 From: unurled Date: Tue, 27 Feb 2024 20:58:58 +0100 Subject: [PATCH] entities support wip --- .../sr/components/entity/EntityManager.java | 50 +++++++++++++++++++ .../sr/components/entity/SREntity.java | 17 +++++++ 2 files changed, 67 insertions(+) create mode 100644 src/main/java/me/unurled/sacredrealms/sr/components/entity/EntityManager.java create mode 100644 src/main/java/me/unurled/sacredrealms/sr/components/entity/SREntity.java diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/entity/EntityManager.java b/src/main/java/me/unurled/sacredrealms/sr/components/entity/EntityManager.java new file mode 100644 index 0000000..ea31908 --- /dev/null +++ b/src/main/java/me/unurled/sacredrealms/sr/components/entity/EntityManager.java @@ -0,0 +1,50 @@ +package me.unurled.sacredrealms.sr.components.entity; + +import java.util.HashMap; +import java.util.UUID; +import me.unurled.sacredrealms.sr.managers.Manager; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Mob; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.EntitySpawnEvent; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class EntityManager extends Manager { + + @NotNull private final HashMap entities; + + public EntityManager() { + super(); + entities = new HashMap<>(); + } + + @Nullable + public SREntity getEntity(@NotNull UUID uuid) { + return entities.get(uuid); + } + + public void addEntity(@NotNull SREntity entity) { + entities.put(entity.getUuid(), entity); + } + + public void addEntity(@NotNull Entity e) { + entities.put(e.getUniqueId(), new SREntity(e)); + } + + public boolean isSREntity(@NotNull UUID uuid) { + return entities.containsKey(uuid); + } + + @EventHandler + public void onEntitySpawn(EntitySpawnEvent e) { + if (e.getEntity() instanceof Player) return; + + if (isSREntity(e.getEntity().getUniqueId())) return; + + if (!(e.getEntity() instanceof Mob)) return; + + e.setCancelled(true); + } +} diff --git a/src/main/java/me/unurled/sacredrealms/sr/components/entity/SREntity.java b/src/main/java/me/unurled/sacredrealms/sr/components/entity/SREntity.java new file mode 100644 index 0000000..b67c3b0 --- /dev/null +++ b/src/main/java/me/unurled/sacredrealms/sr/components/entity/SREntity.java @@ -0,0 +1,17 @@ +package me.unurled.sacredrealms.sr.components.entity; + +import java.util.UUID; +import org.bukkit.entity.Entity; +import org.jetbrains.annotations.NotNull; + +public class SREntity { + private final UUID uuid; + + public SREntity(@NotNull Entity e) { + uuid = e.getUniqueId(); + } + + public UUID getUuid() { + return uuid; + } +}