Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Things by Familia de Lorenzo #1

Open
acs opened this issue Apr 24, 2020 · 2 comments
Open

Add Things by Familia de Lorenzo #1

acs opened this issue Apr 24, 2020 · 2 comments

Comments

@acs
Copy link
Contributor

acs commented Apr 24, 2020

All the code will have the ASL and the author will be "Familia Lorenzo".

# Este código crea una escalera en M tramos de N peldaños cada uno, de ancho A
M= 50   
N= 10
A= 5
# Buscamos la posición en el mundo de nuestro jugador
p = mc.entity.getTilePos(mc.getPlayerEntityId(BUILDER_NAME))

# Coordenadas del jugador en las que se crea el bloque
# Nos separamos de donde estamos para no quedarnos dentro
init_x = p.x + 1
init_y = p.y
init_z = p.z

block_type = block.DIAMOND_BLOCK

sentido = 0

for tramo in range (0, M, 1):
  if sentido == 0:
    for eje_y in range (0, N, 1):
      for eje_x in range (0, A, 1):
        mc.setBlock((init_x + eje_x), ((N*tramo)+init_y + eje_y), (init_z + eje_y)+(sentido*N), block_type)
    sentido = 1
  elif sentido == 1:
    for eje_y in range (0, N, 1):
      for eje_x in range (0, A, 1):
        mc.setBlock((init_x + eje_x + A), ((N*tramo)+init_y + eje_y), (init_z - eje_y - 1)+(sentido*N), block_type)
    sentido = 0
[24/4 9:55] Adolfo Teleco: # Este bloque de código crea una estructura rectangular similar a un a choza de troncos de madera

tamaño=6
altura=50
block_type_1 = block.SANDSTONE
block_type_2 = block.AIR

# Buscamos la posición en el mundo de nuestro jugador
p = mc.entity.getTilePos(mc.getPlayerEntityId(BUILDER_NAME))

# Coordenadas del jugador en las que se crea el bloque
# Nos separamos de donde estamos para no quedarnos dentro
init_x = p.x
init_y = p.y
init_z = p.z

for nivel in range (0, altura, 2):
    mc.setBlocks(init_x - tamaño/2,           nivel,         init_z - tamaño/2, 
                 init_x + tamaño/2,           nivel ,        init_z + tamaño/2, 
                block_type_1)
    mc.setBlocks(init_x - tamaño/2,           nivel,         init_z - tamaño/2 + 1, 
                 init_x + tamaño/2,           nivel ,        init_z + tamaño/2 - 1, 
                block_type_2)
 
    mc.setBlocks(init_x - tamaño/2,           nivel + 1,        init_z - tamaño/2, 
                 init_x + tamaño/2,           nivel + 1,        init_z + tamaño/2, 
                block_type_1)
    mc.setBlocks(init_x - tamaño/2 + 1,           nivel + 1,        init_z - tamaño/2, 
                 init_x + tamaño/2 - 1,           nivel + 1,        init_z + tamaño/2, 
                block_type_2)

[24/4 9:55] Adolfo Teleco: # Este bloque de código crea una ESPIRAL CUADRADA la altura del jugador de un tamaño y altura definidos
altura=100
tamaño=8
block_type = block.WOOD

# Buscamos la posición en el mundo de nuestro jugador
p = mc.entity.getTilePos(mc.getPlayerEntityId(BUILDER_NAME))

# Coordenadas del jugador en las que se crea el bloque
# Nos separamos de donde estamos para no quedarnos dentro
init_x = p.x
init_y = p.y
init_z = p.z


for piso in range (0, altura, 4):
  mc.setBlocks(init_x,          piso,              init_z, 
             init_x+tamaño,          piso,      init_z, 
             block_type)

  mc.setBlocks(init_x,          piso+1,              init_z, 
             init_x,           piso+1,      init_z+tamaño, 
             block_type)

  mc.setBlocks(init_x,         piso+2,               init_z+tamaño, 
             init_x+tamaño,        piso+2,               init_z+tamaño, 
             block_type)

  mc.setBlocks(init_x+tamaño,          piso+3,              init_z, 
             init_x+tamaño,           piso+3,      init_z+tamaño, 
             block_type)
[24/4 9:55] Adolfo Teleco: # Este bloque de código crea una CASA CON TECHO HUECA a la altura del jugador de un "tamaño" (para que el resultado sea más estético, 
# el tamaño debe ser un número impar, si fuera par, la cúspide es de 4 bloques)
# Finalmente, situa al jugador en el centro de la pirámide y rellena con antorchas

#Si "tamaño" es impar, la cúspide es un único bloque, en caso contrario son 4 bloques
tamaño=26
block_type = block.SANDSTONE
block_type2 = block.AIR
block_type3 = block.TORCH

# Buscamos la posición en el mundo de nuestro jugador
p = mc.entity.getTilePos(mc.getPlayerEntityId(BUILDER_NAME))

# Coordenadas del jugador en las que se crea el bloque
# Nos separamos de donde estamos para no quedarnos dentro
init_x = p.x
init_y = 0
init_z = p.z

# Este bloque de código crea una TRAMPA a la altura del jugador de un tamaño definido en la variable "tamaño"

mc.setBlocks(init_x-tamaño/2,          init_y-1,         init_z-tamaño/2, 
             init_x+tamaño/2,           init_y+tamaño/2,       init_z+tamaño/2, 
             block_type)

mc.setBlocks(init_x-tamaño/2+1,          init_y,                    init_z-tamaño/2+1, 
             init_x+tamaño/2-1,           init_y+tamaño/2,       init_z+tamaño/2-1, 
             block_type2)


# Abrimos unas puertas de altura 2
mc.setBlock((init_x-tamaño/2), 0, (init_z), block_type2 )
mc.setBlock((init_x-tamaño/2), 1, (init_z), block_type2 )
mc.setBlock((init_x+tamaño/2), 0, (init_z), block_type2 )
mc.setBlock((init_x+tamaño/2), 1, (init_z), block_type2 )
mc.setBlock((init_x), 0, (init_z-tamaño/2), block_type2 )
mc.setBlock((init_x), 1, (init_z-tamaño/2), block_type2 )
mc.setBlock((init_x), 0, (init_z+tamaño/2), block_type2 )
mc.setBlock((init_x), 1, (init_z+tamaño/2), block_type2 )



#Construimos el techo reutilizando el código de la pirámide.
#Primero posicionamos el "cursor" en la esquina de la casa

init_x = p.x - tamaño/2-1
init_y = tamaño/2-2
init_z = p.z - tamaño/2-1

#Creamos una pirámide HUECA como techo, y hacemos que sobresalga por los lados para que quede estéticamente mejor
altura=int(tamaño+2)
tamaño = tamaño + 3

for altura1 in range (0, altura, 1):
  for base1 in range ((0+altura1), (tamaño-altura1), 1):
    for base2 in range ((0+altura1), (tamaño-altura1), 1):
      mc.setBlock((init_x + base1), (init_y + altura1), (init_z+ base2), block_type)


for altura1 in range (0, altura, 1):
  for base1 in range ((0+altura1+2), (tamaño-altura1), 1):
    for base2 in range ((0+altura1+2), (tamaño-altura1), 1):
      mc.setBlock((init_x + base1-1), (init_y + altura1), (init_z+ base2-1), block_type2)

#Mueve al jugador dentro de la casa y enciende unas Antorchas
mc.player.setPos(p.x, 1, p.z)
mc.setBlock(p.x, tamaño -6, p.z, block_type3)
mc.setBlock(p.x, tamaño/2 -1, p.z, block_type3)
mc.setBlock(p.x, tamaño/4 -1, p.z, block_type3)
[24/4 9:56] Adolfo Teleco: # Este bloque de código crea una PIRÁMIDE DOBLE INVERTIDA - RELOJ DE ARENA a la altura del jugador de una altura definida en la variable "tamaño" (para que funcione correctamente, el tamaño debe ser un número impar, si fuera par, la cúspide es de 4 bloques)
# Este método construye bloque a bloque, lo cual es menos eficiente que construir planta a planta, pero es interesante para ver otro algoritmo diferente
# Finalmente, situa al jugador en la cúspide de la pirámide

#Si "tamaño" es impar, la cúspide es un único bloque, en caso contrario son 4 bloques
tamaño=25
block_type = block.DIAMOND_BLOCK

# Buscamos la posición en el mundo de nuestro jugador
p = mc.entity.getTilePos(mc.getPlayerEntityId(BUILDER_NAME))

# Coordenadas del jugador en las que se crea el bloque
# Nos separamos de donde estamos para no quedarnos dentro
init_x = p.x
init_y = 0
init_z = p.z

#Creamos una pirámide
altura=int((tamaño+1)/2)
p = mc.entity.getTilePos(mc.getPlayerEntityId(BUILDER_NAME))

for altura1 in range (0, altura, 1):
  for base1 in range ((0+altura1), (tamaño-altura1), 1):
    for base2 in range ((0+altura1), (tamaño-altura1), 1):
      mc.setBlock((init_x + base1), (init_y + altura1), (init_z+ base2), block_type)
for altura1 in range (altura, altura*2, 1):
  for base1 in range ((tamaño-altura1), (0+altura1),  1):
    for base2 in range ((tamaño-altura1), (0+altura1), 1):
       mc.setBlock((init_x + base1), (init_y + altura1-1), (init_z+ base2), block_type)

mc.player.setPos((p.x+(tamaño/2)), (3+altura)*2, (p.z+(tamaño/2)))
[24/4 9:56] Adolfo Teleco: # Este bloque construye una ESPIRAL en el suelo

tamaño=10
altura = 10
block_type = block.SANDSTONE

# Buscamos la posición en el mundo de nuestro jugador
p = mc.entity.getTilePos(mc.getPlayerEntityId(BUILDER_NAME))

# Coordenadas del jugador en las que se crea el bloque
# Nos separamos de donde estamos para no quedarnos dentro
init_x = p.x
init_y = p.y
init_z = p.z

#mc.setBlocks(init_x,          0,      init_z, 
#             init_x,          2,
init_z + 1, 
#             block_type)

#mc.setBlocks(init_x,          0,      init_z + 1, 
#             init_x + 2,          2,      init_z + 1, 
#             block_type)


for i in range (1, tamaño, 2):
  mc.setBlocks(init_x + i,          0,       init_z + i-1, 
               init_x + i,          altura,       init_z - i, 
               block_type)

  mc.setBlocks(init_x + i,          0,       init_z - i, 
               init_x - i,          altura,       init_z - i, 
               block_type)

  mc.setBlocks(init_x - i,          0,       init_z - i, 
               init_x  - i,          altura,      init_z + i +1, 
               block_type)

  mc.setBlocks(init_x - i,          0,       init_z + i +1 , 
               init_x  + i + 2,          altura,      init_z + i +1, 
               block_type)
@acs acs changed the title Add Things by Familia Lorenzo Add Things by Familia de Lorenzo Apr 24, 2020
@acs
Copy link
Contributor Author

acs commented Apr 24, 2020

Follow Voxelers/mcthings#44 to add credits and license.

@acs
Copy link
Contributor Author

acs commented Apr 24, 2020

Done Stairs and Spiral.

Pending:

  • Wood Tower
  • House
  • Double Pyramid inverted

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant