Начинающий
-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Получаю координаты сундука(или вагонетки не важно)
в ивенте пытаюсь рисовать бокс на этих координатах и почему-то два рисуется, правильный(-ые) бокс(-ы) рисуются на сундуках вагонетках норм, но вот какого-то фига появляется из ниоткуда лишний куб(-ы):
Версия 1.20.1
Java:
private Set<BlockEntity> renderedChests = new HashSet<>();
private Set<Entity> renderedEntities = new HashSet<>();
@SubscribeEvent
public void DrawBox(RenderLevelStageEvent event) {
if (!UI.ShouldDraw) {
return;
}
Vec3 renderOffset = mc.gameRenderer.getMainCamera().getPosition();//mc.gameRenderer.getMainCamera().getPosition();
// Vec3 vec3 = camera.getPosition().reverse();
//MultiBufferSource.BufferSource buffer = mc.renderBuffers().bufferSource();
int renderDistance = 50; // Adjust the render distance as needed
for (int dx = -renderDistance; dx <= renderDistance; ++dx) {
for (int dz = -renderDistance; dz <= renderDistance; ++dz) {
ChunkPos chunkPos = new ChunkPos(mc.player.blockPosition().offset(dx, 0, dz));
LevelChunk chunk = mc.player.clientLevel.getChunkSource().getChunkNow(chunkPos.x, chunkPos.z);
if (chunk != null) {
Map<BlockPos, BlockEntity> map = chunk.getBlockEntities();
for (BlockEntity blockEntity : map.values())
{
if (blockEntity.getBlockState().getBlock().getDescriptionId().contains("chest"))
{
BlockPos chestPos = blockEntity.getBlockPos();
if (!renderedChests.contains(blockEntity)) {
// Draw only if not rendered before
drawBoundingBox( new AABB(chestPos), 0x9600FF00, renderOffset);
renderedChests.add(blockEntity);
}
}
}
}
}
List<Entity> ents = mc.player.clientLevel.getEntities(mc.player,mc.player.getBoundingBox().inflate(85.0d));
for(Entity entity : ents)
{
if(entity == mc.player)
{
continue;
}
//mc.player.sendSystemMessage(Component.literal(entity.getName().getString()));
if(entity.getType() == EntityType.CHEST_MINECART)
{
BlockPos chestPos = entity.blockPosition();
if (!renderedEntities.contains(entity)) {
// Draw only if not rendered before
drawBoundingBox( new AABB(chestPos), 0x9600CCCC, renderOffset);
renderedEntities.add(entity);
}
}
}
}
// Clear the set for the next frame
renderedChests.clear();
renderedEntities.clear();
// buffer.endBatch();
}
private void drawBoundingBox(AABB boundingBox, int color, Vec3 CameraPos) {
float r = ((color >> 16) & 0xFF) / 255.0F;
float g = ((color >> 8) & 0xFF) / 255.0F;
float b = (color & 0xFF) / 255.0F;
float a = ((color >> 24) & 0xFF) / 255.0F;
Tesselator tessellator = Tesselator.getInstance();
BufferBuilder bufferBuilder = tessellator.getBuilder();
RenderSystem.setShader(GameRenderer::getPositionShader);
RenderSystem.setShaderColor(r, g, b, a);
// Save Matrix
RenderSystem.backupProjectionMatrix();
RenderSystem.applyModelViewMatrix();
RenderSystem.disableDepthTest();
RenderSystem.depthMask(false);
RenderSystem.lineWidth(1.5F);
RenderSystem.blendFunc(770, 771);
RenderSystem.enableBlend();
bufferBuilder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR);
// Adjust the vertices to better fit the chest
float minX = (float) (boundingBox.minX - CameraPos.x());
float minY = (float) (boundingBox.minY - CameraPos.y());
float minZ = (float) (boundingBox.minZ - CameraPos.z());
float maxX = (float) (boundingBox.maxX - CameraPos.x());
float maxY = (float) (boundingBox.maxY - CameraPos.y());
float maxZ = (float) (boundingBox.maxZ - CameraPos.z());
// Front face
bufferBuilder.vertex(minX, minY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, minY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, maxY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, maxY, minZ).color(r, g, b, a).endVertex();
// Back face
bufferBuilder.vertex(minX, minY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, minY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, maxY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, maxY, maxZ).color(r, g, b, a).endVertex();
// Connect the faces
bufferBuilder.vertex(minX, minY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, minY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, minY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, minY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, maxY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, maxY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, maxY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, maxY, minZ).color(r, g, b, a).endVertex();
tessellator.end();
// Restore the previous matrix
RenderSystem.depthMask(true);
RenderSystem.enableDepthTest();
RenderSystem.restoreProjectionMatrix();
RenderSystem.disableBlend();
RenderSystem.defaultBlendFunc();
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
}