[Mod] Reworked signs from xyz [signs]
- VanessaE
- Moderator
- Posts: 4655
- Joined: Sun Apr 01, 2012 12:38
- GitHub: VanessaE
- IRC: VanessaE
- In-game: VanessaE
- Location: Western NC
- Contact:
If anyone's interested, I've forked this to add signs onto wooden fenceposts. Place a few standard fences, then place a sign onto the post as usual. Instead of the sign floating in front of the post, the post will be replaced with one bearing the sign.
Right click to edit the text as described in the first post.
Dig the post+sign combination to get back one fencepost and one sign.
Download: https://github.com/VanessaE/signs/archive/master.zip
...or browse the code: https://github.com/VanessaE/signs
Unzip the downloaded file, rename the resultant folder to just "signs", and put it in your Minetest mods folder.
Note that these signs-on-fences objects don't connect to neighboring fences yet (my initial idea was that these be placed onto fences that are being used as vertical posts, e.g. as lampposts).
Right click to edit the text as described in the first post.
Dig the post+sign combination to get back one fencepost and one sign.
Download: https://github.com/VanessaE/signs/archive/master.zip
...or browse the code: https://github.com/VanessaE/signs
Unzip the downloaded file, rename the resultant folder to just "signs", and put it in your Minetest mods folder.
Note that these signs-on-fences objects don't connect to neighboring fences yet (my initial idea was that these be placed onto fences that are being used as vertical posts, e.g. as lampposts).
You might like some of my stuff: Plantlife ~ More Trees ~ Home Decor ~ Pipeworks ~ HDX Textures (64-512px)
- VanessaE
- Moderator
- Posts: 4655
- Joined: Sun Apr 01, 2012 12:38
- GitHub: VanessaE
- IRC: VanessaE
- In-game: VanessaE
- Location: Western NC
- Contact:
Fixed a bug in my fork that kept other mods' right-click actions from working right if you happen to be holding a sign when performing such an action. Please re-pull/re-download as needed.
You might like some of my stuff: Plantlife ~ More Trees ~ Home Decor ~ Pipeworks ~ HDX Textures (64-512px)
- VanessaE
- Moderator
- Posts: 4655
- Joined: Sun Apr 01, 2012 12:38
- GitHub: VanessaE
- IRC: VanessaE
- In-game: VanessaE
- Location: Western NC
- Contact:
I'll have to defer that to PilzAdam (who I hope will merge my changes back to master ;-) ). I don't know anything about handling of non-Latin glyphs.
You might like some of my stuff: Plantlife ~ More Trees ~ Home Decor ~ Pipeworks ~ HDX Textures (64-512px)
What about "interlingual" ones? Like "!" and "&"?VanessaE wrote:I'll have to defer that to PilzAdam (who I hope will merge my changes back to master ;-) ). I don't know anything about handling of non-Latin glyphs.
I'm pretty sure I've missed smth obvious... Could you describe how to add new character?
Anyway, I'll try to do smth on my own one more time before asking PilzAdam for help. Don't want to disturb him atm
Also, how about changing "edit" control with "textarea"? (Just an idea
+1 for using multiline text field.
WorldEdit 1.0 released
The Mesecons Laboratory - the art of Mesecons circuitry
Latest article: Mesecons Basics.
The Mesecons Laboratory - the art of Mesecons circuitry
Latest article: Mesecons Basics.
- PilzAdam
- Member
- Posts: 4026
- Joined: Fri Jul 20, 2012 16:19
- GitHub: PilzAdam
- IRC: PilzAdam
- Location: Germany
The font size is in the textures and in the code. Changing it is a PITA. The digilines mod probably uses the same texture names.b21munhoz wrote:I don't know if you are still working on the mod, but, I'm having a little problem.
When I use this mod the LCD item (from digilines mod) show the letters with the same size as they're shown by the signs.
Is there something I can edit to change the characters size?
thank you ^^
oh, and +1
- prof-turbo
- Member
- Posts: 516
- Joined: Mon May 07, 2012 17:02
- Location: MinetestForFun or Teeworlds master server list
---------------[Idea]---------------
I had an idea with this mod :
To make signs of different size. The signs would be greater, and the scripture would be too. As it, we could make writting easier to see.
Exemple :
_
size 1 : |_|
__
size 2 : | |
|__|
___
size 3 : | |
| |
|___| ETC.....
crafts ideas :
size 1 : normal craft
size 2 : size 1 + size 1
size 3 : size 2 + size 2
ETC.....
Tell me if you like that idea and if you'd like to use it
I had an idea with this mod :
To make signs of different size. The signs would be greater, and the scripture would be too. As it, we could make writting easier to see.
Exemple :
_
size 1 : |_|
__
size 2 : | |
|__|
___
size 3 : | |
| |
|___| ETC.....
crafts ideas :
size 1 : normal craft
size 2 : size 1 + size 1
size 3 : size 2 + size 2
ETC.....
Tell me if you like that idea and if you'd like to use it
Last edited by prof-turbo on Sat Jun 29, 2013 18:50, edited 1 time in total.
You should take a look at http://www.xorhub.com
- Pitriss
- Member
- Posts: 254
- Joined: Mon Aug 05, 2013 17:09
- GitHub: Pitriss
- IRC: pitriss
- In-game: pitriss
- Location: Czech republic, Bohumin
Why is text cropped also when i hover cursor on sign? Sign itself can remember longer text, so why it is not showing when i'm pointing at the sign? When i'm poinitng there is no reason to shorten it to fit on sign..
I reject your reality and substitute my own. (A. Savage, Mythbusters)
I'm not modding and/or playing minetest anymore. All my mods were released under WTFPL. You can fix/modify them yourself. Don't ask me for support. Thanks.
I'm not modding and/or playing minetest anymore. All my mods were released under WTFPL. You can fix/modify them yourself. Don't ask me for support. Thanks.
- kaeza
- Moderator
- Posts: 2162
- Joined: Thu Oct 18, 2012 05:00
- GitHub: kaeza
- IRC: kaeza diemartin blaaaaargh
- In-game: kaeza
- Location: Montevideo, Uruguay
- Contact:
This mod is a bit outdated.Pitriss wrote:Why is text cropped also when i hover cursor on sign? Sign itself can remember longer text, so why it is not showing when i'm pointing at the sign? When i'm poinitng there is no reason to shorten it to fit on sign..
The homedecor mod has a more up-to-date version with a few other niceties like being able to "attach" signs to fences and protecting signs from edits ("locked signs").
Your signature is not the place for a blog post. Please keep it as concise as possible. Thank you!
Check out my stuff! | Donations greatly appreciated! PayPal
Check out my stuff! | Donations greatly appreciated! PayPal
- davedevils
- Member
- Posts: 52
- Joined: Thu Sep 25, 2014 01:13
- GitHub: davedevils
- IRC: davedevils
- In-game: davedevils
- Location: France
- Contact:
Re: [Mod] Reworked signs from xyz [signs]
Just i post a little edit of PilzAdam version :)
This edit is for multi-player , only the first people have write in sign can edit the same sign :) (like a sign protect)
I hope that can help 2-3 people ^^
This edit is for multi-player , only the first people have write in sign can edit the same sign :) (like a sign protect)
Code: Select all
-- Font: 04.jp.org
-- load characters map
local chars_file = io.open(minetest.get_modpath("signs").."/characters", "r")
local charmap = {}
local max_chars = 16
if not chars_file then
print("[signs] E: character map file not found")
else
while true do
local char = chars_file:read("*l")
if char == nil then
break
end
local img = chars_file:read("*l")
chars_file:read("*l")
charmap[char] = img
end
end
local signs = {
{delta = {x = 0, y = 0, z = 0.399}, yaw = 0},
{delta = {x = 0.399, y = 0, z = 0}, yaw = math.pi / -2},
{delta = {x = 0, y = 0, z = -0.399}, yaw = math.pi},
{delta = {x = -0.399, y = 0, z = 0}, yaw = math.pi / 2},
}
local signs_yard = {
{delta = {x = 0, y = 0, z = -0.05}, yaw = 0},
{delta = {x = -0.05, y = 0, z = 0}, yaw = math.pi / -2},
{delta = {x = 0, y = 0, z = 0.05}, yaw = math.pi},
{delta = {x = 0.05, y = 0, z = 0}, yaw = math.pi / 2},
}
local sign_groups = {choppy=2, dig_immediate=2}
local construct_sign = function(pos)
local meta = minetest.env:get_meta(pos)
meta:set_string("formspec", "field[text;;${text}]")
meta:set_string("infotext", "")
end
local destruct_sign = function(pos)
local objects = minetest.env:get_objects_inside_radius(pos, 0.5)
for _, v in ipairs(objects) do
if v:get_entity_name() == "signs:text" then
v:remove()
end
end
end
local update_sign = function(pos, fields, sender)
local meta = minetest.env:get_meta(pos)
local owner = meta:get_string("owner")
meta:set_string("infotext", "")
local text = meta:get_string("text")
if fields and sender:get_player_name() == owner or text == "" then
meta:set_string("text", fields.text)
meta:set_string("owner", sender:get_player_name() or "")
end
text = meta:get_string("text")
local objects = minetest.env:get_objects_inside_radius(pos, 0.5)
for _, v in ipairs(objects) do
if v:get_entity_name() == "signs:text" then
v:set_properties({textures={generate_texture(create_lines(text))}})
return
end
end
-- if there is no entity
local sign_info
if minetest.env:get_node(pos).name == "signs:sign_yard" then
sign_info = signs_yard[minetest.env:get_node(pos).param2 + 1]
elseif minetest.env:get_node(pos).name == "signs:sign_wall" then
sign_info = signs[minetest.env:get_node(pos).param2 + 1]
end
if sign_info == nil then
return
end
local text = minetest.env:add_entity({x = pos.x + sign_info.delta.x,
y = pos.y + sign_info.delta.y,
z = pos.z + sign_info.delta.z}, "signs:text")
text:setyaw(sign_info.yaw)
end
minetest.register_node(":default:sign_wall", {
description = "Sign",
inventory_image = "default_sign_wall.png",
wield_image = "default_sign_wall.png",
node_placement_prediction = "",
paramtype = "light",
sunlight_propagates = true,
paramtype2 = "facedir",
drawtype = "nodebox",
node_box = {type = "fixed", fixed = {-0.45, -0.15, 0.4, 0.45, 0.45, 0.498}},
selection_box = {type = "fixed", fixed = {-0.45, -0.15, 0.4, 0.45, 0.45, 0.498}},
tiles = {"signs_top.png", "signs_bottom.png", "signs_side.png", "signs_side.png", "signs_back.png", "signs_front.png"},
groups = sign_groups,
on_place = function(itemstack, placer, pointed_thing)
local above = pointed_thing.above
local under = pointed_thing.under
local dir = {x = under.x - above.x,
y = under.y - above.y,
z = under.z - above.z}
local wdir = minetest.dir_to_wallmounted(dir)
local placer_pos = placer:getpos()
if placer_pos then
dir = {
x = above.x - placer_pos.x,
y = above.y - placer_pos.y,
z = above.z - placer_pos.z
}
end
local fdir = minetest.dir_to_facedir(dir)
local sign_info
if wdir == 0 then
--how would you add sign to ceiling?
minetest.env:add_item(above, "signs:sign_wall")
itemstack:take_item()
return itemstack
elseif wdir == 1 then
minetest.env:add_node(above, {name = "signs:sign_yard", param2 = fdir})
sign_info = signs_yard[fdir + 1]
else
minetest.env:add_node(above, {name = "signs:sign_wall", param2 = fdir})
sign_info = signs[fdir + 1]
end
local text = minetest.env:add_entity({x = above.x + sign_info.delta.x,
y = above.y + sign_info.delta.y,
z = above.z + sign_info.delta.z}, "signs:text")
text:setyaw(sign_info.yaw)
itemstack:take_item()
return itemstack
end,
on_construct = function(pos)
construct_sign(pos)
end,
on_destruct = function(pos)
destruct_sign(pos)
end,
on_receive_fields = function(pos, formname, fields, sender)
update_sign(pos, fields, sender)
end,
on_punch = function(pos, node, puncher)
update_sign(pos)
end,
})
minetest.register_node("signs:sign_yard", {
paramtype = "light",
sunlight_propagates = true,
paramtype2 = "facedir",
drawtype = "nodebox",
node_box = {type = "fixed", fixed = {
{-0.45, -0.15, -0.049, 0.45, 0.45, 0.049},
{-0.05, -0.5, -0.049, 0.05, -0.15, 0.049}
}},
selection_box = {type = "fixed", fixed = {-0.45, -0.15, -0.049, 0.45, 0.45, 0.049}},
tiles = {"signs_top.png", "signs_bottom.png", "signs_side.png", "signs_side.png", "signs_back.png", "signs_front.png"},
groups = {choppy=2, dig_immediate=2},
drop = "default:sign_wall",
on_construct = function(pos)
construct_sign(pos)
end,
on_destruct = function(pos)
destruct_sign(pos)
end,
on_receive_fields = function(pos, formname, fields, sender)
update_sign(pos, fields, sender)
end,
on_punch = function(pos, node, puncher)
update_sign(pos)
end,
})
minetest.register_entity("signs:text", {
collisionbox = { 0, 0, 0, 0, 0, 0 },
visual = "upright_sprite",
textures = {},
on_activate = function(self)
local meta = minetest.env:get_meta(self.object:getpos())
local text = meta:get_string("text")
self.object:set_properties({textures={generate_texture(create_lines(text))}})
end
})
-- CONSTANTS
local SIGN_WITH = 110
local SIGN_PADDING = 8
local LINE_LENGTH = 16
local NUMBER_OF_LINES = 4
local LINE_HEIGHT = 14
local CHAR_WIDTH = 5
string_to_array = function(str)
local tab = {}
for i=1,string.len(str) do
table.insert(tab, string.sub(str, i,i))
end
return tab
end
string_to_word_array = function(str)
local tab = {}
local current = 1
tab[1] = ""
for _,char in ipairs(string_to_array(str)) do
if char ~= " " then
tab[current] = tab[current]..char
else
current = current+1
tab[current] = ""
end
end
return tab
end
create_lines = function(text)
local line = ""
local line_num = 1
local tab = {}
for _,word in ipairs(string_to_word_array(text)) do
if string.len(line)+string.len(word) < LINE_LENGTH and word ~= "|" then
if line ~= "" then
line = line.." "..word
else
line = word
end
else
table.insert(tab, line)
if word ~= "|" then
line = word
else
line = ""
end
line_num = line_num+1
if line_num > NUMBER_OF_LINES then
return tab
end
end
end
table.insert(tab, line)
return tab
end
generate_texture = function(lines)
local texture = "[combine:"..SIGN_WITH.."x"..SIGN_WITH
local ypos = 12
for i = 1, #lines do
texture = texture..generate_line(lines[i], ypos)
ypos = ypos + LINE_HEIGHT
end
return texture
end
generate_line = function(s, ypos)
local i = 1
local parsed = {}
local width = 0
local chars = 0
while chars < max_chars and i <= #s do
local file = nil
if charmap[s:sub(i, i)] ~= nil then
file = charmap[s:sub(i, i)]
i = i + 1
elseif i < #s and charmap[s:sub(i, i + 1)] ~= nil then
file = charmap[s:sub(i, i + 1)]
i = i + 2
else
print("[signs] W: unknown symbol in '"..s.."' at "..i.." (probably "..s:sub(i, i)..")")
i = i + 1
end
if file ~= nil then
width = width + CHAR_WIDTH
table.insert(parsed, file)
chars = chars + 1
end
end
width = width - 1
local texture = ""
local xpos = math.floor((SIGN_WITH - 2 * SIGN_PADDING - width) / 2 + SIGN_PADDING)
for i = 1, #parsed do
texture = texture..":"..xpos..","..ypos.."="..parsed[i]..".png"
xpos = xpos + CHAR_WIDTH + 1
end
return texture
end
if minetest.setting_get("log_mods") then
minetest.log("action", "signs loaded")
end
- kaeza
- Moderator
- Posts: 2162
- Joined: Thu Oct 18, 2012 05:00
- GitHub: kaeza
- IRC: kaeza diemartin blaaaaargh
- In-game: kaeza
- Location: Montevideo, Uruguay
- Contact:
Re: [Mod] Reworked signs from xyz [signs]
This mod is old and unmaintained. A more recent version can be found in homedecor_modpack (in the form of signs_lib).davedevils wrote:Just i post a little edit of PilzAdam version :)
This edit is for multi-player , only the first people have write in sign can edit the same sign :) (like a sign protect)
-snip-
I hope that can help 2-3 people ^^
Your signature is not the place for a blog post. Please keep it as concise as possible. Thank you!
Check out my stuff! | Donations greatly appreciated! PayPal
Check out my stuff! | Donations greatly appreciated! PayPal
- davedevils
- Member
- Posts: 52
- Joined: Thu Sep 25, 2014 01:13
- GitHub: davedevils
- IRC: davedevils
- In-game: davedevils
- Location: France
- Contact:
Re: [Mod] Reworked signs from xyz [signs]
too lot's of conflicts for me ^^ (and too fat i like make my self)
Maybe same for other people it's why i post this :)
Maybe same for other people it's why i post this :)
Re: [Mod] Reworked signs from xyz [signs]
I was tinkering with PilzAdam's old signs mod a few weeks ago and came up with this, it has a yard, wall and hanging sign, uses a lightened version of the default_wood.png image and is nice and simple to use...
- Attachments
-
- signs_pilzadam(jkedit).zip
- (24.53 KiB) Downloaded 136 times
- afflatus
- Member
- Posts: 362
- Joined: Tue Apr 01, 2014 19:47
- GitHub: 0-afflatus
- IRC: afflatus
- In-game: afflatus
- Location: Avalonia
- Contact:
Re: [Mod] Reworked signs from xyz [signs]
I am using the version from home decor, but I thought I'd post my questions here in the hope of getting PilzAdam or Kaeza's response.
I'd like to make the text image slightly smaller, but the code is so gnomic I don't dare attempt to mod it without advice. I can see how to reduce the number of characters per line, but how is the size of the PNG set in pixels?
4aiman - if you came up with a set of correctly mapped cyrillic character textures I'd be very grateful. As I'm sure you're aware, there is no good way of writing Russian in Latin script. It may require creating a separate signs:vyveska (or something) node, but I'll worry about that.
I'd like to make the text image slightly smaller, but the code is so gnomic I don't dare attempt to mod it without advice. I can see how to reduce the number of characters per line, but how is the size of the PNG set in pixels?
4aiman - if you came up with a set of correctly mapped cyrillic character textures I'd be very grateful. As I'm sure you're aware, there is no good way of writing Russian in Latin script. It may require creating a separate signs:vyveska (or something) node, but I'll worry about that.
Grailtest is stirring ...
- afflatus
- Member
- Posts: 362
- Joined: Tue Apr 01, 2014 19:47
- GitHub: 0-afflatus
- IRC: afflatus
- In-game: afflatus
- Location: Avalonia
- Contact:
Re: [Mod] Reworked signs from xyz [signs]
I managed to get acceptable results messing about with TEXT_SCALE and apologies for double-posting.
Grailtest is stirring ...
Re:
VanessaE wrote:PilzAdam: There is a new version of the font work we were doing on IRC. This one fixes some missing characters from my previous copy, and also fixes the messed up sizes and alignment of some characters. All eight font sets have been reworked accordingly.
http://digitalaudioconcepts.com/vanessa ... 1010-3.zip
(note the -3 in the filename)
is this a one which we have text normally seeing or its the default?
Who is online
Users browsing this forum: No registered users and 5 guests