From 0808b5419282a530bfc5a62ef0718a9f4f0e1189 Mon Sep 17 00:00:00 2001 From: Nils Dagsson Moskopp Date: Mon, 18 Apr 2022 19:19:15 +0200 Subject: [PATCH] Render mcl_farming plant stems 1/16 node lower This patch shifts mcl_farming nodes that represent a stem 1/16 nodes downwards. It also replaces the plantlike drawtype of mcl_farming nodes that represent an unconnected stem (x) with a nodebox drawtype that looks like a plus (+), as Minetest has no option to rotate nodeboxes. The goal is to remove the gap between plants and farming soil with a node height of 15/16. This patch affects melon stem and pumpkin stem nodes. --- mods/ITEMS/mcl_farming/melon.lua | 8 ++-- mods/ITEMS/mcl_farming/pumpkin.lua | 8 ++-- mods/ITEMS/mcl_farming/shared_functions.lua | 49 ++++++++++++++++----- 3 files changed, 49 insertions(+), 16 deletions(-) diff --git a/mods/ITEMS/mcl_farming/melon.lua b/mods/ITEMS/mcl_farming/melon.lua index 38b4c713..d35b0b62 100644 --- a/mods/ITEMS/mcl_farming/melon.lua +++ b/mods/ITEMS/mcl_farming/melon.lua @@ -91,16 +91,18 @@ for s=1,7 do _doc_items_longdesc = longdesc, paramtype = "light", walkable = false, - drawtype = "plantlike", + drawtype = "nodebox", + node_box = mcl_farming:get_plantlike_plus_nodebox(), sunlight_propagates = true, drop = stem_drop, - tiles = {texture}, + tiles = { mcl_farming:align_plantlike_nodebox_texture(texture) }, + use_texture_alpha = "clip", wield_image = texture, inventory_image = texture, selection_box = { type = "fixed", fixed = { - {-0.15, -0.5, -0.15, 0.15, -0.5+h, 0.15} + {-0.15, -9/16, -0.15, 0.15, -9/16+h, 0.15} }, }, groups = {dig_immediate=3, not_in_creative_inventory=1, plant=1,attached_node=1, dig_by_water=1,destroy_by_lava_flow=1, plant_melon_stem=s}, diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index e7b1a72b..777a9c75 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -63,16 +63,18 @@ for s=1,7 do _doc_items_longdesc = longdesc, paramtype = "light", walkable = false, - drawtype = "plantlike", + drawtype = "nodebox", + node_box = mcl_farming:get_plantlike_plus_nodebox(), sunlight_propagates = true, drop = stem_drop, - tiles = {texture}, + tiles = { mcl_farming:align_plantlike_nodebox_texture(texture) }, + use_texture_alpha = "clip", inventory_image = texture, wield_image = texture, selection_box = { type = "fixed", fixed = { - {-0.15, -0.5, -0.15, 0.15, -0.5+h, 0.15} + {-0.15, -9/16, -0.15, 0.15, -9/16+h, 0.15} }, }, groups = {dig_immediate=3, not_in_creative_inventory=1, plant=1,attached_node=1, dig_by_water=1,destroy_by_lava_flow=1,}, diff --git a/mods/ITEMS/mcl_farming/shared_functions.lua b/mods/ITEMS/mcl_farming/shared_functions.lua index 8d76fc23..557ea679 100644 --- a/mods/ITEMS/mcl_farming/shared_functions.lua +++ b/mods/ITEMS/mcl_farming/shared_functions.lua @@ -265,7 +265,7 @@ function mcl_farming:add_gourd(full_unconnected_stem, connected_stem_basename, s stem_def.selection_box = { type = "fixed", fixed = { - {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15} + {-0.15, -9/16, -0.15, 0.15, 7/16, 0.15} }, } end @@ -273,7 +273,20 @@ function mcl_farming:add_gourd(full_unconnected_stem, connected_stem_basename, s stem_def.paramtype = "light" end if not stem_def.drawtype then - stem_def.drawtype = "plantlike" + stem_def.drawtype = "nodebox" + end + if not stem_def.node_box then + stem_def.node_box = mcl_farming:get_plantlike_plus_nodebox() + end + if stem_def.tiles then + for i=1,#stem_def.tiles do + stem_def.tiles[i] = mcl_farming:align_plantlike_nodebox_texture( + stem_def.tiles[i] + ) + end + end + if not stem_def.use_texture_alpha then + stem_def.use_texture_alpha = "clip" end if stem_def.walkable == nil then stem_def.walkable = false @@ -300,6 +313,9 @@ function mcl_farming:add_gourd(full_unconnected_stem, connected_stem_basename, s minetest.register_node(stem_itemstring, stem_def) -- Register connected stems + local connected_stem_texture = mcl_farming:align_plantlike_nodebox_texture( + connected_stem_texture + ) local connected_stem_tiles = { { "blank.png", --top "blank.png", -- bottom @@ -331,16 +347,16 @@ function mcl_farming:add_gourd(full_unconnected_stem, connected_stem_basename, s } } local connected_stem_nodebox = { - {-0.5, -0.5, 0, 0.5, 0.5, 0}, - {-0.5, -0.5, 0, 0.5, 0.5, 0}, - {0, -0.5, -0.5, 0, 0.5, 0.5}, - {0, -0.5, -0.5, 0, 0.5, 0.5}, + {-0.5, -9/16, 0, 0.5, 7/16, 0}, + {-0.5, -9/16, 0, 0.5, 7/16, 0}, + {0, -9/16, -0.5, 0, 7/16, 0.5}, + {0, -9/16, -0.5, 0, 7/16, 0.5}, } local connected_stem_selectionbox = { - {-0.1, -0.5, -0.1, 0.5, 0.2, 0.1}, - {-0.5, -0.5, -0.1, 0.1, 0.2, 0.1}, - {-0.1, -0.5, -0.1, 0.1, 0.2, 0.5}, - {-0.1, -0.5, -0.5, 0.1, 0.2, 0.1}, + {-0.1, -9/16, -0.1, 0.5, 0.2 - 1/16, 0.1}, + {-0.5, -9/16, -0.1, 0.1, 0.2 - 1/16, 0.1}, + {-0.1, -9/16, -0.1, 0.1, 0.2 - 1/16, 0.5}, + {-0.1, -9/16, -0.5, 0.1, 0.2 - 1/16, 0.1}, } for i=1, 4 do @@ -469,6 +485,19 @@ minetest.register_lbm({ end, }) +-- This function returns a nodebox that imitates a plantlike plus (+) +-- drawtype, but is shifted 1/16 lower, into the empty space above +-- farming soil. The regular plantlike drawtype can not do this. +function mcl_farming:get_plantlike_plus_nodebox() + return { + type = "fixed", + fixed = { + { 0, -9/16, -0.15, 0, 7/16, 0.15 }, + { -0.15, -9/16, 0, 0.15, 7/16, 0 } + } + } +end + -- This function returns a nodebox that imitates a plantlike grid (#) -- drawtype, but is shifted 1/16 lower, into the empty space above -- farming soil. The regular plantlike drawtype can not do this.