package com.thebrokenrail.scriptcraft.bridge; import com.thebrokenrail.scriptcraft.util.Util; 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() { Bridges.addBridge("Entity.getEntityWorld", args -> ((Entity) args[0]).getEntityWorld()); Bridges.addBridge("Entity.getID", args -> Registry.ENTITY_TYPE.getId(((Entity) args[0]).getType()).toString()); Bridges.addBridge("Entity.getName", args -> ((Entity) args[0]).getName().asString()); Bridges.addBridge("Entity.getDisplayName", args -> ((Entity) args[0]).getDisplayName().asString()); Bridges.addBridge("Entity.getCustomName", args -> ((Entity) args[0]).hasCustomName() ? Objects.requireNonNull(((Entity) args[0]).getCustomName()).asString() : null); Bridges.addBridge("Entity.kill", args -> { ((Entity) args[0]).kill(); return null; }); Bridges.addBridge("Entity.remove", args -> { ((Entity) args[0]).remove(); return null; }); Bridges.addBridge("Entity.damage", args -> ((Entity) args[0]).damage((DamageSource) args[1], (float) args[2])); Bridges.addBridge("Entity.setFireTicks", args -> { ((Entity) args[0]).setFireTicks((int) args[1]); return null; }); Bridges.addBridge("Entity.getFireTicks", args -> ((Entity) args[0]).getFireTicks()); Bridges.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; }); Bridges.addBridge("Entity.setPosition", args -> { ((Entity) args[0]).updatePosition(Util.toDouble(args[1], 0), Util.toDouble(args[2], 0), Util.toDouble(args[3], 0)); return null; }); Bridges.addBridge("Entity.toTag", args -> ((Entity) args[0]).toTag(new CompoundTag())); Bridges.addBridge("Entity.fromTag", args -> { ((Entity) args[0]).fromTag((CompoundTag) args[1]); return null; }); } }