From 6e6c68ba046e9cddfafb069931731d68a2b5ec21 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sat, 22 Aug 2020 13:51:50 +0200 Subject: [PATCH] Added Chat Spam, Replace and settingtypes.txt for Clientmods --- builtin/mainmenu/dlg_settings_advanced.lua | 30 ++++++++++++ clientmods/chat/init.lua | 13 ++++++ clientmods/chat/mod.conf | 3 ++ clientmods/chat/settingtypes.txt | 4 ++ clientmods/inventory/autotool.lua | 34 ++++++++++++++ clientmods/inventory/init.lua | 53 +--------------------- clientmods/inventory/mod.conf | 3 ++ clientmods/inventory/next_item.lua | 18 ++++++++ clientmods/inventory/settingtypes.txt | 2 + clientmods/respawn/settingtypes.txt | 1 + clientmods/world/init.lua | 11 ++++- clientmods/world/settingtypes.txt | 5 ++ 12 files changed, 124 insertions(+), 53 deletions(-) create mode 100644 clientmods/chat/mod.conf create mode 100644 clientmods/chat/settingtypes.txt create mode 100644 clientmods/inventory/autotool.lua create mode 100644 clientmods/inventory/mod.conf create mode 100644 clientmods/inventory/next_item.lua create mode 100644 clientmods/inventory/settingtypes.txt create mode 100644 clientmods/respawn/settingtypes.txt create mode 100644 clientmods/world/settingtypes.txt diff --git a/builtin/mainmenu/dlg_settings_advanced.lua b/builtin/mainmenu/dlg_settings_advanced.lua index c16e4aad0..d82ae6263 100644 --- a/builtin/mainmenu/dlg_settings_advanced.lua +++ b/builtin/mainmenu/dlg_settings_advanced.lua @@ -400,6 +400,36 @@ local function parse_config_file(read_all, parse_mods) file:close() end end + + -- Parse clientmods + local clientmods_category_initialized = false + local clientmods = {} + get_mods(core.get_clientmodpath(), clientmods) + for _, clientmod in ipairs(clientmods) do + local path = clientmod.path .. DIR_DELIM .. FILENAME + local file = io.open(path, "r") + if file then + if not clientmods_category_initialized then + fgettext_ne("Clientmods") -- not used, but needed for xgettext + table.insert(settings, { + name = "Clientmods", + level = 0, + type = "category", + }) + clientmods_category_initialized = true + end + + table.insert(settings, { + name = clientmod.name, + level = 1, + type = "category", + }) + + parse_single_file(file, path, read_all, settings, 2, false) + + file:close() + end + end end return settings diff --git a/clientmods/chat/init.lua b/clientmods/chat/init.lua index 4c11e40f9..45d61e06b 100644 --- a/clientmods/chat/init.lua +++ b/clientmods/chat/init.lua @@ -34,3 +34,16 @@ function chat.send(message) end minetest.register_on_sending_chat_message(chat.send) + +local etime = 0 + +minetest.register_globalstep(function(dtime) + etime = etime + dtime + if etime < 10/8 then return end + etime = 0 + local spam = minetest.settings:get("chat_spam") + local enable_spam = minetest.settings:get("chat_enable_spam") + if enable_spam and spam then + local _ = chat.send(spam) or minetest.send_chat_message(spam) + end +end) diff --git a/clientmods/chat/mod.conf b/clientmods/chat/mod.conf new file mode 100644 index 000000000..ce94dc1bc --- /dev/null +++ b/clientmods/chat/mod.conf @@ -0,0 +1,3 @@ +name = chat +author = Fleckenstein +description = The chat modifications of Dragonfireclient diff --git a/clientmods/chat/settingtypes.txt b/clientmods/chat/settingtypes.txt new file mode 100644 index 000000000..5e5aa8a8b --- /dev/null +++ b/clientmods/chat/settingtypes.txt @@ -0,0 +1,4 @@ +chat_color (Chat Color) string white +chat_reverse (Reverse Chat messages) bool false +chat_enable_spam (Spam Chat) bool false +chat_spam (Message to spam into Chat) string diff --git a/clientmods/inventory/autotool.lua b/clientmods/inventory/autotool.lua new file mode 100644 index 000000000..976386724 --- /dev/null +++ b/clientmods/inventory/autotool.lua @@ -0,0 +1,34 @@ +local function check_tool(groups, old_best_time) + local toolcaps = minetest.localplayer:get_wielded_item():get_tool_capabilities() + if not toolcaps then return end + local best_time = old_best_time + for group, groupdef in pairs(toolcaps.groupcaps) do + local level = groups[group] + if level then + local this_time = groupdef.times[level] + if this_time < best_time then + best_time = this_time + end + end + end + return best_time < old_best_time, best_time +end + +minetest.register_on_punchnode(function(pos, node) + if not minetest.settings:get_bool("autotool") then return end + local player = minetest.localplayer + local groups = minetest.get_node_def(node.name).groups + local new_index = player:get_wield_index() + local better, best = check_tool(groups, math.huge) + for i = 0, 35 do + player:set_wield_index(i) + better, best = check_tool(groups, best) + if better then + new_index = i + end + end + player:set_wield_index(new_index) +end) + +minetest.register_cheat("AutoTool", "Inventory", "autotool") + diff --git a/clientmods/inventory/init.lua b/clientmods/inventory/init.lua index 5050fbe8b..52791b338 100644 --- a/clientmods/inventory/init.lua +++ b/clientmods/inventory/init.lua @@ -3,54 +3,5 @@ local modpath = minetest.get_modpath(modname) dofile(modpath .. "/invhack.lua") dofile(modpath .. "/enderchest.lua") - -local elapsed_time = 0 -local tick_time = 0.05 - -minetest.register_globalstep(function(dtime) - elapsed_time = elapsed_time + dtime - if elapsed_time < tick_time then return end - local player = minetest.localplayer - if not player then return end - local item = player:get_wielded_item() - if item:get_count() == 0 and minetest.settings:get_bool("next_item") then - local index = player:get_wield_index() - player:set_wield_index(index + 1) - end - elapsed_time = 0 -end) - -local function check_tool(groups, old_best_time) - local toolcaps = minetest.localplayer:get_wielded_item():get_tool_capabilities() - if not toolcaps then return end - local best_time = old_best_time - for group, groupdef in pairs(toolcaps.groupcaps) do - local level = groups[group] - if level then - local this_time = groupdef.times[level] - if this_time < best_time then - best_time = this_time - end - end - end - return best_time < old_best_time, best_time -end - -minetest.register_on_punchnode(function(pos, node) - if not minetest.settings:get_bool("autotool") then return end - local player = minetest.localplayer - local groups = minetest.get_node_def(node.name).groups - local new_index = player:get_wield_index() - local better, best = check_tool(groups, math.huge) - for i = 0, 35 do - player:set_wield_index(i) - better, best = check_tool(groups, best) - if better then - new_index = i - end - end - player:set_wield_index(new_index) -end) - -minetest.register_cheat("NextItem", "Inventory", "next_item") -minetest.register_cheat("AutoTool", "Inventory", "autotool") +dofile(modpath .. "/next_item.lua") +dofile(modpath .. "/autotool.lua") diff --git a/clientmods/inventory/mod.conf b/clientmods/inventory/mod.conf new file mode 100644 index 000000000..86fd451ae --- /dev/null +++ b/clientmods/inventory/mod.conf @@ -0,0 +1,3 @@ +name = invertory +author = Fleckenstein +description = The inventory cheats for Dragonfireclient diff --git a/clientmods/inventory/next_item.lua b/clientmods/inventory/next_item.lua new file mode 100644 index 000000000..0b7b88be4 --- /dev/null +++ b/clientmods/inventory/next_item.lua @@ -0,0 +1,18 @@ +local elapsed_time = 0 +local tick_time = 0.05 + +minetest.register_globalstep(function(dtime) + elapsed_time = elapsed_time + dtime + if elapsed_time < tick_time then return end + local player = minetest.localplayer + if not player then return end + local item = player:get_wielded_item() + if item:get_count() == 0 and minetest.settings:get_bool("next_item") then + local index = player:get_wield_index() + player:set_wield_index(index + 1) + end + elapsed_time = 0 +end) + +minetest.register_cheat("NextItem", "Inventory", "next_item") + diff --git a/clientmods/inventory/settingtypes.txt b/clientmods/inventory/settingtypes.txt new file mode 100644 index 000000000..fef673b1f --- /dev/null +++ b/clientmods/inventory/settingtypes.txt @@ -0,0 +1,2 @@ +next_item (NextItem) bool false +autotool (AutoTool) bool false diff --git a/clientmods/respawn/settingtypes.txt b/clientmods/respawn/settingtypes.txt new file mode 100644 index 000000000..d20b8f1dd --- /dev/null +++ b/clientmods/respawn/settingtypes.txt @@ -0,0 +1 @@ +autorespawn (AutoRespawn) bool false diff --git a/clientmods/world/init.lua b/clientmods/world/init.lua index 8f03fca96..5674fd3ef 100644 --- a/clientmods/world/init.lua +++ b/clientmods/world/init.lua @@ -39,6 +39,12 @@ minetest.register_chatcommand("dig", { end, }) +minetest.register_on_dignode(function(pos) + if minetest.settings:get_bool("replace") then + minetest.after(0, minetest.place_node, pos) + end +end) + local etime = 0 minetest.register_globalstep(function(dtime) @@ -68,7 +74,7 @@ minetest.register_globalstep(function(dtime) if i > nodes_per_tick then break end minetest.place_node(p) end - elseif minetest.settings:get_bool("destroy_liquids") then + elseif minetest.settings:get_bool("block_water") then local positions = minetest.find_nodes_near(pos, 5, {"mcl_core:water_source", "mcl_core:water_floating"}, true) for i, p in pairs(positions) do if i > nodes_per_tick then break end @@ -86,5 +92,6 @@ end) minetest.register_cheat("Scaffold", "World", "scaffold") minetest.register_cheat("HighwayZ", "World", "highway_z") -minetest.register_cheat("BlockWater", "World", "destroy_liquids") +minetest.register_cheat("BlockWater", "World", "block_water") minetest.register_cheat("AutoTNT", "World", "autotnt") +minetest.register_cheat("Replace", "World", "replace") diff --git a/clientmods/world/settingtypes.txt b/clientmods/world/settingtypes.txt new file mode 100644 index 000000000..c93ce260c --- /dev/null +++ b/clientmods/world/settingtypes.txt @@ -0,0 +1,5 @@ +scaffold (Scaffold) bool false +highway_z (HighwayZ) bool false +block_water (BlockWater) bool false +autotnt (AutoTNT) bool false +replace (Replace) bool false -- 2.44.0