-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Обойдемся без хейта, только учусь
Java:
@Mod.EventBusSubscriber
public class Noplayertrace {
private static final KeyBinding toggleKey = new KeyBinding(" ", GLFW.GLFW_KEY_O, " ");
private static boolean isActive = false;
private static boolean wasPressed = false;
public Noplayertrace() {
MinecraftForge.EVENT_BUS.register(this);
ClientRegistry.registerKeyBinding(toggleKey);
}
@SubscribeEvent
public static void onRenderWorldLast(RenderWorldLastEvent event) {
if (!isActive) return;
adjustBoundingBoxesForPlayers();
}
@SubscribeEvent
public static void onKeyInput(TickEvent.ClientTickEvent event) {
ClientPlayerEntity player = net.minecraft.client.Minecraft.getInstance().player;
if (player != null) {
if (toggleKey.isDown() && !wasPressed) {
isActive = !isActive;
wasPressed = true;
} else if (!toggleKey.isDown()) {
wasPressed = false;
}
}
}
private static void adjustBoundingBoxesForPlayers() {
for (PlayerEntity player : net.minecraft.client.Minecraft.getInstance().level.players()) {
if (shouldSkipPlayer(player)) continue;
float sizeMultiplier = isActive ? 0.0F : 0.3F;
setBoundingBox(player, sizeMultiplier);
}
}
private static boolean shouldSkipPlayer(PlayerEntity player) {
return player == net.minecraft.client.Minecraft.getInstance().player || !player.isAlive();
}
private static void setBoundingBox(Entity entity, float size) {
AxisAlignedBB newBoundingBox = calculateBoundingBox(entity, size);
entity.setBoundingBox(newBoundingBox);
}
private static AxisAlignedBB calculateBoundingBox(Entity entity, float size) {
double minX = entity.getX() - size;
double minY = entity.getBoundingBox().minY;
double minZ = entity.getZ() - size;
double maxX = entity.getX() + size;
double maxY = entity.getBoundingBox().maxY;
double maxZ = entity.getZ() + size;
return new AxisAlignedBB(minX, minY, minZ, maxX, maxY, maxZ);
}
public static boolean isActive() {
return isActive;
}
}