This repository has been archived on 2023-11-26. You can view files and clone it, but cannot push or open issues or pull requests.
ScriptCraft/scriptcraft/src/main/java/com/thebrokenrail/scriptcraft/api/bridge/EntityBridges.java

58 lines
2.5 KiB
Java

package com.thebrokenrail.scriptcraft.api.bridge;
import com.thebrokenrail.scriptcraft.core.ScriptCraftCore;
import com.thebrokenrail.scriptcraft.core.ValueUtil;
import net.minecraft.entity.Entity;
import net.minecraft.entity.damage.DamageSource;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.util.math.Vec3d;
import net.minecraft.util.registry.Registry;
import java.util.Objects;
class EntityBridges {
static void register() {
ScriptCraftCore.addBridge("Entity.getEntityWorld", args -> ((Entity) args[0]).getEntityWorld());
ScriptCraftCore.addBridge("Entity.getID", args -> Registry.ENTITY_TYPE.getId(((Entity) args[0]).getType()).toString());
ScriptCraftCore.addBridge("Entity.getName", args -> ((Entity) args[0]).getName().asString());
ScriptCraftCore.addBridge("Entity.getDisplayName", args -> ((Entity) args[0]).getDisplayName().asString());
ScriptCraftCore.addBridge("Entity.getCustomName", args -> ((Entity) args[0]).hasCustomName() ? Objects.requireNonNull(((Entity) args[0]).getCustomName()).asString() : null);
ScriptCraftCore.addBridge("Entity.kill", args -> {
((Entity) args[0]).kill();
return null;
});
ScriptCraftCore.addBridge("Entity.remove", args -> {
((Entity) args[0]).remove();
return null;
});
ScriptCraftCore.addBridge("Entity.damage", args -> ((Entity) args[0]).damage((DamageSource) args[1], (float) args[2]));
ScriptCraftCore.addBridge("Entity.setFireTicks", args -> {
((Entity) args[0]).setFireTicks((int) args[1]);
return null;
});
ScriptCraftCore.addBridge("Entity.getFireTicks", args -> ((Entity) args[0]).getFireTicks());
ScriptCraftCore.addBridge("Entity.getPosition", args -> {
Vec3d pos = ((Entity) args[0]).getPos();
Double[] out = new Double[3];
out[0] = pos.getX();
out[1] = pos.getY();
out[2] = pos.getZ();
return out;
});
ScriptCraftCore.addBridge("Entity.setPosition", args -> {
((Entity) args[0]).updatePosition(ValueUtil.toDouble(args[1], 0), ValueUtil.toDouble(args[2], 0), ValueUtil.toDouble(args[3], 0));
return null;
});
ScriptCraftCore.addBridge("Entity.toTag", args -> ((Entity) args[0]).toTag(new CompoundTag()));
ScriptCraftCore.addBridge("Entity.fromTag", args -> {
((Entity) args[0]).fromTag((CompoundTag) args[1]);
return null;
});
}
}