added necessary files

This commit is contained in:
Sokomine 2021-08-14 01:16:26 +02:00
parent afd7877c87
commit 88a510d036
5 changed files with 147 additions and 0 deletions

View File

@ -1,2 +1,33 @@
# panes_embedded
Mod for MineTest. Want to place xpanes, but there's already an arc? Now you can.
No textures included!
xpanes as such are nice and can be used for many purposes.
But have you ever used arcs, stairs, slabs or similar things and wondered how
to get your glass pane into the place under the arc? You usually can't.
With this mod you can. Its embedded glass pane sits *visually* inside another
block (i.e. your arc), even *physically* seems to be at that place (you can
run against it) - but is *stored* in the node in front of the glass pane
(where you can't place anything else now - but what would you want to place
in front of the window anyway?)
There are some situations where xpanes may have the right texture for your
purpose - but you don't want the glass pane to sit in the center of the
block, but rather at its front/back - like a thin glass slab from the circular
saw in moreblocks. For that purpose, the *unconnected* panes have been added.
They behave just like thin glass slabs from the saw.
Crafting:
xpanes glass pane -> unconnected pane -> embedded pane -> xpanes glass pane
The two new pane types (embedded and unconnected) are added for each pane that
has been added by/through xpanes (more precisely: for each node with the group
"pane").
If some xpanes panes don't show up, make sure that this mod here optionally
depends on the mod that defines the desired panes.
Note: The panes defined here do not automaticly connect to other blocks.
They're just normal blocks in that regard.

3
depends.txt Normal file
View File

@ -0,0 +1,3 @@
xpanes?
yl_xpanes?
jonez?

108
init.lua Normal file
View File

@ -0,0 +1,108 @@
panes_embedded = {}
panes_embedded.add_pane = function(name, def, orig_name)
-- xpanes defines *two* nodes per pane; we only need one here
if(minetest.registered_nodes[ "panes_embedded:" .. name .. "_embedded" ]) then
return false
end
-- this cannot register as a pane because auto-connecting would screw things up
local groups_without_pane = table.copy(def.groups)
groups_without_pane.pane = nil
-- when two textures take up the same place, it might get a bit messy;
-- thus: make the pane a tiny bit smaller
local no_flicker = 1/4096
minetest.register_node(":panes_embedded:" .. name .. "_embedded", {
description = "Embedded "..tostring(def.description),
drawtype = "nodebox",
paramtype = "light",
is_ground_content = false,
sunlight_propagates = true,
inventory_image = def.inventory_image,
wield_image = def.wield_image,
paramtype2 = "facedir",
tiles = def.tiles,
-- change compared to xpanes: it is *not* a pane in the technical sense (relevant for abms)
groups = groups_without_pane,
-- change compared to xpanes: drops itself
-- drop = "xpanes:" .. name .. "_flat", -- no: drops itself
sounds = def.sounds,
use_texture_alpha = def.use_texture_alpha and "blend" or "clip",
-- this pane does not (visually) sit in the middle of the node it is placed (and stoerd) in
-- but in the node *behind* that one
node_box = {
type = "fixed",
fixed = {{-1/2+no_flicker, -1/2+no_flicker, -1/32+1, 1/2-no_flicker, 1/2-no_flicker, 1/32+1}},
},
selection_box = {
type = "fixed",
fixed = {{-1/2, -1/2, -8/32+0.5, 1/2, 1/2, 1.0}},
},
-- change compared to xpanes: no connected sides - the pane visually sits elsewhere;
-- behaving as a normal pane would be very problematic
-- connect_sides = { "left", "right" },
})
-- lone-standing pane; more or less the same as above, but not moved to the node behind - only
-- to the edge of its own node (sometimes helpful for building something; those xpanes can be
-- terribly annoying when they decide to connect to chairs and the like)
no_flicker = 0
minetest.register_node(":panes_embedded:" .. name.."_unconnected", {
description = "Unconnected "..tostring(def.description),
drawtype = "nodebox",
paramtype = "light",
is_ground_content = false,
sunlight_propagates = true,
inventory_image = def.inventory_image,
wield_image = def.wield_image,
paramtype2 = "facedir",
tiles = def.tiles,
-- change compared to xpanes: it is *not* a pane in the technical sense (relevant for abms)
groups = groups_without_pane,
-- change compared to xpanes: drops itself
-- drop = "xpanes:" .. name .. "_flat", -- no: drops itself
sounds = def.sounds,
use_texture_alpha = def.use_texture_alpha and "blend" or "clip",
node_box = {
type = "fixed",
fixed = {{-1/2, -1/2, 0.5, 1/2, 1/2, 0.5-2/32}},
},
selection_box = {
type = "fixed",
fixed = {{-1/2, -1/2, 0.5, 1/2, 1/2, 1/2-4/32}},
},
-- change compared to xpanes: no connected sides - the pane visually sits elsewhere;
-- behaving as a normal pane would be very problematic
-- connect_sides = { "left", "right" },
})
-- craft chain: from xpane to the unconnected to the embedded one
minetest.register_craft({
output = "panes_embedded:" .. name.."_unconnected",
recipe = {
{orig_name},
}
})
minetest.register_craft({
output = "panes_embedded:" .. name .. "_embedded",
recipe = {
{"panes_embedded:" .. name.."_unconnected"},
}
})
minetest.register_craft({
output = orig_name,
recipe = {
{"panes_embedded:" .. name.."_embedded"},
}
})
-- embedded pane successfully created
return ture
end
for k, v in pairs(minetest.registered_nodes) do
if(minetest.get_item_group(k, "pane") > 0) then
local parts = string.split(k, ":")
panes_embedded.add_pane(parts[1].."_"..parts[2], v, k)
end
end

5
mod.conf Normal file
View File

@ -0,0 +1,5 @@
name = panes_embedded
description = Place glass panes into arcs, slabs and other nodes.
optional_depends = xpanes, yl_xpanes, jonez
author = Sokomine
title = Panes embedded in other nodes

BIN
screenshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 KiB