diff --git a/mods/chatplus/.gitattributes b/mods/chatplus/.gitattributes deleted file mode 100644 index 412eeda..0000000 --- a/mods/chatplus/.gitattributes +++ /dev/null @@ -1,22 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto - -# Custom for Visual Studio -*.cs diff=csharp -*.sln merge=union -*.csproj merge=union -*.vbproj merge=union -*.fsproj merge=union -*.dbproj merge=union - -# Standard to msysgit -*.doc diff=astextplain -*.DOC diff=astextplain -*.docx diff=astextplain -*.DOCX diff=astextplain -*.dot diff=astextplain -*.DOT diff=astextplain -*.pdf diff=astextplain -*.PDF diff=astextplain -*.rtf diff=astextplain -*.RTF diff=astextplain diff --git a/mods/chatplus/.gitignore b/mods/chatplus/.gitignore deleted file mode 100644 index b9d6bd9..0000000 --- a/mods/chatplus/.gitignore +++ /dev/null @@ -1,215 +0,0 @@ -################# -## Eclipse -################# - -*.pydevproject -.project -.metadata -bin/ -tmp/ -*.tmp -*.bak -*.swp -*~.nib -local.properties -.classpath -.settings/ -.loadpath - -# External tool builders -.externalToolBuilders/ - -# Locally stored "Eclipse launch configurations" -*.launch - -# CDT-specific -.cproject - -# PDT-specific -.buildpath - - -################# -## Visual Studio -################# - -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# User-specific files -*.suo -*.user -*.sln.docstates - -# Build results - -[Dd]ebug/ -[Rr]elease/ -x64/ -build/ -[Bb]in/ -[Oo]bj/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -*_i.c -*_p.c -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.log -*.scc - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opensdf -*.sdf -*.cachefile - -# Visual Studio profiler -*.psess -*.vsp -*.vspx - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -*.ncrunch* -.*crunch*.local.xml - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.Publish.xml -*.pubxml - -# NuGet Packages Directory -## TODO: If you have NuGet Package Restore enabled, uncomment the next line -#packages/ - -# Windows Azure Build Output -csx -*.build.csdef - -# Windows Store app package directory -AppPackages/ - -# Others -sql/ -*.Cache -ClientBin/ -[Ss]tyle[Cc]op.* -~$* -*~ -*.dbmdl -*.[Pp]ublish.xml -*.pfx -*.publishsettings - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file to a newer -# Visual Studio version. Backup files are not needed, because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -App_Data/*.mdf -App_Data/*.ldf - -############# -## Windows detritus -############# - -# Windows image file caches -Thumbs.db -ehthumbs.db - -# Folder config file -Desktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Mac crap -.DS_Store - - -############# -## Python -############# - -*.py[co] - -# Packages -*.egg -*.egg-info -dist/ -build/ -eggs/ -parts/ -var/ -sdist/ -develop-eggs/ -.installed.cfg - -# Installer logs -pip-log.txt - -# Unit test / coverage reports -.coverage -.tox - -#Translations -*.mo - -#Mr Developer -.mr.developer.cfg diff --git a/mods/chatplus/README.md b/mods/chatplus/README.md deleted file mode 100644 index a81568f..0000000 --- a/mods/chatplus/README.md +++ /dev/null @@ -1,18 +0,0 @@ -Chatplus --------- - -License: CC-BY-SA to Rubenwardy - -Commands -======== - -* /ignore [name] - ignore a player -* /unignore [name] - unignore a player -* /mail [name] [msg] - message a player (online or offline!) -* /inbox - open your inbox -* /inbox clear - clear your inbox - -HUD -=== - -This mod adds a new message icon to the HUD. If HUDs are not supported, no icon is added. \ No newline at end of file diff --git a/mods/chatplus/init.lua b/mods/chatplus/init.lua deleted file mode 100644 index c208b3b..0000000 --- a/mods/chatplus/init.lua +++ /dev/null @@ -1,364 +0,0 @@ --- Chat Plus --- ========= --- Advanced chat functionality --- ========= - -chatplus = { - log_file = minetest.get_worldpath().."/chatplus-log.txt", - _defsettings = { - log = true, - distance = 0 - } -} - -function chatplus.init() - chatplus.load() - chatplus.clean_players() - - if not chatplus.players then - chatplus.players = {} - end - chatplus.count = 0 - chatplus.loggedin = {} - chatplus._handlers = {} -end - -function chatplus.setting(name) - local get = minetest.setting_get("chatplus_"..name) - if get then - return get - elseif chatplus._defsettings[name]~= nil then - return chatplus._defsettings[name] - else - minetest.log("[Chatplus] Setting chatplus_"..name.." not found!") - return nil - end -end - -function chatplus.load() - -- Initialize the log - if chatplus.setting("log") then - chatplus.log_handle = io.open(chatplus.log_file,"a+") - if not chatplus.log_handle then - minetest.log("error","Unable to open chat plus log file: "..chatplus.log_file) - else - minetest.log("action","Logging chat plus to: "..chatplus.log_file) - end - end - - -- Load player data - minetest.log("[Chatplus] Loading data") - local file = io.open(minetest.get_worldpath().."/chatplus.txt", "r") - if file then - local table = minetest.deserialize(file:read("*all")) - file:close() - if type(table) == "table" then - chatplus.players = table - return - end - end -end - -function chatplus.save() - minetest.log("[Chatplus] Saving data") - - local file = io.open(minetest.get_worldpath().."/chatplus.txt", "w") - if file then - file:write(minetest.serialize(chatplus.players)) - file:close() - end -end - -function chatplus.clean_players() - if not chatplus.players then - chatplus.players = {} - return - end - - minetest.log("[Chatplus] Cleaning player lists") - for key,value in pairs(chatplus.players) do - if value.messages then - value.inbox = value.messages - value.messages = nil - end - - if ( - (not value.inbox or #value.inbox==0) and - (not value.ignore or #value.ignore==0) - ) then - minetest.log("Deleting blank player "..key) - value[key] = nil - end - end - chatplus.save() - minetest.log("[Chatplus] Clean complete") -end - -function chatplus.poke(name,player) - local function check(name,value) - if not chatplus.players[name][value] then - chatplus.players[name][value] = {} - end - end - if not chatplus.players[name] then - chatplus.players[name] = {} - end - check(name,"ignore") - check(name,"messages") - - chatplus.players[name].enabled = true - - if player then - if player=="end" then - chatplus.players[name].enabled = false - chatplus.loggedin[name] = nil - else - if not chatplus.loggedin[name] then - chatplus.loggedin[name] = {} - end - chatplus.loggedin[name].player = player - end - end - - chatplus.save() - - return chatplus.players[name] -end - -function chatplus.register_handler(func,place) - if not place then - table.insert(chatplus._handlers,func) - else - table.insert(chatplus._handlers,place,func) - end -end - -function chatplus.send(from,msg) - -- Log chat message - if chatplus.log_handle ~= nil then - chatplus.log_handle:write( - os.date("%d/%m/%Y %I:%M%p").. - " <"..from.."> ".. - msg.. - "\r\n" - ) - chatplus.log_handle:flush() - end - - -- Loop through senders - for key,value in pairs(chatplus.loggedin) do - local res = nil - for i=1,#chatplus._handlers do - if chatplus._handlers[i] then - res = chatplus._handlers[i](from,key,msg) - - if res ~= nil then - break - end - end - end - if (res == nil or res == true) and key~=from then - minetest.chat_send_player(key,"<"..from.."> "..msg,false) - end - end - - return true -end - --- Minetest callbacks -minetest.register_on_chat_message(chatplus.send) -minetest.register_on_joinplayer(function(player) - local _player = chatplus.poke(player:get_player_name(),player) - - if chatplus.log_handle ~= nil then - chatplus.log_handle:write(os.date("%d/%m/%Y %I:%M%p").." "..player:get_player_name().." joined\r\n") - chatplus.log_handle:flush() - end - - -- inbox stuff! - if _player.inbox and #_player.inbox>0 then - minetest.after(10,minetest.chat_send_player,player:get_player_name(),"("..#_player.inbox..") You have mail! Type /inbox to recieve") - end -end) -minetest.register_on_leaveplayer(function(player) - chatplus.poke(player:get_player_name(),"end") - if chatplus.log_handle ~= nil then - chatplus.log_handle:write(os.date("%d/%m/%Y %I:%M%p").." "..player:get_player_name().." disconnected\r\n") - chatplus.log_handle:flush() - end -end) - --- Init -chatplus.init() - --- Ignoring -chatplus.register_handler(function(from,to,msg) - if chatplus.players[to] and chatplus.players[to].ignore and chatplus.players[to].ignore[from]==true then - return false - end - return nil -end) - -minetest.register_chatcommand("ignore", { - params = "name", - description = "ignore: Ignore a player", - func = function(name, param) - chatplus.poke(name) - if not chatplus.players[name].ignore[param]==true then - chatplus.players[name].ignore[param]=true - minetest.chat_send_player(name,param.." has been ignored") - chatplus.save() - else - minetest.chat_send_player(name,"Player "..param.." is already ignored.") - end - end -}) - -minetest.register_chatcommand("unignore", { - params = "name", - description = "unignore: Unignore a player", - func = function(name, param) - chatplus.poke(name) - if chatplus.players[name].ignore[param]==true then - chatplus.players[name].ignore[param]=false - minetest.chat_send_player(name,param.." has been unignored") - chatplus.save() - else - minetest.chat_send_player(name,"Player "..param.." is already unignored.") - end - end -}) - --- inbox -function chatplus.showInbox(name) - if not chatplus.players[name] then - return false - end - - local player = chatplus.players[name] - - if not player.inbox or #player.inbox==0 then - minetest.chat_send_player(name,"Your inbox is empty!") - return false - end - - minetest.chat_send_player(name,"("..#player.inbox..") You have mail:") - for i=1,#player.inbox do - minetest.chat_send_player(name,player.inbox[i],false) - end - minetest.chat_send_player(name,"("..#player.inbox..")",false) - - return true -end - -minetest.register_chatcommand("inbox", { - params = "clear?", - description = "inbox: print the items in your inbox", - func = function(name, param) - if param == "clear" then - local player = chatplus.poke(name) - player.inbox = {} - chatplus.save() - minetest.chat_send_player(name,"Inbox cleared") - else - chatplus.showInbox(name) - end - end, -}) - -minetest.register_chatcommand("mail", { - params = "name msg", - description = "mail: add a message to a player's inbox", - func = function(name, param) - chatplus.poke(name) - local to, msg = string.match(param, "([%a%d_]+) (.+)") - - if not to or not msg then - minetest.chat_send_player(name,"mail: ",false) - return - end - - minetest.log("To: "..to..", From: "..name..", MSG: "..msg) - if chatplus.log_handle ~= nil then - chatplus.log_handle:write(os.date("%d/%m/%Y %I:%M%p").." To: "..to..", From: "..name..", MSG: "..msg) - chatplus.log_handle:flush() - end - - if chatplus.players[to] then - table.insert(chatplus.players[to].inbox,os.date("%d/%m/%Y %I:%M%p").." <"..name..">: "..msg) - minetest.chat_send_player(name,"Message sent") - chatplus.save() - else - minetest.chat_send_player(name,"Player "..to.." does not exist") - end - end, -}) - -minetest.register_globalstep(function(dtime) - chatplus.count = chatplus.count + dtime - if chatplus.count > 5 then - chatplus.count = 0 - -- loop through player list - for key,value in pairs(chatplus.players) do - if ( - chatplus.loggedin and - chatplus.loggedin[key] and - chatplus.loggedin[key].player and - value and - value.inbox and - chatplus.loggedin[key].player.hud_add and - chatplus.loggedin[key].lastcount ~= #value.inbox - ) then - if chatplus.loggedin[key].msgicon then - chatplus.loggedin[key].player:hud_remove(chatplus.loggedin[key].msgicon) - end - - if chatplus.loggedin[key].msgicon2 then - chatplus.loggedin[key].player:hud_remove(chatplus.loggedin[key].msgicon2) - end - - if #value.inbox>0 then - chatplus.loggedin[key].msgicon = chatplus.loggedin[key].player:hud_add({ - hud_elem_type = "image", - name = "MailIcon", - position = {x=0.52, y=0.52}, - text="chatplus_mail.png", - scale = {x=1,y=1}, - alignment = {x=0.5, y=0.5}, - }) - chatplus.loggedin[key].msgicon2 = chatplus.loggedin[key].player:hud_add({ - hud_elem_type = "text", - name = "MailText", - position = {x=0.55, y=0.52}, - text=#value.inbox, - scale = {x=1,y=1}, - alignment = {x=0.5, y=0.5}, - }) - end - chatplus.loggedin[key].lastcount = #value.inbox - end - end - end -end) - -chatplus.register_handler(function(from,to,msg) - if chatplus.setting("distance") <= 0 then - return nil - end - - local from_o = minetest.get_player_by_name(from) - local to_o = minetest.get_player_by_name(to) - - if not from_o or not to_o then - return nil - end - - if ( - chatplus.setting("distance") ~= 0 and - chatplus.setting("distance") ~= nil and - (vector.distance(from_o:getpos(),to_o:getpos()) > tonumber(chatplus.setting("distance"))) - )then - return false - end - return nil -end) \ No newline at end of file diff --git a/mods/chatplus/textures/chatplus_mail.png b/mods/chatplus/textures/chatplus_mail.png deleted file mode 100644 index b1e5553..0000000 Binary files a/mods/chatplus/textures/chatplus_mail.png and /dev/null differ