package com.thebrokenrail.scriptcraft.api.bridge; import com.thebrokenrail.scriptcraft.core.ScriptCraftCore; import com.thebrokenrail.scriptcraft.api.util.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; }); ScriptCraftCore.addBridge("Entity.isValid", args -> args[0] instanceof Entity); } }