9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2025-12-19 15:09:18 +00:00

add tabcompletion for mythic mobs mob stacks

This commit is contained in:
Julian Krings
2025-09-21 12:51:59 +02:00
parent 21a2e4feef
commit f4617c1996

View File

@@ -5,10 +5,14 @@ import com.volmit.iris.core.link.Identifier;
import com.volmit.iris.core.tools.IrisToolbelt; import com.volmit.iris.core.tools.IrisToolbelt;
import io.lumine.mythic.api.adapters.AbstractLocation; import io.lumine.mythic.api.adapters.AbstractLocation;
import io.lumine.mythic.api.config.MythicLineConfig; import io.lumine.mythic.api.config.MythicLineConfig;
import io.lumine.mythic.api.mobs.entities.SpawnReason;
import io.lumine.mythic.api.skills.conditions.ILocationCondition; import io.lumine.mythic.api.skills.conditions.ILocationCondition;
import io.lumine.mythic.bukkit.BukkitAdapter;
import io.lumine.mythic.bukkit.MythicBukkit; import io.lumine.mythic.bukkit.MythicBukkit;
import io.lumine.mythic.bukkit.adapters.BukkitWorld; import io.lumine.mythic.bukkit.adapters.BukkitWorld;
import io.lumine.mythic.bukkit.events.MythicConditionLoadEvent; import io.lumine.mythic.bukkit.events.MythicConditionLoadEvent;
import io.lumine.mythic.core.mobs.ActiveMob;
import io.lumine.mythic.core.mobs.MobStack;
import io.lumine.mythic.core.skills.SkillCondition; import io.lumine.mythic.core.skills.SkillCondition;
import io.lumine.mythic.core.utils.annotations.MythicCondition; import io.lumine.mythic.core.utils.annotations.MythicCondition;
import io.lumine.mythic.core.utils.annotations.MythicField; import io.lumine.mythic.core.utils.annotations.MythicField;
@@ -17,10 +21,10 @@ import org.bukkit.entity.Entity;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Nullable;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Stream;
public class MythicMobsDataProvider extends ExternalDataProvider { public class MythicMobsDataProvider extends ExternalDataProvider {
public MythicMobsDataProvider() { public MythicMobsDataProvider() {
@@ -33,18 +37,31 @@ public class MythicMobsDataProvider extends ExternalDataProvider {
@Override @Override
public @Nullable Entity spawnMob(@NotNull Location location, @NotNull Identifier entityId) throws MissingResourceException { public @Nullable Entity spawnMob(@NotNull Location location, @NotNull Identifier entityId) throws MissingResourceException {
var mm = MythicBukkit.inst().getMobManager().spawnMob(entityId.key(), location); var mm = spawnMob(BukkitAdapter.adapt(location), entityId);
if (mm == null) throw new MissingResourceException("Failed to find mob!", entityId.namespace(), entityId.key()); return mm == null ? null : mm.getEntity().getBukkitEntity();
return mm.getEntity().getBukkitEntity(); }
private ActiveMob spawnMob(AbstractLocation location, Identifier entityId) throws MissingResourceException {
var manager = MythicBukkit.inst().getMobManager();
var mm = manager.getMythicMob(entityId.key()).orElse(null);
if (mm == null) {
var stack = manager.getMythicMobStack(entityId.key());
if (stack == null) throw new MissingResourceException("Failed to find Mob!", entityId.namespace(), entityId.key());
return stack.spawn(location, 1d, SpawnReason.OTHER, null);
}
return mm.spawn(location, 1d, SpawnReason.OTHER, null, null);
} }
@Override @Override
public @NotNull Collection<@NotNull Identifier> getTypes(@NotNull DataType dataType) { public @NotNull Collection<@NotNull Identifier> getTypes(@NotNull DataType dataType) {
if (dataType != DataType.ENTITY) return List.of(); if (dataType != DataType.ENTITY) return List.of();
return MythicBukkit.inst() var manager = MythicBukkit.inst().getMobManager();
.getMobManager() return Stream.concat(manager.getMobNames().stream(),
.getMobNames() manager.getMobStacks()
.stream() .stream()
.map(MobStack::getName)
)
.distinct()
.map(name -> new Identifier("mythicmobs", name)) .map(name -> new Identifier("mythicmobs", name))
.toList(); .toList();
} }