Начинающий
- Статус
- Оффлайн
- Регистрация
- 19 Дек 2024
- Сообщения
- 27
- Реакции
- 0
- Выберите загрузчик игры
- Forge
- OptiFine
- ForgeOptiFine
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
кароче боксы как в нурике и вексайде понимаю что код можно было сделать намного меньше и еще понимаю что функция не нужная, но для визуалов самое то
без дип сика не обошлось извиняюсь сразу помогал мне исправлять код ss -
не бейте только плиз, если че все ошибки чинятся через шифт таб так что не надо говорить что у вас что то не работает
без дип сика не обошлось извиняюсь сразу помогал мне исправлять код ss -
Пожалуйста, авторизуйтесь для просмотра ссылки.
не бейте только плиз, если че все ошибки чинятся через шифт таб так что не надо говорить что у вас что то не работает
Java:
package jiraf.cc.modules.impl.render;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import jiraf.cc.events.Event;
import jiraf.cc.events.impl.render.EventRender;
import jiraf.cc.modules.Function;
import jiraf.cc.modules.FunctionAnnotation;
import jiraf.cc.modules.Type;
import jiraf.cc.util.IMinecraft;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.*;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.command.CommandSource;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.vector.Vector3d;
import org.lwjgl.opengl.GL11;
@FunctionAnnotation(
name = "Box 3D",
type = Type.Render
)
public class Box3D extends Function {
private static final double WIDTH = 0.6;
private static final double HEIGHT = 1.8;
// 50% прозрачная белая заливка
private static final float[] FILL_COLOR = {1.0f, 1.0f, 1.0f, 0.5f};
// Полностью непрозрачный белый контур
private static final float[] LINE_COLOR = {1.0f, 1.0f, 1.0f, 1.0f};
@Override
public void onEvent(Event event) {
if (!(event instanceof EventRender)) return;
Minecraft mc = IMinecraft.mc;
if (mc.world == null || mc.player == null || mc.getRenderManager() == null) return;
try {
if (mc.gameSettings.fov == 0) return;
renderHitboxes(mc, ((EventRender)event).partialTicks);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onRenderLevelStage(Box3D.RenderLevelStageEvent event) {
}
private void renderHitboxes(Minecraft mc, float partialTicks) {
RenderSystem.pushMatrix();
RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
RenderSystem.disableTexture();
RenderSystem.disableDepthTest();
RenderSystem.disableCull(); // Важно для отображения со всех сторон
Vector3d view = mc.getRenderManager().info.getProjectedView();
for (PlayerEntity player : mc.world.getPlayers()) {
if (player == mc.player) continue;
renderPlayerHitbox(player, view, partialTicks);
}
RenderSystem.enableCull();
RenderSystem.enableDepthTest();
RenderSystem.enableTexture();
RenderSystem.disableBlend();
RenderSystem.popMatrix();
}
private void renderPlayerHitbox(PlayerEntity player, Vector3d view, float partialTicks) {
double x = lerp(player.lastTickPosX, player.getPosX(), partialTicks) - view.x;
double y = lerp(player.lastTickPosY, player.getPosY(), partialTicks) - view.y;
double z = lerp(player.lastTickPosZ, player.getPosZ(), partialTicks) - view.z;
AxisAlignedBB box = new AxisAlignedBB(
x - WIDTH/2, y, z - WIDTH/2,
x + WIDTH/2, y + HEIGHT, z + WIDTH/2
);
// 1. Рисуем заливку со всех сторон
renderBoxFill(box);
// 2. Рисуем контур со всех сторон
renderBoxOutline(box);
}
private void renderBoxFill(AxisAlignedBB box) {
BufferBuilder buffer = Tessellator.getInstance().getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR);
// Все 6 граней куба (обе стороны)
// Нижняя грань
addQuad(buffer, box.minX, box.minY, box.minZ, box.maxX, box.minY, box.minZ, box.maxX, box.minY, box.maxZ, box.minX, box.minY, box.maxZ);
// Верхняя грань
addQuad(buffer, box.minX, box.maxY, box.minZ, box.minX, box.maxY, box.maxZ, box.maxX, box.maxY, box.maxZ, box.maxX, box.maxY, box.minZ);
// Северная грань (Z-)
addQuad(buffer, box.minX, box.minY, box.minZ, box.minX, box.maxY, box.minZ, box.maxX, box.maxY, box.minZ, box.maxX, box.minY, box.minZ);
// Южная грань (Z+)
addQuad(buffer, box.minX, box.minY, box.maxZ, box.maxX, box.minY, box.maxZ, box.maxX, box.maxY, box.maxZ, box.minX, box.maxY, box.maxZ);
// Западная грань (X-)
addQuad(buffer, box.minX, box.minY, box.minZ, box.minX, box.minY, box.maxZ, box.minX, box.maxY, box.maxZ, box.minX, box.maxY, box.minZ);
// Восточная грань (X+)
addQuad(buffer, box.maxX, box.minY, box.minZ, box.maxX, box.maxY, box.minZ, box.maxX, box.maxY, box.maxZ, box.maxX, box.minY, box.maxZ);
Tessellator.getInstance().draw();
}
private void renderBoxOutline(AxisAlignedBB box) {
BufferBuilder buffer = Tessellator.getInstance().getBuffer();
buffer.begin(GL11.GL_LINES, DefaultVertexFormats.POSITION_COLOR);
// 12 линий куба (все ребра)
// Нижние линии
addLine(buffer, box.minX, box.minY, box.minZ, box.maxX, box.minY, box.minZ);
addLine(buffer, box.maxX, box.minY, box.minZ, box.maxX, box.minY, box.maxZ);
addLine(buffer, box.maxX, box.minY, box.maxZ, box.minX, box.minY, box.maxZ);
addLine(buffer, box.minX, box.minY, box.maxZ, box.minX, box.minY, box.minZ);
// Верхние линии
addLine(buffer, box.minX, box.maxY, box.minZ, box.maxX, box.maxY, box.minZ);
addLine(buffer, box.maxX, box.maxY, box.minZ, box.maxX, box.maxY, box.maxZ);
addLine(buffer, box.maxX, box.maxY, box.maxZ, box.minX, box.maxY, box.maxZ);
addLine(buffer, box.minX, box.maxY, box.maxZ, box.minX, box.maxY, box.minZ);
// Вертикальные линии
addLine(buffer, box.minX, box.minY, box.minZ, box.minX, box.maxY, box.minZ);
addLine(buffer, box.maxX, box.minY, box.minZ, box.maxX, box.maxY, box.minZ);
addLine(buffer, box.maxX, box.minY, box.maxZ, box.maxX, box.maxY, box.maxZ);
addLine(buffer, box.minX, box.minY, box.maxZ, box.minX, box.maxY, box.maxZ);
Tessellator.getInstance().draw();
}
private void addQuad(BufferBuilder buffer,
double x1, double y1, double z1,
double x2, double y2, double z2,
double x3, double y3, double z3,
double x4, double y4, double z4) {
buffer.pos(x1, y1, z1).color(FILL_COLOR[0], FILL_COLOR[1], FILL_COLOR[2], FILL_COLOR[3]).endVertex();
buffer.pos(x2, y2, z2).color(FILL_COLOR[0], FILL_COLOR[1], FILL_COLOR[2], FILL_COLOR[3]).endVertex();
buffer.pos(x3, y3, z3).color(FILL_COLOR[0], FILL_COLOR[1], FILL_COLOR[2], FILL_COLOR[3]).endVertex();
buffer.pos(x4, y4, z4).color(FILL_COLOR[0], FILL_COLOR[1], FILL_COLOR[2], FILL_COLOR[3]).endVertex();
}
private void addLine(BufferBuilder buffer,
double x1, double y1, double z1,
double x2, double y2, double z2) {
buffer.pos(x1, y1, z1).color(LINE_COLOR[0], LINE_COLOR[1], LINE_COLOR[2], LINE_COLOR[3]).endVertex();
buffer.pos(x2, y2, z2).color(LINE_COLOR[0], LINE_COLOR[1], LINE_COLOR[2], LINE_COLOR[3]).endVertex();
}
private double lerp(double start, double end, float progress) {
return start + (end - start) * progress;
}
public void onEventModule(Event event) {}
public void register(LiteralArgumentBuilder<CommandSource> then) {
}
public class RenderLevelStageEvent {
}
}