From 2fba3eba9ca30486648baac20e6ff289052fdc16 Mon Sep 17 00:00:00 2001 From: Xertis <118364459+Xertis@users.noreply.github.com> Date: Mon, 4 Aug 2025 20:44:04 +0300 Subject: [PATCH 1/4] Update settings_controls.xml.lua --- res/layouts/pages/settings_controls.xml.lua | 55 +++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/res/layouts/pages/settings_controls.xml.lua b/res/layouts/pages/settings_controls.xml.lua index ad8491ad..df6fe20b 100644 --- a/res/layouts/pages/settings_controls.xml.lua +++ b/res/layouts/pages/settings_controls.xml.lua @@ -1,3 +1,12 @@ +local WARNING_COLORS = { + {252, 200, 149, 255}, + {246, 233, 44, 255}, + {250, 151, 75, 255}, + {250, 75, 139, 255}, + {208, 104, 107, 255} +} + +local GENERAL_WARNING_COLOR = {208, 138, 0, 255} function refresh_search() local search_text = document.search_textbox.text @@ -40,6 +49,48 @@ function change_sensitivity(val) refresh_sensitivity() end +function refresh_binding_labels() + local prev_bindings = {} + local conflicts_colors = {} + local available_colors = table.copy(WARNING_COLORS) + + local bindings = input.get_bindings() + table.sort(bindings, function(a, b) return a > b end) + + for _, bind_name in pairs(bindings) do + local key = input.get_binding_text(bind_name) + local prev = prev_bindings[key] + if prev then + local color = GENERAL_WARNING_COLOR + local conflict_color = conflicts_colors[key] + if conflict_color then + color = conflict_color + elseif #available_colors > 0 then + color = available_colors[1] + conflicts_colors[key] = color + table.remove(available_colors, 1) + end + + local tooltip = gui.str("settings.Conflict", "settings") + + local prev_bindmark = "bindmark_" .. prev + local cur_bindmark = "bindmark_" .. bind_name + document[prev_bindmark].visible = true + document[cur_bindmark].visible = true + + document[prev_bindmark].color = color + document[cur_bindmark].color = color + + document["bind_" .. prev].tooltip = tooltip + document["bind_" .. bind_name].tooltip = tooltip + else + document["bindmark_" .. bind_name].visible = false + document["bind_" .. bind_name].tooltip = '' + prev_bindings[key] = bind_name + end + end +end + function on_open() document.sensitivity_track.value = core.get_setting("camera.sensitivity") refresh_sensitivity() @@ -52,4 +103,8 @@ function on_open() id=name, name=gui.str(name) })) end + + document.bindings_panel:setInterval(100, function () + refresh_binding_labels() + end) end From 1f0b6f0d9d665f6222c1959f6550847a7da05517 Mon Sep 17 00:00:00 2001 From: Xertis <118364459+Xertis@users.noreply.github.com> Date: Mon, 4 Aug 2025 20:50:27 +0300 Subject: [PATCH 2/4] Qol settings.controls update --- res/layouts/templates/binding.xml | 5 +++-- res/preload.json | 3 ++- res/texts/en_US.txt | 1 + res/texts/ru_RU.txt | 1 + res/textures/gui/half_block.png | Bin 0 -> 531 bytes 5 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 res/textures/gui/half_block.png diff --git a/res/layouts/templates/binding.xml b/res/layouts/templates/binding.xml index 643bd5aa..92843749 100644 --- a/res/layouts/templates/binding.xml +++ b/res/layouts/templates/binding.xml @@ -1,4 +1,5 @@ - + - + + diff --git a/res/preload.json b/res/preload.json index 887b0e26..0cd11b5b 100644 --- a/res/preload.json +++ b/res/preload.json @@ -47,7 +47,8 @@ "gui/info", "gui/world", "gui/hud", - "gui/entity" + "gui/entity", + "gui/half_block" ], "fonts": [ { diff --git a/res/texts/en_US.txt b/res/texts/en_US.txt index 57a6cb6b..b3be4c92 100644 --- a/res/texts/en_US.txt +++ b/res/texts/en_US.txt @@ -22,6 +22,7 @@ graphics.dense-render.tooltip=Enables transparency in blocks like leaves # settings settings.Controls Search Mode=Search by attached button name +settings.Conflict=Possible conflicts found # Bindings chunks.reload=Reload Chunks diff --git a/res/texts/ru_RU.txt b/res/texts/ru_RU.txt index d2d7c63e..5d8d22ca 100644 --- a/res/texts/ru_RU.txt +++ b/res/texts/ru_RU.txt @@ -100,6 +100,7 @@ settings.Controls Search Mode=Поиск по привязанной кнопк settings.Limit Background FPS=Ограничить фоновую частоту кадров settings.Advanced render=Продвинутый рендер settings.Shadows quality=Качество теней +settings.Conflict=Найдены возможные конфликты # Управление chunks.reload=Перезагрузить Чанки diff --git a/res/textures/gui/half_block.png b/res/textures/gui/half_block.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6b699ed06e5d85ec26040170976688d5a5f1db GIT binary patch literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b`!3HGn8ON~#DaPU;cPEB*=VV@jWYZme9T^xl z_H+M91W9rhctjR6Fz_7&Va6R3v)=+Wv}cAyltlRYSS9D@>LsS+C#C9D^BXQ!4ZB&DWj=Gm&h-@RX5Av48RJ>1mSz_-9TH6zobswg$M$}c3jDm&RSMcv+x zm&>NY3TQ%ZYDuC(MQ%=Bu~mhw64+oXAR8pCuViOal#*r@k>g7FXt#Bv$C=6)Qsxa7isrF3Kz@$;{7F02!E= zlwVq6t5jN=nPQcem}Z)kl47cxlxUoyYiO8~sGFE#Y^a-JY@A|lYG`4UW|*V|wZ0@X z4Pk#?F*F!}0iq9*(KpmH067`Nw(>8^Oa;0EWTl;<4OkvU%tjyN5G04$K}3Ll1+w5F z0}3X1=%(fYgR~qNb~;mLa0A0#)YHW=L?S%-&;S4b>)BKew47NupMgQ*0t?THlb7{C OG2`j#=d#Wzp$P!L;;2mk literal 0 HcmV?d00001 From 23837418f1d4d1fe77728bc37d44054cf85cc994 Mon Sep 17 00:00:00 2001 From: Xertis <118364459+Xertis@users.noreply.github.com> Date: Mon, 4 Aug 2025 21:11:44 +0300 Subject: [PATCH 3/4] minor optimization --- res/layouts/pages/settings_controls.xml.lua | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/res/layouts/pages/settings_controls.xml.lua b/res/layouts/pages/settings_controls.xml.lua index df6fe20b..34631929 100644 --- a/res/layouts/pages/settings_controls.xml.lua +++ b/res/layouts/pages/settings_controls.xml.lua @@ -1,9 +1,9 @@ local WARNING_COLORS = { - {252, 200, 149, 255}, - {246, 233, 44, 255}, - {250, 151, 75, 255}, + {208, 104, 107, 255}, {250, 75, 139, 255}, - {208, 104, 107, 255} + {250, 151, 75, 255}, + {246, 233, 44, 255}, + {252, 200, 149, 255} } local GENERAL_WARNING_COLOR = {208, 138, 0, 255} @@ -49,7 +49,7 @@ function change_sensitivity(val) refresh_sensitivity() end -function refresh_binding_labels() +function refresh_binding_marks() local prev_bindings = {} local conflicts_colors = {} local available_colors = table.copy(WARNING_COLORS) @@ -57,18 +57,19 @@ function refresh_binding_labels() local bindings = input.get_bindings() table.sort(bindings, function(a, b) return a > b end) - for _, bind_name in pairs(bindings) do + for _, bind_name in ipairs(bindings) do local key = input.get_binding_text(bind_name) local prev = prev_bindings[key] if prev then local color = GENERAL_WARNING_COLOR local conflict_color = conflicts_colors[key] + local available_colors_len = #available_colors if conflict_color then color = conflict_color - elseif #available_colors > 0 then - color = available_colors[1] + elseif available_colors_len > 0 then + color = available_colors[available_colors_len] conflicts_colors[key] = color - table.remove(available_colors, 1) + table.remove(available_colors, available_colors_len) end local tooltip = gui.str("settings.Conflict", "settings") @@ -105,6 +106,6 @@ function on_open() end document.bindings_panel:setInterval(100, function () - refresh_binding_labels() + refresh_binding_marks() end) end From e26ce0459b0849b83930cea4c8a07896162be6d5 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 10 Aug 2025 17:14:18 +0300 Subject: [PATCH 4/4] add block.model_name --- doc/en/scripting/builtins/libblock.md | 19 +++++++++++++++++-- doc/ru/scripting/builtins/libblock.md | 3 +++ src/logic/scripting/lua/libs/libblock.cpp | 14 ++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/doc/en/scripting/builtins/libblock.md b/doc/en/scripting/builtins/libblock.md index 6d657899..8d3b07f8 100644 --- a/doc/en/scripting/builtins/libblock.md +++ b/doc/en/scripting/builtins/libblock.md @@ -119,13 +119,13 @@ block.seek_origin(x: int, y: int, z: int) -> int, int, int Part of a voxel data used for scripting. Size: 8 bit. -```python +```lua block.get_user_bits(x: int, y: int, z: int, offset: int, bits: int) -> int ``` Get specified bits as an unsigned integer. -```python +```lua block.set_user_bits(x: int, y: int, z: int, offset: int, bits: int, value: int) -> int ``` Set specified bits. @@ -151,6 +151,21 @@ The function returns a table with the results or nil if the ray does not hit any The result will use the destination table instead of creating a new one if the optional argument specified. +## Model + +Block model information. + +```lua +-- returns block model type (block/aabb/custom/...) +block.get_model(id: int) -> str + +-- returns block model name +block.model_name(id: int) -> str + +-- returns array of 6 textures assigned to sides of block +block.get_textures(id: int) -> string table +``` + ## Data fields ```lua diff --git a/doc/ru/scripting/builtins/libblock.md b/doc/ru/scripting/builtins/libblock.md index e5bdbb44..67547909 100644 --- a/doc/ru/scripting/builtins/libblock.md +++ b/doc/ru/scripting/builtins/libblock.md @@ -171,6 +171,9 @@ block.get_hitbox(id: int, rotation_index: int) -> {vec3, vec3} -- возвращает тип модели блока (block/aabb/custom/...) block.get_model(id: int) -> str +-- возвращает имя модели блока +block.model_name(id: int) -> str + -- возвращает массив из 6 текстур, назначенных на стороны блока block.get_textures(id: int) -> таблица строк ``` diff --git a/src/logic/scripting/lua/libs/libblock.cpp b/src/logic/scripting/lua/libs/libblock.cpp index bb527c9b..eb699bc5 100644 --- a/src/logic/scripting/lua/libs/libblock.cpp +++ b/src/logic/scripting/lua/libs/libblock.cpp @@ -364,6 +364,19 @@ static int l_get_textures(lua::State* L) { return 0; } + +static int l_model_name(lua::State* L) { + if (auto def = require_block(L)) { + // TODO: variant argument + const auto& modelName = def->defaults.model.name; + if (modelName.empty()) { + return lua::pushlstring(L, def->name + ".model"); + } + return lua::pushlstring(L, modelName); + } + return 0; +} + static int l_get_model(lua::State* L) { if (auto def = require_block(L)) { // TODO: variant argument @@ -713,6 +726,7 @@ const luaL_Reg blocklib[] = { {"get_size", lua::wrap}, {"is_segment", lua::wrap}, {"seek_origin", lua::wrap}, + {"model_name", lua::wrap}, {"get_textures", lua::wrap}, {"get_model", lua::wrap}, {"get_hitbox", lua::wrap},