aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builtin/mainmenu/dlg_settings_advanced.lua30
-rw-r--r--clientmods/chat/init.lua13
-rw-r--r--clientmods/chat/mod.conf3
-rw-r--r--clientmods/chat/settingtypes.txt4
-rw-r--r--clientmods/inventory/autotool.lua34
-rw-r--r--clientmods/inventory/init.lua53
-rw-r--r--clientmods/inventory/mod.conf3
-rw-r--r--clientmods/inventory/next_item.lua18
-rw-r--r--clientmods/inventory/settingtypes.txt2
-rw-r--r--clientmods/respawn/settingtypes.txt1
-rw-r--r--clientmods/world/init.lua11
-rw-r--r--clientmods/world/settingtypes.txt5
12 files changed, 124 insertions, 53 deletions
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