public WorldChunk getChunkAt(int x, int y, boolean b)
    {
        int chunkID =(int) Math.floor(((float)x/16f));
        WorldChunk chunk = this.chunksList.get(chunkID);
        if(chunk == null && b)
        {
            chunk = new WorldServerChunk(this, chunkID);
            ((WorldServerChunk)chunk).stopUpdate = true;
            chunksList.put(chunkID, chunk);
            boolean flag = false;
            if(chunkFolder != null)
            {
                File f = new File(chunkFolder, chunkID+".chunk");
                if(f.exists())
                {
                    try
                    {
                        InputStream in = new BufferedInputStream(new FileInputStream(f));
                        byte[] bytes = IO.read(in);
                        in.close();
                        TaggedStorageChunk storageChunk = BlockyMain.saveSystem.readChunk(bytes);
                        chunk.readStorageChunk(storageChunk);
                        if(BlockyMain.isDevMode)
                            BlockyMain.console("Getting chunk infos from files");
                        flag = true;
                    }
                    catch(Exception e)
                    {
                        e.printStackTrace();
                    }
                }
                else
                {
                    if(BlockyMain.isDevMode)
                        BlockyMain.console("File \""+f.getName()+"\"doesn't exist");
                }
            }
            if(!flag)
                WorldGenerator.instance.generateChunk(this, chunk.chunkID, chunk, worldType);
            ((WorldServerChunk)chunk).stopUpdate = false;
        }
        return chunk;
    }