From 047c774f2186ef331cf8b74ad3b0bb067f3fcf32 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Sun, 4 Oct 2015 23:26:31 -0500 Subject: [PATCH] security --- python2-scripts.zip | Bin 225581 -> 225763 bytes python2-scripts/mcpipy/digitalclock.py | 13 ++++++++---- python2-scripts/mcpipy/explosify.py | 27 ++++++++++++++----------- python2-scripts/mcpipy/sphere.py | 10 ++++++++- python2-scripts/mcpipy/vehicle.py | 19 ++++++++++------- python3-scripts.zip | Bin 225341 -> 225527 bytes python3-scripts/mcpipy/digitalclock.py | 13 ++++++++---- python3-scripts/mcpipy/donut.py | 2 +- python3-scripts/mcpipy/explosify.py | 27 ++++++++++++++----------- python3-scripts/mcpipy/grenade.py | 2 +- python3-scripts/mcpipy/render.py | 2 +- python3-scripts/mcpipy/sphere.py | 10 ++++++++- python3-scripts/mcpipy/vehicle.py | 19 ++++++++++------- 13 files changed, 93 insertions(+), 51 deletions(-) diff --git a/python2-scripts.zip b/python2-scripts.zip index a0294a079f1eb8d3413e3a0ac8a24fb2525aa327..1323792c5bb818f24caf5b1b36dec5df446b5b8d 100755 GIT binary patch delta 12118 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 diff --git a/python2-scripts/mcpipy/digitalclock.py b/python2-scripts/mcpipy/digitalclock.py index 5f39ccc..b924547 100644 --- a/python2-scripts/mcpipy/digitalclock.py +++ b/python2-scripts/mcpipy/digitalclock.py @@ -8,19 +8,24 @@ import time import sys import fonts +import ast foreground = SEA_LANTERN # this needs Minecraft 1.8 background = AIR +def parseBlock(s): + try: + return ast.literal_eval(s) + except: + return globals()[s.upper()] + try: - if len(sys.argv) > 1 and not "__" in sys.argv[1]: - foreground = eval(sys.argv[1]) + foreground = parseBlock(sys.argv[1]) except: pass try: - if len(sys.argv) > 2 and not "__" in sys.argv[2]: - background = eval(sys.argv[2]) + background = parseBlock(sys.argv[2]) except: pass diff --git a/python2-scripts/mcpipy/explosify.py b/python2-scripts/mcpipy/explosify.py index 9f0b511..d9b9a96 100644 --- a/python2-scripts/mcpipy/explosify.py +++ b/python2-scripts/mcpipy/explosify.py @@ -2,32 +2,35 @@ # Code under the MIT license by Alexander Pruss # -import mcpi.minecraft as minecraft -import mcpi.block as block +from mc import * import math import sys +from ast import literal_eval -def replace(mcx,mcy,mcz,R,mcblock,mcmeta): +def parseBlock(s): + try: + return literal_eval(s) + except: + return globals()[s.upper()] + +def replace(mcx,mcy,mcz,R,mcblock): for x in range(-R,R): for y in range(-R,R): for z in range(-R,R): - if (x**2 + y**2 + z**2 <= R**2 and mc.getBlock(mcx+x,mcy+y,mcz+z) != block.AIR.id): - mc.setBlock(mcx+x,mcy+y,mcz+z,mcblock,mcmeta) + if (x**2 + y**2 + z**2 <= R**2 and mc.getBlock(mcx+x,mcy+y,mcz+z) != AIR.id): + mc.setBlock(mcx+x,mcy+y,mcz+z,mcblock) -mc = minecraft.Minecraft() +mc = Minecraft() playerPos = mc.player.getPos() R = 20 -b = block.TNT.id -m = 0 +b = TNT if len(sys.argv) >= 2: R = int(sys.argv[1]) if len(sys.argv) >= 3: - b = int(sys.argv[2]) - if len(sys.argv) >= 4: - m = int(sys.argv[3]) + b = parseBlock(sys.argv[2]) -replace(playerPos.x, playerPos.y, playerPos.z, R, b, m) +replace(playerPos.x, playerPos.y, playerPos.z, R, b) mc.postToChat("Explosify done") diff --git a/python2-scripts/mcpipy/sphere.py b/python2-scripts/mcpipy/sphere.py index 4aa6d75..4c989a3 100644 --- a/python2-scripts/mcpipy/sphere.py +++ b/python2-scripts/mcpipy/sphere.py @@ -1,5 +1,13 @@ from mcturtle import * import sys +from ast import literal_eval + +def parseBlock(s): + try: + return literal_eval(s) + except: + return globals()[s.upper()] + t = Turtle() t.pendelay(0) if len(sys.argv) >= 2: @@ -7,7 +15,7 @@ else: radius = 10 if len(sys.argv) >= 3: - material = eval(sys.argv[2].replace("__","(undefined)")) + material = parseBlock(sys.argv[2]) else: material = GOLD_BLOCK t.penwidth(2*radius) diff --git a/python2-scripts/mcpipy/vehicle.py b/python2-scripts/mcpipy/vehicle.py index 42c3f02..756a5d6 100755 --- a/python2-scripts/mcpipy/vehicle.py +++ b/python2-scripts/mcpipy/vehicle.py @@ -27,6 +27,7 @@ from math import * from sys import maxsize from copy import copy +from ast import literal_eval import re def getSavePath(directory, extension): @@ -122,19 +123,23 @@ def save(self,filename): f.write("baseAngle,highWater,baseVehicle="+repr((self.baseAngle,self.highWater,self.baseVehicle))+"\n") f.close() - @staticmethod - def safeEval(string): - if "__" in string: - raise ValueError - return eval(string) - def load(self,filename): with open(filename) as f: data = ''.join(f.readlines()) result = re.search("=\\s*(.*)",data) if result is None: raise ValueError - self.baseAngle,self.highWater,self.baseVehicle = Vehicle.safeEval(result.group(1)) + self.baseAngle,self.highWater,v = literal_eval(result.group(1).replace("Block","")) + self.baseVehicle = {} + for key,value in v.items(): + if isinstance(value,tuple): + if len(value) > 1: + self.baseVehicle[key] = Block(value[0], value[1]) + else: + self.baseVehicle[key] = Block(value[0]) + else: + self.baseVehicle[key] = Block(value) + self.curLocation = None def safeSetBlockWithData(self,pos,block): diff --git a/python3-scripts.zip b/python3-scripts.zip index 1a046db11274001815483a31b26982d6e5a420f1..cbd5c7b4fa22b1d6194ab86440c0c1f59467df0d 100644 GIT binary patch delta 16702 zcmZ{K2RzmP_y4``x4maJ*{h5Q*;`~~kI3F3D?~SYhm^MwDKsS`WF%6lki9~7N@OHi z>Hog>eq8kZ|2!VAM~}|yyr1WJ&g;C+>-E0x^J0Sh_ar&F;TaH*1cCm$R;8X!&PK?( zN^J&@ba7_z5-iadBV1jfHiJibOfCQhSE*-kgMx%VVHrF!jKOzkwG4JV(LKFN6TBi2 zBitqw#0iCoHjo%09|<2$XiQ>=72YG=e|(hm9aeasTpXu4POkpn|ARwzo1 zV_E4!O^U?O44@I)qgnZw<~<(9`XvTQ!WEc1JSr;~lCeBhSWe=E;Vdt(LIsX}o*o?B z*vHej_k}OGd+;!Zt_$!IuECh_sB9GAAjcS*ILV9SNhURdjoiEpKTebJR6CaEoU9y9 zC@80a2Zq4$yr?8Y_zT8_M`fAPMQV(Y=d37BXm$1kAx4;LA%zpRTTGFW!^@#Xi&REX z0|>Ci?wC}_sllaljS}I5-&!tZbFwCp5w8iq>g6J6HaO}!&lAsS(+V`L!tGFb&oVZI^VHQ z5eygRBEH0<=SkJPb#ZsqvoV>&{LI%}&Duyn+<5slscyn7Gv8!iVD+&vY3-kHJ^;>H zYVS`^N^|zUxWAMA{pzNqjqv*`(OaiujgQ@Zc#KX$?LX>B{iKIpDl7hFcuhrLb$M0SLhzXl_mq8TM7~tfyeSVg@XV`CYDV?e%+H$%q6J)dd^r$qtEx7(f5Z8 zFCan{JY`-o`^JBZH+B7%{^;tK<||Esnc<&m#VEm=M}sWKT%zs|+mT0An4fL_$!ss7 zf7eZhJ;=?yJnjq1jf=ms=)Je>4qg8)MPxRI%rfvU`C5L{tH+UHFKNx}FK#eLq&!p! z7u&3=nAE->-@OYwAG=yqwOwTYpm9;uvH8g5^vGO?Nokwwxzo$Y-1VRPQ8A=2z;)0{EyKji7laF^`fQWC1sR=Ox{6Dg**vQ7`mKaso z@24on7zUZ=-&@uC&0gq8KDm2ZkNM*1v$yprvXZRJM5_&&ceYAZUic+^f~=Z6F1fgR z4NxcfmU>1+J&K8_XLw$BtowtGfUxgedd=NA?qElXfr|KU+R4hv)QR93{VZqh5wpGr zRkF{O-I9NFnWl}|vc%y#R=F7(w*}3-w&{1ZLCt<+tKgELTe7nGqx)H+pqoIUD00$+ zf6BRB(lR}Vx&?3hWy`bBmrsfVEm{;A8Ga|d@hn=VyUwj86_5I~7RLEpt9eFwOFPz(A0@tcvn=^7ic49NpZMKUrI86(QC# zf0j|5y`2=nQ|S&wpEw4@CJp303;Iokg-7p;C5YX5*7;zjmou947pJbHLvn2W+nXkL zPc&QwkSiGA5-&U($`}WwSxhc z;Vz7;RDa!zk(jD--;6n6g~|KBzh6%B#)yXSGw!9x#N_CYFiY`g%l+Im%+~^5d8I z*BztFh0A}vJXiC9PW4p2e7)CrwOdF9lc%NEO@VZ2XGqGq;HiQC7K7R*%A!H)h-?~j zNtg8ue@G50Ezxj;C1+w6m8Cw=RKFQUOiENZPZ(Gm8P+9fpW{}op`;&mT7;`ZgQxB* zt&COkukif$^IBh21p5B4gnmsIxB5iFUi7vn@soeuoou{k25+gAE#FQzMU@hDehUrx zKw|X0^`v88tZIjQeRkPM4W4l+QEC{0!NWhuP{ong8h_|7Dh7(p{MjP7H^lp3I=y|c51JQb;d0f9`@kfJzoQX0|{ z0|U)nM+)M^3>io=B<8fTyp=snh=)MDhQw|l+4ihMCO43rEPhjb;#0`sOp48}yQfnM zawm}`x+CYDwTlHTp|l%FI#jz{)Of|oxDz)1#2&4aW4!i>zd|S)n+uLlV5T2er>FCx_@KrtXYMQzzZwOQ3w7?HDrm}E0qU%DN)N7UU)e& zYU!_bD-ac5Sj_l52)g?SlSjesJpYe3-Wg>gk{t7W-D^O#k42w0pR}M}@~3GJB_`hg zB9kC+<8)1yVSd?-$B4Wm&dg1UY8>(H8Ai^1tp41U3JZ=@+wvJCAM*;P3wuwIM4Tic18n6*#`{BZ@!@8s5{iegpVLn4f#hykK7UZJZ(YpzEu z`z@{tMf=BBMizW*b>=iWp;@+cv@VLVHbUm&&%|QO^-L1#J2u$@BBUs*mN$>feHX6} zDwuIslX|Q@56rsPDtUkR8WZcESqmUqG=ao6I84JSc3Ry-$(MBOIP>^#^MR={+95Uf zdu7c6M^*-Tl3u3CcB%Acb{v5NcfOd*G~BkI;ilr#HI4pT<|(Mx@#L?5aLzwzudI%_ z(_5IvkB?&Wv;4Kfb=mwEO4-gwvxTub_)`_L+rq4*7V=0q#cL;~{@vLbx+i%w8L4Xq zAKnVGm`EuJ+Wc0Jy5Xgn{sUhs{XwTX6AEPb5+u;(e@z;JxBK@R;%`aSjEh4_lw&<= z>!+v#9`eD17mvt$Vo5y47(a;D4KD|o1Spx`FZTI!_f4vO=CoT?vKcBru0bO164z|G z6N^Szr?F8DNPkzSDDh~AAzuwW^9K7<$6F&vuAETz*q4#pr+DNQ?v50t{%Eh%*x`FW z)HLTb>mjx_qLSKI&D!LCo$Wc#&_wvtyhv-ImfqTCRo)<_)v~vo61tI5vzKKom4xyo zv^HNSpA!)&97zk6Nr`7c-43M^`kYsg7RxcNw6p7Wn(>_s$ty&H`^pt+#Hr!vh_mbU z8RXt^x#c5FGz*HJ{=pYH2r5#+;I=ZnEBA}=&GV}D2$w2(Q~o*`F33`kq~=Lp_`6sS zo$-vXG6KniG_b1ZyGY#mR%3b>DT~#~6^c(^%k0ML=Ya9aN(T{Kk+gR{~D$No!V=0BS5WzWTmJ=#)BOgHg^_ z-!}-gs{^?hsfWe^;M*ENA4VFad4Rbe#p}u>RGV?9-@OG67Vvo=92(5;zcVOJEn9jy^WPewLQn z0MuCQSGEVRH*5iathTqqJ`?D^1MnQf&%tq@bxpn_V1y;|)A;}q0T-YeyALN_0p5T2 zp^zJFZg0ccxdEzV7~tXnSd1$v0l+aLjF==G!2M3Lmm0R=aL(z;GO0rzqvfFL|D3EuZ~v2ga&!>I_58jV;$iXUU|$`d$4_dp&$0VDu&SX=8c zzi0G1I|8u?eSZqD5*~q{gGUWT88E>v(H_AzS+X1VqWmq#Rse6dL96kj-i#?(6Y|gw zv)A$bU%n5YqMAY-y2nCPop8$U*^%o6=BNTLE1n9*`iAE3X_EVz(J~lckW3cj`!H_XP4J&^6dB2cA zOP_(i7>t$ieQ6En1aJ+&+=Wx9x8xD%Q?=c5dtV&FXUJM9OLrsY(yX&?L#^ zNQ`gGJR;BxA-T|pr$0$tN-`~QP3J+h>Bkmky%o;zRaULYDAYM6S2dXl&P7r2LSv3b zlCm|1((YUIq1miqpDaoB`C9F{5^e@_n8R0uhcVT7CNJ8b_uW)><9(VhWPYA@rGjR2 zVbSEFT&Kra59LJ*c1wb z;Zf7D3_K>nh&?s|S)BOsCSZz(5rex2v=w)OMr>vOOAPK8d=V0`7+d28s1JzoX}~}v z1|*yoEDIH9U_c;>ZJ}#N zLDs#h1eG5J4Zx0MO$g)!b5RpbznH3`?~EMfxrC%~ujWqp?Y>n4m86Ynl;-PMT<@A9kh8Cc)ze|1Yryx)2RRTpB5&h56 z*V|f}hc~{?_({sh$-fosyq8sOz#p-cHFM36I5a3YE`IVMW&2seqgnUp1T^ktx!;m# zty%)c*RNlBK*nd;uEKgc#tF3(#9_K{FDJ{36ra(N`PdwGr0u991 zlNqc!+dj75jxTg4 zoYYDxm(X7KvrbBwjvslDe1}4!+1XVm7g6rt39EA%h#Ojx6PI`Ut{GXO@=1*yE<0}7 zT|T*Ttf(qS&F7+~sEWAg)mxL#IpevA%mp4Y9wRti{N6;kS+ed@c=^=x($?R%&!w{0 zRx^z9DhCCm)_H5ybVYyYXmV|$iZ8uA;g3T^o{#wdeW-yTL$m7TQhaPNER!IQDJJrY!Slj2GLM&ZQ^kyHyY4EGJT ze+4N-i91TKyS==2;*s#e31ixl*Nm#nqN=ycvp)QyJJw>5=_z)9_cos?)8=<4q39qA zBIzTa@Qz(nZ@gF%OV!Cz{q}i!i?i@fDs9=DOskn%wzmo0G-2gG3a2N1ef>}bEufT+-Ebm8RYq>_3|jpO>VpKlP}Q$3N2-i*Jyp?(3` z$!>*rW=@HoAbuC~+$Jva7pT#X`oPved{K3~n~WQFeB|Oje@k zeEHZQwpGB`KR{7_C)p>c#y<38-1O4ioYt*}g@x1hyyasy{+Gr_6~unaHlUW?FW;gb z{+@Grsr`kGzfWhw&enGXBl9gb$F}C`kTOU1g&Z?i!Ykv=qK)Iy$J>PXoh(NXh^8Y5 z>&y507hj1scv~-%E?t@kBs`DwCY%T=xImcpgEecQo?=IJTkhzF_tVICKk`Fl7;RZ4 zY+mk!zI9IEIL4TW?^wQ$m{aUR4H2H(R(9pcUuyXo9!Bwu;_3jhOZKZ-7m~^1DBgDj zRRIshdbG=9>eIIy91U*D6c|*?EePTfdk4R6r;+`k*7s410T@-RozHoF;(fKY>>$&E zfT3MAlWr@I4TVH@q|Jxs0NtIzlM&~`_>q}3R|uQrSgB+bneMgSKrwUVqfmIHzNcj8 z=8s-AD&~GbvOI^_wUArBpTtqKGPW+aQ%Q>YJbBxOwMj&3;ZpR5A--{FqKKz@seqS* zW!8uD*ObE9^2sSuBSt!#=4UrnX9g?VR#v`>spLN)=dx>!YUzGo<2c*>K6@?g&Xn3H z!9!~~v3MI+)(5=bUfETzTr&4X0ZAF}iDrJyI*7403B8D>zkD(I9yc5JdEJETK2hg_ zWaWUC6)36O2eGluF@jXkxyIHgrn{e`u^lsKo!&7PQD{*j~yzH+)gh!TZdMCP!1 z_=6xk#IFbv`53q5`i}6mOrnwMWAtALbRYPJ-TGEUKh^$_?GCAQBM-7j8^ugz9j4x~ zO`)d8f3Hz5_}XlD5+&%m(D~W%_cvay+j_Q~-G9~B zmnOH}C+FwU>wJ_arWGT!qMcDLv_I@tI_TvaVt+-EJ49a??)*S9tu-$nf3&SBzSC() zJmA$0l2c7L;$CQL$D6Tb-?fa>H_!8AeQOH6v>5ClDL$QLpR{N&`F6^yNcZGpmsvgw z=C*6K^H~OL{_ferZDAEf#LcXs32SO2FAIt4o>`fB*K&3Vfq>IvE<<1gbpr{!=T|to zTXJsx)N6|z;hzt)EyZ;Q1p=Q_pRs_R91*o6;vP29q;YvB=fZXN&7w!^TZ=S)WN|fp z&W_UdeJ0RtYIU)qDzx51;YB#t(l$>R%ZZpHjym_ud`lo8NzQ;ZWmqipIO`Qs{4Rjn zt)6uB!pKE36*EerQNAKSW)#0sysf)>#)GwrUVtR;2-UY|`6o`?%^SWEz}%g`d`g!_ z#PYk{^QXa6p_lXH$XO8uFsM~)$JA|^&t9t(L z8ht3OX#7#$wxQM>bHQy3E2B-H3Z0ums&Oo9nuUK}MvxXPrhU3bs4sE?<>yb=L$vCD zmE1jdusS*P@9n?IpP3hHI_eVQ`zXY+@20Yd*D~;nJ`;D_cDYO%${MR;5ujMS8j8@L ziA-#EuUdL#CoWyWN9Ocnm^O>!-u=Kz+fMQapXT`6DCA=|uae!B3iYOAp}cTZPHoc- z%4Mlle45Wxa+^u?3wwVq0|FKIaMD+AHNv8JE6;VEWTTGY+9sD1QP&X7u734yk3l!J ze6A|Bk6;ful@#&ACn<=c{?Id`{>?<@sAX|J3D)abmZxlXSXC<8k0)untSj8>=?1QU z&DCIa}H(P#mbLt?NIvmgD5 zoai6&UwCQlrNq2Lt+nSt} zpWM#xT(v!~#NVUjAX_Bggf?^5(wthSd>c;XlJE%~TcXc=lU-Ug=O?cVw~d1|A|EfjTp!mke#^ zE7V`~iVq7_UuATkAJF1lpwunfOno;FL4ztp9|)2!bZpH1l;tbK>;ntkeOyMN>D zv%bB3?d(Pq>T8^L?`zt=Y?nuwcUaX5$;+$ZvrFZM-dMoDly|OMoAg$hn91^$H{+L9 z{upy^_n9P|IZ5gi!27@k+M+}jB&a@nB-qqJsB!!;S@G+LQSEOTrXBJlFaHwRDV~q5 zjm-8k7}^M}x_+^4W~=$DedAXwPZAv76coW|=csW0^_`=LYsl0bD! z7E`sNixiEkMKb|I4)SZ|ZPmz|fe-w`PoJ}2^rwmS{bCj}A{Zz5_-~qS{dAZUfAp${ z;M@(5FKN}wemo=RZy0B*t`@c>p>(!9B$!ttyz+bHl^AMYk>PEMrOZ@CT`pb-6b=DX zUw_Z+Z`cjdPE4O=73;cA#WD2ciGkFkt-%3)rs6T-SN1jpn|i403s7i?fK{p2r|ilK zazxhcA345xi=OgN&(yW8?0CO_cCTK{lH^h8REOcWr~$fDIpfXm%T7Fg)A1Mek#x8# zjo`%()zPYJCnyP}Pj^(-8n6ylo-#ddWQ+d$PWHs~>+I`xoX%w41ylWmnW3W703;z!#;wG^EYDID+;eO& zIcluoghl;jp))?GSwH#n6TSL+zp}1M@bPt-;j`6qjIB<^{%2Omj`z*Ev3#;(Eq7ub z)IIZFoAG0>6@N=7S$ZU@xs6yy;ppzXes1+12M|y_Nb2{Kuz@w;gO{1w|vP7{oJfcXTisI+y=)u#bNa z+%h_D_>h|?x7Tmtc}|wE z&*q<7v)SXJq{hb)Gyj|Prq$wVdr;`2TZWK_j-DWIn6Qa`mA}bZ_vyG_wpL*oem9d@ z7Sl7$Z+y!)ew0C*7U(<6a<)@&@unl{!!@PM3wPXjZ28{uWOaN>iu&NQ@u*6^;Le!I zwua2~Jjwkl(@%1^J}znE2L!RBsIP<#e-su=4-{cbE@ArC!{4IBr$)malHYD#)=hAJ)bAm}{;}0Ra#~zp!%;qexKxQ<`i8LIxBP+))+Z>g zO-HI(ee*B+y!W7?WnbsMw{osKGxn=U#Lye*rjhEFdcuGX7lqm)Vfx7_-<$qAXD_r@FT-jkeRk3Z)>oj2u7Xgcfnva)n7lVoY= z$#aUH?~nc7R9uXYBUhN0%&9u*ToT67Rp_Tp4y}f2>L)N|t^^i(JWg)nCq0zcR1utL%v4 zVxGEcIG~&bYHHFc$Drh+2d5*8^{;*QeT1P29E*L5EoIntU% zQ4_Vv&NMVp)$2EK;~(C=KlI|gc`OWpRL?C+sU{ZU89gwjGzb12qd+$Eu;iE>@&(bj7b3P&Wg z+@+9Dt<_MbW{Md*8KhrRMtut3qJg`bBKynQ$)J9(9$sVT0Z9`*sgbaal3~xv6Ce~?JKEBT42#9+v~rLE*nJXDGy9mNd}vv zXl&2C@^lV1|Gpe_GWa%6gAK8dbj!9$N{uyF93@(FOqXJe=2TePr^_S@E`DD#-%UpK zeKxieo-H`Pv!m-J_4SD^rIlHw>G?+pGXgtzWF3<-19EL8+=b*Gi<1p+Y*fr;s!P?} zsXevb?w7_-dU|@XeRANqG^`d%xbnmaH9d5*QMKpTm}ncGqsx@lrSW65nb`@x8QZSe zR2{m{ihp-sH#w2ONRn+PG9xNCwnaK}t>w~(^7rT0w9I~q4QKa%c%hdW??t>cNU+=U zyUBfP_hDGC#FHj^Bg;R1s8>HP_b~Y`JXQLW_qJttlF@cj&qmT*V&%AG!jc32t(`^G zbV&k-*3I@>TD!D|P0D3TGlV|OZ!Gm^jh4@q7`Dr8hE8#V?4~LmHxCP zeD8aa*kULxz4hyLS0CMXq(SfHKaiOuD2|%(8!ztC%~XQ?`8YFO_-NnV$vPHDlTooX zzr)9pk!{&|_wo7ZCrO*u9)&ArmYR6132XMes9+tYiQgRq#Tu?j!{kn35x%Ks4OZER z17}@Ijc!j!iPacbDV%;*x3Jx1F?g<+^G+7q1(SC-#fyh^`}{c@?F~N;I_lyN4-%@P z%#x4-GI;T?*xyWxY2KR_+;&iG7#jLmo-BOwtie5Rx2_`ETML<0WjFlvKHg0IaPwXA z1z|A@`3;lK2LfO0^R94`tqne)muvW|TV-|Ib$hj>A|fc~RAJ#GyXDjD7nbse7FJbc z_0LA8P1zSOJk+~H&Aps^uYU6r|KrO8717Kn^1FV%X091d=?MyQnPS<;Uf82<>%Orv zHSs7HGtGH2H{3}-J?w(7X83Gl;^J%bORpE1Qn%yoxme0(N!9&z*I%U$GN5nHFg*B}W_3oY$FF2!hQd?(Z-s93YmCx2Dp~`WE)N-u3 zw`Sk8*<6^Hqdr1LZc979JSr0KCjE>Sm6XzQTWGcNR#A7|i}?!|&if1mR<^~|W)DXz zOJ$K0-W9F8jqkw0lU?^V=i!L2vXw`ZZ-1nyH_G*b4AHs*OG!_v{#e%VW0sPKE|;ZH zK2lP)=crU0T`rcJp63`J%GiDr)*;)K`en4OaSiHBVN0iTyxf6TE@NRK+RwRG{A@O` zx8V10ha*=TnQxl3<@)HEu=r4m$6Kx4YlxxClN~1&mr3;KrUx^iYX?YlPOB~22e(}|D8_{+a&=F}uCT08D$ zo$KB$eif>>yxMNmtl9HOi1WeqqiS1@NNpt+OZqp&ajM8ae=%KaxK3p#TN?hw`oLFd zbTiVlG>H4K2QkTj8JN$zPh~(!+~?hS8L%AtIW1onl*WliWx*KiXCNoVeT(ehb1bi|2|cq3Mw7eL8^hOhb7Kx|MGc*mK@^4s}4T}e=FE$n4k`-9hUr1|Cf)t z#z6_%(;N*@0)*S0_i>ic5}aRX9d%9cNZ501PHppO(3taww6A@mNZ@x%VJVUerE}k9UCozmH=!z?Kfk0uZG_3}@iL z>?M^Nn%}Wmi4#gNKPs3X(*fYch^RE=-XgfVoOklGzvK|;?&aj}?Yd`T4+s;;9kztX zRe1Hjz)M1V0H`Q}K4Txq%iiDLG0?&JUkEug7hG>45duMd2m)>|#BuR+_O^Gz0qm^= zCMAwOT-GguIS|7f=netggCca{Vz9>;6O@;_a86`FBf4-->`lnR-AP((#=^(+2oMMp zDmX5OU`lgwJlrq%`uJfRtKr3hTZQ&Fn3o<5tO3RA9mqlsG;r%Tm5ez!U6Y9s2%ZDL zixJPDX+7}RJ`B1^N?ad?*@X1;K?d9ehM$;zeL(`eX3Q|mVSW!D;rMxaIlFtG*o*Ta zexooj^W`V|s@^_0NA?1NiIA89$igD=^pGMB5*K;2XK8u&=VW2e#QtaL^q@NiaDWdJ zfN`07p5bu4++F@>K{35tVuo-CtRY=P7y<6B!h{&J9~w@{m(jqh48UPHydNfB?8655 zIpc5-IW~&Mm4h}659EX*+=QjYGSEf21TXy{{l6L1`UZ!4!QR`+*~=l&%V96PaLd;I z@~52zSs3v;_SGHt)b==FlC`4irf4VZ!Ui0+gO#Buq6*qQ3v%q`4Hk(e?hq81WOG)^BtBT2O&aZ_yaF)0$sy& zj6oJo;nBm$&fWp;0oYD)*aVI|`U~=$sZ1RTCSL=$0w3OKkx;WS9MwbUe_?c_0mNbg z3gKWl(L286n&8J)c*82eP{$5zh@uFpStPVOgA_#<)IH0XcCld-*eQiCnAsx`xhY5l z!u@0z7v<5+#0A|_-DwbrP$L9_<`AUs@?rP99dKE{hk(iYR8u&7ydYF!3bOCpMz_~3 zz%w8<9svCX0ZgffyU;L}F$-GVAC=n!=VK7OEe}^fcgWrheiG*gI^y}T1Q`$2neDGM z_Oh~#R;45cpg%+a!$J2kM(8=7w+_S6l7s_)xJEWZ7tIe;GK?!F=CF}j=$-k2vM-Mg zy#GCl@F-FQ;)wXaQ4-_<_R}jM&@aI2|G$OKTfop8&}EB*K|=R2*25E^ngjreO8~TJ z{&3G5I!OQJG1_-(OL+f7C-)8c!28J`o5_1Y!gyPDM%R)Q_EZiI>ES&x4nc zw$^tQ3CG469!Cx>y&Uw}@*qz%33e;kfn-S5>OgETK?^}o6hSwwz@xY&!(?m0i}c&S z;oZsvpOxH)@Oza2s96c%JGfjJEM;prm-y8o8|#0~=fN|`dZ_k)CN|*-Fj)hDLNx%E zgMdoth1=mD>K2CWr@&{^;ag9Z=D+cD@;@aK5FCIh5PM-giU#>ezrCIfZ@ZW9I2%?zX74JfvIjoLN*{jE+CkIPtyfAU5A6+2xmR(p@8&3sWu?bVeKllwY3gdvk3q2 zRih}P0a~$vE7BfE4EDT}7pVZe^fj=vjEAsCAw$~(OM}sN$}0OY11}A_cC#JQHiJrS zLEgjIf_SdMzhU3iVD4Opw9_H#^9PC)W({r5!|u;OA?FWJ#7s266JVMH09|naI1a89 zW|rL!ek>Z2wL1_sO!OgM2ccWA%@olcZvCTf^7K zE5yy&$V556`KpE|SKdOdM3(jgfc(D%eQ@9s$uS)y7JNx;% zd;5F3OE~RaH1^;zi}Ax$QP&S%t8{o!9Ljco=$bQ}PkS~oMXu-<>*rcn(;UuFmP6Xd zM*xUq1Yk$!)1CoEG|gu@al7B)M||N&4qpc3Mi0=u;Opi5f8NLAhJD7Ora(#yWg^o`uR> z4=e!&YaYg86`k34!`I!<-fJ(;d%ze~WjA<_9{U2>xE;7vVrFvT8Rmw$eUJcqzyB}9 z5*p&cSLmWU$OQR(1xOB76%6}@Oh?5$I3*(B6OrS<@+?LyK)&t=N)4tfu+|;Mn_5QW zF+xAwL2?jofy8Dgx-pW?1DCC1F=d43eu%v_9CtVr|I`I(8pzJ`;PnN~FV_=}+h(gRHA9UX9pnbG6 zIbI+O`zPjoSU+bMA9pX@E6^e6oj~9c{7R2NAFPM-Y8Rroa3HT#(6JrwG1M!CiCl+? z9KPASX4|)ixqdnNc>DY8-@^7B$M^%h5Bbpp8}x*s4qpdapymq)4ss6kS+U>udD#1+ zh#8308}|OcV**?FW#KEY7L1Mi+w%(T-=d19431}zvzxo4m-Bx&INZAkI)qQW;S@`g zfj)R2II=M>Gh{w+rkpzkLN8@NPIRX1U8XU!zVIw?Mh;5x0R?a~m>k;d=!XJecQfD| ZI(#TlD?w{M|CwR%1&x3V#3q delta 16271 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 diff --git a/python3-scripts/mcpipy/digitalclock.py b/python3-scripts/mcpipy/digitalclock.py index 5f39ccc..b924547 100644 --- a/python3-scripts/mcpipy/digitalclock.py +++ b/python3-scripts/mcpipy/digitalclock.py @@ -8,19 +8,24 @@ import time import sys import fonts +import ast foreground = SEA_LANTERN # this needs Minecraft 1.8 background = AIR +def parseBlock(s): + try: + return ast.literal_eval(s) + except: + return globals()[s.upper()] + try: - if len(sys.argv) > 1 and not "__" in sys.argv[1]: - foreground = eval(sys.argv[1]) + foreground = parseBlock(sys.argv[1]) except: pass try: - if len(sys.argv) > 2 and not "__" in sys.argv[2]: - background = eval(sys.argv[2]) + background = parseBlock(sys.argv[2]) except: pass diff --git a/python3-scripts/mcpipy/donut.py b/python3-scripts/mcpipy/donut.py index 07a4022..9b0d51f 100644 --- a/python3-scripts/mcpipy/donut.py +++ b/python3-scripts/mcpipy/donut.py @@ -27,5 +27,5 @@ def draw_donut(mcx,mcy,mcz,R,r,mcblock): draw_donut(playerPos.x, playerPos.y + 9, playerPos.z, 18, 9, GLASS) mc.postToChat("Glass donut done") -draw_donut(playerPos.x, playerPos.y + 9, playerPos.z, 18, 6, WATER) +draw_donut(playerPos.x, playerPos.y + 9, playerPos.z, 18, 6, WATER_STATIONARY) mc.postToChat("Water donut done") diff --git a/python3-scripts/mcpipy/explosify.py b/python3-scripts/mcpipy/explosify.py index 9f0b511..d9b9a96 100644 --- a/python3-scripts/mcpipy/explosify.py +++ b/python3-scripts/mcpipy/explosify.py @@ -2,32 +2,35 @@ # Code under the MIT license by Alexander Pruss # -import mcpi.minecraft as minecraft -import mcpi.block as block +from mc import * import math import sys +from ast import literal_eval -def replace(mcx,mcy,mcz,R,mcblock,mcmeta): +def parseBlock(s): + try: + return literal_eval(s) + except: + return globals()[s.upper()] + +def replace(mcx,mcy,mcz,R,mcblock): for x in range(-R,R): for y in range(-R,R): for z in range(-R,R): - if (x**2 + y**2 + z**2 <= R**2 and mc.getBlock(mcx+x,mcy+y,mcz+z) != block.AIR.id): - mc.setBlock(mcx+x,mcy+y,mcz+z,mcblock,mcmeta) + if (x**2 + y**2 + z**2 <= R**2 and mc.getBlock(mcx+x,mcy+y,mcz+z) != AIR.id): + mc.setBlock(mcx+x,mcy+y,mcz+z,mcblock) -mc = minecraft.Minecraft() +mc = Minecraft() playerPos = mc.player.getPos() R = 20 -b = block.TNT.id -m = 0 +b = TNT if len(sys.argv) >= 2: R = int(sys.argv[1]) if len(sys.argv) >= 3: - b = int(sys.argv[2]) - if len(sys.argv) >= 4: - m = int(sys.argv[3]) + b = parseBlock(sys.argv[2]) -replace(playerPos.x, playerPos.y, playerPos.z, R, b, m) +replace(playerPos.x, playerPos.y, playerPos.z, R, b) mc.postToChat("Explosify done") diff --git a/python3-scripts/mcpipy/grenade.py b/python3-scripts/mcpipy/grenade.py index 941086b..e5707d5 100755 --- a/python3-scripts/mcpipy/grenade.py +++ b/python3-scripts/mcpipy/grenade.py @@ -105,4 +105,4 @@ def getXYZ(path, t1): if t > path[-1][0]: break -mc.setBlock(path[-1][1],REDSTONE_BLOCK) +mc.setBlock(path[-1][1],FIRE) diff --git a/python3-scripts/mcpipy/render.py b/python3-scripts/mcpipy/render.py index 892b4f3..21de00d 100644 --- a/python3-scripts/mcpipy/render.py +++ b/python3-scripts/mcpipy/render.py @@ -851,4 +851,4 @@ def selectFileAndGo(): mainloop() else: - go("models/" + sys.argv[1] + ".txt", sys.argv[2:]) + go(os.path.dirname(os.path.realpath(sys.argv[0])) + "/" + "models/" + sys.argv[1] + ".txt", sys.argv[2:]) diff --git a/python3-scripts/mcpipy/sphere.py b/python3-scripts/mcpipy/sphere.py index 4aa6d75..4c989a3 100644 --- a/python3-scripts/mcpipy/sphere.py +++ b/python3-scripts/mcpipy/sphere.py @@ -1,5 +1,13 @@ from mcturtle import * import sys +from ast import literal_eval + +def parseBlock(s): + try: + return literal_eval(s) + except: + return globals()[s.upper()] + t = Turtle() t.pendelay(0) if len(sys.argv) >= 2: @@ -7,7 +15,7 @@ else: radius = 10 if len(sys.argv) >= 3: - material = eval(sys.argv[2].replace("__","(undefined)")) + material = parseBlock(sys.argv[2]) else: material = GOLD_BLOCK t.penwidth(2*radius) diff --git a/python3-scripts/mcpipy/vehicle.py b/python3-scripts/mcpipy/vehicle.py index 42c3f02..ecacbb1 100644 --- a/python3-scripts/mcpipy/vehicle.py +++ b/python3-scripts/mcpipy/vehicle.py @@ -27,6 +27,7 @@ from math import * from sys import maxsize from copy import copy +from ast import literal_eval import re def getSavePath(directory, extension): @@ -122,19 +123,23 @@ def save(self,filename): f.write("baseAngle,highWater,baseVehicle="+repr((self.baseAngle,self.highWater,self.baseVehicle))+"\n") f.close() - @staticmethod - def safeEval(string): - if "__" in string: - raise ValueError - return eval(string) - def load(self,filename): with open(filename) as f: data = ''.join(f.readlines()) result = re.search("=\\s*(.*)",data) if result is None: raise ValueError - self.baseAngle,self.highWater,self.baseVehicle = Vehicle.safeEval(result.group(1)) + self.baseAngle,self.highWater,v = literal_eval(result.group(1).replace("Block","")) + self.baseVehicle = {} + for key,value in list(v.items()): + if isinstance(value,tuple): + if len(value) > 1: + self.baseVehicle[key] = Block(value[0], value[1]) + else: + self.baseVehicle[key] = Block(value[0]) + else: + self.baseVehicle[key] = Block(value) + self.curLocation = None def safeSetBlockWithData(self,pos,block):