-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Функция позволяет лутать мистики и тд через игроков вот код:
если что делал за основой HitBox и это первая функция
если что делал за основой HitBox и это первая функция
NoHitBox:
package wtf.expensive.modules.impl.combat;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.AxisAlignedBB;
import wtf.expensive.events.Event;
import wtf.expensive.events.impl.render.EventRender;
import wtf.expensive.modules.Function;
import wtf.expensive.modules.FunctionAnnotation;
import wtf.expensive.modules.Type;
import wtf.expensive.modules.settings.imp.BooleanOption;
import wtf.expensive.modules.settings.imp.SliderSetting;
/**
[LIST]
[*][USER=35246]@Author[/USER] va1dy
[*][USER=30931]@since[/USER] 21.02.2024
[/LIST]
*/
@FunctionAnnotation(name = "NoHitBox", type = Type.Combat)
public class NoHitBox extends Function {
public final SliderSetting size = new SliderSetting("Размер", -1.0f, -1.f, -1.f, 0.00f);
public final BooleanOption invisible = new BooleanOption("Невидимые", false);
public NoHitBox() {
addSettings(size, invisible);
}
@Override
public void onEvent(final Event event) {
handleEvent(event);
}
/**
* Обрабатываем событие.
*/
private void handleEvent(Event event) {
// Проверка, является ли событие типом EventRender и включено ли 3D-отображение
if (!(event instanceof EventRender && ((EventRender) event).isRender3D()))
return;
// Проверка, включен ли режим невидимости
if (invisible.get())
return;
// Выполнение корректировки границ хитбокса для игроков
adjustBoundingBoxesForPlayers();
}
/**
* Настраиваем хитбокс игрока под кастомный размер.
*/
private void adjustBoundingBoxesForPlayers() {
// Перебор всех игроков в мире
for (PlayerEntity player : mc.world.getPlayers()) {
// Проверка, нужно ли пропустить данного игрока при корректировке хитбокса
if (shouldSkipPlayer(player))
continue;
// Вычисление множителя размера и установка нового хитбокса для игрока
float sizeMultiplier = this.size.getValue().floatValue() * 0.0F;
setBoundingBox(player, sizeMultiplier);
}
}
/**
* Проверка на валидного игрока
*/
private boolean shouldSkipPlayer(PlayerEntity player) {
// Проверка, нужно ли пропустить данного игрока при корректировке хитбокса
// Игрок пропускается, если это текущий игрок (mc.player) или если игрок мертв
return player == mc.player || !player.isAlive();
}
/**
* Устанавливаем новый размер для хитбокса
*/
private void setBoundingBox(Entity entity, float size) {
// Вычисление нового хитбокса для сущности и установка ее
AxisAlignedBB newBoundingBox = calculateBoundingBox(entity, size);
entity.setBoundingBox(newBoundingBox);
}
/**
* Вычисление координат минимальной и максимальной точек хитбокса для сущности и создание
* и возвращение нового хитбокса сущности
*/
private AxisAlignedBB calculateBoundingBox(Entity entity, float size) {
// Вычисление координат минимальной и максимальной точек хитбокса для сущности
double minX = entity.getPosX() - size;
double minY = entity.getBoundingBox().minY;
double minZ = entity.getPosZ() - size;
double maxX = entity.getPosX() + size;
double maxY = entity.getBoundingBox().maxY;
double maxZ = entity.getPosZ() + size;
// Создание и возвращение нового хитбокса сущности
return new AxisAlignedBB(minX, minY, minZ, maxX, maxY, maxZ);
}
}