2020-10-26 18:41:54 +01:00
|
|
|
package com.songoda.ultimatestacker.stackable.entity.custom.entities;
|
|
|
|
|
2023-01-02 13:38:58 +01:00
|
|
|
import io.lumine.mythic.api.mobs.MobManager;
|
|
|
|
import io.lumine.mythic.bukkit.BukkitAdapter;
|
|
|
|
import io.lumine.mythic.bukkit.MythicBukkit;
|
|
|
|
import io.lumine.mythic.core.mobs.ActiveMob;
|
2020-10-26 18:41:54 +01:00
|
|
|
import org.bukkit.Bukkit;
|
|
|
|
import org.bukkit.Location;
|
|
|
|
import org.bukkit.entity.Entity;
|
|
|
|
import org.bukkit.entity.LivingEntity;
|
|
|
|
|
2023-01-25 23:20:44 +01:00
|
|
|
public class MythicMobsCustomEntity extends MythicMobsProvider {
|
2020-10-26 18:41:54 +01:00
|
|
|
|
|
|
|
public MythicMobsCustomEntity() {
|
|
|
|
super(Bukkit.getPluginManager().getPlugin("MythicMobs"));
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String getPluginName() {
|
|
|
|
return "MythicMobs";
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean isMatchingType(Entity entity) {
|
2023-01-02 13:38:58 +01:00
|
|
|
return getMobManager().getActiveMobs().stream().anyMatch(activeMob -> activeMob.getEntity().getBukkitEntity().getType().equals(entity.getType()));
|
2020-10-26 18:41:54 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String getDisplayName(Entity entity) {
|
2023-01-02 13:38:58 +01:00
|
|
|
return getMobManager().getActiveMobs().stream()
|
|
|
|
.filter(activeMob -> activeMob.getEntity().getBukkitEntity().getUniqueId().equals(entity.getUniqueId()))
|
|
|
|
.findFirst()
|
|
|
|
.map(ActiveMob::getMobType)
|
|
|
|
.orElse(null);
|
2020-10-26 18:41:54 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean isSimilar(LivingEntity original, LivingEntity entity) {
|
2023-01-25 23:20:44 +01:00
|
|
|
if (!isMatchingType(original) || getMob(entity) == null) return false;
|
2020-10-26 18:41:54 +01:00
|
|
|
return getMob(original).getType().equals(getMob(entity).getType());
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String getNBTIdentifier(Entity entity) {
|
|
|
|
return getMob(entity).getType().getInternalName();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public LivingEntity spawnFromIdentifier(String string, Location location) {
|
2023-01-16 21:32:17 +01:00
|
|
|
if (getMobManager().getMythicMob(string).isPresent()) {
|
2020-10-26 18:41:54 +01:00
|
|
|
return null;
|
2023-01-02 13:38:58 +01:00
|
|
|
}
|
|
|
|
return (LivingEntity)getMobManager().getMythicMob(string).get().spawn(BukkitAdapter.adapt(location), 1).getEntity().getBukkitEntity();
|
2020-10-26 18:41:54 +01:00
|
|
|
}
|
|
|
|
|
2023-01-16 21:32:17 +01:00
|
|
|
@Override
|
|
|
|
public boolean isCustomEntity(Entity entity) {
|
|
|
|
return getMob(entity) != null;
|
|
|
|
}
|
|
|
|
|
2020-10-26 18:41:54 +01:00
|
|
|
private ActiveMob getMob(Entity entity) {
|
2023-01-02 13:38:58 +01:00
|
|
|
return MythicBukkit.inst().getMobManager().getMythicMobInstance(entity);
|
2020-10-26 18:41:54 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
private MobManager getMobManager() {
|
2023-01-02 13:38:58 +01:00
|
|
|
return ((MythicBukkit) plugin).getMobManager();
|
2020-10-26 18:41:54 +01:00
|
|
|
}
|
|
|
|
}
|