Jump to content

How to render a BufferedImage in a GUI 1.16.5


Marelo

Recommended Posts

Hello, I'm new at modding and recently I was trying to put a image, which is outside .jar, into a gui. But the far I got is load this image in a byte[] the transforme this in a BufferedImage. I search some foruns and thigs about how I could solve my problem, a part of them seems to transform the ImageBuffer into a intByte them use GL11 to render the image, but i cant make the image appear in my GUI. The other part seems to use DynamicTexture, but the questions is outdate (like 2014 or 2015) and the code seems to cheged.

I think the most promising way to solve my problem is through GL11, but I am open to new ways and possibilties. I even tried to render this image with the JNA using GDI32, but ( because I'm a completely noob ) It doesn't work.

The reason why I want a BufferedImage is because the image will uptade according to another API thata generates random images each time. This is why I can't put the image at resources.

If anyone want any code for the gui.

Thanks if you readed this far.

 

Spoiler

import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.api.distmarker.Dist;

import net.minecraft.world.World;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.ResourceLocation;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
import net.minecraft.client.renderer.texture.DynamicTexture;
import net.minecraft.client.Minecraft;


import com.mojang.blaze3d.systems.RenderSystem;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.Map;

import org.lwjgl.BufferUtils;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;

import static org.lwjgl.opengl.GL11.*;

import com.google.common.collect.Maps;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;

@OnlyIn(Dist.CLIENT)
public class MyWindowGUI extends ContainerScreen<MyWindowGUIContainer.GuiContainerMod> {
    
    private World world;
    private int x, y, z;
    private PlayerEntity entity;
    public MyWindowGUI(MyWindowGUIContainer.GuiContainerMod container, PlayerInventory inventory, ITextComponent text) {
        super(container, inventory, text);
        this.world = container.world;
        this.x = container.x;
        this.y = container.y;
        this.z = container.z;
        this.entity = container.entity;
        this.xSize = 500;
        this.ySize = 400;
    }
    private static final ResourceLocation texture = new ResourceLocation("myMod:textures/textuteTest.png");

    
    @Override
    public void render(MatrixStack ms, int mouseX, int mouseY, float partialTicks) {
        this.renderBackground(ms);
        super.render(ms, mouseX, mouseY, partialTicks);
        this.renderHoveredTooltip(ms, mouseX, mouseY);
    

    }

    @Override
    protected void drawGuiContainerBackgroundLayer(MatrixStack ms, float partialTicks, int gx, int gy) {
        RenderSystem.color4f(1, 1, 1, 1);
        RenderSystem.enableBlend();
        RenderSystem.defaultBlendFunc();
        Minecraft.getInstance().getTextureManager().bindTexture(texture);
        int k = (this.width - this.xSize) / 2;
        int l = (this.height - this.ySize) / 2;
        this.blit(ms, k, l, 0, 0, this.xSize, this.ySize, this.xSize, this.ySize);
        try{
            //Minecraft.getInstance().getTextureManager().bindTexture(new ResourceLocation("modId:textures/screen1.jpeg"));
            }catch(Exception e){  }
        this.blit(ms, this.guiLeft + 42, this.guiTop + 84, 0, 0, 96, 128, 96, 128);
        RenderSystem.disableBlend();
    }

    @Override
    public boolean keyPressed(int key, int b, int c) {
        if (key == 256) {
            this.minecraft.player.closeScreen();
            return true;
        }
        return super.keyPressed(key, b, c);
    }

    @Override
    public void tick() {
        super.tick();
    }

    @Override
    protected void drawGuiContainerForegroundLayer(MatrixStack ms, int mouseX, int mouseY) {
        
        //my previos attempts
        
//        glPushMatrix();
//        
//        BufferedImage image = new BufferedImage(128, 128, BufferedImage.TYPE_INT_ARGB);
//        Graphics2D g2d = image.createGraphics();
//
//        g2d.setColor(new Color(1.0f, 1.0f, 1.0f, 0.5f));
//        g2d.fillRect(0, 0, 128, 128); //A transparent white background
//                
//        g2d.setColor(Color.red);
//        g2d.drawRect(0, 0, 127, 127); //A red frame around the image
//        g2d.fillRect(10, 10, 10, 10); //A red box 
//                
//        g2d.setColor(Color.blue);
//        g2d.drawString("Test image", 10, 64); //Some blue text
//        g2d.dispose();
//        
//        int[] pixels = new int[image.getWidth() * image.getHeight()];
//        image.getRGB(0, 0, image.getWidth(), image.getHeight(), pixels, 0, image.getWidth());
//
//        ByteBuffer buffer = BufferUtils.createByteBuffer(image.getWidth() * image.getHeight() * 4); //4 for RGBA, 3 for RGB
//        
//        for(int y = 0; y < image.getHeight() ; y++){
//            for(int x = 0; x < image.getWidth(); x++){
//                int pixel = pixels[y * image.getWidth() + x];
//                buffer.put((byte) ((pixel >> 16) & 0xFF));     // Red component
//                buffer.put((byte) ((pixel >> 8) & 0xFF));      // Green component
//                buffer.put((byte) (pixel & 0xFF));                // Blue component
//                buffer.put((byte) ((pixel >> 24) & 0xFF));    // Alpha component. Only for RGBA
//            }
//        }
//
//        buffer.flip(); //FOR THE LOVE OF GOD DO NOT FORGET THIS
//
//
//       int textureID = glGenTextures(); //Generate texture ID
//       
//       GlStateManager.bindBuffer(mouseX, textureID);
//        glBindTexture(GL_TEXTURE_2D, textureID); //Bind texture ID
//        
//        //Setup wrap mode
//        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL12.GL_CLAMP_TO_EDGE);
//        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL12.GL_CLAMP_TO_EDGE);
//
//        //Setup texture scaling filtering
//        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
//        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
//        
//        //Send texel data to OpenGL
//        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, image.getWidth(), image.getHeight(), 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
//
//        glBindTexture(GL_TEXTURE_2D, textureID);
//        glEnd();
        //images.put("minhaTextura", new DynamicTexture(GuiIsOpenProcedure.buffImage));
        
        //RenderSystem.enableBlend();
        //RenderSystem.defaultBlendFunc();
        //int k = (this.width - this.xSize) / 2;
        
        //int l = (this.height - this.ySize) / 2;
        //this.blit(ms, k, l, 0, 0, this.xSize, this.ySize, this.xSize, this.ySize);
        
        
        
        //Minecraft.getInstance().getTextureManager().get
        //System.out.println(
        //Minecraft.getInstance().getTextureManager().getDynamicTextureLocation("texture2", GuiIsOpenProcedure.buffImage)
        //);
    }

    @Override
    public void onClose() {
        super.onClose();
        GuiIsOpenProcedure.guiIsOpen = false;
        Minecraft.getInstance().keyboardListener.enableRepeatEvents(false);
    }

    @Override
    public void init(Minecraft minecraft, int width, int height) {
        super.init(minecraft, width, height);
        minecraft.keyboardListener.enableRepeatEvents(true);
    }
}
 

 

Edited by Marelo
Link to comment
Share on other sites

I read in stackOverflow that i can't save a image inside a .jar. But i don't know if is possible. Because i generate the image outside the .jar. What I tring to do looks like rendering the icon image of the world inside the game, it is just an example, isn't the case

I'm modding at eclipse, if I understand the question.

Edited by Marelo
Link to comment
Share on other sites

8 minutes ago, Marelo said:

I read in stackOverflow that i can't save a image inside a .jar. But i don't know if is possible. Because i generate the image outside the .jar. What I tring to do looks like rendering the icon image of the world inside the game, it is just an example, isn't the case

why do you want to do this?

8 minutes ago, Marelo said:

I'm modding at eclipse, if I understand the question.

using the mdk?

Link to comment
Share on other sites

2 minutes ago, Luis_ST said:

why do you want to do this?

using the mdk?

yes

2 minutes ago, Luis_ST said:

why do you want to do this?

Because my API only generates this outside the .jar

Edited by Marelo
Link to comment
Share on other sites

4 minutes ago, Luis_ST said:

why would you want to save a picture in a .jar?

ResourceLocation only load images inside the mod .jar, i thought it could be a way to solve my problem

Edited by Marelo
Link to comment
Share on other sites

  • 4 weeks later...

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now


  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I wanted to make a mod to play a violin while right clicking and stop when not, with the code i have until now i can play it. But now i need to use another function so it stops when you don't right click anymore. The function that i encounter most useful was "onUsingTick", but as i understand know its deprecated and i don't find the replacement.  At the same time, i think something to stop the sound in a function like "useOnRelease" or "finishUsingItem" would be more helpful, but that is equally complicated without sound events management as i understand. (sorry if my english is a little broken, i am from Argentina). @Override public InteractionResultHolder<ItemStack> use(Level level, Player player, InteractionHand hand) { if(!level.isClientSide() && hand == InteractionHand.MAIN_HAND) { level.playSound(null, player.getX(), player.getY(), player.getZ(), ModSounds.VIOLIN.get(), SoundSource.PLAYERS, 1F, 1.F); } return super.use(level, player, hand); }
    • 16:16:14.455 mixin main Mixin config dynamiclightsreforged.mixins.json does not specify "minVersion" property 16:16:14.938 mixin main Mixin config pmmo.mixins.json does not specify "minVersion" property 16:16:15.366 mixin main Mixin config rei-jei-internals-workaround.mixins.json does not specify "minVersion" property 16:16:15.475 mixin main Mixin config itshallnottick.mixins.json does not specify "minVersion" property 16:16:15.593 mixin main Mixin config polylib.mixins.json does not specify "minVersion" property 16:16:15.765 mixin main Mixin config rei.mixins.json does not specify "minVersion" property   these are the error scripts  
    • "Minecraft APK is an absolute gem for mobile gaming enthusiasts. With its immersive pixelated world and limitless creative possibilities, it offers an unparalleled gaming experience on the go. Whether you're building magnificent structures, exploring vast landscapes, or engaging in thrilling multiplayer battles, Minecraft APK delivers endless hours of entertainment. The controls are intuitive, and the regular updates keep the game fresh and exciting. It's a must-have for any gaming aficionado looking to unleash their creativity and embark on extraordinary adventures right from their mobile device." https://apk-minecraft.com/
    • This is the Crash message that comes when it crashes and the mods im using. ---------------------------------------------------- jei-1.16.5-7.7.1.152.jar journeymap-1.16.5-5.8.5p5.jar OptiFine_1.16.5_HD_U_G8.jar Pixelmon-1.16.5-9.1.3-universal.jar ReAuth-1.16-Forge-4.0.4.jar ---------------------------------------------------- ---- Minecraft Crash Report ---- // Hi. I'm Minecraft, and I'm a crashaholic. Time: 5/30/23 9:24 PM Description: Rendering screen java.lang.ArrayIndexOutOfBoundsException: 0     at com.pixelmonmod.pixelmon.client.gui.battles.BattleScreen.setTargeting(BattleScreen.java:663) ~[?:1.16.5-9.1.3] {re:classloading}     at com.pixelmonmod.pixelmon.client.gui.battles.battleScreens.ChooseAttack.render(ChooseAttack.java:109) ~[?:1.16.5-9.1.3] {re:classloading}     at com.pixelmonmod.pixelmon.client.gui.battles.BattleScreen.func_230430_a_(BattleScreen.java:440) ~[?:1.16.5-9.1.3] {re:classloading}     at net.minecraftforge.client.ForgeHooksClient.drawScreenInternal(ForgeHooksClient.java:377) ~[?:?] {re:classloading}     at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:370) ~[?:?] {re:classloading}     at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source) ~[?:?] {}     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51] {}     at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51] {}     at net.optifine.reflect.Reflector.callVoid(Reflector.java:789) ~[?:?] {re:classloading}     at net.minecraft.client.renderer.GameRenderer.func_195458_a(GameRenderer.java:821) ~[?:?] {re:classloading,pl:accesstransformer:B,xf:OptiFine:default}     at net.minecraft.client.Minecraft.func_195542_b(Minecraft.java:977) [?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:607) [?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:184) [?:?] {re:classloading,pl:runtimedistcleaner:A}     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51] {}     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51] {}     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51] {}     at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider.lambda$launchService$0(FMLClientLaunchProvider.java:51) [forge-1.16.5-36.2.34.jar:36.2] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider$$Lambda$474/2041611826.call(Unknown Source) [forge-1.16.5-36.2.34.jar:36.2] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.1.3.jar:?] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace:     at com.pixelmonmod.pixelmon.client.gui.battles.BattleScreen.setTargeting(BattleScreen.java:663) ~[?:1.16.5-9.1.3] {re:classloading}     at com.pixelmonmod.pixelmon.client.gui.battles.battleScreens.ChooseAttack.render(ChooseAttack.java:109) ~[?:1.16.5-9.1.3] {re:classloading}     at com.pixelmonmod.pixelmon.client.gui.battles.BattleScreen.func_230430_a_(BattleScreen.java:440) ~[?:1.16.5-9.1.3] {re:classloading}     at net.minecraftforge.client.ForgeHooksClient.drawScreenInternal(ForgeHooksClient.java:377) ~[?:?] {re:classloading}     at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:370) ~[?:?] {re:classloading}     at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source) ~[?:?] {}     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51] {}     at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51] {}     at net.optifine.reflect.Reflector.callVoid(Reflector.java:789) ~[?:?] {re:classloading} -- Screen render details -- Details:     Screen name: com.pixelmonmod.pixelmon.client.gui.battles.BattleScreen     Mouse location: Scaled: (408, 302). Absolute: (1225.000000, 907.000000)     Screen size: Scaled: (640, 360). Absolute: (1920, 1080). Scale factor of 3.000000 -- Affected level -- Details:     All players: 1 total; [ClientPlayerEntity['SebPer2708'/551350, l='ClientLevel', x=-162.35, y=28.94, z=-208.94]]     Chunk stats: Client Chunk Cache: 225, 98     Level dimension: minecraft:safari     Level spawn location: World: (7461,68,-15650), Chunk: (at 5,4,14 in 466,-979; contains blocks 7456,0,-15664 to 7471,255,-15649), Region: (14,-31; contains chunks 448,-992 to 479,-961, blocks 7168,0,-15872 to 7679,255,-15361)     Level time: 1243445879 game time, 1255605750 day time     Server brand: forge arclight (Velocity)     Server type: Non-integrated multiplayer server Stacktrace:     at net.minecraft.client.world.ClientWorld.func_72914_a(ClientWorld.java:617) ~[?:?] {re:classloading,xf:OptiFine:default}     at net.minecraft.client.Minecraft.func_71396_d(Minecraft.java:2031) [?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:623) [?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:184) [?:?] {re:classloading,pl:runtimedistcleaner:A}     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51] {}     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51] {}     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51] {}     at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider.lambda$launchService$0(FMLClientLaunchProvider.java:51) [forge-1.16.5-36.2.34.jar:36.2] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider$$Lambda$474/2041611826.call(Unknown Source) [forge-1.16.5-36.2.34.jar:36.2] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.1.3.jar:?] {} -- System Details -- Details:     Minecraft Version: 1.16.5     Minecraft Version ID: 1.16.5     Operating System: Windows 10 (amd64) version 10.0     Java Version: 1.8.0_51, Oracle Corporation     Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation     Memory: 1736668104 bytes (1656 MB) / 4697620480 bytes (4480 MB) up to 5368709120 bytes (5120 MB)     CPUs: 8     JVM Flags: 10 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -XX:+IgnoreUnrecognizedVMOptions -Xmx5G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M     ModLauncher: 8.1.3+8.1.3+main-8.1.x.c94d18ec     ModLauncher launch target: fmlclient     ModLauncher naming: srg     ModLauncher services:          /mixin-0.8.4.jar mixin PLUGINSERVICE          /eventbus-4.0.0.jar eventbus PLUGINSERVICE          /forge-1.16.5-36.2.34.jar object_holder_definalize PLUGINSERVICE          /forge-1.16.5-36.2.34.jar runtime_enum_extender PLUGINSERVICE          /accesstransformers-3.0.1.jar accesstransformer PLUGINSERVICE          /forge-1.16.5-36.2.34.jar capability_inject_definalize PLUGINSERVICE          /forge-1.16.5-36.2.34.jar runtimedistcleaner PLUGINSERVICE          /mixin-0.8.4.jar mixin TRANSFORMATIONSERVICE          /OptiFine_1.16.5_HD_U_G8.jar OptiFine TRANSFORMATIONSERVICE          /forge-1.16.5-36.2.34.jar fml TRANSFORMATIONSERVICE      FML: 36.2     Forge: net.minecraftforge:36.2.34     FML Language Providers:          javafml@36.2         minecraft@1     Mod List:          forge-1.16.5-36.2.34-client.jar                   |Minecraft                     |minecraft                     |1.16.5              |DONE      |Manifest: NOSIGNATURE         forge-1.16.5-36.2.34-universal.jar                |Forge                         |forge                         |36.2.34             |DONE      |Manifest: 22:af:21:d8:19:82:7f:93:94:fe:2b:ac:b7:e4:41:57:68:39:87:b1:a7:5c:c6:44:f9:25:74:21:14:f5:0d:90         journeymap-1.16.5-5.8.5p5 (1).jar                 |Journeymap                    |journeymap                    |5.8.5p5             |DONE      |Manifest: NOSIGNATURE         ReAuth-1.16-Forge-4.0.4.jar                       |ReAuth                        |reauth                        |4.0.4               |DONE      |Manifest: 3d:06:1e:e5:da:e2:ff:ae:04:00:be:45:5b:ff:fd:70:65:00:67:0b:33:87:a6:5f:af:20:3c:b6:a1:35:ca:7e         Pixelmon-1.16.5-9.1.3-universal.jar               |Pixelmon Mod                  |pixelmon                      |9.1.3               |DONE      |Manifest: NOSIGNATURE         jei-1.16.5-7.7.1.152.jar                          |Just Enough Items             |jei                           |7.7.1.152           |DONE      |Manifest: NOSIGNATURE     Crash Report UUID: 717af89e-5f3d-4e21-a252-816efbf74f7d     Launched Version: 1.16.5-forge-36.2.34     Backend library: LWJGL version 3.2.2 build 10     Backend API: NVIDIA GeForce GTX 1650 with Max-Q Design/PCIe/SSE2 GL version 4.6.0 NVIDIA 526.86, NVIDIA Corporation     GL Caps: Using framebuffer using OpenGL 3.0     Using VBOs: Yes     Is Modded: Definitely; Client brand changed to 'forge'     Type: Client (map_client.txt)     Graphics mode: fast     Resource Packs: mod_resources, vanilla     Current Language: English (US)     CPU: 8x Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz     OptiFine Version: OptiFine_1.16.5_HD_U_G8     OptiFine Build: 20210515-161946     Render Distance Chunks: 7     Mipmaps: 4     Anisotropic Filtering: 1     Antialiasing: 0     Multitexture: false     Shaders: null     OpenGlVersion: 4.6.0 NVIDIA 526.86     OpenGlRenderer: NVIDIA GeForce GTX 1650 with Max-Q Design/PCIe/SSE2     OpenGlVendor: NVIDIA Corporation     CpuCount: 8  
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.