类net.minecraft.util.ScreenShotHelper源码实例Demo

下面列出了怎么用net.minecraft.util.ScreenShotHelper的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: Hyperium   文件: MixinMinecraft.java
@Inject(
    method = "dispatchKeypresses",
    at = @At(
        value = "INVOKE",
        shift = At.Shift.BEFORE,
        target = "Lnet/minecraft/client/gui/GuiNewChat;printChatMessage(Lnet/minecraft/util/IChatComponent;)V",
        ordinal = 1
    ),
    cancellable = true
)
private void dispatchKeypresses(CallbackInfo ci) {
    IChatComponent chatComponent = ScreenShotHelper.saveScreenshot(mcDataDir, displayWidth, displayHeight, framebufferMc);
    new TextComponent(chatComponent).chat();
    ci.cancel();
}
 
源代码2 项目: litematica   文件: GuiSchematicManager.java
public void createAndSetPreviewImage()
{
    LitematicaSchematic schematic = LitematicaSchematic.createFromFile(this.dir, this.fileName);

    if (schematic != null)
    {
        try
        {
            Minecraft mc = Minecraft.getMinecraft();
            BufferedImage screenshot = ScreenShotHelper.createScreenshot(mc.displayWidth, mc.displayHeight, mc.getFramebuffer());

            int x = screenshot.getWidth() >= screenshot.getHeight() ? (screenshot.getWidth() - screenshot.getHeight()) / 2 : 0;
            int y = screenshot.getHeight() >= screenshot.getWidth() ? (screenshot.getHeight() - screenshot.getWidth()) / 2 : 0;
            int longerSide = Math.min(screenshot.getWidth(), screenshot.getHeight());
            //System.out.printf("w: %d, h: %d, x: %d, y: %d\n", screenshot.getWidth(), screenshot.getHeight(), x, y);

            int previewDimensions = 140;
            double scaleFactor = (double) previewDimensions / longerSide;
            BufferedImage scaled = new BufferedImage(previewDimensions, previewDimensions, BufferedImage.TYPE_INT_ARGB);
            AffineTransform at = new AffineTransform();
            at.scale(scaleFactor, scaleFactor);
            AffineTransformOp scaleOp = new AffineTransformOp(at, AffineTransformOp.TYPE_BICUBIC);

            Graphics2D graphics = scaled.createGraphics();
            graphics.drawImage(screenshot.getSubimage(x, y, longerSide, longerSide), scaleOp, 0, 0);

            int[] pixels = scaled.getRGB(0, 0, previewDimensions, previewDimensions, null, 0, scaled.getWidth());

            schematic.getMetadata().setPreviewImagePixelData(pixels);
            schematic.getMetadata().setTimeModifiedToNow();

            schematic.writeToFile(this.dir, this.fileName, true);

            InfoUtils.showGuiOrInGameMessage(MessageType.SUCCESS, "litematica.info.schematic_manager.preview.success");
        }
        catch (Exception e)
        {
            Litematica.logger.warn("Exception while creating preview image", e);
        }
    }
    else
    {
        InfoUtils.showGuiOrInGameMessage(MessageType.ERROR, "litematica.error.schematic_rename.read_failed");
    }
}
 
 类所在包
 类方法
 同包方法