From 46ea46d2ab460ed2f3b0fa98e86726d397fdfef3 Mon Sep 17 00:00:00 2001 From: darkrose Date: Tue, 1 Aug 2017 14:54:15 +1000 Subject: [PATCH] clay vessel pt 1 --- data/textures/flower_pot.png | Bin 459 -> 0 bytes data/textures/flower_pot_bottom.png | Bin 461 -> 0 bytes data/textures/flower_pot_raw.png | Bin 244 -> 0 bytes data/textures/flower_pot_raw_bottom.png | Bin 262 -> 0 bytes data/textures/flower_pot_raw_top.png | Bin 473 -> 0 bytes data/textures/flower_pot_top.png | Bin 505 -> 1994 bytes data/textures/overlay_block.png | Bin 0 -> 178 bytes data/textures/overlay_brick.png | Bin 0 -> 172 bytes data/textures/overlay_oddtile.png | Bin 0 -> 323 bytes data/textures/overlay_rooftile.png | Bin 0 -> 235 bytes data/textures/overlay_tile.png | Bin 0 -> 172 bytes data/textures/rooftile_stone.png | Bin 736 -> 0 bytes data/textures/rooftile_terracotta.png | Bin 392 -> 0 bytes data/textures/roughstone.png | Bin 2122 -> 2094 bytes data/textures/roughstone_block.png | Bin 708 -> 0 bytes data/textures/roughstone_brick.png | Bin 736 -> 0 bytes data/textures/stone_tile.png | Bin 802 -> 0 bytes data/textures/stoneblock.png | Bin 559 -> 0 bytes data/textures/stonebrick.png | Bin 630 -> 0 bytes data/textures/terracotta.png | Bin 317 -> 551 bytes src/content_mapnode.cpp | 32 +-- src/content_mapnode.h | 7 +- src/content_mapnode_special.cpp | 68 +++++- src/content_nodebox.cpp | 31 +++ src/content_nodebox.h | 1 + src/content_nodemeta.h | 21 ++ src/environment.cpp | 14 -- src/guiFormSpecMenu.cpp | 7 +- src/gui_colours.h | 2 +- src/inventory.cpp | 2 - src/nodemeta/content_nodemeta_blocks.cpp | 98 --------- src/nodemeta/content_nodemeta_storage.cpp | 246 ++++++++++++++++++++++ 32 files changed, 383 insertions(+), 146 deletions(-) delete mode 100644 data/textures/flower_pot.png delete mode 100644 data/textures/flower_pot_bottom.png delete mode 100644 data/textures/flower_pot_raw.png delete mode 100644 data/textures/flower_pot_raw_bottom.png delete mode 100644 data/textures/flower_pot_raw_top.png create mode 100644 data/textures/overlay_block.png create mode 100644 data/textures/overlay_brick.png create mode 100644 data/textures/overlay_oddtile.png create mode 100644 data/textures/overlay_rooftile.png create mode 100644 data/textures/overlay_tile.png delete mode 100644 data/textures/rooftile_stone.png delete mode 100644 data/textures/rooftile_terracotta.png delete mode 100644 data/textures/roughstone_block.png delete mode 100644 data/textures/roughstone_brick.png delete mode 100644 data/textures/stone_tile.png delete mode 100644 data/textures/stoneblock.png delete mode 100644 data/textures/stonebrick.png diff --git a/data/textures/flower_pot.png b/data/textures/flower_pot.png deleted file mode 100644 index 4d3d81bdbce6f54b4e73338affe37156e929d348..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 459 zcmV;+0W|)JP)tvCPx0a!^y zK~yLe1;I&j8!-$3zy`>XWIL5(-k1NMTq)aHh6K_bfB*Oxeht5e89vhc@Rowl?ep{~ zul8);+rKS~v#oM3BRt9i7+i*#g0mFJBx$NuyQRqp4URAZGBm-gf=toQvcq$`@@%Ue zty*y3&Ni4|rwViHRIG5M7_i&De3fU(7VT{FTy|<++YutIaxWQP<)>9U%Xc~3V&0}} z5-!7$G96)r4AJIxYuVQJQ&ySBRKXy`kl{MqQis>lVU^c5!jT5^NN>ZDjx>f0Bh6tT z^|m)@r6{>&0brF8E+JZRwzDC^v#pjPU#)185wt?UZmZ#0ie{6$tRoj2!>~0a{5! zK~yLe1;J4c#6N#K!j-Pn3^D|G+Ec1UXrA&Z zGed-=+t1-CGt7Y5&ahgwZ=2x^^G6ySDLKM5j4;DymovTPY1&gN%)uG1FvAE(zzp3+ zI>UdA_FeE}n5!LOh7mF(IKmk+>^A7|=k(d$Hb)rYO2HM*usKq+pu?HE+$ES{o@u7t zjx>UBhQUZhmMhG(iSj9lr!1(cX5K2=}&G>^7hFlo76W40l=WO4`$~O7k<_ zWtBNXgyh?7Gkr>gUEY@ADG`1zFN=AEX0b}7F5TX(skXQaIz$`Hw>8QLtNq@NR1BK8 zylu5J6;GR=?T_JYJAB&aukfp!VT5nXu-dyl?OXl_2u{{%jo(q;00000NkvXXu0mjf DeoM-$ diff --git a/data/textures/flower_pot_raw.png b/data/textures/flower_pot_raw.png deleted file mode 100644 index a6f0337979df79284111898ddec27cb70ce58d38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAn3BBRT^Rni_n+Ah4nJ za0`PlBg3pY5H=O_Pg9n!g`9&7Dr3~3blH=IEF|_vK}-HVliZ3J}CK9Xqx+{ z{}Nmr8(g-_pa1;tn@xZG{QdU!_v3GdvTWfOfCy@z{G&*F{OcCI*@u`QVW^jjg;ke5Y% l303ENX6ih6_a-9aH^0H{^lYn8TaY&xJYD@<);T3K0RSaQSiArL diff --git a/data/textures/flower_pot_raw_bottom.png b/data/textures/flower_pot_raw_bottom.png deleted file mode 100644 index 0a7fa1ab7c43ec3b167331e0cf4f2b0fe98e3cb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAn3BBRT^Rni_n+Ah4nJ za0`PlBg3pY5H=O_Pg9n!g_4ZE8qSG3QhNPaSV|NXFb@+$YRLBWDxR(|L1T0 zi(N57^>SgU30qhHjyRiVkm$+(;N{_9(GTZXe9Fp=PxnQ88%)X(J8V>EuzJ_;l*7rZ zyFw?fNz;3?^27$_lf@E^t9(M3+(JYWn(uv0nxA$}Ir!FG@vgm}!yXkxlxuI<+_rOd zx0s^+UGpz0hXl&pl|Q=b#HBeHTOXFzJ6h;uZTy{C diff --git a/data/textures/flower_pot_raw_top.png b/data/textures/flower_pot_raw_top.png deleted file mode 100644 index 569a721f8a21ec9db3b6bf311636827d837002b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 473 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 delta 487 zcmVy{D6rE*^i~3jz}?B2AoYr~m)~hDk(0R45e%!9j8pK@ddIpH!X5a^Oo%9GO?LWi?7863u*|%g4HN+ zV{>f`Z5BKmz(OXWE@PlcvCP+I1Puv>tGUcFN6;`$JvJ-%{XE)7O>#A-g=QuHr$tLKdKqi>HfYNW|f{*DrE17;rFOjMz2tcmD&w zSf?HRacUJpj%!q8EmRip+wNsxWMbhsz*zpVqgS+MJ99ECkSm~&pzON;Isc*GOt+#} S@QVV?WAJqKb6Mw<&;$Tv_AitG literal 0 HcmV?d00001 diff --git a/data/textures/overlay_brick.png b/data/textures/overlay_brick.png new file mode 100644 index 0000000000000000000000000000000000000000..c537203e3144943fc4f791febad74a9e557cd43a GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}oCO|{#S9GG z!XV7ZFl&wkP>{XE)7O>#A-g=Qn)V@k$BRHAJ5LwKkch)?uN~xMFyLT5aAWG7`t5ud z-8JS2$22XNobvhOo9u?men6E#VDPp$CSTzx+chC35cdbW-t&iy^Q(^gUj=bJUHx3v IIVCg!00OHqNB{r; literal 0 HcmV?d00001 diff --git a/data/textures/overlay_oddtile.png b/data/textures/overlay_oddtile.png new file mode 100644 index 0000000000000000000000000000000000000000..f664c4103bdaaa6aa861caa682065997f03ef1b5 GIT binary patch literal 323 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}oCO|{#S9GG z!XV7ZFl&wkP>{XE)7O>#A-g=Apvm2`AWxu>Y-UJAiF1B#Zfaf$kjuc}T$GwvlA5AW zo>`Ki;O^-gkfN8$4isPG>Eaj?aro`DSfK_5j+Tud-Kzg97c7rk?fKMwOWK38TmH1Q z_By#NsQ!@5`*3sEg6)y|@=Z@zlMDD0N(`7*a4ztCTw)Mm^5vcU7E2)o##I~U3S3DH z5t&|axJ$KQ&Bnscmj@m)Z?H&g(OD%mVae4wtm|3ytk1i`v8yfq=qDuY3_Z`)=Yfh`(EeJh5d@UT8Cu3_H!06)znFUV6st=26@QS L)z4*}Q$iB}|Icxl literal 0 HcmV?d00001 diff --git a/data/textures/overlay_rooftile.png b/data/textures/overlay_rooftile.png new file mode 100644 index 0000000000000000000000000000000000000000..a3e962c0f03f04d0f91e4fda5fc68c7749ee6aaf GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}oCO|{#S9GG z!XV7ZFl&wkP>{XE)7O>#A-g=A9M|mrU|pb)Y-UJAiF1B#Zfaf$kjuc}T$GwvlA5AW zo>`Ki;O^-gkfN8$4ipdZba4!cIQ;hNLr$QzEfc@BI%J^?NaMDYUbuC-f To*#z)Kw3Oq{an^LB{Ts5rq@W; literal 0 HcmV?d00001 diff --git a/data/textures/overlay_tile.png b/data/textures/overlay_tile.png new file mode 100644 index 0000000000000000000000000000000000000000..4919b5f5eb58b0307f45b5221fb11086cd5871e0 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}oCO|{#S9GG z!XV7ZFl&wkP>{XE)7O>#A-g=Qkx10{-8+FocAhSdArXh)UfamaV8Fq=;llJE|F_E> zoN)BbL>}&$DziVmF|0nd|Jyg9QXsfocl;~&3uXxCtKA324=POAvc{GrAQ4YjKbLh* G2~7Z>BQli$ literal 0 HcmV?d00001 diff --git a/data/textures/rooftile_stone.png b/data/textures/rooftile_stone.png deleted file mode 100644 index f64e181894a217006236cffa4f8722b13149820d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 736 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 diff --git a/data/textures/stoneblock.png b/data/textures/stoneblock.png deleted file mode 100644 index db01348c65abe04d6f6ff8294791250ff06aad0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 559 zcmV+~0?_@5P)0&S%Til05Cy<6m4L7H{pqzV>>?o{DI)~&K2{82O>6?&jt)U3O*dh}E$-}mR+ECJx@s+!2dp+f+{>-q2HauFaRl$ur4QdJZU0=+ZyJ*yb*B*D5%AS2v8tJEYa z3Tc%f30B)QD^!(&)5CGwj{FjycNLYMYlWCBiV)(HP{T7K#%;`f+WCC$y;Eea zLC77Vv?(FbDhG*}uBxr~_m4M=6%%uvm%9@}QoB@CYi+p~5($tf3TxXo>&NZ-ezm6G x9-p9Lt&Q8*9=nLS`JP)0s~1z zK~yNu1;M*+6h;&P(EFO1^?HRdMYIyBk~9>!frf^bii(P_M@a<^!WOLObzhu=pFV$_ zdp|xr9IvjIj=8oFpH3$#xaR)(a52;K`Fy&$W)#&ef1J-_^gmy|Y^}|`4z22PWEA1T z_5T0+fB*aP>h&uEv}K7XNN{tyDTfM<%*=&bgUn0^U?4^WYUQB1gIs6G@p#l}YfixA z!VsJYd#RccqL~tsFqwj_@KDN3W)9DYpky_Rh>R>Ek*?e39y_%6?y2T3zaB40;1Psq zI?92pqo=vqn3IJNdH1z#W1=vN+D62+77=+wTg}~B2neJU8wQweCRoPmQdr#G!Vpkh zTdkh%>Aw6jeo^ArZ{HA6%>umEs;c<@!@Kaf|N6bvcJt!d<>%$3wUz`zh=nQ_cJt9Y0L(dQAS6bnh(M-PNrP?6EJV#THew=@S!B4y zw&9tW5G+DK(IY)0ECNJT896fhd@58u%y%Fo0RdxZIE1P)GckLp%szYXw%yg+fu6>4 zu-G9Ywmj0)6A;~#Fp-G3N~?$4+vn-n*F_qSr;!lmuBu}Uch3mj(;{@+Z?eFfQN%jM QP5=M^07*qoM6N<$f++qWRR910 diff --git a/data/textures/terracotta.png b/data/textures/terracotta.png index 49c6d537c64a069a31a0f51fdca2887c6ba22996..d44484be81e65a949c9313ae9f50f9674a020edf 100644 GIT binary patch delta 520 zcmV+j0{8vB0;dEaiBL{Q4GJ0x0000DNk~Le0000W0000W2m$~A0Q?y3qmdyif8hro z1tTlJNVSvz00Fs4L_t(Y$Gw(IawH)PM4zDA^YIDh9CIq)e>3Cm5?&+?S$N&Bpdvs; zWJ*d&@$vT$&{_i`0w}>)XU_9m4WJZ&Bg(ivTLZF9ds*Jk1{7Yr4t-L1&jf0TfkkY7 z9R+y5)p7FwY~zW}n+B9R|J8aue}nGXoJWd>c+{A?>{mgfa<_n4JE4BTHGspZVg zQtJNAvqvq1hui3<+GDeafv_Cm9*hwQ&vEUQX_F;pvYD-vCz|dbRcwH&oMCyQD&R9e^!DujN<39 z@e|qZszpC)0FMMXnb^C+O%2a{185efUdM9Q<6YJC=P`RzTD`ng77hDSzCU}0bwgwP z`zTu&yww7Hl0aIYqUXaJ3A?=PSbf!-v8kH6GO6ozvSv>IEdYvfQa0+H(<<2O8T@<9 z%t7rMf$u)89bh%_&uU)(PL0RYOONXK@`Ex;M{oIwmDF$Dl!~<`r8?7$@0000< KMNUMnLSTY7G4Epl delta 284 zcmV+%0ptFs1ib!|EAa_=}$G%X|fVU*I zC8UH#`T)4J+RXtV#wqFBD1aNCa-hjQ-RhJA9n)$ER&91Nb|~l*C$Eji$>F~1t?CH& z3vN6}KOM6ICS%03_J6Fnxo0s}Fh)62K~|36BM+5vPhI)1!_nC_Ji i7wgu-hsfwtZ;2l}q^W&4_5u3<0000description = gettext("Stone Brick"); - f->setAllTextures("stonebrick.png"); - f->setInventoryTextureCube("stonebrick.png", "stonebrick.png", "stonebrick.png"); + f->setAllTextures("stone.png^overlay_brick.png"); + f->setInventoryTextureCube("stone.png^overlay_brick.png", "stone.png^overlay_brick.png", "stone.png^overlay_brick.png"); f->draw_type = CDT_CUBELIKE; f->is_ground_content = true; f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; @@ -357,8 +357,8 @@ void content_mapnode_init(bool repeat) i = CONTENT_STONEBLOCK; f = &content_features(i); f->description = gettext("Stone Block"); - f->setAllTextures("stoneblock.png"); - f->setInventoryTextureCube("stoneblock.png", "stoneblock.png", "stoneblock.png"); + f->setAllTextures("stone.png^overlay_block.png"); + f->setInventoryTextureCube("stone.png^overlay_block.png", "stone.png^overlay_block.png", "stone.png^overlay_block.png"); f->draw_type = CDT_CUBELIKE; f->is_ground_content = true; f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; @@ -371,8 +371,8 @@ void content_mapnode_init(bool repeat) i = CONTENT_ROUGHSTONEBRICK; f = &content_features(i); f->description = gettext("Rough Stone Brick"); - f->setAllTextures("roughstone_brick.png"); - f->setInventoryTextureCube("roughstone_brick.png", "roughstone_brick.png", "roughstone_brick.png"); + f->setAllTextures("roughstone.png^overlay_brick.png"); + f->setInventoryTextureCube("roughstone.png^overlay_brick.png", "roughstone.png^overlay_brick.png", "roughstone.png^overlay_brick.png"); f->draw_type = CDT_CUBELIKE; f->is_ground_content = true; f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; @@ -389,8 +389,8 @@ void content_mapnode_init(bool repeat) i = CONTENT_ROUGHSTONEBLOCK; f = &content_features(i); f->description = gettext("Rough Stone Block"); - f->setAllTextures("roughstone_block.png"); - f->setInventoryTextureCube("roughstone_block.png", "roughstone_block.png", "roughstone_block.png"); + f->setAllTextures("roughstone.png^overlay_block.png"); + f->setInventoryTextureCube("roughstone.png^overlay_block.png", "roughstone.png^overlay_block.png", "roughstone.png^overlay_block.png"); f->draw_type = CDT_CUBELIKE; f->is_ground_content = true; f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; @@ -825,8 +825,8 @@ void content_mapnode_init(bool repeat) i = CONTENT_TERRACOTTA_BRICK; f = &content_features(i); f->description = gettext("Terracotta Brick"); - f->setAllTextures("terracotta_brick.png"); - f->setInventoryTextureCube("terracotta_brick.png", "terracotta_brick.png", "terracotta_brick.png"); + f->setAllTextures("terracotta.png^overlay_brick.png"); + f->setInventoryTextureCube("terracotta.png^overlay_brick.png", "terracotta.png^overlay_brick.png", "terracotta.png^overlay_brick.png"); f->draw_type = CDT_CUBELIKE; f->is_ground_content = true; f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; @@ -839,8 +839,8 @@ void content_mapnode_init(bool repeat) i = CONTENT_TERRACOTTA_BLOCK; f = &content_features(i); f->description = gettext("Terracotta Block"); - f->setAllTextures("terracotta_block.png"); - f->setInventoryTextureCube("terracotta_block.png", "terracotta_block.png", "terracotta_block.png"); + f->setAllTextures("terracotta.png^overlay_block.png"); + f->setInventoryTextureCube("terracotta.png^overlay_block.png", "terracotta.png^overlay_block.png", "terracotta.png^overlay_block.png"); f->draw_type = CDT_CUBELIKE; f->is_ground_content = true; f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; @@ -853,7 +853,7 @@ void content_mapnode_init(bool repeat) i = CONTENT_TERRACOTTA_TILE; f = &content_features(i); f->description = gettext("Terracotta Tile"); - f->setAllTextures("terracotta_tile.png"); + f->setAllTextures("terracotta.png^overlay_tile.png"); f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; f->type = CMT_STONE; f->dig_time = 1.0; @@ -864,7 +864,7 @@ void content_mapnode_init(bool repeat) f->sunlight_propagates = true; f->suffocation_per_second = 0; content_nodebox_carpet(f); - f->setInventoryTextureNodeBox(i,"terracotta_tile.png", "terracotta_tile.png", "terracotta_tile.png"); + f->setInventoryTextureNodeBox(i,"terracotta.png^overlay_tile.png", "terracotta.png^overlay_tile.png", "terracotta.png^overlay_tile.png"); crafting::setTileRecipe(CONTENT_TERRACOTTA,CONTENT_TERRACOTTA_TILE); content_list_add("craftguide",i,1,0); content_list_add("creative",i,1,0); @@ -2356,7 +2356,7 @@ void content_mapnode_init(bool repeat) i = CONTENT_STONE_TILE; f = &content_features(i); f->description = gettext("Stone Tiles"); - f->setAllTextures("stone_tile.png"); + f->setAllTextures("stone.png^overlay_oddtile.png"); f->param_type = CPT_LIGHT; f->draw_type = CDT_NODEBOX; f->is_ground_content = true; @@ -2364,7 +2364,7 @@ void content_mapnode_init(bool repeat) f->sunlight_propagates = true; f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; content_nodebox_carpet(f); - f->setInventoryTextureNodeBox(i,"stone_tile.png", "stone_tile.png", "stone_tile.png"); + f->setInventoryTextureNodeBox(i,"stone.png^overlay_oddtile.png", "stone.png^overlay_oddtile.png", "stone.png^overlay_oddtile.png"); f->type = CMT_STONE; f->dig_time = 0.5; f->pressure_type = CST_CRUSHABLE; diff --git a/src/content_mapnode.h b/src/content_mapnode.h index 0171622..681b25e 100644 --- a/src/content_mapnode.h +++ b/src/content_mapnode.h @@ -128,7 +128,9 @@ MapNode mapnode_translate_to_internal(MapNode n_from, u8 version); #define CONTENT_APPLEWOOD_BARREL_SEALED 0x047 #define CONTENT_JUNGLEWOOD_BARREL_SEALED 0x048 #define CONTENT_PINE_BARREL_SEALED 0x049 -// FREE 0x04A-0x07C +#define CONTENT_CLAY_VESSEL 0x04A +#define CONTENT_CLAY_VESSEL_RAW 0x04B +// FREE 0x04C-0x07C // 0x7D-0x7F reserved values, air, ignore, etc #define CONTENT_CHAIR_CENTRE 0x080 #define CONTENT_CHAIR_ENDL 0x081 @@ -213,8 +215,7 @@ MapNode mapnode_translate_to_internal(MapNode n_from, u8 version); #define CONTENT_TREE 0x801 #define CONTENT_LEAVES 0x802 #define CONTENT_FARM_DIRT 0x803 -// MESE is deprecated, but leave it here for the moment -#define CONTENT_MESE 0x804 +// FREE 0x804 #define CONTENT_MUD 0x805 #define CONTENT_COTTON 0x806 #define CONTENT_BORDERSTONE 0x807 diff --git a/src/content_mapnode_special.cpp b/src/content_mapnode_special.cpp index a4070ff..814a289 100644 --- a/src/content_mapnode_special.cpp +++ b/src/content_mapnode_special.cpp @@ -225,7 +225,7 @@ void content_mapnode_special(bool repeat) i = CONTENT_ROOFTILE_TERRACOTTA; f = &content_features(i); f->description = gettext("Terracotta Roof Tile"); - f->setAllTextures("rooftile_terracotta.png"); + f->setAllTextures("terracotta.png^overlay_rooftile.png"); f->setAllTextureFlags(0); f->draw_type = CDT_ROOFLIKE; f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; @@ -281,7 +281,7 @@ void content_mapnode_special(bool repeat) i = CONTENT_ROOFTILE_STONE; f = &content_features(i); f->description = gettext("Stone Roof Tile"); - f->setAllTextures("rooftile_stone.png"); + f->setAllTextures("stone.png^overlay_rooftile.png"); f->setAllTextureFlags(0); f->draw_type = CDT_ROOFLIKE; f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; @@ -1681,39 +1681,40 @@ void content_mapnode_special(bool repeat) i = CONTENT_FLOWER_POT_RAW; f = &content_features(i); f->param_type = CPT_LIGHT; - f->description = gettext("Unbaked Flower Pot"); - f->setAllTextures("flower_pot_raw.png"); - f->setTexture(0,"flower_pot_raw_top.png"); - f->setTexture(1,"flower_pot_raw_bottom.png"); + f->description = gettext("Unfired Flower Pot"); + f->setAllTextures("clay.png"); + f->setTexture(0,"clay.png^flower_pot_top.png"); f->draw_type = CDT_NODEBOX; f->light_propagates = true; f->sunlight_propagates = true; + f->air_equivalent = true; f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; f->cook_result = std::string("MaterialItem2 ")+itos(CONTENT_FLOWER_POT)+" 1"; f->type = CMT_STONE; f->dig_time = 0.75; f->pressure_type = CST_CRUSHABLE; content_nodebox_flower_pot(f); - f->setInventoryTextureNodeBox(i,"flower_pot_raw_top.png","flower_pot_raw.png","flower_pot_raw.png"); + f->setInventoryTextureNodeBox(i,"clay.png^flower_pot_top.png","clay.png","clay.png"); crafting::setVRecipe(CONTENT_CRAFTITEM_CLAY,CONTENT_FLOWER_POT_RAW); content_list_add("craftguide",i,1,0); content_list_add("cooking",i,1,0); + content_list_add("creative",i,1,0); i = CONTENT_FLOWER_POT; f = &content_features(i); f->param_type = CPT_LIGHT; f->description = gettext("Flower Pot"); - f->setAllTextures("flower_pot.png"); - f->setTexture(0,"flower_pot_top.png"); - f->setTexture(1,"flower_pot_bottom.png"); + f->setAllTextures("terracotta.png"); + f->setTexture(0,"terracotta.png^flower_pot_top.png"); f->draw_type = CDT_NODEBOX; f->light_propagates = true; f->sunlight_propagates = true; + f->air_equivalent = true; f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; f->type = CMT_STONE; f->dig_time = 0.75; content_nodebox_flower_pot(f); - f->setInventoryTextureNodeBox(i,"flower_pot_top.png","flower_pot.png","flower_pot.png"); + f->setInventoryTextureNodeBox(i,"terracotta.png^flower_pot_top.png","terracotta.png","terracotta.png"); content_list_add("creative",i,1,0); // walls @@ -2298,4 +2299,49 @@ void content_mapnode_special(bool repeat) content_list_add("cooking",i,1,0); content_list_add("craftguide",i,1,0); content_list_add("creative",i,1,0); + + i = CONTENT_CLAY_VESSEL_RAW; + f = &content_features(i); + f->description = gettext("Unfired Clay Vessel"); + f->setAllTextures("clay.png"); + f->draw_type = CDT_NODEBOX; + f->param_type = CPT_LIGHT; + f->light_propagates = true; + f->sunlight_propagates = true; + f->air_equivalent = true; + f->type = CMT_DIRT; + f->dig_time = 0.1; + f->suffocation_per_second = 0; + f->pressure_type = CST_SOLID; + f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; + f->cook_result = std::string("MaterialItem2 ")+itos(CONTENT_CLAY_VESSEL)+" 1"; + content_nodebox_clay_vessel(f); + f->setInventoryTextureNodeBox(i,"clay.png", "clay.png", "clay.png"); + crafting::setURecipe(CONTENT_CRAFTITEM_CLAY,CONTENT_CLAY_VESSEL); + content_list_add("craftguide",i,1,0); + content_list_add("cooking",i,1,0); + content_list_add("creative",i,1,0); + + i = CONTENT_CLAY_VESSEL; + f = &content_features(i); + f->description = gettext("Clay Vessel"); + f->setAllTextures("terracotta.png"); + f->setAllMetaTextures("terracotta.png"); + f->draw_type = CDT_NODEBOX_META; + f->param_type = CPT_LIGHT; + f->light_propagates = true; + f->sunlight_propagates = true; + f->air_equivalent = true; + f->type = CMT_DIRT; + f->dig_time = 0.1; + f->suffocation_per_second = 0; + f->pressure_type = CST_SOLID; + f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; + content_nodebox_clay_vessel(f); + f->setInventoryTextureNodeBox(i,"terracotta.png", "terracotta.png", "terracotta.png"); + if (f->initial_metadata == NULL) + f->initial_metadata = new ClayVesselNodeMetadata(); + crafting::setURecipe(CONTENT_CRAFTITEM_CLAY,CONTENT_CLAY_VESSEL); + content_list_add("craftguide",i,1,0); + content_list_add("creative",i,1,0); } diff --git a/src/content_nodebox.cpp b/src/content_nodebox.cpp index 486d9d7..9b4ca5d 100644 --- a/src/content_nodebox.cpp +++ b/src/content_nodebox.cpp @@ -2263,5 +2263,36 @@ void content_nodebox_barrel_sealed(ContentFeatures *f) f->addNodeBox(NodeBox( -0.3125*BS,0.3125*BS,-0.3125*BS,0.3125*BS,0.375*BS,0.3125*BS )); +} + +void content_nodebox_clay_vessel(ContentFeatures *f) +{ + f->setNodeBox(NodeBox( + -0.25*BS,-0.4375*BS,-0.25*BS,0.25*BS,-0.375*BS,0.25*BS + )); + f->addNodeBox(NodeBox( + 0.25*BS,-0.4375*BS,-0.25*BS,0.3125*BS,0.25*BS,0.25*BS + )); + f->addNodeBox(NodeBox( + -0.3125*BS,-0.4375*BS,-0.25*BS,-0.25*BS,0.25*BS,0.25*BS + )); + f->addNodeBox(NodeBox( + -0.3125*BS,-0.4375*BS,-0.3125*BS,0.3125*BS,0.25*BS,-0.25*BS + )); + f->addNodeBox(NodeBox( + -0.3125*BS,-0.4375*BS,0.25*BS,0.3125*BS,0.25*BS,0.3125*BS + )); + f->addNodeBox(NodeBox( + -0.3125*BS,-0.5*BS,-0.3125*BS,-0.0625*BS,-0.4375*BS,-0.0625*BS + )); + f->addNodeBox(NodeBox( + -0.3125*BS,-0.5*BS,0.0625*BS,-0.0625*BS,-0.4375*BS,0.3125*BS + )); + f->addNodeBox(NodeBox( + 0.0625*BS,-0.5*BS,-0.3125*BS,0.3125*BS,-0.4375*BS,-0.0625*BS + )); + f->addNodeBox(NodeBox( + 0.0625*BS,-0.5*BS,0.0625*BS,0.3125*BS,-0.4375*BS,0.3125*BS + )); } diff --git a/src/content_nodebox.h b/src/content_nodebox.h index f860069..66f694c 100644 --- a/src/content_nodebox.h +++ b/src/content_nodebox.h @@ -104,5 +104,6 @@ void content_nodebox_glass_pane(ContentFeatures *f); void content_nodebox_snowman(ContentFeatures *f); void content_nodebox_barrel(ContentFeatures *f); void content_nodebox_barrel_sealed(ContentFeatures *f); +void content_nodebox_clay_vessel(ContentFeatures *f); #endif diff --git a/src/content_nodemeta.h b/src/content_nodemeta.h index 07bff7c..0159978 100644 --- a/src/content_nodemeta.h +++ b/src/content_nodemeta.h @@ -184,6 +184,27 @@ private: uint16_t m_expanded_slot_id; }; +class ClayVesselNodeMetadata : public NodeMetadata +{ +public: + ClayVesselNodeMetadata(); + ~ClayVesselNodeMetadata(); + + virtual u16 typeId() const; + static NodeMetadata* create(std::istream &is); + virtual NodeMetadata* clone(); + virtual void serializeBody(std::ostream &os); + virtual Inventory* getInventory() {return m_inventory;} + virtual bool nodeRemovalDisabled(); + virtual std::string getDrawSpecString(Player *player); + virtual bool receiveFields(std::string formname, std::map fields, Player *player); + virtual std::vector getNodeBoxes(MapNode &n); + +private: + Inventory *m_inventory; + bool is_sealed; +}; + class DeprecatedChestNodeMetadata : public NodeMetadata { public: diff --git a/src/environment.cpp b/src/environment.cpp index 12da678..c4b0776 100644 --- a/src/environment.cpp +++ b/src/environment.cpp @@ -2160,20 +2160,6 @@ void ServerEnvironment::step(float dtime) break; } - // MESE is dead - case CONTENT_MESE: - { - if (p.Y > 0) { - n.setContent(CONTENT_MITHRIL_BLOCK); - m_map->addNodeWithEvent(p, n); - }else{ - n.setContent(CONTENT_STONE); - n.param1 = MINERAL_MITHRIL; - m_map->addNodeWithEvent(p, n); - } - break; - } - // cobble becomes mossy underwater case CONTENT_COBBLE: { diff --git a/src/guiFormSpecMenu.cpp b/src/guiFormSpecMenu.cpp index fb705c0..b086b63 100644 --- a/src/guiFormSpecMenu.cpp +++ b/src/guiFormSpecMenu.cpp @@ -545,7 +545,12 @@ void GUIFormSpecMenu::drawList(const ListDrawSpec &s, int phase) driver->draw2DRectangle(GUI_INV_BG, brect, &AbsoluteClippingRect); - if (m_selected_item != NULL && m_selected_item->listname == s.listname && m_selected_item->i == i) { + if ( + m_selected_item != NULL + && s.inventoryloc.type == m_selected_item->inventoryloc.type + && m_selected_item->i == i + && m_selected_item->listname == s.listname + ) { driver->draw2DRectangleOutline(brect, GUI_INV_HIGHLIGHT); }else{ diff --git a/src/gui_colours.h b/src/gui_colours.h index c719178..15232a6 100644 --- a/src/gui_colours.h +++ b/src/gui_colours.h @@ -12,7 +12,7 @@ #define GUI_BG_TT video::SColor(200,70,130,30) #define GUI_TT_TEXT video::SColor(255,255,255,255) -#define GUI_INV_BORDER video::SColor(128,60,60,60) +#define GUI_INV_BORDER video::SColor(128,150,150,150) #define GUI_INV_HIGHLIGHT video::SColor(240,170,30,30) #define GUI_INV_BG video::SColor(128,60,60,60) diff --git a/src/inventory.cpp b/src/inventory.cpp index 2eea383..be50a14 100644 --- a/src/inventory.cpp +++ b/src/inventory.cpp @@ -886,8 +886,6 @@ void InventoryList::deSerialize(std::istream &is) m_items[item_i] = NULL; continue; } - if (c == CONTENT_MESE) - c = CONTENT_CRAFTITEM_MITHRIL_UNBOUND; u16 wc = readU16(is); u16 d = readU16(is); if (m_items[item_i] != NULL) { diff --git a/src/nodemeta/content_nodemeta_blocks.cpp b/src/nodemeta/content_nodemeta_blocks.cpp index 49c3fbb..64115ef 100644 --- a/src/nodemeta/content_nodemeta_blocks.cpp +++ b/src/nodemeta/content_nodemeta_blocks.cpp @@ -29,104 +29,6 @@ #include "content_mapnode.h" #include "environment.h" -/* - BookShelfNodeMetadata -*/ - -// Prototype -BookShelfNodeMetadata proto_BookShelfNodeMetadata; - -BookShelfNodeMetadata::BookShelfNodeMetadata() -{ - NodeMetadata::registerType(typeId(), create); - - m_inventory = new Inventory(); - m_inventory->addList("0", 14); - InventoryList *l = m_inventory->getList("0"); - l->setStackable(false); - l->addAllowed(CONTENT_BOOK); - l->addAllowed(CONTENT_COOK_BOOK); - l->addAllowed(CONTENT_DECRAFT_BOOK); - l->addAllowed(CONTENT_DIARY_BOOK); - l->addAllowed(CONTENT_CRAFT_BOOK); - l->addAllowed(CONTENT_RCRAFT_BOOK); -} -BookShelfNodeMetadata::~BookShelfNodeMetadata() -{ - delete m_inventory; -} -u16 BookShelfNodeMetadata::typeId() const -{ - return CONTENT_BOOKSHELF; -} -NodeMetadata* BookShelfNodeMetadata::create(std::istream &is) -{ - BookShelfNodeMetadata *d = new BookShelfNodeMetadata(); - d->m_inventory->deSerialize(is); - return d; -} -NodeMetadata* BookShelfNodeMetadata::clone() -{ - BookShelfNodeMetadata *d = new BookShelfNodeMetadata(); - *d->m_inventory = *m_inventory; - return d; -} -void BookShelfNodeMetadata::serializeBody(std::ostream &os) -{ - m_inventory->serialize(os); -} -bool BookShelfNodeMetadata::nodeRemovalDisabled() -{ - /* - Disable removal if chest contains something - */ - InventoryList *list = m_inventory->getList("0"); - if(list == NULL) - return false; - if(list->getUsedSlots() == 0) - return false; - return true; -} -std::string BookShelfNodeMetadata::getDrawSpecString(Player *player) -{ - return - "size[8,7]" - "list[current_name;0;0.5,0;7,2;]" - "list[current_player;main;0,3;8,4;]"; -} -std::vector BookShelfNodeMetadata::getNodeBoxes(MapNode &n) -{ - std::vector boxes; - boxes.clear(); - - InventoryList *list = m_inventory->getList("0"); - if(list == NULL) - return boxes; - if(list->getUsedSlots() == 0) - return boxes; - - f32 x = 0; - f32 y = 0; - f32 h = 0; - - for (s16 i=0; i<14; i++) { - if (list->getItem(i) == NULL) - continue; - x = (i%7)*0.125; - y = (i/7)*-0.5; - h = ((i%7)%2)*0.0625; - - boxes.push_back(NodeBox( - (-0.4375+x)*BS,(0.0625+y)*BS,-0.4375*BS,(-0.3125+x)*BS,(0.375+y+h)*BS,-0.0625*BS - )); - boxes.push_back(NodeBox( - (0.3125-x)*BS,(0.0625+y)*BS,0.0625*BS,(0.4375-x)*BS,(0.375+y+h)*BS,0.4375*BS - )); - } - - return transformNodeBox(n,boxes); -} - /* ClockNodeMetadata */ diff --git a/src/nodemeta/content_nodemeta_storage.cpp b/src/nodemeta/content_nodemeta_storage.cpp index 5287d1e..615697c 100644 --- a/src/nodemeta/content_nodemeta_storage.cpp +++ b/src/nodemeta/content_nodemeta_storage.cpp @@ -32,6 +32,104 @@ #include "player.h" +/* + BookShelfNodeMetadata +*/ + +// Prototype +BookShelfNodeMetadata proto_BookShelfNodeMetadata; + +BookShelfNodeMetadata::BookShelfNodeMetadata() +{ + NodeMetadata::registerType(typeId(), create); + + m_inventory = new Inventory(); + m_inventory->addList("0", 14); + InventoryList *l = m_inventory->getList("0"); + l->setStackable(false); + l->addAllowed(CONTENT_BOOK); + l->addAllowed(CONTENT_COOK_BOOK); + l->addAllowed(CONTENT_DECRAFT_BOOK); + l->addAllowed(CONTENT_DIARY_BOOK); + l->addAllowed(CONTENT_CRAFT_BOOK); + l->addAllowed(CONTENT_RCRAFT_BOOK); +} +BookShelfNodeMetadata::~BookShelfNodeMetadata() +{ + delete m_inventory; +} +u16 BookShelfNodeMetadata::typeId() const +{ + return CONTENT_BOOKSHELF; +} +NodeMetadata* BookShelfNodeMetadata::create(std::istream &is) +{ + BookShelfNodeMetadata *d = new BookShelfNodeMetadata(); + d->m_inventory->deSerialize(is); + return d; +} +NodeMetadata* BookShelfNodeMetadata::clone() +{ + BookShelfNodeMetadata *d = new BookShelfNodeMetadata(); + *d->m_inventory = *m_inventory; + return d; +} +void BookShelfNodeMetadata::serializeBody(std::ostream &os) +{ + m_inventory->serialize(os); +} +bool BookShelfNodeMetadata::nodeRemovalDisabled() +{ + /* + Disable removal if chest contains something + */ + InventoryList *list = m_inventory->getList("0"); + if(list == NULL) + return false; + if(list->getUsedSlots() == 0) + return false; + return true; +} +std::string BookShelfNodeMetadata::getDrawSpecString(Player *player) +{ + return + "size[8,7]" + "list[current_name;0;0.5,0;7,2;]" + "list[current_player;main;0,3;8,4;]"; +} +std::vector BookShelfNodeMetadata::getNodeBoxes(MapNode &n) +{ + std::vector boxes; + boxes.clear(); + + InventoryList *list = m_inventory->getList("0"); + if(list == NULL) + return boxes; + if(list->getUsedSlots() == 0) + return boxes; + + f32 x = 0; + f32 y = 0; + f32 h = 0; + + for (s16 i=0; i<14; i++) { + if (list->getItem(i) == NULL) + continue; + x = (i%7)*0.125; + y = (i/7)*-0.5; + h = ((i%7)%2)*0.0625; + + boxes.push_back(NodeBox( + (-0.4375+x)*BS,(0.0625+y)*BS,-0.4375*BS,(-0.3125+x)*BS,(0.375+y+h)*BS,-0.0625*BS + )); + boxes.push_back(NodeBox( + (0.3125-x)*BS,(0.0625+y)*BS,0.0625*BS,(0.4375-x)*BS,(0.375+y+h)*BS,0.4375*BS + )); + } + + return transformNodeBox(n,boxes); +} + /* ChestNodeMetadata */ @@ -475,3 +573,151 @@ bool SealedBarrelNodeMetadata::import(NodeMetadata *meta) m_water_level = l->m_water_level; return true; } + +/* + ClayVesselNodeMetadata +*/ + +// Prototype +ClayVesselNodeMetadata proto_ClayVesselNodeMetadata; + +ClayVesselNodeMetadata::ClayVesselNodeMetadata() +{ + NodeMetadata::registerType(typeId(), create); + + m_inventory = new Inventory(); + m_inventory->addList("main", 9); + is_sealed = false; + InventoryList *l = m_inventory->getList("main"); + l->addAllowed(CONTENT_CRAFTITEM_APPLE); + l->addAllowed(CONTENT_CRAFTITEM_APPLE_BLOSSOM); + l->addAllowed(CONTENT_CRAFTITEM_APPLE_IRON); + l->addAllowed(CONTENT_CRAFTITEM_APPLE_JUICE); + l->addAllowed(CONTENT_CRAFTITEM_APPLE_PIE_SLICE); + l->addAllowed(CONTENT_CRAFTITEM_BEETROOT); + l->addAllowed(CONTENT_CRAFTITEM_BLUEBERRY); + l->addAllowed(CONTENT_CRAFTITEM_BREAD); + l->addAllowed(CONTENT_CRAFTITEM_CACTUS_FRUIT); + l->addAllowed(CONTENT_CRAFTITEM_CARROT); + l->addAllowed(CONTENT_CRAFTITEM_CARROT_CAKE); + l->addAllowed(CONTENT_CRAFTITEM_CARROT_CAKE_RAW); + l->addAllowed(CONTENT_CRAFTITEM_COFFEE); + l->addAllowed(CONTENT_CRAFTITEM_COFFEE_BEANS); + l->addAllowed(CONTENT_CRAFTITEM_COOKED_FISH); + l->addAllowed(CONTENT_CRAFTITEM_COOKED_MEAT); + l->addAllowed(CONTENT_CRAFTITEM_COOKED_RAT); + l->addAllowed(CONTENT_CRAFTITEM_DOUGH); + l->addAllowed(CONTENT_CRAFTITEM_FISH); + l->addAllowed(CONTENT_CRAFTITEM_FLOUR); + l->addAllowed(CONTENT_CRAFTITEM_GLASS_BOTTLE_WATER); + l->addAllowed(CONTENT_CRAFTITEM_GRAPE); + l->addAllowed(CONTENT_CRAFTITEM_GRAPE_JUICE); + l->addAllowed(CONTENT_CRAFTITEM_IRON_BOTTLE_WATER); + l->addAllowed(CONTENT_CRAFTITEM_MEAT); + l->addAllowed(CONTENT_CRAFTITEM_MELONSLICE); + l->addAllowed(CONTENT_CRAFTITEM_MUSH); + l->addAllowed(CONTENT_CRAFTITEM_POTATO); + l->addAllowed(CONTENT_CRAFTITEM_PUMPKINSLICE); + l->addAllowed(CONTENT_CRAFTITEM_PUMPKIN_PIE_SLICE); + l->addAllowed(CONTENT_CRAFTITEM_RASPBERRY); + l->addAllowed(CONTENT_CRAFTITEM_ROASTPOTATO); + l->addAllowed(CONTENT_CRAFTITEM_TEA); + l->addAllowed(CONTENT_CRAFTITEM_TEA_LEAVES); + l->addAllowed(CONTENT_CRAFTITEM_WHEAT); +} +ClayVesselNodeMetadata::~ClayVesselNodeMetadata() +{ + delete m_inventory; +} +u16 ClayVesselNodeMetadata::typeId() const +{ + return CONTENT_CLAY_VESSEL; +} +NodeMetadata* ClayVesselNodeMetadata::create(std::istream &is) +{ + std::string s; + ClayVesselNodeMetadata *d = new ClayVesselNodeMetadata(); + d->m_inventory->deSerialize(is); + + s = deSerializeString(is); + d->is_sealed = !!mystoi(s); + + return d; +} +NodeMetadata* ClayVesselNodeMetadata::clone() +{ + ClayVesselNodeMetadata *d = new ClayVesselNodeMetadata(); + *d->m_inventory = *m_inventory; + d->is_sealed = is_sealed; + return d; +} +void ClayVesselNodeMetadata::serializeBody(std::ostream &os) +{ + m_inventory->serialize(os); + os<getList("main"); + if (list == NULL) + return false; + if (list->getUsedSlots() == 0) + return false; + return true; +} +std::string ClayVesselNodeMetadata::getDrawSpecString(Player *player) +{ + std::string spec("size[8,8]"); + + if (is_sealed) { + spec += "button[0.5,2;3,1;unseal;"; + spec += gettext("Unseal Vessel"); + spec += "]"; + }else{ + spec += "button[0.5,2;3,1;seal;"; + spec += gettext("Seal Vessel"); + spec += "]"; + + spec += "list[current_name;main;3.5,0.5;3,3;]"; + } + + spec += "list[current_player;main;0,3.8;8,1;0,8;]"; + spec += "list[current_player;main;0,5;8,3;8,-1;]"; + + return spec; +} + +bool ClayVesselNodeMetadata::receiveFields(std::string formname, std::map fields, Player *player) +{ + if (fields["seal"] != "") { + if (is_sealed) + return false; + is_sealed = true; + return true; + }else if (fields["unseal"] != "") { + if (!is_sealed) + return false; + is_sealed = false; + return true; + } + return false; +} + +std::vector ClayVesselNodeMetadata::getNodeBoxes(MapNode &n) +{ + std::vector boxes; + + if (is_sealed) { + boxes.push_back(NodeBox( + -0.34375*BS,0.1875*BS,-0.34375*BS,0.34375*BS,0.3125*BS,0.34375*BS + )); + boxes.push_back(NodeBox( + -0.125*BS,0.3125*BS,-0.125*BS,0.125*BS,0.375*BS,0.125*BS + )); + } + + return boxes; +}