Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
Minecraft.getMinecraft().objectMouseOver
Dahaka написал(а):А, тебе для клиента нужно было?
Дак я не понял, для клиента или для сервера? Зачем энтити записывать в буфер?Minebot написал(а):Ну, если как-то возможно записать entity в ByteBuf, то да, для клиента
Dahaka написал(а):Дак я не понял, для клиента или для сервера? Зачем энтити записывать в буфер?Minebot написал(а):Ну, если как-то возможно записать entity в ByteBuf, то да, для клиента
id сущности на сервер передавай.Minebot написал(а):Можно получить на клиенте и передать на сервер.
Dahaka написал(а):id сущности на сервер передавай.Minebot написал(а):Можно получить на клиенте и передать на сервер.
Я про обычный id. getEntityIDhohserg написал(а):UUID - уникальное для каждой сущности
Dahaka написал(а):Я про обычный id. getEntityIDhohserg написал(а):UUID - уникальное для каждой сущности
UUID для игроков только (но это не точно). А для регистрации id не нужен. Там мапится нелокализованное имя с классом (в две стороны) и еще что-то делается. Не помню уже.Minebot написал(а):По-моему обычный для регистра, а UUID для мира. Если нет, иначе какая разница?
@SideOnly(Side.CLIENT)
public static Entity getMouseOver(float partialTicks, float dist, boolean canBeCollided)
{
Minecraft mc = Minecraft.getMinecraft();
Entity entity = mc.getRenderViewEntity();
Entity pointedEntity = null;
if (entity != null)
{
if (mc.world != null)
{
mc.pointedEntity = null;
double d0 = dist;
Vec3d vec3d = entity.getPositionEyes(partialTicks);
boolean flag = false;
double d1 = d0;
if (mc.playerController.extendedReach())
{
d1 = dist;
d0 = d1;
}
else
{
if (d0 > dist)
{
flag = true;
}
}
Vec3d vec3d1 = entity.getLook(1.0F);
Vec3d vec3d2 = vec3d.addVector(vec3d1.xCoord * d0, vec3d1.yCoord * d0, vec3d1.zCoord * d0);
Vec3d vec3d3 = null;
float f = 1.0F;
List<Entity> list = mc.world.getEntitiesInAABBexcluding(entity, entity.getEntityBoundingBox().addCoord(vec3d1.xCoord * d0, vec3d1.yCoord * d0, vec3d1.zCoord * d0).expand(1.0D, 1.0D, 1.0D), Predicates.and(EntitySelectors.NOT_SPECTATING, new Predicate<Entity>()
{
public boolean apply(@Nullable Entity p_apply_1_)
{
return p_apply_1_ != null && (!canBeCollided || p_apply_1_.canBeCollidedWith());
}
}));
double d2 = d1;
for (int j = 0; j < list.size(); ++j)
{
Entity entity1 = (Entity)list.get(j);
AxisAlignedBB axisalignedbb = entity1.getEntityBoundingBox().expandXyz((double)entity1.getCollisionBorderSize());
RayTraceResult raytraceresult = axisalignedbb.calculateIntercept(vec3d, vec3d2);
if (axisalignedbb.isVecInside(vec3d))
{
if (d2 >= 0.0D)
{
pointedEntity = entity1;
vec3d3 = raytraceresult == null ? vec3d : raytraceresult.hitVec;
d2 = 0.0D;
}
}
else if (raytraceresult != null)
{
double d3 = vec3d.distanceTo(raytraceresult.hitVec);
if (d3 < d2 || d2 == 0.0D)
{
if (entity1.getLowestRidingEntity() == entity.getLowestRidingEntity() && !entity1.canRiderInteract())
{
if (d2 == 0.0D)
{
pointedEntity = entity1;
vec3d3 = raytraceresult.hitVec;
}
}
else
{
pointedEntity = entity1;
vec3d3 = raytraceresult.hitVec;
d2 = d3;
}
}
}
}
if (pointedEntity != null && flag && vec3d.distanceTo(vec3d3) > dist)
{
return null;
}
if (pointedEntity != null && d2 < d1)
{
RayTraceResult ray = mc.player.rayTrace(dist, partialTicks);
if (ray == null)
return pointedEntity;
else if (ray.hitVec.distanceTo(mc.player.getPositionVector())+0.5f >= pointedEntity.getPositionVector().distanceTo(mc.player.getPositionVector()))
return pointedEntity;
}
}
}
return null;
}
хуком?Вот, если кому нужно будет