public void initTransient() {
        if (blocks == null) {
            throw new RuntimeException("The level is corrupt!");
        } else {
            listeners.clear();
            blockers = new int[width * length];
            Arrays.fill(blockers, height);
            calcLightDepths(0, 0, width, length);
            random = new Random();
            randId = random.nextInt();
            tickList.clear();
            if (waterLevel == 0) {
                waterLevel = height / 2;
            }

            if (skyColor == 0) {
                skyColor = DEFAULT_SKY_COLOR;
            }

            if (fogColor == 0) {
                fogColor = DEFAULT_FOG_COLOR;
            }

            if (cloudColor == 0) {
                cloudColor = DEFAULT_CLOUD_COLOR;
            }

            if (xSpawn == 0 && ySpawn == 0 && zSpawn == 0) {
                findSpawn();
            }

            if (blockMap == null) {
                blockMap = new BlockMap(width, height, length);
            }

        }
    }