From 1e6566d5d26bffba56e53ae990119d6bf2b3eab4 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 27 Jul 2017 06:14:42 +0200 Subject: [PATCH] Add white banner --- mods/ITEMS/mcl_banners/README.txt | 7 + mods/ITEMS/mcl_banners/depends.txt | 3 + mods/ITEMS/mcl_banners/description.txt | 1 + mods/ITEMS/mcl_banners/init.lua | 124 ++++++++++++++++++ mods/ITEMS/mcl_banners/mod.conf | 1 + mods/ITEMS/mcl_banners/models/amc_banner.b3d | Bin 0 -> 3815 bytes .../textures/mcl_banners_banner_base.png | Bin 0 -> 814 bytes .../mcl_banners/textures/mcl_banners_base.png | Bin 0 -> 442 bytes .../textures/mcl_banners_item_base.png | Bin 0 -> 163 bytes .../textures/mcl_banners_item_overlay.png | Bin 0 -> 164 bytes tools/Texture_Conversion_Table.csv | 2 + 11 files changed, 138 insertions(+) create mode 100644 mods/ITEMS/mcl_banners/README.txt create mode 100644 mods/ITEMS/mcl_banners/depends.txt create mode 100644 mods/ITEMS/mcl_banners/description.txt create mode 100644 mods/ITEMS/mcl_banners/init.lua create mode 100644 mods/ITEMS/mcl_banners/mod.conf create mode 100644 mods/ITEMS/mcl_banners/models/amc_banner.b3d create mode 100644 mods/ITEMS/mcl_banners/textures/mcl_banners_banner_base.png create mode 100644 mods/ITEMS/mcl_banners/textures/mcl_banners_base.png create mode 100644 mods/ITEMS/mcl_banners/textures/mcl_banners_item_base.png create mode 100644 mods/ITEMS/mcl_banners/textures/mcl_banners_item_overlay.png diff --git a/mods/ITEMS/mcl_banners/README.txt b/mods/ITEMS/mcl_banners/README.txt new file mode 100644 index 000000000..330f46d62 --- /dev/null +++ b/mods/ITEMS/mcl_banners/README.txt @@ -0,0 +1,7 @@ +License of code: WTFPL + +License of textures: See README.me in top directory of MineClone 2. + +License of models: GPLv3 (https://www.gnu.org/licenses/gpl-3.0.html) +Models author: 22i. +Source: https://github.com/22i/amc diff --git a/mods/ITEMS/mcl_banners/depends.txt b/mods/ITEMS/mcl_banners/depends.txt new file mode 100644 index 000000000..4fe444389 --- /dev/null +++ b/mods/ITEMS/mcl_banners/depends.txt @@ -0,0 +1,3 @@ +mcl_sounds? +mcl_core? +mcl_wool? diff --git a/mods/ITEMS/mcl_banners/description.txt b/mods/ITEMS/mcl_banners/description.txt new file mode 100644 index 000000000..fd303145a --- /dev/null +++ b/mods/ITEMS/mcl_banners/description.txt @@ -0,0 +1 @@ +Adds decorative banners. diff --git a/mods/ITEMS/mcl_banners/init.lua b/mods/ITEMS/mcl_banners/init.lua new file mode 100644 index 000000000..827085e3a --- /dev/null +++ b/mods/ITEMS/mcl_banners/init.lua @@ -0,0 +1,124 @@ +local node_sounds +if minetest.get_modpath("mcl_sounds") then + node_sounds = mcl_sounds.node_sound_wood_defaults() +end + +-- Helper function +local function round(num, idp) + local mult = 10^(idp or 0) + return math.floor(num * mult + 0.5) / mult +end + +-- Banner node +minetest.register_node("mcl_banners:standing_banner_white", { + description = "White Banner", + _doc_items_longdesc = "Banners are tall decorative blocks which can be placed on the floor.", + walkable = false, + is_ground_content = false, + paramtype = "light", + sunlight_propagates = true, + drawtype = "airlike", + inventory_image = "mcl_banners_item_base.png^mcl_banners_item_overlay.png", + wield_image = "mcl_banners_item_base.png^mcl_banners_item_overlay.png", + selection_box = {type = "fixed", fixed= {-0.2, -0.5, -0.2, 0.2, 0.5, 0.2} }, + tiles = {"mcl_banners_banner_base.png"}, + groups = { deco_block = 1, attached_node = 1 }, + stack_max = 16, + sounds = node_sounds, + + on_place = function(itemstack, placer, pointed_thing) + local above = pointed_thing.above + local under = pointed_thing.under + + -- Use pointed node's on_rightclick function first, if present + local node_under = minetest.get_node(under) + if placer and not placer:get_player_control().sneak then + if minetest.registered_nodes[node_under.name] and minetest.registered_nodes[node_under.name].on_rightclick then + return minetest.registered_nodes[node_under.name].on_rightclick(under, node_under, placer, itemstack) or itemstack + end + end + + -- Place the node! + local _, success = minetest.item_place_node(itemstack, placer, pointed_thing) + if not success then + return itemstack + end + + local place_pos + if minetest.registered_nodes[node_under.name].buildable_to then + place_pos = under + else + place_pos = above + end + place_pos.y = place_pos.y - 0.5 + + local banner = minetest.add_entity(place_pos, "mcl_banners:banner") + + -- Determine the rotation based on player's yaw + local yaw = placer:get_look_horizontal() + -- Select one of 16 possible rotations (0-15) + local rotation_level = round((yaw / (math.pi*2)) * 16) + local final_yaw = (rotation_level * (math.pi/8)) + math.pi + banner:set_yaw(final_yaw) + + if not minetest.settings:get_bool("creative_mode") then + itemstack:take_item() + end + minetest.sound_play({name="default_place_node_hard", gain=1.0}, {pos = place_pos}) + + return itemstack + end, + on_destruct = function(pos) + local objects = minetest.get_objects_inside_radius(pos, 0.5) + for _, v in ipairs(objects) do + if v:get_entity_name() == "mcl_banners:banner" then + v:remove() + end + end + end, + _mcl_hardness = 1, + _mcl_blast_resistance = 5, +}) + +minetest.register_entity("mcl_banners:banner", { + physical = false, + collide_with_objects = false, + visual = "mesh", + mesh = "amc_banner.b3d", + visual_size = { x=2.5, y=2.5 }, + textures = { "mcl_banners_banner_base.png" }, + collisionbox = { 0, 0, 0, 0, 0, 0 }, + + _base_color = nil, + + get_staticdata = function(self) + local out = { _base_color = self._base_color } + return minetest.serialize(out) + end, + on_activate = function(self, staticdata) + if staticdata and staticdata ~= "" then + local inp = minetest.deserialize(staticdata) + self._base_color = inp._base_color + end + self.object:set_armor_groups({immortal=1}) + end, +}) + +if minetest.get_modpath("mcl_core") and minetest.get_modpath("mcl_wool") then + minetest.register_craft({ + output = "mcl_banners:standing_banner_white", + recipe = { + { "mcl_wool:white", "mcl_wool:white", "mcl_wool:white" }, + { "mcl_wool:white", "mcl_wool:white", "mcl_wool:white" }, + { "", "mcl_core:stick", "" }, + } + }) + +end + +minetest.register_craft({ + type = "fuel", + recipe = "mcl_banners:standing_banner_white", + burntime = 15, +}) + diff --git a/mods/ITEMS/mcl_banners/mod.conf b/mods/ITEMS/mcl_banners/mod.conf new file mode 100644 index 000000000..211266581 --- /dev/null +++ b/mods/ITEMS/mcl_banners/mod.conf @@ -0,0 +1 @@ +name = mcl_banners diff --git a/mods/ITEMS/mcl_banners/models/amc_banner.b3d b/mods/ITEMS/mcl_banners/models/amc_banner.b3d new file mode 100644 index 0000000000000000000000000000000000000000..f726fc1adb89accc731eee60431c5b81803b41ab GIT binary patch literal 3815 zcmai%%W_*q6h#*S5+KG27)S^ZUIEO@2*M*gWC_P64wxiZP6#A~DvD4{m_UUo`T;(H zIU|Z6pp*ea`x7WWflm;%&qL~aE#0dsmCx~3?|piozPG#A)=sbgy9jpxYulFxD@6R` zt)ISM>2zKPhP~?7f1%HKJRV=TxW4h*BAmVT&CQig=d=OErw_ya-tKO9>%WyZ{r@6_ zPd5ge-!3}ImF=Cu!h#d4lmqs|;ppnQt<_)0zuaElTk7Q(h9AHw{Wbi=csxpMd2eZ? ziWC3&?}dJW>vw^RV`zB6Z#>TLxb%zh!N1%K{$7D+4I}t-HSt2OT& z@)!Q3eh+@H=*Rq0KXB)7sjrQ{wLju-@YnPk>YL-gdautseOnvqZ$tf4Jp51pM(&^S z&+$k8PVuJtTjoD!eX2I&A04@Iun%bcXaBT*yKu(VzxWG0*MAo}CEkzm_6+&+;dt;T zZXP)9{IhY5t?1|Y;1_QE<{ubtn4VL(y_$HzFD&$h8-FVv^Oyci{=%QceTtiYE8fN*c+KB_T|e>g zS9nE#F5beQ{%E|-O@FKWu?}vH*sGVP|M~?41 zU!{J$JEr>k`R&=a{a5uB=bP|na{ejLH&(l^f8oa8ins9>{+PD=r~TXOE6z`;AN&7Q zzjl79;4S>E{VDX*-;vkWqfY~XL`t)=h5&}N}9YM?iz+O^+ z2M+`9KyhiMR=hzV<%PM}+YY93NV!VwIzn9M%PlIHu)fH((M~f^0DOxI7UC980HkMb zfxNK&cHY4$a?>&{4SGV)z9YWH_Oyc*S0J2pXjC8oMI*p1{Wt&wjv*ZY1d-DsJ=qFm zM1TM~%JEuk$zEy?QwED{v@SrQ>Z_@M3K-f3ci@a%)Xmf;C#pq_VK2(`709VAI{>(_ z7q#{21K>Sm2E2#+6Py;}0jE_e(t(dip8ySVI1vN%q}Av}I$l$js)sm8t{Umkq&b@p zKmy1DFv2siXH2M7FKvE{0adH~7O47~cF@W47V9whuDr#pg?&tqJ6IwI$OQldh{3gj zQZ=nE=u&lHU@KS;Fjru12Z$N06Tnz@AO_}K0mU2w2xSC7|4*>pD!3nFa)IUoMzI~> zA?6WauA?$y2Dof}1z5|V;hr*ZB7Fe7${;qHN&-Ot2~Y)N2B`vy_Z}J@?mc+^;#_vn zPGtZ!YAyptkE$!^TDr&id5^HybQXV$xu(8;PTRL%-+vmD(q_yvJ|=^I+FJ!SF|cW~ zDW&J%yR~*()-vQ$&e_Cx)tV=EhpiSnn=E#5v3a%bunEwC2w-C3;=Jau-KkYB&d#e= s8QVNwcf`fYnSosJ9|~|tkAhJE0Kx9sYvgKaiU0rr07*qoM6N<$g5Ird`~Uy| literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_banners/textures/mcl_banners_base.png b/mods/ITEMS/mcl_banners/textures/mcl_banners_base.png new file mode 100644 index 0000000000000000000000000000000000000000..4a912ade6990116e5cd239e72ca0fa46cf0e3ef4 GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4rT@hhPm4t-!L#R*aY~5xH2#>{Qv(y)LEk? z)4|D5GCR?ssxYv>J)Cd0S9JmM7oU zcs&LN29c5=zhH*{3>e^nJ|8Co1EZv;i(^Oy^uM0#ZHx6 zQ?&ZKNW>4v+iU0UG4ef_v@@rC@y_eq+z|(|w#KdA-1xO>b6`62?YDW$&#^Jtx@R(c zVQApw=6J{al)+NbX2EQR-M?k0us6s~e9G{W(UI{k^MRiZE=C7_IWfdKm^YkaxXgNr zaYfX9Mz{TZ7NP?0tUF2?ln(tC@l*sv`gZ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_banners/textures/mcl_banners_item_base.png b/mods/ITEMS/mcl_banners/textures/mcl_banners_item_base.png new file mode 100644 index 0000000000000000000000000000000000000000..47f4348996dda60a0fea8c083846f150ab296ad6 GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFL*h+%@f*HUdZyEbU1_p)* zPZ!6K3dZCG94eNX;uX@N?9pOBW?X5DIw+VpH=y)LbBw;Sf|8^2#QB;62X~qj1TEUj zCNOb<;{DSa^S9M$@ER~HMOE#(ab2Rr<3fOJ4x`JKFD6dRPZ=1_7b$#+)n=#zS?1~L K=d#Wzp$P!mS1;rM literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_banners/textures/mcl_banners_item_overlay.png b/mods/ITEMS/mcl_banners/textures/mcl_banners_item_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..9ed2c05d9833de7864ccb5ecd892541a34b084b4 GIT binary patch literal 164 zcmV;V09*fwP)bGZ2C z9t?K%