diff --git a/src/main/java/com/reider745/entity/EntityMethod.java b/src/main/java/com/reider745/entity/EntityMethod.java index 97c9bea5..5e264452 100644 --- a/src/main/java/com/reider745/entity/EntityMethod.java +++ b/src/main/java/com/reider745/entity/EntityMethod.java @@ -17,6 +17,7 @@ import cn.nukkit.item.Item; import cn.nukkit.level.Level; import cn.nukkit.level.Location; import cn.nukkit.level.Position; +import cn.nukkit.math.AxisAlignedBB; import cn.nukkit.math.BlockFace; import cn.nukkit.math.Vector3; import cn.nukkit.nbt.NBTIO; @@ -152,6 +153,22 @@ public class EntityMethod { } } + public static boolean isEntitySleeping(long entityUid) { + return validateThen(entityUid, entity -> entity instanceof Player player && player.isSleeping(), false); + } + + public static void getEntityAABB(long entityUid, float[] aabb) { + validateThen(entityUid, entity -> { + final AxisAlignedBB box = entity.getBoundingBox(); + aabb[0] = (float) box.getMinX(); + aabb[1] = (float) box.getMinY(); + aabb[2] = (float) box.getMinZ(); + aabb[3] = (float) box.getMaxX(); + aabb[4] = (float) box.getMaxY(); + aabb[5] = (float) box.getMaxZ(); + }); + } + public static int getEntityDimension(long entityUid) { return validateThen(entityUid, entity -> FakeDimensions.getFakeIdForLevel(entity.getLevel()), -1); } diff --git a/src/main/java/com/zhekasmirnov/innercore/api/NativeAPI.java b/src/main/java/com/zhekasmirnov/innercore/api/NativeAPI.java index 1acddd07..84bbb029 100644 --- a/src/main/java/com/zhekasmirnov/innercore/api/NativeAPI.java +++ b/src/main/java/com/zhekasmirnov/innercore/api/NativeAPI.java @@ -1092,4 +1092,16 @@ public class NativeAPI { public static void setChunkStateChangeCallbackEnabled(int state, boolean b) { EventListener.setChunkStateChangedCallbackEnabled(state, b); } + + public static boolean isEntitySleeping(long entity) { + return EntityMethod.isEntitySleeping(entity); + } + + public static void getEntityAABB(long entity, float[] aabb) { + EntityMethod.getEntityAABB(entity, aabb); + } + + @ClientOnly + public static void playAnimation(long l, String name, float time, String controller, String query, String hz) { + } } diff --git a/src/main/java/com/zhekasmirnov/innercore/api/mod/adaptedscript/AdaptedScriptAPI.java b/src/main/java/com/zhekasmirnov/innercore/api/mod/adaptedscript/AdaptedScriptAPI.java index b645b6e6..ad0125f2 100644 --- a/src/main/java/com/zhekasmirnov/innercore/api/mod/adaptedscript/AdaptedScriptAPI.java +++ b/src/main/java/com/zhekasmirnov/innercore/api/mod/adaptedscript/AdaptedScriptAPI.java @@ -6,6 +6,7 @@ import android.util.Pair; import cn.nukkit.nbt.tag.CompoundTag; import com.reider745.InnerCoreServer; +import com.reider745.api.ClientOnly; import com.reider745.entity.EntityMethod; import com.reider745.item.CustomItem; import com.zhekasmirnov.apparatus.adapter.innercore.game.entity.EntityActor; @@ -655,6 +656,26 @@ public class AdaptedScriptAPI extends API { return NativeAPI.getEntityDimension(unwrapEntity(entity)); } + @JSStaticFunction + @ClientOnly + public static void playAnimation(Object entity, String name, double time, String controller, String query, String hz) { + NativeAPI.playAnimation(unwrapEntity(entity), name, (float) time, controller, query, hz); + } + + + @JSStaticFunction + public static boolean isSleeping(Object entity) { + return NativeAPI.isEntitySleeping(unwrapEntity(entity)); + } + + @JSStaticFunction + public static float[] getAABB(Object entity) { + float[] aabb = new float[6]; + NativeAPI.getEntityAABB(unwrapEntity(entity), aabb); + return aabb; + } + + @JSStaticFunction public static ArrayList getAllArrayList() { return new ArrayList<>(NativeCallback.getAllEntities());