Add NPC Text script and enhance ScriptApi with entity type retrieval
All checks were successful
Build JStom / build (push) Successful in 1m21s

This commit is contained in:
2026-01-26 23:42:41 +00:00
parent 7c9283a043
commit 676857d650
3 changed files with 86 additions and 1 deletions

View File

@@ -11,6 +11,7 @@ import net.minestom.server.event.server.ServerListPingEvent;
import net.minestom.server.instance.InstanceContainer;
import net.minestom.server.instance.InstanceManager;
import net.minestom.server.instance.LightingChunk;
import net.minestom.server.instance.Chunk;
import net.minestom.server.instance.anvil.AnvilLoader;
import net.minestom.server.instance.block.Block;
import net.minestom.server.ping.Status;

View File

@@ -3,14 +3,32 @@ package net.jstom.script;
import net.minestom.server.MinecraftServer;
import net.minestom.server.event.Event;
import net.minestom.server.event.EventNode;
import net.minestom.server.entity.EntityType;
import org.graalvm.polyglot.Value;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.Map;
import java.util.HashMap;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
public class ScriptApi {
private final List<EventNode<Event>> registeredNodes = new ArrayList<>();
private static final Map<String, EntityType> entityTypes = new HashMap<>();
static {
for (Field field : EntityType.class.getFields()) {
if (Modifier.isStatic(field.getModifiers()) && Modifier.isPublic(field.getModifiers()) && field.getType() == EntityType.class) {
try {
field.setAccessible(true);
entityTypes.put(field.getName(), (EntityType) field.get(null));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
/**
* Registers an event listener from JavaScript.
@@ -64,4 +82,9 @@ public class ScriptApi {
public void log(String message) {
System.out.println("[JS] " + message);
}
public EntityType getEntityType(String name) {
if (name == null) return null;
return entityTypes.get(name.toUpperCase());
}
}