Feat: Entity.getAABB/isSleeping/playAnimation

This commit is contained in:
Reider745
2025-03-16 12:46:39 +03:00
parent b75f6471c9
commit 2d943e09d1
3 changed files with 50 additions and 0 deletions
@@ -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);
}
@@ -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) {
}
}
@@ -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<Long> getAllArrayList() {
return new ArrayList<>(NativeCallback.getAllEntities());