Я продвинул чтоб чутка чтобы тема ожила а то боксы для пастеров нормЧестно если ты делаешь впервые то очень хорошо,а так +- фиксить нужно
Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Я продвинул чтоб чутка чтобы тема ожила а то боксы для пастеров нормЧестно если ты делаешь впервые то очень хорошо,а так +- фиксить нужно
боксы так то нормальные если их доделатьЯ продвинул чтоб чутка чтобы тема ожила а то боксы для пастеров норм
боксы так то нормальные если их доделатьпастерам
Пастерам кокрасбоксы так то нормальные если их доделать
даже не понос а завоз, но нахуя мастеров кормитькароче боксы как в нурике и вексайде понимаю что код можно было сделать намного меньше и еще понимаю что функция не нужная, но для визуалов самое то
без дип сика не обошлось извиняюсь сразу помогал мне исправлять код 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 { } }
/delкароче боксы как в нурике и вексайде понимаю что код можно было сделать намного меньше и еще понимаю что функция не нужная, но для визуалов самое то
без дип сика не обошлось извиняюсь сразу помогал мне исправлять код 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 { } }
/delкароче боксы как в нурике и вексайде понимаю что код можно было сделать намного меньше и еще понимаю что функция не нужная, но для визуалов самое то
без дип сика не обошлось извиняюсь сразу помогал мне исправлять код 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 { } }
и смысл от данной темы? Это уже сливали, и сливали намного лучше чем этокароче боксы как в нурике и вексайде понимаю что код можно было сделать намного меньше и еще понимаю что функция не нужная, но для визуалов самое то
без дип сика не обошлось извиняюсь сразу помогал мне исправлять код 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 { } }
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz