From 2be19dc6d2dd3430db59a10e7d6029fcd940b2f3 Mon Sep 17 00:00:00 2001 From: luk3yx Date: Wed, 10 Mar 2021 18:32:18 +1300 Subject: [PATCH] Add bgcolor fixer --- README.md | 2 +- init.lua | 13 ++++++++++++- monkey_patching.lua | 7 +++++-- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 07455d7..3c9b91f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# fs51 +# FS51 A compatibility layer that makes formspec_version 3 (and later) formspecs render more correctly in Minetest 5.1.0 and earlier. diff --git a/init.lua b/init.lua index 6c46c32..786decf 100644 --- a/init.lua +++ b/init.lua @@ -134,6 +134,16 @@ function fixers.dropdown(elem) elem.index_event = nil end +-- Use a hack to make "neither" work properly. Not much can be done about +-- "both" unfortunately. +function fixers.bgcolor(elem) + if elem.fullscreen == 'neither' then + elem.bgcolor = '#0000' + elem.fullscreen = false + end + elem.fbgcolor = nil +end + -- local pre_types = {size = true, position = true, anchor = true, no_prepend = true} @@ -206,5 +216,6 @@ end -- Monkey patch Minetest's code if rawget(_G, 'minetest') and minetest.register_on_player_receive_fields and not minetest.settings:get_bool('fs51.disable_monkey_patching') then - dofile(minetest.get_modpath('fs51') .. '/monkey_patching.lua') + local fn = minetest.get_modpath('fs51') .. '/monkey_patching.lua' + assert(loadfile(fn))(fixers) end diff --git a/monkey_patching.lua b/monkey_patching.lua index 95147fd..7683083 100644 --- a/monkey_patching.lua +++ b/monkey_patching.lua @@ -4,8 +4,8 @@ -- Copyright © 2021 by luk3yx. -- -local get_player_information = minetest.get_player_information -local type = type +local fixers = ... +local get_player_information, type = minetest.get_player_information, type local function backport_for(name, formspec) local info = get_player_information(name) local formspec_version = info and info.formspec_version or 1 @@ -58,6 +58,9 @@ local function backport_for(name, formspec) end elseif formspec_version == 1 and node_type == 'tabheader' then node.w, node.h = nil, nil + elseif formspec_version == 2 and node_type == 'bgcolor' then + modified = true + fixers.bgcolor(node) end end