Python+我的世界=Mcpipy

今天为大家带来我的世界我做主!

这是一个Py与Mc语言共同掌握的世界,欢迎大家一起加入探讨学习,共同目标:通过Python脚本实现我的世界全自动建造!

至于环境的搭建可以参考这位大拿:https://blog.csdn.net/dunelfree/article/details/80202382(小编就是参考大拿搭建的)
方法有很多,看大家的喜好了。

一、环境
书籍方面的参考
在这里插入图片描述
主机配置方面:
在这里插入图片描述
通过大拿的博文搭建好后执行/py interpreter命令结果如图
在这里插入图片描述
二、通天塔代码
接下来呢来点干货Python搭建通天塔(刷怪塔)

# mob spawner - simple
#definicija objekta i poziv rutine za crtanje

import time 
from crtanje import *		#tu je funkcija koju zovem
from mc import *			
mc = Minecraft() #inicijalizacija sustava za rad sa Minecraftom

# origin ispred na sredini 
orMjA = gdjeSam ()
orSm = gdjeGledam ()

#sandstone glatki
materijal = 24
dv = 2
stepenice = 128 
slab = 44
dv_slab = 1
uZraku = 34    # because of witchs
nivoa=5        # base on Y = 190
visinaNivoa = 5
spawnerBase = 190


surfaceLevel = nadji_dno ( orMjA , ( 0 , 0 , 0 ) , orSm )
relativeHigh = spawnerBase + surfaceLevel - 5


#Base
mc.postToChat("Baza !!"  )
crtaj_kvadar ( orMjA , ( -2  , -2 , -0 )  , (  20 , 20 , 4 ) , orSm ,  0 , 0 ) # clear the deck
crtaj_kvadar ( orMjA , ( -2  , -2 , -2 )  , (  20 , 20 , -1 ) , orSm ,  materijal , dv ) # sandstone edge platforma
crtaj_kvadar ( orMjA , ( -1  , -1 , -2 )  , (  19 , 19 , -1 ) , orSm ,  89 , 0 ) # glowstone platforma
time.sleep ( 15 )
crtaj_kvadar ( orMjA , ( 7  ,7 , -1 )  , (  12 , 12 , 0 ) , orSm ,  materijal , dv ) # pool frame
crtaj_kvadar ( orMjA , ( 8  , 8 , -1 )  , (  11 , 11 , 0 ) , orSm ,  WATER.id , 0 ) # pool

time.sleep ( 15 )
#legs

coord = (
(0,5),      #down left
(0,13),     #down right
(5,0),      #middle down left
(5,18),     #middle down rigt
(13,0),     #middle up left
(13,18),    #middle up right
(18,5),     #top left
(18,13)     #top right
)
mc.postToChat("Noge !!"  )
for br in coord :
   crtaj_kvadar ( orMjA , ( br [ 0 ] , br[ 1 ], 0 -5 )  , (  br [ 0 ] , br[ 1 ], relativeHigh  + uZraku ) , orSm , materijal , dv ) #make "leg"
   time.sleep ( 15 )

orFirst = orMjA
orMj = premjesti_origin ( orMjA , 0 ,0 , relativeHigh ,  orSm )

#Estetika

mc.postToChat("Krila !!"  )
for br in range ( nivoa ) :
   crtaj_kvadar ( orMj , ( -5 - br * 2 , -5 - br * 2, uZraku + 4 + br * visinaNivoa )  , (  23 + br * 2 , 23 + br * 2 , uZraku + 4 + br * visinaNivoa ) , orSm ,  materijal , dv ) # sandstone edge platforma
   time.sleep ( 3 )
   crtaj_kvadar ( orMj , ( -4 - br * 2 , -4 - br * 2, uZraku + 4 + br * visinaNivoa )  , (  22 + br * 2, 22 + br * 2 , uZraku + 4 + br * visinaNivoa ) , orSm ,  89 , 0 ) # glowstone platforma
   time.sleep ( 3 )
   crtaj_kvadar ( orMj ,   ( -2 , -2 , uZraku + 4 + br * visinaNivoa )  , ( 20 , 20 , uZraku + 4 + br * visinaNivoa ) , orSm ,  materijal , dv ) # hole frame
   time.sleep ( 3 )
   crtaj_kvadar ( orMj , ( -1 , -1 , uZraku + 4 + br * visinaNivoa )  , ( 19 , 19 , uZraku + 4 + br * visinaNivoa   ) , orSm ,  0 , 0 )
   time.sleep ( 25 )
   
   #crtaj_kvadar ( orMj , ( 8  , 8 , uZraku + 3 + br * visinaNivoa )  , (  11 , 11 , uZraku + 3 + br * visinaNivoa ) , orSm ,  0 , 0 ) # hole

   


mc.postToChat("Tijelo !!"  )
#crtaj_kvadar ( orMj , [ 8 , 8, uZraku -6 ]  , [ 11 , 11 , uZraku - 1   ] , orSm , STONE.id , 2 ) # lijevak ispod netreba
crtaj_kvadar ( orMj , [ 0 , 0 , uZraku ]  , [ 18 , 18 , uZraku + nivoa*visinaNivoa   ] , orSm ,  materijal , dv ) # main body
crtaj_kvadar ( orMj , [ 9 , 9, uZraku  ]  , [ 9 , 9 , uZraku + nivoa*visinaNivoa -1   ] , orSm , AIR.id , 2 ) # sredisnja rupa
time.sleep ( 15 )
# estetika
crtaj_kvadar ( orMj , [ 0 , 0, uZraku - 6 ]  , [ 4 , 4 , uZraku + nivoa*visinaNivoa + 1   ] , orSm , AIR.id , 2 ) # lijeva dolje rupa
time.sleep ( 15 )
crtaj_kvadar ( orMj , [ 0 , 14, uZraku - 6 ]  , [ 4 , 18 , uZraku + nivoa*visinaNivoa + 1   ] , orSm , AIR.id , 2 ) # desna dolje rupa
time.sleep ( 15 )
crtaj_kvadar ( orMj , [ 14 , 0, uZraku - 6 ]  , [ 18 , 4 , uZraku + nivoa*visinaNivoa + 1   ] , orSm , AIR.id , 2 ) # lijeva gore rupa
time.sleep ( 15 )
crtaj_kvadar ( orMj , [ 14 , 14, uZraku - 6 ]  , [ 18 , 18 , uZraku + nivoa*visinaNivoa + 1   ] , orSm , AIR.id , 2 ) # desna gore rupa
time.sleep ( 15 )


for br in range ( nivoa ) :
   mc.postToChat("lavirint  !!"  )
   crtaj_kvadar ( orMj , [ 2 , 6, uZraku + 3 + br * visinaNivoa ]  , [ 16 , 12 , uZraku +  4 + br * visinaNivoa  ] , orSm , AIR.id , 0 ) # main hole uzduzna
   crtaj_kvadar ( orMj , [ 6 , 2, uZraku + 3 + br * visinaNivoa ]  , [ 12 , 16 , uZraku +  4 + br * visinaNivoa  ] , orSm , AIR.id , 0 ) # main hole popprecna
   time.sleep ( 3 )
   crtaj_kvadar ( orMj , [ 1 , 9, uZraku + 1 + br * visinaNivoa ]  , [ 17 , 9 , uZraku +  4 + br * visinaNivoa  ] , orSm , AIR.id , 0 ) # uzduzna voda duga
   crtaj_kvadar ( orMj , [ 5 , 5, uZraku + 1 + br * visinaNivoa ]  , [ 13 , 5 , uZraku +  4 + br * visinaNivoa  ] , orSm , AIR.id , 0 ) # uzduzna voda lijeva
   time.sleep ( 3 )
   crtaj_kvadar ( orMj , [ 5 , 13, uZraku + 1 + br * visinaNivoa ]  , [ 13 , 13 , uZraku +  4 + br * visinaNivoa  ] , orSm , AIR.id , 0 ) # uzduzna voda desna
   crtaj_kvadar ( orMj , [ 9 , 1, uZraku + 1 + br * visinaNivoa ]  , [ 9 , 17 , uZraku +  4 + br * visinaNivoa  ] , orSm , AIR.id , 0 ) # poprecna voda duga
   time.sleep ( 3 )
   crtaj_kvadar ( orMj , [ 5 , 5, uZraku + 1 + br * visinaNivoa ]  , [ 5 , 13 , uZraku +  4 + br * visinaNivoa  ] , orSm , AIR.id , 0 ) # poprecna voda bliza
   crtaj_kvadar ( orMj , [ 13 , 5, uZraku + 1 + br * visinaNivoa ]  , [ 13 , 13 , uZraku +  4 + br * visinaNivoa  ] , orSm , AIR.id , 0 ) # poprecna voda dalja
   time.sleep ( 3 )
   crtaj_kvadar ( orMj , [ 9 , 1, uZraku + 1 + br * visinaNivoa ]  , [ 9 , 1 , uZraku +  1 + br * visinaNivoa  ] , orSm , 9 , 0 ) # water uzduzno blizi
   crtaj_kvadar ( orMj , [ 9 , 17, uZraku + 1 + br * visinaNivoa ]  , [ 9 , 17 , uZraku +  1 + br * visinaNivoa  ] , orSm , 9 , 0 ) # water uzduzno dalji
   time.sleep ( 3 )
   crtaj_kvadar ( orMj , [ 1 , 9, uZraku + 1 + br * visinaNivoa ]  , [ 1 , 9 , uZraku +  1 + br * visinaNivoa  ] , orSm , 9 , 0 ) # water poprecno blizi
   crtaj_kvadar ( orMj , [ 17 , 9, uZraku + 1 + br * visinaNivoa ]  , [ 17 , 9 , uZraku +  1 + br * visinaNivoa  ] , orSm , 9 , 0 ) # water poprecno dalji
   time.sleep ( 3 )

   crtaj_kvadar ( orMj , [ 9 , 1, uZraku + 2 + br * visinaNivoa ]  , [ 9 , 1 , uZraku +  4 + br * visinaNivoa  ] , orSm ,  materijal , dv ) #kamen iznad water water uzduzno blizi
   crtaj_kvadar ( orMj , [ 9 , 17, uZraku + 2 + br * visinaNivoa ]  , [ 9 , 17 , uZraku +  4 + br * visinaNivoa  ] , orSm , materijal , dv ) #kamen iznad water water uzduzno dalji
   time.sleep ( 3 )
   crtaj_kvadar ( orMj , [ 1 , 9, uZraku + 2 + br * visinaNivoa ]  , [ 1 , 9 , uZraku +  4 + br * visinaNivoa  ] , orSm , materijal , dv ) #kamen iznad water water poprecno blizi
   crtaj_kvadar ( orMj , [ 17 , 9, uZraku + 2 + br * visinaNivoa ]  , [ 17 , 9 , uZraku +  4 + br * visinaNivoa  ] , orSm , materijal , dv ) #kamen iznad water water poprecno dalji
   time.sleep ( 3 )

   
   crtaj_kvadar ( orMj , [ 5 , 5, uZraku + 1 + br * visinaNivoa ]  , [ 5 , 5 , uZraku +  1 + br * visinaNivoa  ] , orSm , 9 , 0 ) # water dolje lijevo
   time.sleep ( 3 )
   crtaj_kvadar ( orMj , [ 5 , 13, uZraku + 1 + br * visinaNivoa ]  , [ 5 , 13 , uZraku +  1 + br * visinaNivoa  ] , orSm , 9 , 0 ) # water dolje desno
   time.sleep ( 3 )
   crtaj_kvadar ( orMj , [ 13 , 5, uZraku + 1 + br * visinaNivoa ]  , [ 13 , 5 , uZraku +  1 + br * visinaNivoa  ] , orSm , 9 , 0 ) # water gore lijevo
   time.sleep ( 3 )
   crtaj_kvadar ( orMj , [ 13 , 13, uZraku + 1 + br * visinaNivoa ]  , [ 13 , 13 , uZraku +  1 + br * visinaNivoa  ] , orSm , 9 , 0 ) # water gore desno

   crtaj_kvadar ( orMj , [ 5 , 5, uZraku + 2 + br * visinaNivoa ]  , [ 5 , 5 , uZraku +  4 + br * visinaNivoa  ] , orSm , materijal , dv ) #kamen iznad water dolje lijevo
   crtaj_kvadar ( orMj , [ 5 , 13, uZraku + 2 + br * visinaNivoa ]  , [ 5 , 13 , uZraku + 4 + br * visinaNivoa  ] , orSm ,  materijal , dv ) #kamen iznad  water dolje desno
   time.sleep ( 3 )
   crtaj_kvadar ( orMj , [ 13 , 5, uZraku + 2 + br * visinaNivoa ]  , [ 13 , 5 , uZraku +  4 + br * visinaNivoa  ] , orSm ,  materijal , dv ) #kamen iznad  water gore lijevo
   crtaj_kvadar ( orMj , [ 13 , 13, uZraku + 2 + br * visinaNivoa ]  , [ 13 , 13 , uZraku +  4 + br * visinaNivoa  ] , orSm ,  materijal , dv ) #kamen iznad  water gore desno
   
   time.sleep ( 15 )
   
   #slabstoni   
   for dX in range ( 3 , 16 , 4 ) :
      for dY in range ( 3 , 16 , 4 ) :
         crtaj_kvadar ( orMj , [ dX , dY, uZraku + 2 + br * visinaNivoa ]  , [ dX , dY , uZraku +  2 + br * visinaNivoa  ] , orSm , 44 , 5 ) # stoneslabi protiv pauka
         time.sleep ( 5 )
   
   
# lampe na vrhu
mc.postToChat("Lampe !!"  )
for dX in range ( 1 , 19 , 5 ) :
   for dY in range ( 1 , 19 , 5 ) :
      crtaj_kvadar ( orMj , [ dX , dY , uZraku + nivoa*visinaNivoa + 2 ]  , [ dX , dY , uZraku + nivoa*visinaNivoa + 2   ] , orSm , 89 , 0 ) # on top
      time.sleep ( 3 )

""" duplo ??
# estetika
crtaj_kvadar ( orMj , [ 0 , 0, uZraku - 6 ]  , [ 4 , 4 , uZraku + nivoa*visinaNivoa + 1   ] , orSm , AIR.id , 2 ) # lijeva dolje rupa
crtaj_kvadar ( orMj , [ 0 , 14, uZraku - 6 ]  , [ 4 , 18 , uZraku + nivoa*visinaNivoa + 1   ] , orSm , AIR.id , 2 ) # desna dolje rupa
crtaj_kvadar ( orMj , [ 14 , 0, uZraku - 6 ]  , [ 18 , 4 , uZraku + nivoa*visinaNivoa + 1   ] , orSm , AIR.id , 2 ) # lijeva dolje rupa
crtaj_kvadar ( orMj , [ 14 , 14, uZraku - 6 ]  , [ 18 , 18 , uZraku + nivoa*visinaNivoa + 1   ] , orSm , AIR.id , 2 ) # desna dolje rupa

"""

# razbijalica
mc.postToChat("Razbijalica !!"  )
crtaj_kvadar ( orMj , ( -2  , -2 , -1 )  , (  20 , 20 , 0 ) , orSm ,  materijal , dv ) # sandstone edge platforma
crtaj_kvadar ( orMj , ( -1  , -1 , -1 )  , (  19 , 19 , 0 ) , orSm ,  89 , 0 ) # glowstone platforma

time.sleep ( 15 )
crtaj_kvadar ( orMj , ( 6  , 6 , 1 )  , (  13 , 13 , 1 ) , orSm ,  89 , 0 ) # glowstone okolo
crtaj_kvadar ( orMj , ( 7  , 7 , 1 )  , (  12 , 12 , 1 ) , orSm , slab , dv_slab ) # stonebrick slab kocka

time.sleep ( 15 )
crtaj_kvadar ( orMj , ( 8  , 7 , 0 )  , (  12 , 12 , 0 ) , orSm , 154 , smjer_hoppera ( orSm , "meni" ) ) # hopperi spod stoneslaba
crtaj_kvadar ( orMj , ( 7  , 6 , 0 )  , (  7 , 12 , 0 ) , orSm , 154 , smjer_hoppera ( orSm , "lijevo" ) ) # hopperi ispod stoneslaba za skupljanje
time.sleep ( 3 )
crtaj_kvadar ( orMj , ( 6  , 3 , 0 )  , ( 8 , 5 , 0 ) , orSm ,  materijal , dv )    #frame around chest
crtaj_kutiju ( orMj , ( 7  , 4 , 0 )  , (  7 ,5 , 0 ) , orSm , rel_smjer  = "meni" , blok_id = 54     )  #kutija je malo pomaknuta da stanu glowestoni
time.sleep ( 15 )
#stairways hole
crtaj_kvadar ( orMj , ( 0 , 4 , -1 )  , (  4 , 14 , 0 ) , orSm ,  materijal , dv  )  #edge
crtaj_kvadar ( orMj , ( 1 , 5 , -1 )  , (  2 , 13 , 0 ) , orSm ,  0 , 0 )     #hole

time.sleep ( 15 )
countdown = relativeHigh  #how much down
counter = 0    # down counter
pomak = 0      # from podium
smjer = 1      # where to go on relative Z axis
r_smjer="desno"   # sirection for stairway function
dX = 0         # move on relative X axis

#stairways down
mc.postToChat("Stepenice !!"  )
while - counter <= countdown :
   time.sleep ( 1 )
   crtaj_stepenice ( orMj , ( 1 + dX, 5 + pomak  , counter )  , (  2 + dX, 5 + pomak  , counter ) , orSm , blok_id = stepenice , rel_smjer  = r_smjer  )
   pomak  += smjer   # zig - zag
   counter -= 1
   if pomak == 9 :   # podium
      pomak = 8
      crtaj_kvadar ( orMj , ( 2  , 5 + pomak  , counter )  , ( -2 , 5 + pomak + 3 , counter ) , orSm ,  materijal , dv )
      crtaj_kvadar ( orMj , ( 1  , 5 + pomak + 1 , counter )  , ( -1 , 5 + pomak + 2 , counter ) , orSm ,  89 , 0 )
   if pomak == -1 :   # podium
      pomak = 0
      crtaj_kvadar ( orMj , ( 2  , 5 +pomak  , counter )  , ( -2 , 5 + pomak - 3 , counter ) , orSm ,   materijal , dv  )
      crtaj_kvadar ( orMj , ( 1  , 5 +pomak - 1 , counter )  , ( -1 , 5 + pomak - 2 , counter ) , orSm ,  89 , 0 )
   if ( counter % 9  ) == 0 :
      smjer *= -1
      if smjer == 1 :
         r_smjer="desno"
         dX = 0
      else:
         r_smjer="lijevo"
         dX = -3

# optimal AFK platform

mc.postToChat("Platforma !!"  )
crtaj_kvadar ( orMj , ( -2  , -2 , 10 )  , (  20 , 20 , 10 ) , orSm ,  materijal , dv ) # sandstone edge platforma
crtaj_kvadar ( orMj , ( -1  , -1 , 10 )  , (  19 , 19 , 10 ) , orSm ,  89 , 0 ) # glowstone platforma
time.sleep ( 3 )
crtaj_kvadar ( orMj , ( 6  ,6 , 10 )  , (  13 , 13 , 10 ) , orSm ,  materijal , dv ) # hole frame
crtaj_kvadar ( orMj , ( 7  , 7 , 10 )  , (  12 , 12 , 10 ) , orSm ,  0 , 0 ) # hole

time.sleep ( 15 )
crtaj_kvadar ( orMj , ( 18  , 3 , 10 )  , (  15 , 15 , 10 ) , orSm ,  materijal , dv ) # hole frame
crtaj_kvadar ( orMj , ( 17  , 4 , 10 )  , (  16 , 14 , 10 ) , orSm ,  0 , 0 ) # hole for stairway
time.sleep ( 15 )
for br in range ( 1 , 11 , 1 ):    #stairway to platform
   crtaj_stepenice ( orMj , ( 17 , 4 + br ,  br )  , (  16  , 4 + br , br ) , orSm , blok_id = stepenice , rel_smjer  = "lijevo"  )

time.sleep ( 15 )


mc.postToChat("Finished !!"  )

   





搭建成功后截图:
在这里插入图片描述
在这里插入图片描述

待测试项目300多项:

在这里插入图片描述
三、共享为主,进步为辅

博客园:

https://www.cnblogs.com/tomcache/

CSDN博客:

https://blog.csdn.net/qq_43417559

GitHub:

https://github.com/csdnak/tomcache

300项目已全部悉数共享到GitHub哦,欢迎感兴趣大佬加入一起完善,我的世界 有你更加美好!!!(关注博主不迷路哦!!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cs阿坤dn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值