@Override @SideOnly(Side.CLIENT) public void draw(CanvasClient canvas) { if (points.size() < 2) return; setupFlat(); GlStateManager.glLineWidth(scale); int red = getRed(), green = getGreen(), blue = getBlue(), alpha = getAlpha(); Tessellator tessellator = Tessellator.getInstance(); BufferBuilder buffer = tessellator.getBuffer(); buffer.begin(GL_LINE_LOOP, DefaultVertexFormats.POSITION_COLOR); for (Vec2d point : points) buffer.pos(point.x, point.y, 0).color(red, green, blue, alpha).endVertex(); tessellator.draw(); GlStateManager.glLineWidth(1); } }
private static void drawStraightLine(VehicleBase vehicle, float partialTick, Vec3d renderOffset) { double x2 = renderOffset.x - 20 * Trig.sinDegrees(vehicle.rotationYaw + partialTick * vehicle.moveHelper.getRotationSpeed()); double z2 = renderOffset.z - 20 * Trig.cosDegrees(vehicle.rotationYaw + partialTick * vehicle.moveHelper.getRotationSpeed()); GlStateManager.glLineWidth(3f); GlStateManager.glBegin(GL11.GL_LINES); GL11.glVertex3d(renderOffset.x, renderOffset.y + 0.12d, renderOffset.z); GL11.glVertex3d(x2, renderOffset.y + 0.12d, z2); GlStateManager.glEnd(); }
@Override @SideOnly(Side.CLIENT) public void draw(CanvasClient canvas) { setupFlat(); GlStateManager.glLineWidth(thickness); int red = getRed(), green = getGreen(), blue = getBlue(), alpha = getAlpha(); Tessellator tessellator = Tessellator.getInstance(); BufferBuilder buffer = tessellator.getBuffer(); buffer.begin(GL_LINES, DefaultVertexFormats.POSITION_COLOR); buffer.pos((float) start.x, (float) start.y, 0).color(red, green, blue, alpha).endVertex(); buffer.pos((float) end.x, (float) end.y, 0).color(red, green, blue, alpha).endVertex(); tessellator.draw(); GlStateManager.glLineWidth(1); } }
@Override public void render(int mouseX, int mouseY, float partialTick) { GlStateManager.disableTexture2D(); GlStateManager.disableLighting(); GlStateManager.glLineWidth(lineWidth * getScaleFactor()); setColor(); GlStateManager.glBegin(GL11.GL_LINE_LOOP); GL11.glVertex2f(renderX, renderY); GL11.glVertex2f(renderX + x2, renderY + y2); GlStateManager.glEnd(); GlStateManager.color(1.f, 1.f, 1.f, 1.f); GlStateManager.enableTexture2D(); }
private static void drawDynamicPart(VehicleBase vehicle, float partialTick, Vec3d renderOffset, IDynamicOverlayPartRenderer dynamicRenderer) { GlStateManager.glLineWidth(4f); GlStateManager.color(1.f, 0.4f, 0.4f, 0.4f); GlStateManager.glBegin(GL11.GL_LINES); double gravity = 9.81d * 0.05d * 0.05d; double speed = vehicle.localLaunchPower * 0.05d; double angle = 90 - vehicle.localTurretPitch - vehicle.rotationPitch; double yaw = vehicle.localTurretRotation + partialTick * vehicle.moveHelper.getRotationSpeed(); double vH = -Trig.sinDegrees((float) angle) * speed; Vec3d accelerationVector = new Vec3d(Trig.sinDegrees((float) yaw) * vH, Trig.cosDegrees((float) angle) * speed, Trig.cosDegrees((float) yaw) * vH); dynamicRenderer.render(renderOffset, speed, accelerationVector, gravity); GlStateManager.glEnd(); }
@SubscribeEvent public void onWorldRenderLast(RenderWorldLastEvent event) { if (previewPositions.isEmpty()) { return; } float partialTicks = event.getPartialTicks(); EntityPlayer player = Minecraft.getMinecraft().player; double playerX = player.lastTickPosX + (player.posX - player.lastTickPosX) * partialTicks; double playerY = player.lastTickPosY + (player.posY - player.lastTickPosY) * partialTicks; double playerZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * partialTicks; GlStateManager.pushMatrix(); GlStateManager.translate(-playerX, -playerY, -playerZ); GlStateManager.enableBlend(); GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); GlStateManager.glLineWidth(6.0F); GlStateManager.disableTexture2D(); for (BlockPos position : previewPositions) { AxisAlignedBB boundingBox = this.boundingBox.offset(position); RenderGlobal.renderFilledBox(boundingBox, 0.75F, 0.5F, 0.0F, 0.45F); } GlStateManager.enableTexture2D(); GlStateManager.disableBlend(); GlStateManager.popMatrix(); } }
GlStateManager.glLineWidth(6.0F); GlStateManager.disableTexture2D(); GlStateManager.depthMask(false);
/** * @param x1 * @param y1 * @param x2 * @param y2 */ protected void drawLine(float x1, float y1, float x2, float y2, float publicZLevel) { GlStateManager.pushMatrix(); GlStateManager.disableTexture2D(); GlStateManager.color(0F, 0F, 0F, 1F); GlStateManager.glLineWidth(2F); GlStateManager.glBegin(GL11.GL_LINES); GlStateManager.glVertex3f(x1, y1, publicZLevel); GlStateManager.glVertex3f(x2, y2, publicZLevel); GlStateManager.glEnd(); GlStateManager.enableTexture2D(); GlStateManager.color(1, 1, 1, 1); GlStateManager.popMatrix(); }
/** * Draws the selection box for the player. Args: entityPlayer, rayTraceHit, i, itemStack, partialTickTime */ public static void drawSelectionBox(EntityPlayer player, RayTraceResult rayTraceResult, float pTickTime, CustomHitBox customHitBox) { if (rayTraceResult.typeOfHit == Type.BLOCK) { GlStateManager.enableBlend(); GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0); GlStateManager.color(0.0F, 0.0F, 0.0F, 0.4F); GlStateManager.glLineWidth(2.0F); GlStateManager.disableTexture2D(); GlStateManager.depthMask(false); IBlockState state = player.world.getBlockState(rayTraceResult.getBlockPos()); if (state.getMaterial() != Material.AIR) { //block.setBlockBoundsBasedOnState(thePlayer.worldObj, rayTraceResult.blockX, rayTraceResult.blockY, rayTraceResult.blockZ); double d0 = player.lastTickPosX + (player.posX - player.lastTickPosX) * pTickTime; double d1 = player.lastTickPosY + (player.posY - player.lastTickPosY) * pTickTime; double d2 = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * pTickTime; drawOutlinedBoundingBox(customHitBox.addExtraSpace(extraSpace).offsetForDraw(-d0, -d1, -d2)); } GlStateManager.depthMask(true); GlStateManager.enableTexture2D(); GlStateManager.disableBlend(); } }
public void drawSelectionBoxOriginal(EntityPlayer player, RayTraceResult movingObjectPositionIn, int execute, float partialTicks) { if (execute == 0 && movingObjectPositionIn.typeOfHit == RayTraceResult.Type.BLOCK) { GlStateManager.enableBlend(); GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); GlStateManager.glLineWidth(2.0F); GlStateManager.disableTexture2D(); GlStateManager.depthMask(false); BlockPos blockpos = movingObjectPositionIn.getBlockPos(); IBlockState iblockstate = player.world.getBlockState(blockpos); if (iblockstate.getMaterial() != Material.AIR && player.world.getWorldBorder().contains(blockpos)) { double d0 = 0;// player.lastTickPosX + (player.posX - player.lastTickPosX) * (double) partialTicks; double d1 = 0;//player.lastTickPosY + (player.posY - player.lastTickPosY) * (double) partialTicks; double d2 = 0;//player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double) partialTicks; RenderGlobal.drawSelectionBoundingBox(iblockstate.getSelectedBoundingBox(player.world, blockpos).expand(0.0020000000949949026D, 0.0020000000949949026D, 0.0020000000949949026D).offset(-d0, -d1, -d2), 0.0F, 0.0F, 0.0F, 0.4F); } GlStateManager.depthMask(true); GlStateManager.enableTexture2D(); GlStateManager.disableBlend(); } }
public void drawSelectionBoxOriginal(EntityPlayer player, RayTraceResult movingObjectPositionIn, int execute, float partialTicks) { if (execute == 0 && movingObjectPositionIn.typeOfHit == RayTraceResult.Type.BLOCK) { GlStateManager.enableBlend(); GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); GlStateManager.glLineWidth(2.0F); GlStateManager.disableTexture2D(); GlStateManager.depthMask(false); BlockPos blockpos = movingObjectPositionIn.getBlockPos(); IBlockState iblockstate = this.world.getBlockState(blockpos); if (iblockstate.getMaterial() != Material.AIR && this.world.getWorldBorder().contains(blockpos)) { double d0 = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double) partialTicks; double d1 = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double) partialTicks; double d2 = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double) partialTicks; drawSelectionBoundingBox(iblockstate.getSelectedBoundingBox(this.world, blockpos).grow(0.0020000000949949026D).offset(-d0, -d1, -d2), 0.0F, 0.0F, 0.0F, 0.4F); } GlStateManager.depthMask(true); GlStateManager.enableTexture2D(); GlStateManager.disableBlend(); } }
GlStateManager.glLineWidth(3); GlStateManager.translate(-doubleX, -doubleY, -doubleZ);
GlStateManager.disableLighting(); GlStateManager.disableAlpha(); GlStateManager.glLineWidth(1f); GlStateManager.color(1f, 1f, 1f); GlStateManager.glLineWidth(1f); GlStateManager.color(1f, 1f, 1f, 1f); GlStateManager.enableLighting();
GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); GlStateManager.disableTexture2D(); GlStateManager.glLineWidth(2.0F); GlStateManager.depthMask(false); for (IMultiblockController controller : controllers) {
@SubscribeEvent(priority = EventPriority.LOW) @SideOnly(Side.CLIENT) public static void onBlockHighlight(DrawBlockHighlightEvent event) { BlockPos pos = event.getTarget().getBlockPos(); RayTraceResult hit = event.getTarget(); if (hit.typeOfHit == RayTraceResult.Type.BLOCK && hit instanceof DistanceRayTraceResult) { event.setCanceled(true); GlStateManager.enableBlend(); GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); GlStateManager.glLineWidth(2.0F); GlStateManager.disableTexture2D(); GlStateManager.depthMask(false); EntityPlayer player = event.getPlayer(); double x = player.lastTickPosX + (player.posX - player.lastTickPosX) * event.getPartialTicks(); double y = player.lastTickPosY + (player.posY - player.lastTickPosY) * event.getPartialTicks(); double z = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * event.getPartialTicks(); RenderGlobal.drawSelectionBoundingBox(((Cuboid) ((DistanceRayTraceResult) event.getTarget()).hitInfo).aabb().offset(-x, -y, -z).offset(pos).grow(0.002), 0.0F, 0.0F, 0.0F, 0.4F ); GlStateManager.depthMask(true); GlStateManager.enableTexture2D(); GlStateManager.disableBlend(); } }
private static void renderBox(Tessellator tessellator, BufferBuilder bufferBuilder, double startX, double startY, double startZ, double endX, double endY, double endZ, int R, int G, int B) { GlStateManager.glLineWidth(2.0F); bufferBuilder.begin(3, DefaultVertexFormats.POSITION_COLOR); bufferBuilder.pos(startX, startY, startZ).color(G, G, G, 0.0F).endVertex(); bufferBuilder.pos(startX, startY, startZ).color(G, G, G, R).endVertex(); bufferBuilder.pos(endX, startY, startZ).color(G, B, B, R).endVertex(); bufferBuilder.pos(endX, startY, endZ).color(G, G, G, R).endVertex(); bufferBuilder.pos(startX, startY, endZ).color(G, G, G, R).endVertex(); bufferBuilder.pos(startX, startY, startZ).color(B, B, G, R).endVertex(); bufferBuilder.pos(startX, endY, startZ).color(B, G, B, R).endVertex(); bufferBuilder.pos(endX, endY, startZ).color(G, G, G, R).endVertex(); bufferBuilder.pos(endX, endY, endZ).color(G, G, G, R).endVertex(); bufferBuilder.pos(startX, endY, endZ).color(G, G, G, R).endVertex(); bufferBuilder.pos(startX, endY, startZ).color(G, G, G, R).endVertex(); bufferBuilder.pos(startX, endY, endZ).color(G, G, G, R).endVertex(); bufferBuilder.pos(startX, startY, endZ).color(G, G, G, R).endVertex(); bufferBuilder.pos(endX, startY, endZ).color(G, G, G, R).endVertex(); bufferBuilder.pos(endX, endY, endZ).color(G, G, G, R).endVertex(); bufferBuilder.pos(endX, endY, startZ).color(G, G, G, R).endVertex(); bufferBuilder.pos(endX, startY, startZ).color(G, G, G, R).endVertex(); bufferBuilder.pos(endX, startY, startZ).color(G, G, G, 0.0F).endVertex(); tessellator.draw(); GlStateManager.glLineWidth(1.0F); }
public static void drawOutlinedBoundingBox(AxisAlignedBB bb, float r, float g, float b) { GlStateManager.enableBlend(); GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GlStateManager.color(r, g, b, 0.4F); GlStateManager.glLineWidth(8.0F); GlStateManager.disableTexture2D(); GlStateManager.depthMask(false); Tessellator tess = Tessellator.getInstance(); BufferBuilder bufferBuilder = tess.getBuffer(); drawBottomOutline(bb, bufferBuilder); tess.draw(); drawTopOutline(bb, bufferBuilder); tess.draw(); bufferBuilder.begin(GL11.GL_LINES, DefaultVertexFormats.POSITION); bufferBuilder.pos(bb.minX, bb.minY, bb.minZ).endVertex(); bufferBuilder.pos(bb.minX, bb.maxY, bb.minZ).endVertex(); bufferBuilder.pos(bb.maxX, bb.minY, bb.minZ).endVertex(); bufferBuilder.pos(bb.maxX, bb.maxY, bb.minZ).endVertex(); bufferBuilder.pos(bb.maxX, bb.minY, bb.maxZ).endVertex(); bufferBuilder.pos(bb.maxX, bb.maxY, bb.maxZ).endVertex(); bufferBuilder.pos(bb.minX, bb.minY, bb.maxZ).endVertex(); bufferBuilder.pos(bb.minX, bb.maxY, bb.maxZ).endVertex(); tess.draw(); GlStateManager.depthMask(true); GlStateManager.enableTexture2D(); GlStateManager.disableBlend(); }
GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0); GlStateManager.color(0.0F, 0.0F, 0.0F, 0.4F); GlStateManager.glLineWidth(3.0F); GlStateManager.disableTexture2D(); GlStateManager.depthMask(false);
GlStateManager.glLineWidth(3f); GlStateManager.glBegin(GL11.GL_LINES); GL11.glVertex3d(x1, y1 + 0.12d, z1);
GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); GlStateManager.glLineWidth(2.0F); GlStateManager.disableTexture2D(); GlStateManager.depthMask(false);