# -*- coding: utf-8 -*-
"""
Created on Fri Jun 14 14:16:11 2019

@author: savrillon
"""

from data import WorldChunk
import math
import numpy as np
import mcpi.minecraft as minecraft
import random
import mcpi.block as block
from perlin import CavernedNoise2


mc = minecraft.Minecraft.create()
mc.postToChat("Hello World !")
playerPos = mc.player.getPos()
tp = True
lights = True
chunk = (math.floor(playerPos.x/16),math.floor(playerPos.z/16))

noise = CavernedNoise2(456)

size = 64
for i in range(0,size):
    for j in range(0,size):
        cx,cy = chunk[0]+i,chunk[1]+j
        print("Géneration de "+str(i)+","+str(j))
        mc.postToChat("Géneration de "+str(i)+","+str(j))
        if tp:
            mc.player.setPos(cx*16+8,playerPos.y,cy*16+8)
        data = noise.getChunk(cx,cy,(16,16))
        #print(data)
        #data = np.abs(data)
        x0,z0 = cx*16,cy*16
        x1,z1 = x0 + 15 , z0 + 15
        y0,y1 = 4,128-1
        h = y1-y0
        
        mc.setBlocks(x0,y0,z0,x1,y1,z1,block.IRON_BLOCK)
        
        for dx in range(0,16):
            for dz in range(0,16):
                x,z = x0+dx,z0+dz
                boule = True
                fm1 = y0
                for f in sorted(data[dx][dz]):
                    if f < 0 :print(f)
                    mc.setBlocks(x,y0+fm1,z,x,y0+f,z,block.STONE if boule else block.AIR)
                    #mc.setBlock(x,y0+fm1,z,x,d,z,block.STONE if boule else block.AIR)
                    boule = not boule
                    fm1 = f
                mc.setBlocks(x,y0+fm1,z,x,y1,z,block.AIR)
        
        
if(lights):
    for _ in range(256*size**2):
        x=random.randint(0,size*16)+chunk[0]*16
        y=random.randint(y0,y1)
        x=random.randint(0,size*16)+chunk[1]*16
        if(mc.getBlock(x,y,z)==block.STONE.id):
            mc.setBlock(x,y,z,block.GLOWSTONE_BLOCK)



print(chunk)

