I'm happy to announce my Smalltalk bindings for "Minecraft: Pi Edition": Find out more at - Bert - |
Hi Bert,
Thanks for the Minecraft bindings. My son, Alex plays Minecraft a lot. Since I'm trying to get him to learn a little Smalltalk, we would like to add the Minecraft codes (for things like wool) to your bindings. If this was VA Smalltalk, I would create a pool dictionary via a pragma but I'm not sure how to do this in Squeak. Any guidance would be welcome. Typically pool dictionary entries start with a capital letter, is that okay by you? Lou >I'm happy to announce my Smalltalk bindings for "Minecraft: Pi Edition": >Find out more at >http://croquetweak.blogspot.com/2013/02/smalltalk-bindings-for-minecraft-pi.html >- Bert - ----------------------------------------------------------- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon mailto:[hidden email] http://www.Keystone-Software.com |
Pool vars sound okay, except that you couldn't use these then from a workspace.
Another idea would be to just use symbols or strings, and look them up in a dictionary in the API methods (blockId isNumber ifFalse: [...]). Or, add them as methods to the Minecraft object so you could say "mc glowStone". Do what feels right to you, all these would even be compatible :) - Bert - On 04.03.2013, at 20:55, Louis LaBrunda <[hidden email]> wrote: > Hi Bert, > > Thanks for the Minecraft bindings. My son, Alex plays Minecraft a lot. > Since I'm trying to get him to learn a little Smalltalk, we would like to > add the Minecraft codes (for things like wool) to your bindings. > > If this was VA Smalltalk, I would create a pool dictionary via a pragma but > I'm not sure how to do this in Squeak. Any guidance would be welcome. > > Typically pool dictionary entries start with a capital letter, is that okay > by you? > > Lou > >> I'm happy to announce my Smalltalk bindings for "Minecraft: Pi Edition": >> Find out more at >> http://croquetweak.blogspot.com/2013/02/smalltalk-bindings-for-minecraft-pi.html >> - Bert - > ----------------------------------------------------------- > Louis LaBrunda > Keystone Software Corp. > SkypeMe callto://PhotonDemon > mailto:[hidden email] http://www.Keystone-Software.com > > |
Hi Bert,
>Pool vars sound okay, I decided to start with the pool dictionary. Attached you will find a zip of two files. One is a fileout of the pool dictionary. Alex (my son) found a list of about 485 Minecraft textures and colors. We put them all in the pool dictionary, MinecraftConstants. >except that you couldn't use these them from a workspace. I thought this was a problem too but I'm pleased to say that if you look at the replies to my post "How to use pool dictionaries in a workspace?" you will see a way around it. >Or, add them as methods to the Minecraft object so you could say "mc glowStone". I like this too. But I need a little help. Below is a snippet of code (unfinished) that I will use to create the instance methods to Minecraft from the MinecraftConstants pool dictionary. For now the code fills #testStream with all the methods so we can see what they will look like. What I need is (what I expect is one) line of code that will compile the contents of #stream as a method of Minecraft. Can you help with that? Will adding 485 methods to Minecraft for these values be a good idea? I have no reason to think not but it is a large number of methods. Lou | testStream | testStream := WriteStream on: ''. MinecraftConstants bindingsDo: [:b | | key methodName stream | key := b key. methodName := key asString copy. methodName at: 1 put: ((methodName at: 1) asLowercase). stream := WriteStream on: ''. stream nextPutAll: methodName; cr; cr; tab; nextPut: $^; nextPutAll: key; nextPut: $.; cr. testStream nextPutAll: stream contents; cr. ]. testStream inspect. ----------------------------------------------------------- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon mailto:[hidden email] http://www.Keystone-Software.com |
In reply to this post by Bert Freudenberg
begin 644 Minecraft.zip M4$L#!!0``@`(`"MX94+BX&B:1!8``*!*```5````36EN96-R869T0V]N<W1A M;G1S+G-TO5M=<]O(CGV>!_\'9NY#-@\S5R3UF:I]2.PX\5T[\5JN<>UL[0,M MT1;+DJA+2?;U_/H%#M#=:)+>J=K:O56)"!QTD_T!H-'=\/OSIMXD\[\?R^)I M^&N>U`])EB5GY:+<W)=-D@W2-/G/=7$H]X?DN%L2\3'Y2YI.QX/_2NIM,DJN MBF:QXG)Y4AR2_.,@_9A.DMWF_;N3^:IHRN5U7:^3_?%^L2[V>ZI\56W+15,\ M'$[K[?Y0;`_[DY\J4(ORMZ*IBOMU^;W8E%3V_?N3GU"MC7]:'*KGXE`W-T6U M3CY53?)I^\S4;K<NDT]-4[\DGUZ>7HJ&/G^HJ*&?BR=NRH$J$7V8[XJ7[9?' MQ^1S62Q87"[Y_^=UO7ABHL&SHJY=EL5SN1=Z7NS6U?91F+NZ7@9JOB[N8^ZL M/E*+`U9NK]?%]LD"\T-1-?3N=;%XNN-A(NJ/\KI^6=+0@[[A;S`1&LQ-K!_. MJF)3;Y>._;(IFV+MV:]UH"\:[I_0-^5R?ZBWU*KUL90OUC1KGP'1SU59,%0_ MX:?8+O_]6*T%611[+G,XK$OZW':QHIG#6-!0TW\JU)3%DG]?"*:>;6-&A[:I MW*^,F*/<:('78:%9W%X=]ZNF)A6-./<R@J07Q\53>4A.B\7AN-?'UZ8LMV>O M);%/\B.U3@M2CX,^3IMZIV2]+>:'"@6.ZR4/FB-<O6>:A8JFQL_%Z:JHMAM2 M01J@PSZPIRLREQU;3<"^E>L--]'QE^7C(XT-:C6+FL8=M>B7VD"J$;Y1[<MU M23-1-(<_M"F*S6E<93X]PIP,\NFZ>,6/UF%*!/@8_?QHJ&)]3^.N+PDT)J?% MZQ195";*('?%FM^]*,BNMB!8Z:E7]6;CE8"8'1DU/6LR2NVP<N?5?J7D==T\ M+58\/\16_.&7,"H-F8SM+KV-YGM7-M]8"PVMGQ0@U'\M1#?H"0TZH]:5:_84 MGOJ/<KVN7[C46?&ZKAY7AWFYW=<-><=B.5\UQWNB#N7"N2$UR4__*!TI:J&, M40I%OI8;1ZIV.*[V9;R:*,]SIN0U=;L('YNOZN?2MV+^4C=+8AI^Z7Y'#2>7 M<M84CS7Z?T9Z3^.1,.U\AS[Y"U\VN\/K5;%+U-#+)9R"Y]B_E%OQM@INRNWA MEGTT`3QU!U(R3YTWY+B9Q80Q43:B[B"ORZ)9"[DQJO_E%:Z&G>%YT6S6[%+. MR^*P8J"DY4)^O_*0GJ,J-4U,E*HFYU4C/VQACT+>E/M*EAI9%_+!H!>?=O`Y M3=U^E:6C7GRLY6G4GVYJ."/'DI%0<TFM:1K9G9_3$G*0WX('I*1).R=%HV&H M#X$2O3T_-MN".RK/^:9<P^M^717[L(B!NZ5!3+[R:BF_XJN%OBZV3%&3RX:J M7Y7K>CM?5PL&ZQ>Q?D^='6E>>(99D_DI:LR4T6%F56M!U@)=;!]K0;SF,O/] M^/BH)5F_^.G4EVG579!07*M@0JO;_MJ@@TV!\DWQRO;)3U@Q?+Y0Q^U.UM%O MI#K4#HT#(N[BPO$RBS''4EH/35W+!:FK:SF6BH7)`T$/.?#D@L;\8OLT)_=% MS^=J7]U7Z^KP&M2QBTY;:%#%+LJ*R"L^SQT_/Q?DH$%@$IDRD\CL64TNS1&B M=<SIW(*LI:3,+5-^;IGA">6GFU"F=4)!8D(O#N5&O,#?J.L_+MF---OD;\>G M\K[^!SVWC^M28RUA7+`E'**M0&)]BEE=G@+H`BZ+Z(IU62Q9-2Z+7;6_+/XX MKBM+RR`8@'MX63P7^-%8@\GO]7R'J.=2O9(^9:R5,<.MB`ZM<GXL+\MG?@4O M-!R>L6)[!CH-SNF\9U2T?KWFAE0;K;C1.NR,Q&XI5'\D%UFP7$D4(7I3T`)9 M;)0\WH=PDQ<!N`L9%/$<)861B7$B('\C%4^NJO63#I!7^:OZ'J^CSEW5M01P MX?WU?B^+`E.O[5`"H%WEK^IG-L&*BR17Q^V2/)N:IPL.R:6^,%,M:.5[HOU+ MH/-`HS_[P)]2'!R85=7L`DNK3V"NT"[/<9"PJ@(PYX7/<`W-BF?OBNI@.3*, MJ]<%11O'3?*]A.H@1#.T+'0&8$NR/$RAQ:LM6%047Q"))2.&55QXK%="WO'T M!5+F77B.OY+OK(._D0<BX_?^JP-.8S!XKP[(SNM[?=!`_4?Q;]:,?Q1/ZA^( M<LZ!2'@&?6(L#*WCH(@W_Q_W^VI948#Z@\:^#NOHCZ;8/L)^A()Y7%/`CC7W MNF!_?ET]^O+7M#DJ&AN97U?;)Z[/3ZDMFBH/Q*;7=;5W0S,8CB(^HP&P_,7% M@';C@L@0#?(\XM-\$/%4(QTK4A_WNN/5>,QS_"CWV/Q<<[Q1+KVU*H^(]OJX MV3U56_>\IB!<25$%96#YU\>&%FOT'11Z;X=&:,Q0('6"%)#9P:=OBI?/9?G` M3[=!(!*[`WKZK0%M:/T.T=#R10+0"K?KQ;ZCX6.#'NC'M@>L'QX\BK#(,9?% M9A<QICJ;DJ$YKF+U<=`-;41H,6@Z`!K]PWPQ%H0/W-9\Y!)QMMI=A0:0@Z=X M_E!97>NBK'%=5/3.XD'[NBCK8!<53;RI]R5^J'6L'#<4E9;;<_+QJV1.JS!- M/N]BD["5]114)>)46P(F"C-?E84\RIVWS7GUN,6/Z`)3O*(X;DUK[0-ID]W_ M!M2\Q4/M(F&G/7^BK;<S;\OHQQ0)+UW3ZOR9EQ%0!J]IE=SO90YX5&-D.`B( MCOQ@TD+8`\\W%'^LS(ANZQ?\:'N(NL?7Z^-:!M_OF5H'',H>>--`3$T^D1[- M<>%"-6&<-Q8.#CF0,HT1Z^;1@\['6\1-[M^/U3(TZ%`63_S[7,IH.TJ[A@,< M_+ZJY]5YXU^.B<.T2;LBUK4K@-H&$X`(?3SX=W-T#,+%O\(T-"7'IKQ&X`=( M8^)YT.VV7H-'N$PD[=5+[Y5I"LKMXV$5EMD8F7:0BPLHD&)AT8V1\:!=ANJQ M4AT?*0K`[RGO'3VEX_Q2/1R"8J(],33M0MHB!YHFQ=!XT"DEC;K]?LO__:#< MDA++?M!3X6C&0^>\S[CE-43C1'&?MTVQ6_+6AXF="Y%OFVKWPO[3$=_XW.,W M7N<?C5WPBK=/[HH#O>@.SAR_NN466J)@T'Z?<$?:&UMXC+"%.R18>(SD*'-/ M_SE\*I>1II$I/+_VB[!A2.[(5^HOEG]0LIK?5=0=WT7B5GJ:%DB9_;MZ_1#* MD;&J.3`9-I%BQ6QS0F&?*22;C)J]VHQRD=&H&Q"K48;-)I!J-PK`<+#@WU%X M<$]Q,TU.4_%Z@],K.<]#@=_KS7TE'B20TFSA*<JS)U$".O;]R4\[>LM9M>`Y M*YK*WU50LQ_KYI4X?\OQRW7UR^=B7[Y_=_*N>_61+.H-GUN1H]GLJ-KE99+_ M=?A77*>DDX^CX?MDUU1U\S$9O#NAZDM43WS]=R<G)S__\DORO_CW,]7M:Q"? M%_T/-S)4Z]U;U1+:UJ[JY?Z<&_R^V">O9`''+6350U4NWR?[OHY./Z8IO;C: M5H>J6%=_E"<__>R_$3J;A`(_GYS\M"_7#P;Z=%N?_=I!O]S6EUWTZK:^Z:+S MV_KW7T_>)?]/71Q$7>3F_FDWDT_)@0+:X^,J.?N5^QQ??'W\UR0=3:@C?`-& MS(!)7(2Q9#AB%D=HQ&9C2'$U!C9C-KHC(_@O_Y)/J+7C#R2T5V8DRF<YP+!= MDO+3/!F/4%ZNTOC3^13\$O5&(V'$OO!M`1KEN0?VK@WO3:=)]L$)7(`!R=@( M$&M(^4D+=C$%I*..4)=VM'9D1?`Q\LJL_2GC=+2$>[&_PI-!&='$*.XO]'@L M)A,'WDC#\_',(3WCFLH[HAL_DHXF`7:G]^A('G!<`1(X3`.&JT#&LH#Y*T$H MDPCTO,EW19K!-X7<8OF*5LFEBKL[U"JIZS[[72XU'"CG[Q09G8X5Q>4B-PP= MZUXRHO`0,M7>5!B\)YN"PPK+[&PB;+B(Q-#/6JC7QS25"I6PL)L0(J)+PV$R M_&!AJP7#W`J#7@U@!=$M)NRHC?J&S+PH'G]1,0DH^`T9MU`O.XE']UN7GGXB M4!=7H)BMH7+AFQD0'*ZC=:GG$2#`DP3,WY*B[!2X7I=BD@8&,0,L!3L7J%[3 M1S,T,[Y/Y1<.1A8W9ZD0YE:HQZH09%;@3U@A&HI([ES1@&Q,+D^^SS$@&Y@4 MBF]B?6-GN13N7LR*4QB-W.O:U[3RN6%+'':2D,^FB7R`+W!A<!/E_$>FF4-< MM3QG6SK5/E&/E./#")X!D8:]+NMY#$7*+@WHO?]U*M\IXA5_/(DE.,F%?YI! MH+?#7D7U3>ZNF$MF\@IS:8SZBN+V&&X%VA%=(\.GCCV,$R-H_L!C_O0(MN3P M2BU$OO'2,^UB2MV;9S=K*@_7T%)U-A'WT+F4%FUQKJ5]11UL8P"QWEC[41L[ M-/(5L*-PF0W'9Y%PJ1U<=2IUHCMNK`9L]F%'A=$"8BZ]X7X9#)??#,'91K?@ M7#O-`]HRY30-(KX7AQ(/`V:,.QT8N);OS<R;(W-/LR!06QB-`^3V'VBSZ8?N M.@!/#(P]!E!Y22--`NUNV5D,Q-^V0Z/1$+UVQ^A._VFQ)@?!?QYK?O&QYB5B M36UY/N1I,&%&/IT&P/F7;`9,TP:P.+!MQOD#['3@LWL3"40ALTR\8R>M`.O( M&!*?/0"G,'#8IL]9CZ8?G%S2#.`@IH+IN3A>/;.07%6B8_KZN0^2,E95DYN` M(6',)RFP#^1J+ED!1C(%P)<Y[,!'CONJ%D`;?4"=-`:8,/<;^0RLOZDRFM>` M[X\4ZTMP\'']-)TA+'LKXR$4S&1!?BL%PNP4\NGDK9)C^\IT/!REKJ1)DX!. MI`;'_1/0#*A/G(`N8B"000'KGCK6IU+P6(]F@%U.!;1Q8*&PI"`P=5D6/&]I MX'VV!>/<F#CK(J@87'%(PL",\7LE&X-;Y#D](D*1H0.1G@$=P%?Z\C0PR2)U M"1NL1C.+X(8"H\3#XC(XH'QC!8POGBC4=L0CQ8U9YG!>41X&QM2]U3KGH<.< M9W:`9`_`K[MZL:=VJ.:*8(A2Q9R;<2^S?GOJ6FR<]M05#!Y[RHY'C@N9%4;+ MIRI[C19&>`Y_Q>Y6V(F@+M'$!^F(8D+:"3[)TQ/GGQ@3&V#9;R>DF`+YV!30 M+!-K>;.NW+Z`+"Y#%^(L%NL-)AUQW()L9@KTM&#:E;=;`)O_9I:]H>?]02ZL MG77V0C0=T8/+DD%0E@+H2Y>Q`XKQZ,^?,<4F@W:Q?L<VF_:7:[NU,>(^EW0# M_S-5`-DW,.S4(6%G,U.HO:F9*(X#4X3V`X-XUS5QK[3[GK'#G/5E"ACK&RD4 M;XM<DYVEN5+6TD:N:<;21NZ3P=(0_X>$'[@N[FR4^<-;3^Z!RP!B;S8$;S*! MW$D0;"M."]*C(".)SH):>.LPJ".UIT'C2!8?![4J]IT'H8@F&/'",0(;$HV\ M>QE^B"7A?"R+!3HEB#N0A@2-4L8>"TP4\_<-"&P8#(%(G@\#8+31%(L5,L.I M1)RZ!'@:X%B5T#0D,W'_4=LF-86-!PPGSG%R[C3WHHY;GD2BJ-941)(+A<ZC M6YH4%3X\^*!P5!NQD4V88AT=_=.B=#Z4_O,H_<I'Z3>(TDU25^@?1L_F>+DN M9BIP"5]89*<>LYE?X112*TE8#]]F,L*@B[G#Y"8)(7;F,1_`("@.R6*HRN9A MLL:@H8*%Q2''%M/DD7$4C/=W\LG";AV+04@OXS5FJLAKS^$$&6\^DZU')^G, M;?!5:C+0T"L&HTPTOSJ,8>-18AKB@DQ0GZ$&HQ^/(S07=!2AFK4FDJF5G,KI M;"9.NI7))H*9%9Q+H)K)O4"<W29X&N&:YR:BJ/USW4)E<NK4RGT3P=`*D`4G M^"3&&U<>&N`RXV#(W$J;(@<PBT&_O4H1T+63YA!FC&)!=.H%E>E/I7.G7ITB M8>%`<!HEV.&#XQ;J%]C0Q$;CG.G$0VX7E,/[FG0\?&D48<'H)AB0OJP\&_7! M2_:FZ9DH2:R^-V\O"I(&O<4Z6S\80LCM0^1`2$CJXWY-!3%+_%@0M[1CT]+* M"V1?$$K9I1PC;#,#L7L?QV"8WU1:Y'(#>?)X[%LY@L'!8!A#RF#POL,@B+<( MC/MT0OBU%,C.+<W\/9M@&#Z&8>[F&_H#YTSDDGWHFS)S:-2.L:#>@>6>=:>6 MB!':2830QB`(6656M^3=K91&JU:#=@')-;.;CFDH$M+.HFU'IP2G4D3ZEK5+ M2#I:M#71IK@C(!P1V+YFGM=<2>Q`!8V3)C%D>1#XHU'65Y=%R08^#ORU'#@/ M$2Y%:9585-*`AL42H^\3+?TT(W`Q:9=>X=##EKZDN(\UV9C.^TT^1'C+\5EI M\'E8G5QOQ\)(XB8ZD0L0G<V/!/,'\S`RF].)PP"`)KD3(Q5C)OY023O+$Y6& MO3+.[,1TSGK%/^0>>V1?[(]7\M2@R`2%]\A;J+XCLPU0YS_)8\SEB++(%O>Y MHHB\QCT2GS3*"IR_64#V6_;5D@7%'QRW47W=9&0$=^[P4<%8S^#Q^E-.K7/( M^XNU7,1HTE^LZRA&[8)ON(LWRK6=QG#67Z[K.E)I8KW7W:TRFN,:5@(I%3)> M80"3_^L=Q4AW%,./HW&TH^"$EC_?4<S]CN)W["@T+1?K$UO'7(^T$6U%=YE0 M[3A?USD3=+TO>=?YDU:!X%(0ZVM*+]1^)KS)[0W+HKR%4WW1W%PY[QK&#@FY MOXSB$[TYP!+J3[1YW83@L"L:M$JXZL@^Z,T3=N_&VA0E#6.YF;10<T@]-**> M\V=IK,\JAE=-'=13?B3EV]G&]B@MZQ89ME;RL2T2LA6CZ'#8+9.W0T,LYNV< M97=3+NW82MH'=JH^?1FN.%,D7(VSR_:9S0R@4GR=,O)0S^C()VWF,_9LF!Y) M@>8Y@5;:5&AW5B63$>5%ZUF5D41G52V\=5;5D=JSJF$DB\^J6A7[SJJD2)1A M'6Q+Y@X)U_!;0V$U\]K?;><?+-ZZV5:A:G\FDV/3LW&2!-!=KSG&7R6/'!)V MXSA[:J5R.\\CRMV7U^U<3[N$R=CQ3=&45E:ZB</\H:IO8W1]//1HE,;*KQ@X MD;U7SCVHS1\.+1(:/0PEP_US)EB4)0[#%T$[7=S:MLQZ)W_<VO:H6T32M^WU M1&X+O;$]["G3V1M.NF4DX3N*UJ5)R$O'LI`[]E1OSW*LPZU,=78`*-G-6+>1 MB>AZ-X7=AB73GC*=0<G&4:DWKDS["G6&9=!3J#LN*9H54N%%IK%'3UX\HFLK M.M?3>-2"[[/)\OY3N8B^WT(CQT+'-SAL*#ZL1.CLD^S99L<*[,SQ:BIO<EGW M\&F90;YIVD"*-G?R\+VS2F4S)WGYL&1^KR3HPRHFPDHH/76,O8W-/6A.U,<. MM$?J["2ZF?S6PM"8;FJ_M;"A+?+&ZIEURW16S[&4D8D=@'[S[P(PX-.WRL@? M"*`,1@M_*0!_-W:LVP4C)C-_.H!2[*?COR$(P9*T,OQ)@5\]TEC06CY$:O_< M("Q/(Y'YOSY`PW/%HILRK%SASQ'@/E,/^6NV+!3SGG[@H<C5&[CCZS,O,\X> MMR#F;QC<8I5]B/#60F6EX79M*J`$0!AT_^<./#40FS][P`:%)]3\_8/;N$$) MS1]#^&G)8D%K6HRT]8<2(8J:A#(]4OXP-D%]?X(0]B;O3OX;4$L#!!0``@`( M`*IX94*?Z)EQ@`(``'@&```0````36EN96-R869T1&5M;RYS=-542V_;,`P^ M^^#_P+@'MROBV'%2=`)ZZ!H4&]`7EF+#$&2`+"N)5MGR)!E)^OCOHQRC+W0= MNEN1'&CR(_F1^J3P6*L"QK]K3J\&40IJ!OT^C#CC1<8U].,D@8FDEAL+=96C M06`K2?;WXBFH$H9P2C5;.%P*U$)*XB%)!E`58<<_SWYQ9L'4&9/4&$P\%25G MFL[LB!?*]T1I+"T9_T:UH)GD9[3@"`M#WVLRGOL_*V,Q5BDE1X)9H4H$-)'[ MPD>JJ6F-JX%LYTJO'\>[%Z+KFB.]SA,VP%11\-*.+2TJS,AP$;W^L-=,%L<D MW@NATD)I`G'''W,.#44P(N<=W_>#;A?^XQ]@[C,>KNPKN\&$S@L94'"[4+DY M=@Q#RA@W1I3S$,S?!OJ(I1:X4=_[Z18+8G8F)(%)*!6CTD7":0?<;/_NEZ/? M//0Z.8&TU[9*!F2XCZTT%66FEGT"FN:BQA&#IV5;`($T#GSO%@H&E3)PZWMH MD0.X1^-1E6C:2T7`<#D#QS5RNC`.Y_(D77-]*21'=PP6@>E>#-G:%8]BZ+4< M(,?(A%0+`;?X6\$:KEU#[^:BUI7DWU%I$7R2=6N=B/G"/OXL6NL'EU(M-_:Y MIN6\]7_EN3/N8"GLXDN9\]6HZ<B45!J(:)IY*T=[NZ6T"V('/H#CE/.YYOQ( MF<BAUJ^BQJ)L4-<.M0%%7I"+C8I@YJ[Y9BV!@VWCEC(\Z*M#2YHU[\+-*H)U M!-=W.W``AT*C("YUC?=]XA*\5Q*@JM'9S#2=3J/FP)A4!K??".C-^GFJU01? ME`<!O0O];&TG,>#3F>(+.8`$+\'.NY-`#`$5.GBK#&[2(01+%'T0;21Q]Y(F M_@!02P$"%``4``(`"``K>&5"XN!HFD06``"@2@``%0`````````!`"`````` M````36EN96-R869T0V]N<W1A;G1S+G-T4$L!`A0`%``"``@`JGAE0I_HF7&` M`@``>`8``!```````````0`@````=Q8``$UI;F5C<F%F=$1E;6\N<W102P4& 2``````(``@"!````)1D````` ` end |
In reply to this post by Louis LaBrunda
P.S. I didn't mean to dump the code we wrote on you. I just wanted you to
see it and get a little help before asking you for the best way to share it. Lou ----------------------------------------------------------- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon mailto:[hidden email] http://www.Keystone-Software.com |
In reply to this post by Louis LaBrunda
compileGetters
" MinecraftConstants compileGetters " MinecraftConstants bindingsDo: [:b | MinecraftConstants class compile: b key asString withFirstCharacterDownshifted,' ^',b key classified: 'magic accessors' notifying: nil. ]. although I wasn't sure exactly where you wanted the methods. On 3/5/13 3:38 PM, Louis LaBrunda
wrote:
What I need is (what I expect is one) line of code that will compile the contents of #stream as a method of Minecraft. Can you help with that? |
Thanks Bob,
That did the trick. Bert had suggested the getters be added on the instance side of Minecraft, so that's what I did (at least on my image, if Bert likes it, we will go with it). As you suggested, I added the code to generate the getters on the class side of MinecraftConstants. Is there a way to add MinecraftConstants to the Minecraft poolDictionaries list if it isn't there already? Lou >compileGetters >" >MinecraftConstants compileGetters >" > > MinecraftConstants bindingsDo: [:b | > MinecraftConstants class > compile: >b key asString withFirstCharacterDownshifted,' > > ^',b key > classified: 'magic accessors' > notifying: nil. > ]. > > >although I wasn't sure exactly where you wanted the methods. > >On 3/5/13 3:38 PM, Louis LaBrunda wrote: >> What I need is (what I expect is one) line of code that will compile the >> contents of #stream as a method of Minecraft. Can you help with that? Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon mailto:[hidden email] http://www.Keystone-Software.com |
Actually, having both the constants and the getters seems kind-of redundant, no? I'd just use the constants and see how far we get. That dictionary could be used e.g. for printing block names ...
Also, why did you split up the initialization? Filling in the pool from a literal array would seem much more natural to me ... And why are these so many? Are you sure that's for the Pocket edition (which the Pi edition is based on)? I see a lot fewer I think: http://www.minecraftwiki.net/wiki/Data_values_(Pocket_Edition) - Bert - On 2013-03-05, at 23:22, Louis LaBrunda <[hidden email]> wrote: > Thanks Bob, > > That did the trick. Bert had suggested the getters be added on the > instance side of Minecraft, so that's what I did (at least on my image, if > Bert likes it, we will go with it). As you suggested, I added the code to > generate the getters on the class side of MinecraftConstants. > > Is there a way to add MinecraftConstants to the Minecraft poolDictionaries > list if it isn't there already? > > Lou > >> compileGetters >> " >> MinecraftConstants compileGetters >> " >> >> MinecraftConstants bindingsDo: [:b | >> MinecraftConstants class >> compile: >> b key asString withFirstCharacterDownshifted,' >> >> ^',b key >> classified: 'magic accessors' >> notifying: nil. >> ]. >> >> >> although I wasn't sure exactly where you wanted the methods. >> >> On 3/5/13 3:38 PM, Louis LaBrunda wrote: >>> What I need is (what I expect is one) line of code that will compile the >>> contents of #stream as a method of Minecraft. Can you help with that? > ----------------------------------------------------------- > Louis LaBrunda > Keystone Software Corp. > SkypeMe callto://PhotonDemon > mailto:[hidden email] http://www.Keystone-Software.com > > |
In reply to this post by Louis LaBrunda
Well, there's a poolDictionaries: argument in
the class definition. Put it there.
On 3/5/13 5:22 PM, Louis LaBrunda
wrote:
Is there a way to add MinecraftConstants to the Minecraft poolDictionaries list if it isn't there already? |
On Tue, 05 Mar 2013 18:02:40 -0500, Bob Arning <[hidden email]>
wrote: >Well, there's a poolDictionaries: argument in the class definition. Put >it there. I meant from within the same code that was generating the getters or am I not understanding what you are saying? >On 3/5/13 5:22 PM, Louis LaBrunda wrote: >> Is there a way to add MinecraftConstants to the Minecraft poolDictionaries >> list if it isn't there already? ----------------------------------------------------------- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon mailto:[hidden email] http://www.Keystone-Software.com |
In reply to this post by Bert Freudenberg
>Actually, having both the constants and the getters seems kind-of redundant, no? I'd just use the constants and see how far we get. That dictionary could be used e.g. for printing block names ...
I guess it is redundant. I was just trying to supply whatever people might want to use. >Also, why did you split up the initialization? When I tried to set all at once the compiler complained on saving the method. >Filling in the pool from a literal array would seem much more natural to me ... I just followed what ChronologyConstants did. VA Smalltalk and Squeak are very different in how they make pool dictionaries. Can you give me an example. >And why are these so many? Are you sure that's for the Pocket edition (which the Pi edition is based on)? I see a lot fewer I think: >http://www.minecraftwiki.net/wiki/Data_values_(Pocket_Edition) I'm not sure where Alex found it. I expect it is not for the Pocket edition. We have a RasPi but are playing with the Minecraft Bukkit server that Casey pointed us to and a windows version of Squeak. We will probably play with it on the Pi later. Would there be some value in splitting it into two pools so the Pi edition could have a smaller pool? Lou ----------------------------------------------------------- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon mailto:[hidden email] http://www.Keystone-Software.com |
initFromArray
" MinecraftConstants initFromArray " | input | input _ #( ActivatorRail 157 Air 0 Anvil 145 Apple 260 Arrow 262 AwkwardPotion (373 16) "etc..." ). input pairsDo: [ :k :v | MinecraftConstants classPool at: k put: v. ]. On 3/5/13 6:49 PM, Louis LaBrunda
wrote:
|
In reply to this post by Louis LaBrunda
Well, you could...
addPoolToMinecraftTest " MinecraftConstants addPoolToMinecraftTest " | newPoolNames | (MinecraftTest sharedPools includes: MinecraftConstants) ifTrue: [^self]. newPoolNames _ String streamContents: [ :strm | MinecraftTest sharedPools,{MinecraftConstants} do: [ :e | strm nextPutAll: e asString,' ']. ]. MinecraftTest sharing: newPoolNames. MinecraftTest withAllSubclassesDo: [ :e | e compileAll]. but I'm not clear why you'd want to. Isn't easier to just edit the class definition in a browser and save it? Cheers, Bob P.S. it's Brunhilda On 3/5/13 6:26 PM, Louis LaBrunda
wrote:
On Tue, 05 Mar 2013 18:02:40 -0500, Bob Arning [hidden email] wrote:Well, there's a poolDictionaries: argument in the class definition. Put it there.I meant from within the same code that was generating the getters or am I not understanding what you are saying?On 3/5/13 5:22 PM, Louis LaBrunda wrote:Is there a way to add MinecraftConstants to the Minecraft poolDictionaries list if it isn't there already?----------------------------------------------------------- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon [hidden email] http://www.Keystone-Software.com |
Hey Bob,
>Well, you could... >addPoolToMinecraftTest >" >MinecraftConstants addPoolToMinecraftTest >" > | newPoolNames | > > (MinecraftTest sharedPools includes: MinecraftConstants) ifTrue: >[^self]. > newPoolNames _ String streamContents: [ :strm | > MinecraftTest sharedPools,{MinecraftConstants} do: [ :e | strm >nextPutAll: e asString,' ']. > ]. > MinecraftTest sharing: newPoolNames. > MinecraftTest withAllSubclassesDo: [ :e | e compileAll]. > >but I'm not clear why you'd want to. Isn't easier to just edit the class >definition in a browser and save it? Yes it is. But at the time I thought (my mistake) Bert wanted/suggested that I create instance side messages to his Minecraft class. That would require it having the pool dictionary defined before the methods could be added and I kind of wanted it to be all automatic. As it turns out Bert is happy with just the pool dictionary and people can add/use it wherever they like. Anyway, I'm happy to learn about things that are different between VA Smalltalk and Squeak. >P.S. it's Brunhilda That was good for a laugh, thanks. But as I think about it, it's not too flattering. Lou ----------------------------------------------------------- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon mailto:[hidden email] http://www.Keystone-Software.com |
The pool approach is probably good, but I'm
always a little leery of things stored in different ways and
places. Since the system browser, optimized for looking at classes
and methods, is the primary tool for most of us, I tend to
prefer ways to work within that context. Defining pool variables and
then defining methods to return those variables does seem a bit
much, but what about dispensing with the pool variables and
auto-generating methods like:
brownWool ^#(35 12) These methods could be grouped in categories to facilitate browsing for interesting textures/objects/whatchamacallums. For most of us browsing for senders is a bit more natural than browsing for references to pool variables. FWIW. Cheers, Bob On 3/6/13 9:43 AM, Louis LaBrunda
wrote:
Yes it is. But at the time I thought (my mistake) Bert wanted/suggested that I create instance side messages to his Minecraft class. That would require it having the pool dictionary defined before the methods could be added and I kind of wanted it to be all automatic. As it turns out Bert is happy with just the pool dictionary and people can add/use it wherever they like. |
2013/3/6 Bob Arning <[hidden email]>:
> The pool approach is probably good, but I'm always a little leery of things > stored in different ways and places. Since the system browser, optimized for > looking at classes and methods, is the primary tool for most of us, I tend > to prefer ways to work within that context. Defining pool variables and then > defining methods to return those variables does seem a bit much, but what > about dispensing with the pool variables and auto-generating methods like: > > brownWool > > ^#(35 12) > > These methods could be grouped in categories to facilitate browsing for > interesting textures/objects/whatchamacallums. For most of us browsing for > senders is a bit more natural than browsing for references to pool > variables. FWIW. > But in a trunk image nowadays, cmd+shift+N should catch the references to ivars/class var/pool var as easily as cmd+n would catch senders, right? Nicolas > Cheers, > Bob > > > > On 3/6/13 9:43 AM, Louis LaBrunda wrote: > > Yes it is. But at the time I thought (my mistake) Bert wanted/suggested > that I create instance side messages to his Minecraft class. That would > require it having the pool dictionary defined before the methods could be > added and I kind of wanted it to be all automatic. As it turns out Bert is > happy with just the pool dictionary and people can add/use it wherever they > like. > > > > > |
On 2013-03-06, at 16:34, Nicolas Cellier <[hidden email]> wrote: > 2013/3/6 Bob Arning <[hidden email]>: >> The pool approach is probably good, but I'm always a little leery of things >> stored in different ways and places. Since the system browser, optimized for >> looking at classes and methods, is the primary tool for most of us, I tend >> to prefer ways to work within that context. Defining pool variables and then >> defining methods to return those variables does seem a bit much, but what >> about dispensing with the pool variables and auto-generating methods like: >> >> brownWool >> >> ^#(35 12) >> >> These methods could be grouped in categories to facilitate browsing for >> interesting textures/objects/whatchamacallums. For most of us browsing for >> senders is a bit more natural than browsing for references to pool >> variables. FWIW. >> > > But in a trunk image nowadays, cmd+shift+N should catch the references > to ivars/class var/pool var as easily as cmd+n would catch senders, > right? > > Nicolas Even a simple cmd-n does find them, e.g. BlueButtonBit. - Bert - >> Cheers, >> Bob >> >> >> >> On 3/6/13 9:43 AM, Louis LaBrunda wrote: >> >> Yes it is. But at the time I thought (my mistake) Bert wanted/suggested >> that I create instance side messages to his Minecraft class. That would >> require it having the pool dictionary defined before the methods could be >> added and I kind of wanted it to be all automatic. As it turns out Bert is >> happy with just the pool dictionary and people can add/use it wherever they >> like. |
In reply to this post by Bob Arning-2
Hey Bob,
I will have to think about this for awhile. I like how values in a pool dictionary look in code. But I take your point about being able to browse methods and group them in categories (I would have to get Alex to work on the categories and what goes in them). Bert seems to like pool but also thought instance methods would be good. Someone also said they would prefer class side methods. I could go with the pool dictionary I have (I fixed the initialize as you suggested, thanks) and add class methods to create the instance/class methods and let people run them if they like. I will think about it and I'm still open to suggestions. Lou >The pool approach is probably good, but I'm always a little leery of >things stored in different ways and places. Since the system browser, >optimized for looking at classes and methods, is the primary tool for >most of us, I tend to prefer ways to work within that context. Defining >pool variables and then defining methods to return those variables does >seem a bit much, but what about dispensing with the pool variables and >auto-generating methods like: > >brownWool > > ^#(35 12) > >These methods could be grouped in categories to facilitate browsing for >interesting textures/objects/whatchamacallums. For most of us browsing >for senders is a bit more natural than browsing for references to pool >variables. FWIW. > >Cheers, >Bob > > >On 3/6/13 9:43 AM, Louis LaBrunda wrote: >> Yes it is. But at the time I thought (my mistake) Bert wanted/suggested >> that I create instance side messages to his Minecraft class. That would >> require it having the pool dictionary defined before the methods could be >> added and I kind of wanted it to be all automatic. As it turns out Bert is >> happy with just the pool dictionary and people can add/use it wherever they >> like. Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon mailto:[hidden email] http://www.Keystone-Software.com |
In reply to this post by Bob Arning-2
+1 If it is hard to discover with the current tools one either have to adjust to the tools or build better tools. Class Color have many class side methods that make them easy to look through with a class browser.
Karl On Wed, Mar 6, 2013 at 4:06 PM, Bob Arning <[hidden email]> wrote:
|
Free forum by Nabble | Edit this page |