-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathScreenshotHandler.java
More file actions
62 lines (55 loc) · 2.16 KB
/
ScreenshotHandler.java
File metadata and controls
62 lines (55 loc) · 2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import java.awt.image.BufferedImage;
import org.lwjgl.BufferUtils;
import org.lwjgl.opengl.GL11;
import java.nio.*;
import net.minecraft.client.shader.*;
import net.minecraft.client.renderer.*;
import org.lwjgl.*;
import org.lwjgl.opengl.*;
import net.minecraft.client.renderer.texture.*;
import net.minecraft.client.*;
import javax.imageio.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.datatransfer.*;
import java.text.*;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.texture.TextureUtil;
import net.minecraft.client.shader.Framebuffer;
public class ScreenshotHandler {
private static IntBuffer pixelBuffer;
private static int[] pixelData;
public static BufferedImage takeScreenshot(int width, int height, final Framebuffer framebuffer) {
if (OpenGlHelper.isFramebufferEnabled()) {
width = framebuffer.framebufferWidth;
height = framebuffer.framebufferHeight;
}
final int pixels = width * height;
if (ScreenshotHandler.pixelBuffer == null || ScreenshotHandler.pixelBuffer.capacity() < pixels) {
ScreenshotHandler.pixelBuffer = BufferUtils.createIntBuffer(pixels);
ScreenshotHandler.pixelData = new int[pixels];
}
GL11.glPixelStorei(3333, 1);
GL11.glPixelStorei(3317, 1);
ScreenshotHandler.pixelBuffer.clear();
if (OpenGlHelper.isFramebufferEnabled()) {
GL11.glBindTexture(3553, framebuffer.framebufferTexture);
GL11.glGetTexImage(3553, 0, 32993, 33639, ScreenshotHandler.pixelBuffer);
} else {
GL11.glReadPixels(0, 0, width, height, 32993, 33639, ScreenshotHandler.pixelBuffer);
}
ScreenshotHandler.pixelBuffer.get(ScreenshotHandler.pixelData);
TextureUtil.processPixelValues(ScreenshotHandler.pixelData, width, height);
final BufferedImage bufferedimage = new BufferedImage(width, height, 1);
bufferedimage.setRGB(0, 0, width, height, ScreenshotHandler.pixelData, 0, width);
return bufferedimage;
}
public static void processScreenshot() {
final Minecraft mc = Minecraft.getMinecraft();
final Thread t = new Thread(new ScreenshotRunnable("imgur",
takeScreenshot(mc.displayWidth, mc.displayHeight, mc.getFramebuffer())));
t.start();
}
}