{"action":"created","issue":{"url":"https://api.github.com/repos/minetest/minetest/issues/4577","repository_url":"https://api.github.com/repos/minetest/minetest","labels_url":"https://api.github.com/repos/minetest/minetest/issues/4577/labels{/name}","comments_url":"https://api.github.com/repos/minetest/minetest/issues/4577/comments","events_url":"https://api.github.com/repos/minetest/minetest/issues/4577/events","html_url":"https://github.com/minetest/minetest/pull/4577","id":181205385,"number":4577,"title":"Client-side mods","user":{"login":"duckbrain","id":587790,"avatar_url":"https://avatars.githubusercontent.com/u/587790?v=3","gravatar_id":"","url":"https://api.github.com/users/duckbrain","html_url":"https://github.com/duckbrain","followers_url":"https://api.github.com/users/duckbrain/followers","following_url":"https://api.github.com/users/duckbrain/following{/other_user}","gists_url":"https://api.github.com/users/duckbrain/gists{/gist_id}","starred_url":"https://api.github.com/users/duckbrain/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/duckbrain/subscriptions","organizations_url":"https://api.github.com/users/duckbrain/orgs","repos_url":"https://api.github.com/users/duckbrain/repos","events_url":"https://api.github.com/users/duckbrain/events{/privacy}","received_events_url":"https://api.github.com/users/duckbrain/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/minetest/minetest/labels/@%20Client%20/%20Audiovisuals","name":"@ Client / Audiovisuals","color":"009800"},{"url":"https://api.github.com/repos/minetest/minetest/labels/@%20Script%20API","name":"@ Script API","color":"009800"},{"url":"https://api.github.com/repos/minetest/minetest/labels/Enhancement","name":"Enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/minetest/minetest/labels/WIP","name":"WIP","color":"aa3000"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":28,"created_at":"2016-10-05T16:36:33Z","updated_at":"2016-10-24T14:47:48Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/minetest/minetest/pulls/4577","html_url":"https://github.com/minetest/minetest/pull/4577","diff_url":"https://github.com/minetest/minetest/pull/4577.diff","patch_url":"https://github.com/minetest/minetest/pull/4577.patch"},"body":"This adds client-side scripting to minetest. Scripts located in the `client` directory are transferred with media, and an `init.lua` file is run for each, mod. Client-side mods are always run in the secure environment and are only able to access the builtin scripts and the in-memory scripts transferred from the server.\r\n\r\nIn the current state, these mods are not useful (unless you only want to print to the user's terminal), but it is ready to have API's added that allow client-side prediction, input handling, messaging with the server, and many other features.\r\n\r\nThe benefit to getting this merged early, is it allows others to start working on API's.\r\n\r\nPart of #3440 \r\n\r\nThis is WIP, because I realized changing the in-memory modpath, currently in the format of `<modname>/<filename.lua>` to `<modname>/client/<filename.lua>` would allow code like the following to work on the server or the client:\r\n\r\n```lua\r\ndofile(core.get_modpath(\"modtest\") .. \"/client/secondary-file.lua\")\r\n```"},"comment":{"url":"https://api.github.com/repos/minetest/minetest/issues/comments/255761959","html_url":"https://github.com/minetest/minetest/pull/4577#issuecomment-255761959","issue_url":"https://api.github.com/repos/minetest/minetest/issues/4577","id":255761959,"user":{"login":"duckbrain","id":587790,"avatar_url":"https://avatars.githubusercontent.com/u/587790?v=3","gravatar_id":"","url":"https://api.github.com/users/duckbrain","html_url":"https://github.com/duckbrain","followers_url":"https://api.github.com/users/duckbrain/followers","following_url":"https://api.github.com/users/duckbrain/following{/other_user}","gists_url":"https://api.github.com/users/duckbrain/gists{/gist_id}","starred_url":"https://api.github.com/users/duckbrain/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/duckbrain/subscriptions","organizations_url":"https://api.github.com/users/duckbrain/orgs","repos_url":"https://api.github.com/users/duckbrain/repos","events_url":"https://api.github.com/users/duckbrain/events{/privacy}","received_events_url":"https://api.github.com/users/duckbrain/received_events","type":"User","site_admin":false},"created_at":"2016-10-24T14:47:48Z","updated_at":"2016-10-24T14:47:48Z","body":"@raymoo Thank you for clarifying.\r\n\r\n@est31 Done and re-squashed. I hope\r\n \r\n> Enable Client-side Mods \\*Expiremental\\* may be removed or changed in future versions\r\n\r\nis okay for the friendly name. It's kind of long, but the \"Experimental\" is towards the beginning of the message.\r\n\r\n@rubenwardy There is some arguable benefit of limiting the scope to where it is needed, but I'm with you on keeping it easier to read."}}
{"actor":{"display_login":"duckbrain"}}