Краш игры

Samual

Каменная лига
Сообщения
187
Лучшие ответы
2
Симпатии
7
#1
Версия Minecraft
1.7.10
Подтверждение
Я максимально подробно описал проблему, включая исходный код файлов, краш лог, изображения и другую информацию, которая может помочь пользователям форума решить мой вопрос!
Почему возник краш игры? --1.7.10
Я скопировал код на гуи с контейнером. Там при нажатии на блок, появляется гуи. Но я добавил команду, которая тоже его открывает. Когда я запустил мир, я взял блок с гуи и открыл его. И закрыл... Всё работает как по маслу. Но если я вызываю этот же гуи командой, то он открывается нормально, но когда я клавишой эскейп или E закрываю его, майнкрафт закрывается.
Где здесь ошибка:
Main:
package merlin.seriousmodssthefe;

import cpw.mods.fml.common.Mod;
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import merlin.seriousmodssthefe.CommonProxy;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.network.IGuiHandler;
import cpw.mods.fml.common.network.NetworkRegistry;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.world.World;
@SuppressWarnings("unused")
@Mod (modid = Main.MODID, name = Main.MODNAME, version = Main.VERSION, useMetadata = true)
public class Main implements IGuiHandler{
    public static final int TUT_GUI = 0;
    public static final Block gui_block = new BlockGui().setBlockName("gui_block");
    public static final String MODID = "ssthefe";
    public static final String MODNAME = "Serious Mod SStheFE";
    public static final String VERSION = "1.0.0";
     @Instance("ssthefe")
    public static Main instance;
     public Main() {
         instance = this;
     }
     public static Main getInstance() {
         return instance;
     }
  
    @SidedProxy(clientSide = "merlin.seriousmodssthefe.ClientProxy", serverSide = "merlin.seriousmodssthefe.CommonProxy")
    public static CommonProxy proxy;
    
  
  
    public static CreativeTabs serioustab = new SeriousTab("12");
    public static Block amon;
    public static Block doors03la;
    public static Block doors03lb;
    public static Block doors03ra;
    public static Block doors03rb;
    public static Block pattern11;
    public static Block pattern08;
    public static Block pattern12;
    public static Block pattern13;
    public static Block wall06;
    public static Block wall01;
    public static Block plate21;
    public static Block doors02la;
    public static Block doors02ra;
    public static Block doors02lb;
    public static Block doors02rb;
  
    
  
    @Mod.EventHandler
    public void preInit(FMLPreInitializationEvent event) {

        doors02la = new Doors02la();
        GameRegistry.registerBlock(doors02la, "doors02la");
        doors02ra = new Doors02ra();
        GameRegistry.registerBlock(doors02ra, "doors02ra");
        doors02lb = new Doors02lb();
        GameRegistry.registerBlock(doors02lb, "doors02lb");
        doors02rb = new Doors02rb();
        GameRegistry.registerBlock(doors02rb, "doors02rb");
        plate21 = new Plate21();
        GameRegistry.registerBlock(plate21, "plate21");
        wall01 = new Wall01();
        GameRegistry.registerBlock(wall01, "wall01");
        wall06 = new Wall06();
        GameRegistry.registerBlock(wall06, "wall06");
        pattern13 = new Pattern13();
        GameRegistry.registerBlock(pattern13, "pattern13");
        pattern12 = new Pattern12();
        GameRegistry.registerBlock(pattern12, "pattern12");
        pattern08 = new Pattern08();
        GameRegistry.registerBlock(pattern08, "pattern08");
        pattern11 = new Pattern11();
        GameRegistry.registerBlock(pattern11, "pattern11");
        amon = new Amon();
        GameRegistry.registerBlock(amon, "amon");
        doors03la = new Doors03LA();
        GameRegistry.registerBlock(doors03la, "doors03la");
        doors03lb = new Doors03LB();
        GameRegistry.registerBlock(doors03lb, "doors03lb");
        doors03ra = new Doors03RA();
        GameRegistry.registerBlock(doors03ra, "doors03ra");
        doors03rb = new Doors03RB();
        GameRegistry.registerBlock(doors03rb, "doors03rb");

        GameRegistry.registerTileEntity(TileEntityObj.class, "TileEntityObj");

        proxy.preInit();

    }

    @Mod.EventHandler
    public void init(FMLInitializationEvent event) {
        GameRegistry.registerBlock(gui_block, "gui_block");
        GameRegistry.registerTileEntity(TileGuiContainer.class, "simple:gui_block");
        NetworkRegistry.INSTANCE.registerGuiHandler(this, this);
        proxy.init();
    }
    @Override
    public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
        switch (ID) {
            case TUT_GUI:
                return new ContainerTutorial((TileGuiContainer) world.getTileEntity(x, y, z));
        }
        return null;
    }

    @Override
    public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
        switch (ID) {
            case TUT_GUI:
                return new GuiContainerTutorial((Container) getServerGuiElement(ID, player, world, x, y, z));
        }
        return null;
    }
    @EventHandler
    public void serverStarting(FMLServerStartingEvent event) {
        this.proxy.serverStarting(event);
        }
}
CommonProxy:
package merlin.seriousmodssthefe;

import cpw.mods.fml.common.event.FMLServerStartingEvent;

public class CommonProxy {
  
    public void preInit() {

    }

    public void init() {

    }
    public void serverStarting(FMLServerStartingEvent event) {
        
        event.registerServerCommand(new CommandRepair());
    }
}
ClientProxy:
package merlin.seriousmodssthefe;

import cpw.mods.fml.client.registry.ClientRegistry;
import net.minecraft.item.Item;
import net.minecraftforge.client.MinecraftForgeClient;

public class ClientProxy extends CommonProxy{
    public void preInit() {
        super.preInit();
    }
    public void init() {
        super.init(); 
        ClientRegistry.bindTileEntitySpecialRenderer(TileEntityObj.class, new RenderTileEntityObj());
        MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(Main.amon), new RenderItemBlockObj());

    }
}
ContainerTutorial:
package merlin.seriousmodssthefe;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;

/**
* Created by JustAGod on 11.01.2018.
*/
public class ContainerTutorial extends Container {

    private final TileGuiContainer tile;

    public ContainerTutorial(TileGuiContainer tile) {
        this.tile = tile;
        addSlotToContainer(new RespectedSlot(tile, 0, 20, 20));
        addSlotToContainer(new RespectedSlot(tile, 1, 38, 20));
        addSlotToContainer(new RespectedSlot(tile, 2, 56, 20));

        addSlotToContainer(new RespectedSlot(tile, 3, 20, 38));
        addSlotToContainer(new RespectedSlot(tile, 4, 38, 38));
        addSlotToContainer(new RespectedSlot(tile, 5, 56, 38));

        addSlotToContainer(new RespectedSlot(tile, 6, 20, 56));
        addSlotToContainer(new RespectedSlot(tile, 7, 38, 56));
        addSlotToContainer(new RespectedSlot(tile, 8, 56, 56));
    }

    @Override
    public boolean canInteractWith(EntityPlayer player) {
        return tile.isUseableByPlayer(player);
    }

    private static class RespectedSlot extends Slot {

        public RespectedSlot(IInventory inventory, int index, int posX, int posY) {
            super(inventory, index, posX, posY);
        }

        @Override
        public boolean isItemValid(ItemStack stack) {
            return inventory.isItemValidForSlot(getSlotIndex(), stack);
        }
    }
}
GuiContainerTutorial:
package merlin.seriousmodssthefe;
import org.lwjgl.opengl.GL11;

import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.inventory.Container;
import net.minecraft.util.ResourceLocation;

/**
* Created by JustAGod on 11.01.2018.
*/
public class GuiContainerTutorial extends GuiContainer {

    public GuiContainerTutorial(Container container) {
        super(container);

    }

    @Override
    protected void drawGuiContainerBackgroundLayer(float partialTick, int mouseX, int mouseY) {

    }
    //----
    private static final ResourceLocation TEXTURE = new ResourceLocation(Main.MODID, "textures/blocks/images.jpg");

    @Override
    public void drawScreen(int mouseX, int mouseY, float ticks) {
        int guiX = width / 2;
        int guiY = height / 2;
        mc.getTextureManager().bindTexture(TEXTURE);
        GL11.glColor4f(1, 1, 1, 1);
        drawDefaultBackground();
        drawTexturedModalRect(0, 0, 0, 0, 320, 256);
    }
    //------
}
TileGuiContainer:
package merlin.seriousmodssthefe;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;

/**
* Created by JustAGod on 10.01.2018.
*/
public class TileGuiContainer extends TileEntity implements IInventory {

    /**
     * Наш инвентарь. По большому счету инвентарь это не более чем массив стаков не так ли?
     * Крутые перцы так не делают но мы пока не доросли.
     */
    private ItemStack[] inventory = new ItemStack[9];

    /**
     * Крутая инкапсуляция от майна. Метод который возвращает кол-во слотов.
     * @return кол-во слотов
     */
    @Override
    public int getSizeInventory() {
        return inventory.length;
    }

    /**
     * @param slot номер слота
     * @return что находиться в этом слоте
     */
    @Override
    public ItemStack getStackInSlot(int slot) {
        return inventory[slot];
    }

    /**
     * Уменьшает содержимое стака в слоте на заданное кол-во.
     * @param slot номер слота
     * @param count на сколько уменьшить слот
     * @return стак с предметом который лежал в слоте. NBT и мета соответствуют оригиналу, а размер стака
     * может быть меньше или равен параметру count. Если стака в слоте не было вернет null.
     */
    public ItemStack decrStackSize(int slot, int count) {
        if (this.inventory[slot] != null) { // Проверяем есть ли стак
            ItemStack stack;

            if (this.inventory[slot].stackSize <= count) { // Проверяем больше ли запрашиваемое уменьшение размера стака
                stack = this.inventory[slot]; // Берем стак
                this.inventory[slot] = null; // Обнуляем слот
                this.markDirty(); // Помечяем тайл грязным то есть говорим что пора бы его синхронизировать с клиентом
                return stack; // Возвращаем стэк
            } else {
                stack = this.inventory[slot].splitStack(count); // Отщипываем от стэка стэк

                if (this.inventory[slot].stackSize == 0) { // Если размер старого стака 0
                    this.inventory[slot] = null; // Обнуляем его
                }

                this.markDirty(); // Помечяем тайл грязным то есть говорим что пора бы его синхронизировать с клиентом
                return stack;
            }
        } else {
            return null; // Если нет то null
        }
    }

    /**
     * Эдакий костыль для контейнеров не привязаных к инвентарю тайла.-.
     * @param slot слот
     * @return стак в нем
     */
    public ItemStack getStackInSlotOnClosing(int slot) {
        if (this.inventory[slot] != null) {
            ItemStack itemstack = this.inventory[slot];
            this.inventory[slot] = null;
            return itemstack;
        } else {
            return null;
        }
    }

    /**
     * Просто присваивает новый стак заданому слоту
     * @param slot слот
     * @param stack новый стак
     */
    public void setInventorySlotContents(int slot, ItemStack stack) {
        inventory[slot] = stack;

        if (stack != null && stack.stackSize > this.getInventoryStackLimit()) {
            stack.stackSize = this.getInventoryStackLimit();
        }

        this.markDirty();
    }

    public String getInventoryName() {
        return null;
    }

    public boolean hasCustomInventoryName() {
        return false;
    }

    @Override
    public Packet getDescriptionPacket() {
        NBTTagCompound compound = new NBTTagCompound();
        writeToNBT(compound);
        return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, blockMetadata, compound);
    }

    @Override
    public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) {
        super.onDataPacket(net, pkt);
        readFromNBT(pkt.func_148857_g());
    }

    /**
     * Просто записываем инфу о тайле в нбт.
     * @param compound куда записать информацию
     */
    public void readFromNBT(NBTTagCompound compound) {
        super.readFromNBT(compound);
        NBTTagList tagList = compound.getTagList("Items", 10);
        this.inventory = new ItemStack[this.getSizeInventory()];


        for (int i = 0; i < tagList.tagCount(); ++i) {
            NBTTagCompound slot = tagList.getCompoundTagAt(i);
            int pos = slot.getByte("Slot");

            if (pos < this.inventory.length) {
                this.inventory[pos] = ItemStack.loadItemStackFromNBT(slot);
            }
        }
    }

    public void writeToNBT(NBTTagCompound compound) {
        super.writeToNBT(compound);
        NBTTagList nbttaglist = new NBTTagList();

        for (int i = 0; i < this.inventory.length; ++i) {
            if (this.inventory[i] != null) {
                NBTTagCompound slot = new NBTTagCompound();
                slot.setByte("Slot", (byte) i);
                this.inventory[i].writeToNBT(slot);
                nbttaglist.appendTag(slot);
            }
        }

        compound.setTag("Items", nbttaglist);

    }

    public int getInventoryStackLimit() {
        return 64;
    }

    public boolean isUseableByPlayer(EntityPlayer player) {
        return this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) == this;
    }

    public void openInventory() {
    }

    public void closeInventory() {
    }

    /**
     * Смотрит подходит ли предмет для этого слота инвентаря. Пример броня для Стива.
     * Важно что стандартные слоты не учитывают этот метод.
     * @param slot слот
     * @param stack стак
     * @return валиден ли
     */
    public boolean isItemValidForSlot(int slot, ItemStack stack) {
        return true;
    }

}
BlockGui:
package merlin.seriousmodssthefe;
import net.minecraft.block.Block;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.MapColor;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;

/**
* Created by JustAGod on 10.01.2018.
*/
public class BlockGui extends Block implements ITileEntityProvider {

    protected BlockGui() {
        super(new Material(MapColor.blackColor));
    }

    @Override
    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
        if (!world.isRemote) {
            player.openGui(Main.getInstance(), Main.TUT_GUI, world, x, y, z);
        }
        return true;
    }

    @Override
    public TileEntity createNewTileEntity(World world, int meta) {
        return new TileGuiContainer();
    }
}
CommandRepair:
package merlin.seriousmodssthefe;



import org.lwjgl.opengl.GL11;

import net.minecraft.client.Minecraft;
import net.minecraft.command.CommandBase;
import net.minecraft.command.ICommandSender;
import net.minecraft.command.WrongUsageException;
import net.minecraft.entity.player.EntityPlayer;


public class CommandRepair extends CommandBase {
  
    public static final String NAME = "message1";
            public static final String USAGE = "/message1";

    @Override
    public String getCommandName() {
    
        return this.NAME;
    }

    @Override
    public String getCommandUsage(ICommandSender commandSender) {
    
        return this.USAGE;
    }

    @Override
    public void processCommand(ICommandSender commandSender, String[] args) {
    
        if (commandSender instanceof EntityPlayer) {
        
            if (args.length > 0) {
                                    
                throw new WrongUsageException(this.getCommandUsage(commandSender));
            }
        
            EntityPlayer player = this.getCommandSenderAsPlayer(commandSender);
                    
            player.openGui(Main.getInstance(), Main.TUT_GUI, player.worldObj, -1, -1, -1);   
                                  
                    }
                }
            }
 
Краш-лог:
---- Minecraft Crash Report ----
// Shall we play a game?

Time: 10/02/19 18:04
Description: Updating screen events

java.lang.NullPointerException: Updating screen events
	at net.minecraft.client.entity.EntityClientPlayerMP.closeScreen(EntityClientPlayerMP.java:251)
	at net.minecraft.client.gui.inventory.GuiContainer.keyTyped(GuiContainer.java:686)
	at net.minecraft.client.gui.GuiScreen.handleKeyboardInput(GuiScreen.java:370)
	at net.minecraft.client.gui.GuiScreen.handleInput(GuiScreen.java:321)
	at net.minecraft.client.Minecraft.runTick(Minecraft.java:1731)
	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039)
	at net.minecraft.client.Minecraft.run(Minecraft.java:962)
	at net.minecraft.client.main.Main.main(Main.java:164)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
	at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
	at GradleStart.main(Unknown Source)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
	at net.minecraft.client.entity.EntityClientPlayerMP.closeScreen(EntityClientPlayerMP.java:251)
	at net.minecraft.client.gui.inventory.GuiContainer.keyTyped(GuiContainer.java:686)
	at net.minecraft.client.gui.GuiScreen.handleKeyboardInput(GuiScreen.java:370)
	at net.minecraft.client.gui.GuiScreen.handleInput(GuiScreen.java:321)

-- Affected screen --
Details:
	Screen name: merlin.seriousmodssthefe.GuiContainerTutorial

-- Affected level --
Details:
	Level name: MpServer
	All players: 1 total; [EntityClientPlayerMP['Player233'/284, l='MpServer', x=1631,50, y=5,62, z=482,50]]
	Chunk stats: MultiplayerChunkCache: 49, 49
	Level seed: 0
	Level generator: ID 01 - flat, ver 0. Features enabled: false
	Level generator options: 
	Level spawn location: World: (1623,4,478), Chunk: (at 7,0,14 in 101,29; contains blocks 1616,0,464 to 1631,255,479), Region: (3,0; contains chunks 96,0 to 127,31, blocks 1536,0,0 to 2047,255,511)
	Level time: 48352 game time, 7503 day time
	Level dimension: 0
	Level storage version: 0x00000 - Unknown?
	Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
	Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
	Forced entities: 21 total; [EntitySheep['Овца'/196, l='MpServer', x=1578,97, y=4,00, z=486,88], EntityCow['Корова'/197, l='MpServer', x=1569,84, y=2,75, z=559,81], EntityPig['Свинья'/198, l='MpServer', x=1577,09, y=2,75, z=559,59], EntityPig['Свинья'/206, l='MpServer', x=1580,22, y=4,00, z=453,38], EntityChicken['Курица'/207, l='MpServer', x=1592,34, y=4,00, z=451,38], EntityCow['Корова'/208, l='MpServer', x=1593,28, y=2,75, z=550,22], EntityChicken['Курица'/241, l='MpServer', x=1658,66, y=4,00, z=461,53], EntityChicken['Курица'/247, l='MpServer', x=1672,75, y=4,00, z=436,38], EntityCow['Корова'/248, l='MpServer', x=1670,88, y=4,00, z=482,09], EntitySheep['Овца'/217, l='MpServer', x=1611,22, y=2,75, z=423,81], EntityPig['Свинья'/186, l='MpServer', x=1556,16, y=2,75, z=430,16], EntityChicken['Курица'/218, l='MpServer', x=1596,63, y=3,25, z=429,41], EntityCow['Корова'/219, l='MpServer', x=1604,50, y=4,00, z=438,22], EntitySheep['Овца'/187, l='MpServer', x=1563,84, y=2,75, z=488,19], EntityChicken['Курица'/220, l='MpServer', x=1593,63, y=4,00, z=488,44], EntityCow['Корова'/188, l='MpServer', x=1567,03, y=2,75, z=535,16], EntityCow['Корова'/252, l='MpServer', x=1690,97, y=2,75, z=421,91], EntityClientPlayerMP['Player233'/284, l='MpServer', x=1631,50, y=5,62, z=482,50], EntityCow['Корова'/189, l='MpServer', x=1567,91, y=4,00, z=536,56], EntityChicken['Курица'/253, l='MpServer', x=1691,78, y=3,25, z=418,44], EntityChicken['Курица'/254, l='MpServer', x=1690,13, y=3,25, z=442,69]]
	Retry entities: 0 total; []
	Server brand: fml,forge
	Server type: Integrated singleplayer server
Stacktrace:
	at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
	at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2566)
	at net.minecraft.client.Minecraft.run(Minecraft.java:984)
	at net.minecraft.client.main.Main.main(Main.java:164)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
	at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
	at GradleStart.main(Unknown Source)

-- System Details --
Details:
	Minecraft Version: 1.7.10
	Operating System: Windows 10 (amd64) version 10.0
	Java Version: 1.8.0_171, Oracle Corporation
	Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
	Memory: 335144376 bytes (319 MB) / 461897728 bytes (440 MB) up to 947388416 bytes (903 MB)
	JVM Flags: 0 total; 
	AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
	IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
	FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1558 4 mods loaded, 4 mods active
	States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
	UCHIJAAAAAAAAA	mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) 
	UCHIJAAAAAAAAA	FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar) 
	UCHIJAAAAAAAAA	Forge{10.13.4.1558} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar) 
	UCHIJAAAAAAAAA	ssthefe{1.0.0} [Serious Mod SStheFE] (bin) 
	GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.6.0 NVIDIA 388.13' Renderer: 'GeForce GTX 750 Ti/PCIe/SSE2'
	Launched Version: 1.7.10
	LWJGL: 2.9.1
	OpenGL: GeForce GTX 750 Ti/PCIe/SSE2 GL version 4.6.0 NVIDIA 388.13, NVIDIA Corporation
	GL Caps: Using GL 1.3 multitexturing.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Anisotropic filtering is supported and maximum anisotropy is 16.
Shaders are available because OpenGL 2.1 is supported.

	Is Modded: Definitely; Client brand changed to 'fml,forge'
	Type: Client (map_client.txt)
	Resource Packs: []
	Current Language: Русский (Россия)
	Profiler Position: N/A (disabled)
	Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
	Anisotropic Filtering: Off (1)
Последнее редактирование:
Сверху