package pers.neige.neigeitems.ref.entity;

import org.bukkit.entity.Entity;
import org.inksnow.ankhinvoke.comments.HandleBy;
import pers.neige.neigeitems.ref.argument.RefAnchor;
import pers.neige.neigeitems.ref.chat.RefComponent;
import pers.neige.neigeitems.ref.nbt.RefNbtTagCompound;
import pers.neige.neigeitems.ref.network.RefPacket;
import pers.neige.neigeitems.ref.network.syncher.RefEntityDataAccessor;
import pers.neige.neigeitems.ref.network.syncher.RefSynchedEntityData;
import pers.neige.neigeitems.ref.server.level.RefServerEntity;
import pers.neige.neigeitems.ref.world.RefAABB;
import pers.neige.neigeitems.ref.world.RefVec3;
import pers.neige.neigeitems.ref.world.RefWorld;

import java.util.Optional;
import java.util.Random;

@HandleBy(reference = "net/minecraft/world/entity/Entity", predicates = "craftbukkit_version:[v1_17_R1,)")
@HandleBy(reference = "net/minecraft/server/v1_12_R1/Entity", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
public abstract class RefEntity {
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;aB:Lnet/minecraft/server/v1_12_R1/DataWatcherObject;", useAccessor = true, predicates = "craftbukkit_version:[v1_12_R1,v1_13_R1)")
    public static final RefEntityDataAccessor<String> DATA_CUSTOM_NAME_STRING = null;
    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;DATA_CUSTOM_NAME:Lnet/minecraft/network/syncher/EntityDataAccessor;", useAccessor = true, predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_16_R2/Entity;aq:Lnet/minecraft/server/v1_16_R2/DataWatcherObject;", useAccessor = true, predicates = "craftbukkit_version:[v1_16_R2,v1_17_R1)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_16_R1/Entity;ax:Lnet/minecraft/server/v1_16_R1/DataWatcherObject;", useAccessor = true, predicates = "craftbukkit_version:[v1_16_R1,v1_16_R2)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_14_R1/Entity;az:Lnet/minecraft/server/v1_14_R1/DataWatcherObject;", useAccessor = true, predicates = "craftbukkit_version:[v1_14_R1,v1_16_R1)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_13_R1/Entity;aE:Lnet/minecraft/server/v1_13_R1/DataWatcherObject;", useAccessor = true, predicates = "craftbukkit_version:[v1_13_R1,v1_14_R1)")
    public static final RefEntityDataAccessor<Optional<RefComponent>> DATA_CUSTOM_NAME_COMPONENT = null;
    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;DATA_CUSTOM_NAME_VISIBLE:Lnet/minecraft/network/syncher/EntityDataAccessor;", useAccessor = true, predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_16_R2/Entity;ar:Lnet/minecraft/server/v1_16_R2/DataWatcherObject;", useAccessor = true, predicates = "craftbukkit_version:[v1_16_R2,v1_17_R1)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_16_R1/Entity;ay:Lnet/minecraft/server/v1_16_R1/DataWatcherObject;", useAccessor = true, predicates = "craftbukkit_version:[v1_16_R1,v1_16_R2)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_14_R1/Entity;aA:Lnet/minecraft/server/v1_14_R1/DataWatcherObject;", useAccessor = true, predicates = "craftbukkit_version:[v1_14_R1,v1_16_R1)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_13_R1/Entity;aF:Lnet/minecraft/server/v1_13_R1/DataWatcherObject;", useAccessor = true, predicates = "craftbukkit_version:[v1_13_R1,v1_14_R1)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;aC:Lnet/minecraft/server/v1_12_R1/DataWatcherObject;", useAccessor = true, predicates = "craftbukkit_version:[v1_12_R1,v1_13_R1)")
    public static final RefEntityDataAccessor<Boolean> DATA_CUSTOM_NAME_VISIBLE = null;
    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;random:Ljava/util/Random;", useAccessor = true, predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;random:Ljava/util/Random;", useAccessor = true, predicates = "craftbukkit_version:[v1_12_R1,v1_13_R1)")
    public final Random random = null;
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;motX:D", predicates = "craftbukkit_version:[v1_12_R1,v1_14_R1)")
    public double motX;
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;motY:D", predicates = "craftbukkit_version:[v1_12_R1,v1_14_R1)")
    public double motY;
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;motZ:D", predicates = "craftbukkit_version:[v1_12_R1,v1_14_R1)")
    public double motZ;
    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;yRot:F", useAccessor = true, predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;yaw:F", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public float yaw;
    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;xRot:F", useAccessor = true, predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;pitch:F", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public float pitch;
    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;yRotO:F", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;lastYaw:F", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public float lastYaw;
    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;xRotO:F", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;lastPitch:F", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public float lastPitch;
    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;level:Lnet/minecraft/world/level/Level;", useAccessor = true, predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;world:Lnet/minecraft/server/v1_12_R1/World;", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public RefWorld world;
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;lastX:D", predicates = "craftbukkit_version:[v1_12_R1,v1_13_R1)")
    public double lastX;
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;lastY:D", predicates = "craftbukkit_version:[v1_12_R1,v1_13_R1)")
    public double lastY;
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;lastZ:D", predicates = "craftbukkit_version:[v1_12_R1,v1_13_R1)")
    public double lastZ;
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;locX:D", predicates = "craftbukkit_version:[v1_12_R1,v1_13_R1)")
    public double locX;
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;locY:D", predicates = "craftbukkit_version:[v1_12_R1,v1_13_R1)")
    public double locY;
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;locZ:D", predicates = "craftbukkit_version:[v1_12_R1,v1_13_R1)")
    public double locZ;

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;getBukkitEntity()Lorg/bukkit/craftbukkit/v1_17_R1/entity/CraftEntity;", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;getBukkitEntity()Lorg/bukkit/craftbukkit/v1_12_R1/entity/CraftEntity;", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public native Entity getBukkitEntity();

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;saveAsPassenger(Lnet/minecraft/nbt/CompoundTag;)Z", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_16_R1/Entity;a_(Lnet/minecraft/server/v1_16_R1/NBTTagCompound;)Z", predicates = "craftbukkit_version:[v1_16_R1,v1_17_R1)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;c(Lnet/minecraft/server/v1_12_R1/NBTTagCompound;)Z", predicates = "craftbukkit_version:[v1_12_R1,v1_16_R1)")
    public native boolean saveAsPassenger(RefNbtTagCompound nbt);

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;save(Lnet/minecraft/nbt/CompoundTag;)Z", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;d(Lnet/minecraft/server/v1_12_R1/NBTTagCompound;)Z", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public native boolean save(RefNbtTagCompound nbt);

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;saveWithoutId(Lnet/minecraft/nbt/CompoundTag;)Lnet/minecraft/nbt/CompoundTag;", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;save(Lnet/minecraft/server/v1_12_R1/NBTTagCompound;)Lnet/minecraft/server/v1_12_R1/NBTTagCompound;", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public native RefNbtTagCompound saveWithoutId(RefNbtTagCompound nbt);

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;load(Lnet/minecraft/nbt/CompoundTag;)V", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_16_R1/Entity;load(Lnet/minecraft/server/v1_16_R1/NBTTagCompound;)V", predicates = "craftbukkit_version:[v1_16_R1,v1_17_R1)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;f(Lnet/minecraft/server/v1_12_R1/NBTTagCompound;)V", predicates = "craftbukkit_version:[v1_12_R1,v1_16_R1)")
    public native void load(RefNbtTagCompound nbt);

    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;move(Lnet/minecraft/server/v1_12_R1/EnumMoveType;DDD)V", predicates = "craftbukkit_version:[v1_12_R1,v1_14_R1)")
    public native void move(RefMoverType movementType, double d0, double d1, double d2);

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;move(Lnet/minecraft/world/entity/MoverType;Lnet/minecraft/world/phys/Vec3;)V", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_14_R1/Entity;move(Lnet/minecraft/server/v1_14_R1/EnumMoveType;Lnet/minecraft/server/v1_14_R1/Vec3D;)V", predicates = "craftbukkit_version:[v1_14_R1,v1_17_R1)")
    public native void move(RefMoverType movementType, RefVec3 movement);

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;getRootVehicle()Lnet/minecraft/world/entity/Entity;", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;getVehicle()Lnet/minecraft/server/v1_12_R1/Entity;", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public native Entity getRootVehicle();

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;absMoveTo(DDDFF)V", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;setLocation(DDDFF)V", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public native void absMoveTo(double x, double y, double z, float yaw, float pitch);

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;moveTo(DDDFF)V", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;setPositionRotation(DDDFF)V", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public native void moveTo(double x, double y, double z, float yaw, float pitch);

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;getDeltaMovement()Lnet/minecraft/world/phys/Vec3;", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_14_R1/Entity;getMot()Lnet/minecraft/server/v1_14_R1/Vec3D;", predicates = "craftbukkit_version:[v1_14_R1,v1_17_R1)")
    public native RefVec3 getDeltaMovement();

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;setDeltaMovement(Lnet/minecraft/world/phys/Vec3;)V", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_14_R1/Entity;setMot(Lnet/minecraft/server/v1_14_R1/Vec3D;)V", predicates = "craftbukkit_version:[v1_14_R1,v1_17_R1)")
    public native void setDeltaMovement(RefVec3 velocity);

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;addDeltaMovement(Lnet/minecraft/world/phys/Vec3;)V", predicates = "craftbukkit_version:[v1_17_R1,)")
    public native void addDeltaMovement(RefVec3 velocity);

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;setDeltaMovement(DDD)V", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_14_R1/Entity;setMot(DDD)V", predicates = "craftbukkit_version:[v1_14_R1,v1_17_R1)")
    public native void setDeltaMovement(double x, double y, double z);

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;getYRot()F", predicates = "craftbukkit_version:[v1_17_R1,)")
    public native float getYaw();

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;setYRot(F)V", predicates = "craftbukkit_version:[v1_17_R1,)")
    public native void setYaw(float yaw);

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;getXRot()F", predicates = "craftbukkit_version:[v1_17_R1,)")
    public native float getPitch();

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;setXRot(F)V", predicates = "craftbukkit_version:[v1_17_R1,)")
    public native void setPitch(float pitch);

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;getYHeadRot()F", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;getHeadRotation()F", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public native float getHeadRotation();

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;setYHeadRot(F)V", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;setHeadRotation(F)V", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public native void setHeadRotation(float headRotation);

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;lookAt(Lnet/minecraft/commands/arguments/EntityAnchorArgument$Anchor;Lnet/minecraft/world/phys/Vec3;)V", predicates = "craftbukkit_version:[v1_17_R1,)")
    public native void lookAt(RefAnchor anchorPoint, RefVec3 target);

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;getEyeHeight()F", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;getHeadHeight()F", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public native final float getEyeHeight();

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;getCustomName()Lnet/minecraft/network/chat/Component;", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_13_R1/Entity;getCustomName()Lnet/minecraft/server/v1_13_R1/IChatBaseComponent;", predicates = "craftbukkit_version:[v1_13_R1,v1_17_R1)")
    public native RefComponent getCustomName();

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;setCustomName(Lnet/minecraft/network/chat/Component;)V", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_13_R1/Entity;setCustomName(Lnet/minecraft/server/v1_13_R1/IChatBaseComponent;)V", predicates = "craftbukkit_version:[v1_13_R1,v1_17_R1)")
    public native void setCustomName(RefComponent name);

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;hasCustomName()Z", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_13_R1/Entity;hasCustomName()Z", predicates = "craftbukkit_version:[v1_13_R1,v1_17_R1)")
    public native boolean hasCustomName();

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;getBoundingBox()Lnet/minecraft/world/phys/AABB;", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;getBoundingBox()Lnet/minecraft/server/v1_12_R1/AxisAlignedBB;", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public native RefAABB getBoundingBox();

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;setPos(DDD)V", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;setPosition(DDD)V", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public native void setPosition(double x, double y, double z);

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;isInWater()Z", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;isInWater()Z", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public native boolean isInWater();

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;isPassenger()Z", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;isPassenger()Z", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public native boolean isPassenger();

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;getType()Lnet/minecraft/world/entity/EntityType;", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_14_R1/Entity;getEntityType()Lnet/minecraft/server/v1_14_R1/EntityTypes;", predicates = "craftbukkit_version:[v1_14_R1,v1_17_R1)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_13_R1/Entity;P()Lnet/minecraft/server/v1_13_R1/EntityTypes;", predicates = "craftbukkit_version:[v1_13_R1,v1_14_R1)")
    public native RefEntityType<?> getType();

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;getEntityData()Lnet/minecraft/network/syncher/SynchedEntityData;", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;getDataWatcher()Lnet/minecraft/server/v1_12_R1/DataWatcher;", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public native RefSynchedEntityData getEntityData();

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;getAddEntityPacket()Lnet/minecraft/network/protocol/Packet;", predicates = "craftbukkit_version:[v1_17_R1,v1_21_R1)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_15_R1/Entity;P()Lnet/minecraft/server/v1_15_R1/Packet;", predicates = "craftbukkit_version:[v1_16_R1,v1_17_R1)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_15_R1/Entity;L()Lnet/minecraft/server/v1_15_R1/Packet;", predicates = "craftbukkit_version:[v1_15_R1,v1_16_R1)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_14_R1/Entity;N()Lnet/minecraft/server/v1_14_R1/Packet;", predicates = "craftbukkit_version:[v1_14_R1,v1_15_R1)")
    public native RefPacket<?> getAddEntityPacket();

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;getAddEntityPacket(Lnet/minecraft/server/level/ServerEntity;)Lnet/minecraft/network/protocol/Packet;", predicates = "craftbukkit_version:[v1_21_R1,)")
    public native RefPacket<?> getAddEntityPacket(RefServerEntity serverEntity);

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;getId()I", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;getId()I", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public native int getId();

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;tick()V", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;B_()V", predicates = "craftbukkit_version:[v1_12_R1,v1_13_R1)")
    public native void tick();

    @HandleBy(reference = "Lnet/minecraft/world/entity/Entity;setInvisible(Z)V", predicates = "craftbukkit_version:[v1_17_R1,)")
    @HandleBy(reference = "Lnet/minecraft/server/v1_12_R1/Entity;setInvisible(Z)V", predicates = "craftbukkit_version:[v1_12_R1,v1_17_R1)")
    public native void setInvisible(boolean invisible);
}
