Browse Source

Merge branch 'master' into settings

pull/6/head
Pierre-Adrien Langrognet GitHub 3 years ago
parent
commit
d580e0e974
34 changed files with 822 additions and 4 deletions
  1. +4
    -0
      .gitignore
  2. +2
    -0
      moremesecons_adjustable_blinkyplant/depends.txt
  3. +8
    -2
      moremesecons_adjustable_blinkyplant/init.lua
  4. +1
    -0
      moremesecons_adjustable_player_detector/depends.txt
  5. +1
    -0
      moremesecons_commandblock/depends.txt
  6. +1
    -0
      moremesecons_conductor_signalchanger/depends.txt
  7. +1
    -0
      moremesecons_dual_delayer/depends.txt
  8. +1
    -0
      moremesecons_entity_detector/depends.txt
  9. +1
    -0
      moremesecons_igniter/depends.txt
  10. +3
    -0
      moremesecons_induction_transmitter/depends.txt
  11. +104
    -0
      moremesecons_induction_transmitter/init.lua
  12. +1
    -0
      moremesecons_injector_controller/depends.txt
  13. +1
    -0
      moremesecons_jammer/depends.txt
  14. +1
    -0
      moremesecons_luablock/depends.txt
  15. +41
    -0
      moremesecons_luablock/init.lua
  16. +34
    -0
      moremesecons_luablock/md5_lua/.travis.yml
  17. +5
    -0
      moremesecons_luablock/md5_lua/CHANGELOG.md
  18. +20
    -0
      moremesecons_luablock/md5_lua/MIT-LICENSE.txt
  19. +55
    -0
      moremesecons_luablock/md5_lua/README.md
  20. +396
    -0
      moremesecons_luablock/md5_lua/md5.lua
  21. +21
    -0
      moremesecons_luablock/md5_lua/rockspecs/md5-1.0-0.rockspec
  22. +21
    -0
      moremesecons_luablock/md5_lua/rockspecs/md5-1.0-1.rockspec
  23. +21
    -0
      moremesecons_luablock/md5_lua/rockspecs/md5-1.0-2.rockspec
  24. +21
    -0
      moremesecons_luablock/md5_lua/rockspecs/md5-1.1-0.rockspec
  25. +40
    -0
      moremesecons_luablock/md5_lua/spec/md5_spec.lua
  26. +1
    -0
      moremesecons_playerkiller/depends.txt
  27. +1
    -0
      moremesecons_sayer/depends.txt
  28. +1
    -0
      moremesecons_signalchanger/depends.txt
  29. +2
    -1
      moremesecons_switchtorch/depends.txt
  30. +1
    -0
      moremesecons_teleporter/depends.txt
  31. +1
    -0
      moremesecons_timegate/depends.txt
  32. +4
    -1
      moremesecons_utils/init.lua
  33. +1
    -0
      moremesecons_wireless/depends.txt
  34. +5
    -0
      settingtypes.txt

+ 4
- 0
.gitignore View File

@@ -1,3 +1,7 @@
## Generic ignorable patterns and files
*~
debug.txt

## Eclipse project files & directories
.project
.settings

+ 2
- 0
moremesecons_adjustable_blinkyplant/depends.txt View File

@@ -1 +1,3 @@
mesecons
moremesecons_utils
craft_guide?

+ 8
- 2
moremesecons_adjustable_blinkyplant/init.lua View File

@@ -4,7 +4,11 @@ local toggle_timer = function (pos, restart)
and not restart then
timer:stop()
else
timer:start(tonumber(minetest.get_meta(pos):get_string("interval")) or 0)
local interval = tonumber(minetest.get_meta(pos):get_string("interval")) or 1
if interval < moremesecons.setting("adjustable_blinky_plant", "min_interval", 0.5) then
interval = moremesecons.setting("adjustable_blinky_plant", "min_interval", 0.5)
end
timer:start(interval)
end
end

@@ -30,7 +34,9 @@ mesecon.register_node("moremesecons_adjustable_blinkyplant:adjustable_blinky_pla
},
on_timer = on_timer,
on_construct = function(pos)
minetest.get_meta(pos):set_string("formspec", "field[interval;interval;${interval}]")
local meta = minetest.get_meta(pos)
meta:set_string("interval", "1")
meta:set_string("formspec", "field[interval;interval;${interval}]")
toggle_timer(pos, true)
end,
on_receive_fields = function(pos, _, fields, player)


+ 1
- 0
moremesecons_adjustable_player_detector/depends.txt View File

@@ -1 +1,2 @@
mesecons
craft_guide?

+ 1
- 0
moremesecons_commandblock/depends.txt View File

@@ -1,2 +1,3 @@
mesecons
moremesecons_utils
craft_guide?

+ 1
- 0
moremesecons_conductor_signalchanger/depends.txt View File

@@ -1 +1,2 @@
mesecons
craft_guide?

+ 1
- 0
moremesecons_dual_delayer/depends.txt View File

@@ -1 +1,2 @@
mesecons
craft_guide?

+ 1
- 0
moremesecons_entity_detector/depends.txt View File

@@ -1 +1,2 @@
mesecons
craft_guide?

+ 1
- 0
moremesecons_igniter/depends.txt View File

@@ -1,2 +1,3 @@
mesecons
fire
craft_guide?

+ 3
- 0
moremesecons_induction_transmitter/depends.txt View File

@@ -0,0 +1,3 @@
mesecons
mesecons_torch
default

+ 104
- 0
moremesecons_induction_transmitter/init.lua View File

@@ -0,0 +1,104 @@
local function induction_transmitter_get_input_rules(node)
-- All horizontal rules, except the output
local rules = {
{x=-1,y=0,z=0},
{x=1,y=0,z=0},
{x=0,y=0,z=-1},
{x=0,y=0,z=1}
}
for i, r in ipairs(rules) do
if vector.equals(r, minetest.facedir_to_dir(node.param2)) then
table.remove(rules, i)
end
end
return rules
end

local function induction_transmitter_get_output_rules(node)
return {vector.multiply(minetest.facedir_to_dir(node.param2), 2)}
end

local function induction_transmitter_get_virtual_output_rules(node)
return {minetest.facedir_to_dir(node.param2)}
end

local function act(pos, node, state)
minetest.swap_node(pos, {name = "moremesecons_induction_transmitter:induction_transmitter_"..state, param2 = node.param2})

local dir = minetest.facedir_to_dir(node.param2)
local target_pos = vector.add(pos, vector.multiply(dir, 2))
local target_node = minetest.get_node(target_pos)
if mesecon.is_effector(target_node.name) then
-- Switch on an aside node, so it sends a signal to the target node
local aside_rule = mesecon.effector_get_rules(target_node)[1]
if not aside_rule then
return
end
mesecon["receptor_"..state](vector.add(target_pos, aside_rule), {vector.multiply(aside_rule, -1)})
elseif mesecon.is_conductor(target_node.name) then
-- Switch on the conductor itself
mesecon["receptor_"..state](target_pos, mesecon.conductor_get_rules(target_node))
end
end

mesecon.register_node("moremesecons_induction_transmitter:induction_transmitter", {
description = "Induction Transmitter",
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, 0.125, 0.5, 0.5, 0.5},
{-0.375, -0.375, -0.1875, 0.375, 0.375, 0.125},
{-0.25, -0.25, -0.5, 0.25, 0.25, -0.1875},
}
},
selection_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, 0.125, 0.5, 0.5, 0.5},
{-0.375, -0.375, -0.1875, 0.375, 0.375, 0.125},
{-0.25, -0.25, -0.5, 0.25, 0.25, -0.1875},
},
},
}, {
tiles = {"default_mese_block.png"},
groups = {cracky = 3},
mesecons = {
receptor = {
state = mesecon.state.off,
rules = induction_transmitter_get_output_rules
},
effector = {
rules = induction_transmitter_get_input_rules,
action_on = function(pos, node)
act(pos, node, "on")
end
}
}
}, {
light_source = 5,
tiles = {"default_mese_block.png^[brighten"},
groups = {cracky = 3, not_in_creative_inventory = 1},
mesecons = {
receptor = {
state = mesecon.state.on,
rules = induction_transmitter_get_output_rules
},
effector = {
rules = induction_transmitter_get_input_rules,
action_off = function(pos, node)
act(pos, node, "off")
end
}
}
})

minetest.register_craft({
output = "moremesecons_induction_transmitter:induction_transmitter_off",
recipe = {
{"default:mese_crystal_fragment", "mesecons_torch:mesecon_torch_on", "default:mese_crystal_fragment"},
{"", "default:mese_crystal_fragment", ""}
}
})

+ 1
- 0
moremesecons_injector_controller/depends.txt View File

@@ -1 +1,2 @@
mesecons
craft_guide?

+ 1
- 0
moremesecons_jammer/depends.txt View File

@@ -1,2 +1,3 @@
mesecons
moremesecons_utils
craft_guide?

+ 1
- 0
moremesecons_luablock/depends.txt View File

@@ -1 +1,2 @@
mesecons
moremesecons_utils

+ 41
- 0
moremesecons_luablock/init.lua View File

@@ -1,3 +1,39 @@
local hash_table
local md5
local storage
if minetest.get_mod_storage then
md5 = dofile(minetest.get_modpath(minetest.get_current_modname()).."/md5_lua/md5.lua")
storage = minetest.get_mod_storage()
hash_table = minetest.deserialize(storage:get_string("hash_table")) or {}
else
minetest.log("warning", "[moremesecons_luablock] Your version of Minetest does not provide a mod storage API. The mod storage allows moremesecons_luablock to store md5 checksums, which avoids some potential security breaches.")
end

local function set_md5(pos, code)
if not hash_table then
return
end
vector.set_data_to_pos(hash_table, pos.z,pos.y,pos.x, md5.sum(code))
storage:set_string("hash_table", minetest.serialize(hash_table))
end

local function check_md5(pos, code)
if not hash_table then
return true
end
local stored_sum = vector.get_data_from_pos(hash_table, pos.z,pos.y,pos.x)
if not stored_sum then
-- Legacy
set_md5(pos, code)
return true
end
if md5.sum(code) ~= stored_sum then
return false
end
return true
end


local function make_formspec(meta, pos)
local code = meta:get_string("code")
local errmsg = minetest.formspec_escape(meta:get_string("errmsg"))
@@ -74,6 +110,7 @@ minetest.register_node("moremesecons_luablock:luablock", {
end

meta:set_string("code", fields.code)
set_md5(pos, fields.code)
make_formspec(meta, pos)
end,
can_dig = function(pos, player)
@@ -87,6 +124,10 @@ minetest.register_node("moremesecons_luablock:luablock", {
if code == "" then
return
end
if not check_md5(npos, code) then
minetest.log("warning", "[moremesecons_luablock] Code of LuaBlock at pos "..minetest.pos_to_string(npos).." does not match with its md5 checksum!")
return
end
-- We do absolutely no check there.
-- There is no limitation in the number of instruction the LuaBlock can execute
-- or the usage it can make of loops.


+ 34
- 0
moremesecons_luablock/md5_lua/.travis.yml View File

@@ -0,0 +1,34 @@
language: python
sudo: false

env:
- LUA="lua=5.1"
- LUA="lua=5.2"
- LUA="lua=5.3"
- LUA="luajit=2.0"
- LUA="luajit=2.1"

before_install:
- pip install hererocks
- hererocks lua_install -r^ --$LUA
- export PATH=$PATH:$PWD/lua_install/bin # Add directory with all installed binaries to PATH

install:
- luarocks install busted
- luarocks install luacov
- luarocks install luacov-coveralls

script:
- busted --verbose --coverage

after_success:
- luacov-coveralls --exclude $TRAVIS_BUILD_DIR/lua_install

branches:
except:
- gh-pages

notifications:
email:
on_success: change
on_failure: always

+ 5
- 0
moremesecons_luablock/md5_lua/CHANGELOG.md View File

@@ -0,0 +1,5 @@

# 1.1.0

* Fixes error with long strings in Lua 5.1 (@pgimeno)
* Adds incremental mode (@pgimeno)

+ 20
- 0
moremesecons_luablock/md5_lua/MIT-LICENSE.txt View File

@@ -0,0 +1,20 @@
Copyright (c) 2013 Enrique García Cota + Adam Baldwin + hanzao + Equi 4 Software

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ 55
- 0
moremesecons_luablock/md5_lua/README.md View File

@@ -0,0 +1,55 @@
md5.lua [![Build Status](https://travis-ci.org/kikito/md5.lua.svg)](https://travis-ci.org/kikito/md5.lua)
=========================================================================================================

This pure-Lua module computes md5 in Lua 5.1, Lua 5.2 and LuaJIT, using native bit-manipulation libraries when available, and falling back to table-based manipulation of integers in 5.1.

It implements md5.sum and md5.sumhex like the [kernel project md5 package](http://www.keplerproject.org/md5/), but it's done completely in Lua, with no dependencies on other libs or C files.

Usage
=====

Simple example:

local md5 = require 'md5'

local md5_as_data = md5.sum(message) -- returns raw bytes
local md5_as_hex = md5.sumhexa(message) -- returns a hex string
local md5_as_hex2 = md5.tohex(md5_as_data) -- returns the same string as md5_as_hex

Incremental example (for computing md5 of streams, or big files which have to be loaded in chunks - new since 1.1.0):

local m = md5.new()
m:update('some bytes')
m:update('some more bytes')
m:update('etc')
return md5.tohex(m:finish())

Credits
=======

This is a cleanup of an implementation by Adam Baldwin - https://gist.github.com/evilpacket/3647908

Which in turn was a mix of the bitwise lib, http://luaforge.net/projects/bit/ by hanzhao (`abrash_han - at - hotmail.com`),
and http://equi4.com/md5/md5calc.lua, by Equi 4 Software.

Lua 5.2 and LuaJIT compatibility by [Positive07](https://github.com/kikito/md5.lua/pull/2)

A very important fix and the incremental variant by [pgimeno](https://github.com/kikito/md5.lua/pull/10)


License
=======

This library, as well as all the previous ones in which is based, is released under the MIT license (See license file for details).

Specs
=====

The specs for this library are implemented with [busted](http://ovinelabs.com/busted/). In order to run them, install busted and then:

cd path/to/where/the/spec/folder/is
busted





+ 396
- 0
moremesecons_luablock/md5_lua/md5.lua View File

@@ -0,0 +1,396 @@
local md5 = {
_VERSION = "md5.lua 1.1.0",
_DESCRIPTION = "MD5 computation in Lua (5.1-3, LuaJIT)",
_URL = "https://github.com/kikito/md5.lua",
_LICENSE = [[
MIT LICENSE

Copyright (c) 2013 Enrique García Cota + Adam Baldwin + hanzao + Equi 4 Software

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
]]
}

-- bit lib implementions

local char, byte, format, rep, sub =
string.char, string.byte, string.format, string.rep, string.sub
local bit_or, bit_and, bit_not, bit_xor, bit_rshift, bit_lshift

local ok, bit = pcall(require, 'bit')
if ok then
bit_or, bit_and, bit_not, bit_xor, bit_rshift, bit_lshift = bit.bor, bit.band, bit.bnot, bit.bxor, bit.rshift, bit.lshift
else
ok, bit = pcall(require, 'bit32')

if ok then

bit_not = bit.bnot

local tobit = function(n)
return n <= 0x7fffffff and n or -(bit_not(n) + 1)
end

local normalize = function(f)
return function(a,b) return tobit(f(tobit(a), tobit(b))) end
end

bit_or, bit_and, bit_xor = normalize(bit.bor), normalize(bit.band), normalize(bit.bxor)
bit_rshift, bit_lshift = normalize(bit.rshift), normalize(bit.lshift)

else

local function tbl2number(tbl)
local result = 0
local power = 1
for i = 1, #tbl do
result = result + tbl[i] * power
power = power * 2
end
return result
end

local function expand(t1, t2)
local big, small = t1, t2
if(#big < #small) then
big, small = small, big
end
-- expand small
for i = #small + 1, #big do
small[i] = 0
end
end

local to_bits -- needs to be declared before bit_not

bit_not = function(n)
local tbl = to_bits(n)
local size = math.max(#tbl, 32)
for i = 1, size do
if(tbl[i] == 1) then
tbl[i] = 0
else
tbl[i] = 1
end
end
return tbl2number(tbl)
end

-- defined as local above
to_bits = function (n)
if(n < 0) then
-- negative
return to_bits(bit_not(math.abs(n)) + 1)
end
-- to bits table
local tbl = {}
local cnt = 1
local last
while n > 0 do
last = n % 2
tbl[cnt] = last
n = (n-last)/2
cnt = cnt + 1
end

return tbl
end

bit_or = function(m, n)
local tbl_m = to_bits(m)
local tbl_n = to_bits(n)
expand(tbl_m, tbl_n)

local tbl = {}
for i = 1, #tbl_m do
if(tbl_m[i]== 0 and tbl_n[i] == 0) then
tbl[i] = 0
else
tbl[i] = 1
end
end

return tbl2number(tbl)
end

bit_and = function(m, n)
local tbl_m = to_bits(m)
local tbl_n = to_bits(n)
expand(tbl_m, tbl_n)

local tbl = {}
for i = 1, #tbl_m do
if(tbl_m[i]== 0 or tbl_n[i] == 0) then
tbl[i] = 0
else
tbl[i] = 1
end
end

return tbl2number(tbl)
end

bit_xor = function(m, n)
local tbl_m = to_bits(m)
local tbl_n = to_bits(n)
expand(tbl_m, tbl_n)

local tbl = {}
for i = 1, #tbl_m do
if(tbl_m[i] ~= tbl_n[i]) then
tbl[i] = 1
else
tbl[i] = 0
end
end

return tbl2number(tbl)
end

bit_rshift = function(n, bits)
local high_bit = 0
if(n < 0) then
-- negative
n = bit_not(math.abs(n)) + 1
high_bit = 0x80000000
end

local floor = math.floor

for i=1, bits do
n = n/2
n = bit_or(floor(n), high_bit)
end
return floor(n)
end

bit_lshift = function(n, bits)
if(n < 0) then
-- negative
n = bit_not(math.abs(n)) + 1
end

for i=1, bits do
n = n*2
end
return bit_and(n, 0xFFFFFFFF)
end
end
end

-- convert little-endian 32-bit int to a 4-char string
local function lei2str(i)
local f=function (s) return char( bit_and( bit_rshift(i, s), 255)) end
return f(0)..f(8)..f(16)..f(24)
end

-- convert raw string to big-endian int
local function str2bei(s)
local v=0
for i=1, #s do
v = v * 256 + byte(s, i)
end
return v
end

-- convert raw string to little-endian int
local function str2lei(s)
local v=0
for i = #s,1,-1 do
v = v*256 + byte(s, i)
end
return v
end

-- cut up a string in little-endian ints of given size
local function cut_le_str(s,...)
local o, r = 1, {}
local args = {...}
for i=1, #args do
table.insert(r, str2lei(sub(s, o, o + args[i] - 1)))
o = o + args[i]
end
return r
end

local swap = function (w) return str2bei(lei2str(w)) end

-- An MD5 mplementation in Lua, requires bitlib (hacked to use LuaBit from above, ugh)
-- 10/02/2001 jcw@equi4.com

local CONSTS = {
0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee,
0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501,
0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be,
0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821,
0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa,
0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8,
0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed,
0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a,
0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c,
0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70,
0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05,
0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665,
0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039,
0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1,
0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1,
0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391,
0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476
}

local f=function (x,y,z) return bit_or(bit_and(x,y),bit_and(-x-1,z)) end
local g=function (x,y,z) return bit_or(bit_and(x,z),bit_and(y,-z-1)) end
local h=function (x,y,z) return bit_xor(x,bit_xor(y,z)) end
local i=function (x,y,z) return bit_xor(y,bit_or(x,-z-1)) end
local z=function (ff,a,b,c,d,x,s,ac)
a=bit_and(a+ff(b,c,d)+x+ac,0xFFFFFFFF)
-- be *very* careful that left shift does not cause rounding!
return bit_or(bit_lshift(bit_and(a,bit_rshift(0xFFFFFFFF,s)),s),bit_rshift(a,32-s))+b
end

local function transform(A,B,C,D,X)
local a,b,c,d=A,B,C,D
local t=CONSTS

a=z(f,a,b,c,d,X[ 0], 7,t[ 1])
d=z(f,d,a,b,c,X[ 1],12,t[ 2])
c=z(f,c,d,a,b,X[ 2],17,t[ 3])
b=z(f,b,c,d,a,X[ 3],22,t[ 4])
a=z(f,a,b,c,d,X[ 4], 7,t[ 5])
d=z(f,d,a,b,c,X[ 5],12,t[ 6])
c=z(f,c,d,a,b,X[ 6],17,t[ 7])
b=z(f,b,c,d,a,X[ 7],22,t[ 8])
a=z(f,a,b,c,d,X[ 8], 7,t[ 9])
d=z(f,d,a,b,c,X[ 9],12,t[10])
c=z(f,c,d,a,b,X[10],17,t[11])
b=z(f,b,c,d,a,X[11],22,t[12])
a=z(f,a,b,c,d,X[12], 7,t[13])
d=z(f,d,a,b,c,X[13],12,t[14])
c=z(f,c,d,a,b,X[14],17,t[15])
b=z(f,b,c,d,a,X[15],22,t[16])

a=z(g,a,b,c,d,X[ 1], 5,t[17])
d=z(g,d,a,b,c,X[ 6], 9,t[18])
c=z(g,c,d,a,b,X[11],14,t[19])
b=z(g,b,c,d,a,X[ 0],20,t[20])
a=z(g,a,b,c,d,X[ 5], 5,t[21])
d=z(g,d,a,b,c,X[10], 9,t[22])
c=z(g,c,d,a,b,X[15],14,t[23])
b=z(g,b,c,d,a,X[ 4],20,t[24])
a=z(g,a,b,c,d,X[ 9], 5,t[25])
d=z(g,d,a,b,c,X[14], 9,t[26])
c=z(g,c,d,a,b,X[ 3],14,t[27])
b=z(g,b,c,d,a,X[ 8],20,t[28])
a=z(g,a,b,c,d,X[13], 5,t[29])
d=z(g,d,a,b,c,X[ 2], 9,t[30])
c=z(g,c,d,a,b,X[ 7],14,t[31])
b=z(g,b,c,d,a,X[12],20,t[32])

a=z(h,a,b,c,d,X[ 5], 4,t[33])
d=z(h,d,a,b,c,X[ 8],11,t[34])
c=z(h,c,d,a,b,X[11],16,t[35])
b=z(h,b,c,d,a,X[14],23,t[36])
a=z(h,a,b,c,d,X[ 1], 4,t[37])
d=z(h,d,a,b,c,X[ 4],11,t[38])
c=z(h,c,d,a,b,X[ 7],16,t[39])
b=z(h,b,c,d,a,X[10],23,t[40])
a=z(h,a,b,c,d,X[13], 4,t[41])
d=z(h,d,a,b,c,X[ 0],11,t[42])
c=z(h,c,d,a,b,X[ 3],16,t[43])
b=z(h,b,c,d,a,X[ 6],23,t[44])
a=z(h,a,b,c,d,X[ 9], 4,t[45])
d=z(h,d,a,b,c,X[12],11,t[46])
c=z(h,c,d,a,b,X[15],16,t[47])
b=z(h,b,c,d,a,X[ 2],23,t[48])

a=z(i,a,b,c,d,X[ 0], 6,t[49])
d=z(i,d,a,b,c,X[ 7],10,t[50])
c=z(i,c,d,a,b,X[14],15,t[51])
b=z(i,b,c,d,a,X[ 5],21,t[52])
a=z(i,a,b,c,d,X[12], 6,t[53])
d=z(i,d,a,b,c,X[ 3],10,t[54])
c=z(i,c,d,a,b,X[10],15,t[55])
b=z(i,b,c,d,a,X[ 1],21,t[56])
a=z(i,a,b,c,d,X[ 8], 6,t[57])
d=z(i,d,a,b,c,X[15],10,t[58])
c=z(i,c,d,a,b,X[ 6],15,t[59])
b=z(i,b,c,d,a,X[13],21,t[60])
a=z(i,a,b,c,d,X[ 4], 6,t[61])
d=z(i,d,a,b,c,X[11],10,t[62])
c=z(i,c,d,a,b,X[ 2],15,t[63])
b=z(i,b,c,d,a,X[ 9],21,t[64])

return bit_and(A+a,0xFFFFFFFF),bit_and(B+b,0xFFFFFFFF),
bit_and(C+c,0xFFFFFFFF),bit_and(D+d,0xFFFFFFFF)
end

----------------------------------------------------------------

local function md5_update(self, s)
self.pos = self.pos + #s
s = self.buf .. s
for ii = 1, #s - 63, 64 do
local X = cut_le_str(sub(s,ii,ii+63),4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4)
assert(#X == 16)
X[0] = table.remove(X,1) -- zero based!
self.a,self.b,self.c,self.d = transform(self.a,self.b,self.c,self.d,X)
end
self.buf = sub(s, math.floor(#s/64)*64 + 1, #s)
return self
end

local function md5_finish(self)
local msgLen = self.pos
local padLen = 56 - msgLen % 64

if msgLen % 64 > 56 then padLen = padLen + 64 end

if padLen == 0 then padLen = 64 end

local s = char(128) .. rep(char(0),padLen-1) .. lei2str(bit_and(8*msgLen, 0xFFFFFFFF)) .. lei2str(math.floor(msgLen/0x20000000))
md5_update(self, s)

assert(self.pos % 64 == 0)
return lei2str(self.a) .. lei2str(self.b) .. lei2str(self.c) .. lei2str(self.d)
end

----------------------------------------------------------------

function md5.new()
return { a = CONSTS[65], b = CONSTS[66], c = CONSTS[67], d = CONSTS[68],
pos = 0,
buf = '',
update = md5_update,
finish = md5_finish }
end

function md5.tohex(s)
return format("%08x%08x%08x%08x", str2bei(sub(s, 1, 4)), str2bei(sub(s, 5, 8)), str2bei(sub(s, 9, 12)), str2bei(sub(s, 13, 16)))
end

function md5.sum(s)
return md5.new():update(s):finish()
end

function md5.sumhexa(s)
return md5.tohex(md5.sum(s))
end

return md5

+ 21
- 0
moremesecons_luablock/md5_lua/rockspecs/md5-1.0-0.rockspec View File

@@ -0,0 +1,21 @@
package = "md5"
version = "1.0-0"
source = {
url = "https://github.com/kikito/md5.lua/archive/v1.0.0.tar.gz",
dir = "md5.lua-1.0.0"
}
description = {
summary = "MD5 sum in pure Lua, with no C and no external dependencies",
detailed = "This pure-Lua module computes md5 in Lua 5.1, Lua 5.2 and LuaJIT, using native bit-manipulation libraries when available, and falling back to table-based manipulation of integers in 5.1",
homepage = "https://github.com/kikito/md5.lua",
license = "MIT"
}
dependencies = {
"lua >= 5.1"
}
build = {
type = "builtin",
modules = {
md5 = "md5.lua"
}
}

+ 21
- 0
moremesecons_luablock/md5_lua/rockspecs/md5-1.0-1.rockspec View File

@@ -0,0 +1,21 @@
package = "md5"
version = "1.0-1"
source = {
url = "https://github.com/kikito/md5.lua/archive/v1.0.1.tar.gz",
dir = "md5.lua-1.0.1"
}
description = {
summary = "MD5 sum in pure Lua, with no C and no external dependencies",
detailed = "This pure-Lua module computes md5 in Lua 5.1, Lua 5.2 and LuaJIT, using native bit-manipulation libraries when available, and falling back to table-based manipulation of integers in 5.1",
homepage = "https://github.com/kikito/md5.lua",
license = "MIT"
}
dependencies = {
"lua >= 5.1"
}
build = {
type = "builtin",
modules = {
md5 = "md5.lua"
}
}

+ 21
- 0
moremesecons_luablock/md5_lua/rockspecs/md5-1.0-2.rockspec View File

@@ -0,0 +1,21 @@
package = "md5"
version = "1.0-2"
source = {
url = "https://github.com/kikito/md5.lua/archive/v1.0.2.tar.gz",
dir = "md5.lua-1.0.2"
}
description = {
summary = "MD5 sum in pure Lua, with no C and no external dependencies",
detailed = "This pure-Lua module computes md5 in Lua 5.1, Lua 5.2 and LuaJIT, using native bit-manipulation libraries when available, and falling back to table-based manipulation of integers in 5.1",
homepage = "https://github.com/kikito/md5.lua",
license = "MIT"
}
dependencies = {
"lua >= 5.1"
}
build = {
type = "builtin",
modules = {
md5 = "md5.lua"
}
}

+ 21
- 0
moremesecons_luablock/md5_lua/rockspecs/md5-1.1-0.rockspec View File

@@ -0,0 +1,21 @@
package = "md5"
version = "1.1-0"
source = {
url = "https://github.com/kikito/md5.lua/archive/v1.1.0.tar.gz",
dir = "md5.lua-1.1.0"
}
description = {
summary = "MD5 sum in pure Lua, with no C and no external dependencies",
detailed = "This pure-Lua module computes md5 in Lua 5.1, Lua 5.2 and LuaJIT, using native bit-manipulation libraries when available, and falling back to table-based manipulation of integers in 5.1",
homepage = "https://github.com/kikito/md5.lua",
license = "MIT"
}
dependencies = {
"lua >= 5.1"
}
build = {
type = "builtin",
modules = {
md5 = "md5.lua"
}
}

+ 40
- 0
moremesecons_luablock/md5_lua/spec/md5_spec.lua View File

@@ -0,0 +1,40 @@
local md5 = require('md5')

local function hex2bin(hex)
local result, _ = hex:gsub('..', function(hexval)
return string.char(tonumber(hexval, 16))
end)
return result
end

describe('md5', function()
describe('md5.sumhexa', function()
it('works', function()
assert.equal(md5.sumhexa("asdf"), '912ec803b2ce49e4a541068d495ab570')
assert.equal(md5.sumhexa('The quick brown fox jumps over the lazy dog'), '9e107d9d372bb6826bd81d3542a419d6')
assert.equal(md5.sumhexa('The quick brown fox jumps over the lazy dog.'), 'e4d909c290d0fb1ca068ffaddf22cbd0')
assert.equal(md5.sumhexa(''), 'd41d8cd98f00b204e9800998ecf8427e')
assert.equal(md5.sumhexa(('1'):rep(824)), 'a126fd3611ab8d9b7e8a3384e2fa78a0')
assert.equal(md5.sumhexa(('1'):rep(1528)), '3750b6a29d923b633e05d6ae76895664')
local state = md5.new()
state:update('Hello')
state:update(', World!')
assert.equal(md5.tohex(state:finish()), '65a8e27d8879283831b664bd8b7f0ad4')
end)
end)

describe('md5.sum', function()
it('works', function()
assert.equal(md5.sum("asdf"), hex2bin '912ec803b2ce49e4a541068d495ab570')
assert.equal(md5.sum('The quick brown fox jumps over the lazy dog'), hex2bin '9e107d9d372bb6826bd81d3542a419d6')
assert.equal(md5.sum('The quick brown fox jumps over the lazy dog.'), hex2bin 'e4d909c290d0fb1ca068ffaddf22cbd0')
assert.equal(md5.sum(''), hex2bin 'd41d8cd98f00b204e9800998ecf8427e')
assert.equal(md5.sum(('1'):rep(824)), hex2bin 'a126fd3611ab8d9b7e8a3384e2fa78a0')
assert.equal(md5.sum(('1'):rep(1528)), hex2bin '3750b6a29d923b633e05d6ae76895664')
local state = md5.new()
state:update('Hello')
state:update(', World!')
assert.equal(state:finish(), hex2bin '65a8e27d8879283831b664bd8b7f0ad4')
end)
end)
end)

+ 1
- 0
moremesecons_playerkiller/depends.txt View File

@@ -1,3 +1,4 @@
mesecons
mesecons_materials
moremesecons_utils
craft_guide?

+ 1
- 0
moremesecons_sayer/depends.txt View File

@@ -2,3 +2,4 @@ mesecons
mesecons_noteblock
moremesecons_utils
default
craft_guide?

+ 1
- 0
moremesecons_signalchanger/depends.txt View File

@@ -1 +1,2 @@
mesecons
craft_guide?

+ 2
- 1
moremesecons_switchtorch/depends.txt View File

@@ -1 +1,2 @@
mesecons
mesecons
craft_guide?

+ 1
- 0
moremesecons_teleporter/depends.txt View File

@@ -1,2 +1,3 @@
mesecons
moremesecons_utils
craft_guide?

+ 1
- 0
moremesecons_timegate/depends.txt View File

@@ -1 +1,2 @@
mesecons
craft_guide?

+ 4
- 1
moremesecons_utils/init.lua View File

@@ -13,7 +13,10 @@ function moremesecons.setting(modname, settingname, default, min)
return minetest.settings:get(setting) or default
elseif type(default) == "number" then
local ret = tonumber(minetest.settings:get(setting)) or default
if ret ~= ret then -- NaN
if not ret then
minetest.log("warning", "[moremesecons_"..modname.."]: setting '"..setting.."' must be a number. Set to default value ("..tostring(default)..").")
ret = default
elseif ret ~= ret then -- NaN
minetest.log("warning", "[moremesecons_"..modname.."]: setting '"..setting.."' is NaN. Set to default value ("..tostring(default)..").")
ret = default
end


+ 1
- 0
moremesecons_wireless/depends.txt View File

@@ -1,3 +1,4 @@
mesecons
moremesecons_utils
digilines?
craft_guide?

+ 5
- 0
settingtypes.txt View File

@@ -1,3 +1,8 @@
[Adjustable Blinky Plant]

# Minimal interval authorized. Any lower will be set to it.
moremesecons_adjustable_blinky_plant.min_interval (Minimum Interval) float 0.5

[Craftable Commandblock]

# Space-separated list of authorized commands


Loading…
Cancel
Save