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:
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user