Исходник NoPlayerTrace(Не NoHitboxes)

Забаненный
Статус
Оффлайн
Регистрация
18 Фев 2023
Сообщения
23
Реакции[?]
3
Поинты[?]
8K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

Всем привет, видел то что сливают "NoPlayerTrace", но те функции как таковыми не являются, т.к они работают по разному, Hitbox - это объект который показывает область занимаемую Entity(в нашем случае игроком).
Trace - наш луч, показывает, пересекается ли он с хитбоксом(надеюсь я не ошибаюсь), как раз и хукнёмся к методу который возвращает результат в случае true.
У нас есть класс ProjectileHelper, по крайней мере на 1.16.5 так, на версиях выше будет ProjectileUtil или что то другое, находим метод
2:
   @Nullable
   @OnlyIn(Dist.CLIENT)
   public static EntityRayTraceResult getEntityHitResult(Entity p_221273_0_, Vector3d p_221273_1_, Vector3d p_221273_2_, AxisAlignedBB p_221273_3_, Predicate<Entity> p_221273_4_, double p_221273_5_) {
      World world = p_221273_0_.level;
      double d0 = p_221273_5_;
      Entity entity = null;
      Vector3d vector3d = null;

      for(Entity entity1 : world.getEntities(p_221273_0_, p_221273_3_, p_221273_4_)) {
         AxisAlignedBB axisalignedbb = entity1.getBoundingBox().inflate((double)entity1.getPickRadius());
         Optional<Vector3d> optional = axisalignedbb.clip(p_221273_1_, p_221273_2_);
         if (axisalignedbb.contains(p_221273_1_)) {
            if (d0 >= 0.0D) {
               entity = entity1;
               vector3d = optional.orElse(p_221273_1_);
               d0 = 0.0D;
            }
         } else if (optional.isPresent()) {
            Vector3d vector3d1 = optional.get();
            double d1 = p_221273_1_.distanceToSqr(vector3d1);
            if (d1 < d0 || d0 == 0.0D) {
               if (entity1.getRootVehicle() == p_221273_0_.getRootVehicle() && !entity1.canRiderInteract()) {
                  if (d0 == 0.0D) {
                     entity = entity1;
                     vector3d = vector3d1;
                  }
               } else {
                  entity = entity1;
                  vector3d = vector3d1;
                  d0 = d1;
               }
            }
         }
      }

      return entity == null ? null : new EntityRayTraceResult(entity, vector3d);
   }
Теперь всё просто, мы можешь либо изменять axisalignedbb, либо же возвращать null если функция NoRayTrace включена, по итогу вот как будет выглядеть это у меня, я не пишу свой чит, поэтому покажу на миксинах, вот итог:
newCode:
@Mixin(ProjectileHelper.class)
public class ProjectileHelperMixin {
    @Inject(method = "getEntityHitResult(Lnet/minecraft/entity/Entity;Lnet/minecraft/util/math/vector/Vector3d;Lnet/minecraft/util/math/vector/Vector3d;Lnet/minecraft/util/math/AxisAlignedBB;Ljava/util/function/Predicate;D)Lnet/minecraft/util/math/EntityRayTraceResult;", at = @At("RETURN"), cancellable = true)
    private static void hitResultHook(Entity shooter, Vector3d start, Vector3d end, AxisAlignedBB axisAlignedBB, Predicate<Entity> entityPredicate, double maxRange, CallbackInfoReturnable<EntityRayTraceResult> cir)
    {
        World world = shooter.level;
        double range = maxRange;
        Entity entity = null;
        Vector3d vector3d = null;
        for(Entity entity1 : world.getEntities(shooter, axisAlignedBB, entityPredicate)) {
            AxisAlignedBB axisalignedbb = entity1.getBoundingBox().inflate((double)entity1.getPickRadius());
            Optional<Vector3d> optional = axisalignedbb.clip(start, end);
            if (axisalignedbb.contains(start)) {
                if (range >= .0D) {
                    entity = entity1;
                    vector3d = optional.orElse(start);
                    range = 0.0D;
                }
            } else if (optional.isPresent()) {
                Vector3d vector3d1 = optional.get();
                double distance = start.distanceToSqr(vector3d1);
                if (distance < range || range == 0.0D) {
                    if (entity1.getRootVehicle() == shooter.getRootVehicle() && !entity1.canRiderInteract()) {
                        if (range == 0.0D) {
                            entity = entity1;
                            vector3d = vector3d1;
                        }
                    } else {
                        entity = entity1;
                        vector3d = vector3d1;
                        range = distance;
                    }
                }
            }
        }
        cir.setReturnValue(entity == null ? null : ((BoolValue && entity instanceof PlayerEntity) ? null : new EntityRayTraceResult(entity, vector3d)));
    }
}
Так же вам надо зарегистрировать этот класс как Mixin.
Всё, это готовый вариант, так же обратите внимание, я переименовал некоторые объекты что бы вам было понятнее.
Всем удачи!
 
Начинающий
Статус
Оффлайн
Регистрация
28 Окт 2023
Сообщения
7
Реакции[?]
0
Поинты[?]
0
Привет, спасибо за то что сделал такую тему и обьяснил в чем отличие между зерохитбокс и ноу плайер трейс. Жаль что данная тема недооценена.
 
Забаненный
Статус
Оффлайн
Регистрация
18 Фев 2023
Сообщения
23
Реакции[?]
3
Поинты[?]
8K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Привет, спасибо за то что сделал такую тему и обьяснил в чем отличие между зерохитбокс и ноу плайер трейс. Жаль что данная тема недооценена.
Спасибо большое, правда жалко что я сидел старался, а в итоге не получил ничего в ответ.
 
Начинающий
Статус
Оффлайн
Регистрация
12 Авг 2021
Сообщения
172
Реакции[?]
4
Поинты[?]
3K
Всем привет, видел то что сливают "NoPlayerTrace", но те функции как таковыми не являются, т.к они работают по разному, Hitbox - это объект который показывает область занимаемую Entity(в нашем случае игроком).
Trace - наш луч, показывает, пересекается ли он с хитбоксом(надеюсь я не ошибаюсь), как раз и хукнёмся к методу который возвращает результат в случае true.
У нас есть класс ProjectileHelper, по крайней мере на 1.16.5 так, на версиях выше будет ProjectileUtil или что то другое, находим метод
2:
   @Nullable
   @OnlyIn(Dist.CLIENT)
   public static EntityRayTraceResult getEntityHitResult(Entity p_221273_0_, Vector3d p_221273_1_, Vector3d p_221273_2_, AxisAlignedBB p_221273_3_, Predicate<Entity> p_221273_4_, double p_221273_5_) {
      World world = p_221273_0_.level;
      double d0 = p_221273_5_;
      Entity entity = null;
      Vector3d vector3d = null;

      for(Entity entity1 : world.getEntities(p_221273_0_, p_221273_3_, p_221273_4_)) {
         AxisAlignedBB axisalignedbb = entity1.getBoundingBox().inflate((double)entity1.getPickRadius());
         Optional<Vector3d> optional = axisalignedbb.clip(p_221273_1_, p_221273_2_);
         if (axisalignedbb.contains(p_221273_1_)) {
            if (d0 >= 0.0D) {
               entity = entity1;
               vector3d = optional.orElse(p_221273_1_);
               d0 = 0.0D;
            }
         } else if (optional.isPresent()) {
            Vector3d vector3d1 = optional.get();
            double d1 = p_221273_1_.distanceToSqr(vector3d1);
            if (d1 < d0 || d0 == 0.0D) {
               if (entity1.getRootVehicle() == p_221273_0_.getRootVehicle() && !entity1.canRiderInteract()) {
                  if (d0 == 0.0D) {
                     entity = entity1;
                     vector3d = vector3d1;
                  }
               } else {
                  entity = entity1;
                  vector3d = vector3d1;
                  d0 = d1;
               }
            }
         }
      }

      return entity == null ? null : new EntityRayTraceResult(entity, vector3d);
   }
Теперь всё просто, мы можешь либо изменять axisalignedbb, либо же возвращать null если функция NoRayTrace включена, по итогу вот как будет выглядеть это у меня, я не пишу свой чит, поэтому покажу на миксинах, вот итог:
newCode:
@Mixin(ProjectileHelper.class)
public class ProjectileHelperMixin {
    @Inject(method = "getEntityHitResult(Lnet/minecraft/entity/Entity;Lnet/minecraft/util/math/vector/Vector3d;Lnet/minecraft/util/math/vector/Vector3d;Lnet/minecraft/util/math/AxisAlignedBB;Ljava/util/function/Predicate;D)Lnet/minecraft/util/math/EntityRayTraceResult;", at = @At("RETURN"), cancellable = true)
    private static void hitResultHook(Entity shooter, Vector3d start, Vector3d end, AxisAlignedBB axisAlignedBB, Predicate<Entity> entityPredicate, double maxRange, CallbackInfoReturnable<EntityRayTraceResult> cir)
    {
        World world = shooter.level;
        double range = maxRange;
        Entity entity = null;
        Vector3d vector3d = null;
        for(Entity entity1 : world.getEntities(shooter, axisAlignedBB, entityPredicate)) {
            AxisAlignedBB axisalignedbb = entity1.getBoundingBox().inflate((double)entity1.getPickRadius());
            Optional<Vector3d> optional = axisalignedbb.clip(start, end);
            if (axisalignedbb.contains(start)) {
                if (range >= .0D) {
                    entity = entity1;
                    vector3d = optional.orElse(start);
                    range = 0.0D;
                }
            } else if (optional.isPresent()) {
                Vector3d vector3d1 = optional.get();
                double distance = start.distanceToSqr(vector3d1);
                if (distance < range || range == 0.0D) {
                    if (entity1.getRootVehicle() == shooter.getRootVehicle() && !entity1.canRiderInteract()) {
                        if (range == 0.0D) {
                            entity = entity1;
                            vector3d = vector3d1;
                        }
                    } else {
                        entity = entity1;
                        vector3d = vector3d1;
                        range = distance;
                    }
                }
            }
        }
        cir.setReturnValue(entity == null ? null : ((BoolValue && entity instanceof PlayerEntity) ? null : new EntityRayTraceResult(entity, vector3d)));
    }
}
Так же вам надо зарегистрировать этот класс как Mixin.
Всё, это готовый вариант, так же обратите внимание, я переименовал некоторые объекты что бы вам было понятнее.
Всем удачи!
:CoolCat:
 
Начинающий
Статус
Оффлайн
Регистрация
22 Янв 2024
Сообщения
79
Реакции[?]
0
Поинты[?]
0
Всем привет, видел то что сливают "NoPlayerTrace", но те функции как таковыми не являются, т.к они работают по разному, Hitbox - это объект который показывает область занимаемую Entity(в нашем случае игроком).
Trace - наш луч, показывает, пересекается ли он с хитбоксом(надеюсь я не ошибаюсь), как раз и хукнёмся к методу который возвращает результат в случае true.
У нас есть класс ProjectileHelper, по крайней мере на 1.16.5 так, на версиях выше будет ProjectileUtil или что то другое, находим метод
2:
   @Nullable
   @OnlyIn(Dist.CLIENT)
   public static EntityRayTraceResult getEntityHitResult(Entity p_221273_0_, Vector3d p_221273_1_, Vector3d p_221273_2_, AxisAlignedBB p_221273_3_, Predicate<Entity> p_221273_4_, double p_221273_5_) {
      World world = p_221273_0_.level;
      double d0 = p_221273_5_;
      Entity entity = null;
      Vector3d vector3d = null;

      for(Entity entity1 : world.getEntities(p_221273_0_, p_221273_3_, p_221273_4_)) {
         AxisAlignedBB axisalignedbb = entity1.getBoundingBox().inflate((double)entity1.getPickRadius());
         Optional<Vector3d> optional = axisalignedbb.clip(p_221273_1_, p_221273_2_);
         if (axisalignedbb.contains(p_221273_1_)) {
            if (d0 >= 0.0D) {
               entity = entity1;
               vector3d = optional.orElse(p_221273_1_);
               d0 = 0.0D;
            }
         } else if (optional.isPresent()) {
            Vector3d vector3d1 = optional.get();
            double d1 = p_221273_1_.distanceToSqr(vector3d1);
            if (d1 < d0 || d0 == 0.0D) {
               if (entity1.getRootVehicle() == p_221273_0_.getRootVehicle() && !entity1.canRiderInteract()) {
                  if (d0 == 0.0D) {
                     entity = entity1;
                     vector3d = vector3d1;
                  }
               } else {
                  entity = entity1;
                  vector3d = vector3d1;
                  d0 = d1;
               }
            }
         }
      }

      return entity == null ? null : new EntityRayTraceResult(entity, vector3d);
   }
Теперь всё просто, мы можешь либо изменять axisalignedbb, либо же возвращать null если функция NoRayTrace включена, по итогу вот как будет выглядеть это у меня, я не пишу свой чит, поэтому покажу на миксинах, вот итог:
newCode:
@Mixin(ProjectileHelper.class)
public class ProjectileHelperMixin {
    @Inject(method = "getEntityHitResult(Lnet/minecraft/entity/Entity;Lnet/minecraft/util/math/vector/Vector3d;Lnet/minecraft/util/math/vector/Vector3d;Lnet/minecraft/util/math/AxisAlignedBB;Ljava/util/function/Predicate;D)Lnet/minecraft/util/math/EntityRayTraceResult;", at = @At("RETURN"), cancellable = true)
    private static void hitResultHook(Entity shooter, Vector3d start, Vector3d end, AxisAlignedBB axisAlignedBB, Predicate<Entity> entityPredicate, double maxRange, CallbackInfoReturnable<EntityRayTraceResult> cir)
    {
        World world = shooter.level;
        double range = maxRange;
        Entity entity = null;
        Vector3d vector3d = null;
        for(Entity entity1 : world.getEntities(shooter, axisAlignedBB, entityPredicate)) {
            AxisAlignedBB axisalignedbb = entity1.getBoundingBox().inflate((double)entity1.getPickRadius());
            Optional<Vector3d> optional = axisalignedbb.clip(start, end);
            if (axisalignedbb.contains(start)) {
                if (range >= .0D) {
                    entity = entity1;
                    vector3d = optional.orElse(start);
                    range = 0.0D;
                }
            } else if (optional.isPresent()) {
                Vector3d vector3d1 = optional.get();
                double distance = start.distanceToSqr(vector3d1);
                if (distance < range || range == 0.0D) {
                    if (entity1.getRootVehicle() == shooter.getRootVehicle() && !entity1.canRiderInteract()) {
                        if (range == 0.0D) {
                            entity = entity1;
                            vector3d = vector3d1;
                        }
                    } else {
                        entity = entity1;
                        vector3d = vector3d1;
                        range = distance;
                    }
                }
            }
        }
        cir.setReturnValue(entity == null ? null : ((BoolValue && entity instanceof PlayerEntity) ? null : new EntityRayTraceResult(entity, vector3d)));
    }
}
Так же вам надо зарегистрировать этот класс как Mixin.
Всё, это готовый вариант, так же обратите внимание, я переименовал некоторые объекты что бы вам было понятнее.
Всем удачи!
харош бро!
 
Сверху Снизу