1
0
Disbranĉigi 0

Finished minetest_game diffs

This commit is contained in:
Jaidyn Lev 2018-03-18 17:37:28 -05:00
parent 4428e6a369
commit a0f5a421d2
911 changed files with 17509 additions and 914 deletions

View File

@ -0,0 +1,10 @@
Boats
=====================================================================
Main: PilzAdam
Lisc: MIT
Text: CC0
By Tirifto
3Dmo: CC-BY-SA 3.0
By thetoon & Zeg9
Modified by PavelS & sofar
Link: https://github.com/minetest/minetest_game

View File

@ -0,0 +1,27 @@
1,15c1,10
< Minetest Game mod: boats
< ========================
< See license.txt for license information.
<
< Authors of source code
< ----------------------
< Originally by PilzAdam (MIT)
< Various Minetest developers and contributors (MIT)
<
< Authors of media (textures and model)
< -------------------------------------
< Textures: Zeg9 (CC BY-SA 3.0)
< Model: thetoon and Zeg9 (CC BY-SA 3.0),
< modified by PavelS(SokolovPavel) (CC BY-SA 3.0),
< modified by sofar (CC BY-SA 3.0)
---
> Boats
> =====================================================================
> Main: PilzAdam
> Lisc: MIT
> Text: CC0
> By Tirifto
> 3Dmo: CC-BY-SA 3.0
> By thetoon & Zeg9
> Modified by PavelS & sofar
> Link: https://github.com/minetest/minetest_game

View File

@ -0,0 +1,77 @@
License of source code
----------------------
The MIT License (MIT)
Copyright (C) 2012-2016 PilzAdam
Copyright (C) 2012-2016 Various Minetest developers and contributors
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.
For more details:
https://opensource.org/licenses/MIT
Licenses of model
-----------------
Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
Copyright (C) 2012-2016 Zeg9
Copyright (C) 2012-2016 thetoon
Copyright (C) 2012-2016 PavelS(SokolovPavel)
Copyright (C) 2016 sofar (sofar@foo-projects.org)
You are free to:
Share — copy and redistribute the material in any medium or format.
Adapt — remix, transform, and build upon the material for any purpose, even commercially.
The licensor cannot revoke these freedoms as long as you follow the license terms.
Under the following terms:
Attribution — You must give appropriate credit, provide a link to the license, and
indicate if changes were made. You may do so in any reasonable manner, but not in any way
that suggests the licensor endorses you or your use.
ShareAlike — If you remix, transform, or build upon the material, you must distribute
your contributions under the same license as the original.
No additional restrictions — You may not apply legal terms or technological measures that
legally restrict others from doing anything the license permits.
Notices:
You do not have to comply with the license for elements of the material in the public
domain or where your use is permitted by an applicable exception or limitation.
No warranties are given. The license may not give you all of the permissions necessary
for your intended use. For example, other rights such as publicity, privacy, or moral
rights may limit how you use the material.
For more details:
http://creativecommons.org/licenses/by-sa/3.0/
License of textures
-------------------
CC0 1.0 Universal Public Domain Dedication
Copyright (C) 2017 Tirifto
The person who associated a work with this deed has dedicated the work to the public
domain by waiving all of his or her rights to the work worldwide under copyright law,
including all related and neighboring rights, to the extent allowed by law.
For more details:
https://creativecommons.org/publicdomain/zero/1.0/legalcode

View File

@ -0,0 +1,21 @@
28,29c28,29
< Licenses of media (textures and model)
< --------------------------------------
---
> Licenses of model
> -----------------
63a64,77
>
>
> License of textures
> -------------------
>
> CC0 1.0 Universal Public Domain Dedication
> Copyright (C) 2017 Tirifto
>
> The person who associated a work with this deed has dedicated the work to the public
> domain by waiving all of his or her rights to the work worldwide under copyright law,
> including all related and neighboring rights, to the extent allowed by law.
>
> For more details:
> https://creativecommons.org/publicdomain/zero/1.0/legalcode

View File

@ -0,0 +1 @@
https://github.com/minetest/minetest_game/archive/0.4.16.tar.gz

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 B

View File

@ -0,0 +1,9 @@
Bones
=====================================================================
Main: PilzAdam
Lisc: MIT
Text: MIT
By jadedctrl
3Dmo: MIT
By jadedctrl
Link: https://github.com/minetest/minetest_game

View File

@ -0,0 +1,23 @@
1,12c1,9
< Minetest Game mod: bones
< ========================
< See license.txt for license information.
<
< Authors of source code
< ----------------------
< Originally by PilzAdam (MIT)
< Various Minetest developers and contributors (MIT)
<
< Authors of media (textures)
< ---------------------------
< All textures: paramat (CC BY-SA 3.0)
---
> Bones
> =====================================================================
> Main: PilzAdam
> Lisc: MIT
> Text: MIT
> By jadedctrl
> 3Dmo: MIT
> By jadedctrl
> Link: https://github.com/minetest/minetest_game

286
diff/bones.diff/init.lua Normal file
View File

@ -0,0 +1,286 @@
-- Minetest 0.4 mod: bones
-- See README.txt for licensing and other information.
local function is_owner(pos, name)
local owner = minetest.get_meta(pos):get_string("owner")
if owner == "" or owner == name or minetest.check_player_privs(name, "protection_bypass") then
return true
end
return false
end
local bones_formspec =
"size[8,9]" ..
default.gui_bg ..
default.gui_bg_img ..
default.gui_slots ..
"list[current_name;main;0,0.3;8,4;]" ..
"list[current_player;main;0,4.85;8,1;]" ..
"list[current_player;main;0,6.08;8,3;8]" ..
"listring[current_name;main]" ..
"listring[current_player;main]" ..
default.get_hotbar_bg(0,4.85)
local share_bones_time = tonumber(minetest.settings:get("share_bones_time")) or 1200
local share_bones_time_early = tonumber(minetest.settings:get("share_bones_time_early")) or share_bones_time / 4
minetest.register_node("bones:bones", {
description = "Bones",
tiles = {
"bones_nonshade.png",
"bones_shade.png",
"bones.png",
"bones.png",
"bones.png",
"bones.png"
},
paramtype2 = "facedir",
drawtype="nodebox",
node_box= {
type = "fixed",
fixed = {
{-0.125, -0.5, -0.1875, -0.0625, -0.25, 0.1875}, -- NodeBox16
{-0.0625, -0.5, -0.125, 0, -0.25, 0.1875}, -- NodeBox17
{0, -0.5, -0.1875, 0.0625, -0.25, 0.1875}, -- NodeBox18
{0.0625, -0.5, -0.125, 0.125, -0.25, 0.1875}, -- NodeBox19
{0.125, -0.5, -0.1875, 0.1875, -0.25, 0.1875}, -- NodeBox20
{-0.1875, -0.25, -0.1875, 0.25, -0.1875, 0.3125}, -- NodeBox22
{-0.25, -0.1875, -0.25, 0.3125, -0.125, 0.375}, -- NodeBox23
{-0.3125, -0.125, -0.25, -0.0625, 0, 0.4375}, -- NodeBox24
{-0.0625, -0.125, -0.0625, 0, 0, 0.4375}, -- NodeBox26
{0.0625, -0.125, -0.0625, 0.125, 0, 0.4375}, -- NodeBox27
{0, -0.125, -0.25, 0.0625, 0, 0.4375}, -- NodeBox28
{0.125, -0.125, -0.25, 0.375, 0, 0.4375}, -- NodeBox29
{-0.3125, 0, -0.25, 0.375, 0.0625, 0.4375}, -- NodeBox30
{-0.3125, 0.0625, -0.25, -0.1875, 0.125, 0.4375}, -- NodeBox31
{-0.0625, 0.0625, -0.25, 0.125, 0.125, 0.4375}, -- NodeBox32
{0.25, 0.0625, -0.25, 0.375, 0.125, 0.4375}, -- NodeBox33
{-0.3125, 0.125, -0.25, -0.25, 0.25, 0.4375}, -- NodeBox34
{-0.25, 0.25, -0.25, -0.1875, 0.3125, 0.4375}, -- NodeBox35
{-0.1875, 0.3125, -0.25, 0.25, 0.375, 0.4375}, -- NodeBox37
{-0.0625, 0.25, -0.25, 0.125, 0.3125, 0.4375}, -- NodeBox39
{0, 0.125, -0.25, 0.0625, 0.25, 0.4375}, -- NodeBox40
{0.3125, 0.125, -0.25, 0.375, 0.25, 0.4375}, -- NodeBox41
{0.25, 0.25, -0.25, 0.3125, 0.3125, 0.4375}, -- NodeBox42
{-0.25, 0.0625, 0.0625, 0.3125, 0.25, 0.4375}, -- NodeBox46
{-0.1875, 0.25, 0.0625, 0.25, 0.3125, 0.4375}, -- NodeBox47
{-0.25, -0.0625, 0.4375, 0.3125, 0.1875, 0.5}, -- NodeBox48
{-0.125, 0.1875, 0.4375, 0.1875, 0.25, 0.5}, -- NodeBox49
}
},
groups = {dig_immediate = 2},
sounds = default.node_sound_gravel_defaults(),
can_dig = function(pos, player)
local inv = minetest.get_meta(pos):get_inventory()
local name = ""
if player then
name = player:get_player_name()
end
return is_owner(pos, name) and inv:is_empty("main")
end,
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
if is_owner(pos, player:get_player_name()) then
return count
end
return 0
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
return 0
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
if is_owner(pos, player:get_player_name()) then
return stack:get_count()
end
return 0
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if meta:get_inventory():is_empty("main") then
minetest.remove_node(pos)
end
end,
on_punch = function(pos, node, player)
if not is_owner(pos, player:get_player_name()) then
return
end
if minetest.get_meta(pos):get_string("infotext") == "" then
return
end
local inv = minetest.get_meta(pos):get_inventory()
local player_inv = player:get_inventory()
local has_space = true
for i = 1, inv:get_size("main") do
local stk = inv:get_stack("main", i)
if player_inv:room_for_item("main", stk) then
inv:set_stack("main", i, nil)
player_inv:add_item("main", stk)
else
has_space = false
break
end
end
-- remove bones if player emptied them
if has_space then
if player_inv:room_for_item("main", {name = "bones:bones"}) then
player_inv:add_item("main", {name = "bones:bones"})
else
minetest.add_item(pos,"bones:bones")
end
minetest.remove_node(pos)
end
end,
on_timer = function(pos, elapsed)
local meta = minetest.get_meta(pos)
local time = meta:get_int("time") + elapsed
if time >= share_bones_time then
meta:set_string("infotext", meta:get_string("owner") .. "'s old dreams")
meta:set_string("owner", "")
minetest.chat_send_all("Someone's forsaken the carcass of their dreams.")
minetest.chat_send_all("It can be found at " .. minetest.pos_to_string(pos) .. ".")
else
meta:set_int("time", time)
return true
end
end,
on_blast = function(pos)
end,
})
local function may_replace(pos, player)
local node_name = minetest.get_node(pos).name
local node_definition = minetest.registered_nodes[node_name]
-- if the node is unknown, we return false
if not node_definition then
return false
end
-- allow replacing air and liquids
if node_name == "air" or node_definition.liquidtype ~= "none" then
return true
end
-- don't replace filled chests and other nodes that don't allow it
local can_dig_func = node_definition.can_dig
if can_dig_func and not can_dig_func(pos, player) then
return false
end
-- default to each nodes buildable_to; if a placed block would replace it, why shouldn't bones?
-- flowers being squished by bones are more realistical than a squished stone, too
-- exception are of course any protected buildable_to
return node_definition.buildable_to and not minetest.is_protected(pos, player:get_player_name())
end
local drop = function(pos, itemstack)
local obj = minetest.add_item(pos, itemstack:take_item(itemstack:get_count()))
if obj then
obj:setvelocity({
x = math.random(-10, 10) / 9,
y = 5,
z = math.random(-10, 10) / 9,
})
end
end
minetest.register_on_dieplayer(function(player)
local bones_mode = minetest.settings:get("bones_mode") or "bones"
if bones_mode ~= "bones" and bones_mode ~= "drop" and bones_mode ~= "keep" then
bones_mode = "bones"
end
-- return if keep inventory set or in creative mode
if bones_mode == "keep" or (creative and creative.is_enabled_for
and creative.is_enabled_for(player:get_player_name())) then
return
end
local player_inv = player:get_inventory()
if player_inv:is_empty("main") and
player_inv:is_empty("craft") then
return
end
local pos = vector.round(player:getpos())
local player_name = player:get_player_name()
-- check if it's possible to place bones, if not find space near player
if bones_mode == "bones" and not may_replace(pos, player) then
local air = minetest.find_node_near(pos, 1, {"air"})
if air and not minetest.is_protected(air, player_name) then
pos = air
else
bones_mode = "drop"
end
end
if bones_mode == "drop" then
-- drop inventory items
for i = 1, player_inv:get_size("main") do
drop(pos, player_inv:get_stack("main", i))
end
player_inv:set_list("main", {})
-- drop crafting grid items
for i = 1, player_inv:get_size("craft") do
drop(pos, player_inv:get_stack("craft", i))
end
player_inv:set_list("craft", {})
drop(pos, ItemStack("bones:bones"))
return
end
local param2 = minetest.dir_to_facedir(player:get_look_dir())
minetest.set_node(pos, {name = "bones:bones", param2 = param2})
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
inv:set_size("main", 8 * 4)
inv:set_list("main", player_inv:get_list("main"))
for i = 1, player_inv:get_size("craft") do
local stack = player_inv:get_stack("craft", i)
if inv:room_for_item("main", stack) then
inv:add_item("main", stack)
else
--drop if no space left
drop(pos, stack)
end
end
player_inv:set_list("main", {})
player_inv:set_list("craft", {})
meta:set_string("formspec", bones_formspec)
meta:set_string("owner", player_name)
minetest.chat_send_player(player_name, "Your dreams can be found at " .. minetest.pos_to_string(pos) .. ".")
if share_bones_time ~= 0 then
meta:set_string("infotext", player_name .. "'s fresh skull")
if share_bones_time_early == 0 or not minetest.is_protected(pos, player_name) then
meta:set_int("time", 0)
else
meta:set_int("time", (share_bones_time - share_bones_time_early))
end
minetest.get_node_timer(pos):start(10)
else
meta:set_string("infotext", player_name.."'s old dreams")
end
end)

View File

@ -0,0 +1,66 @@
30,35c30,35
< "bones_top.png^[transform2",
< "bones_bottom.png",
< "bones_side.png",
< "bones_side.png",
< "bones_rear.png",
< "bones_front.png"
---
> "bones_nonshade.png",
> "bones_shade.png",
> "bones.png",
> "bones.png",
> "bones.png",
> "bones.png"
37a38,70
> drawtype="nodebox",
> node_box= {
> type = "fixed",
> fixed = {
> {-0.125, -0.5, -0.1875, -0.0625, -0.25, 0.1875}, -- NodeBox16
> {-0.0625, -0.5, -0.125, 0, -0.25, 0.1875}, -- NodeBox17
> {0, -0.5, -0.1875, 0.0625, -0.25, 0.1875}, -- NodeBox18
> {0.0625, -0.5, -0.125, 0.125, -0.25, 0.1875}, -- NodeBox19
> {0.125, -0.5, -0.1875, 0.1875, -0.25, 0.1875}, -- NodeBox20
> {-0.1875, -0.25, -0.1875, 0.25, -0.1875, 0.3125}, -- NodeBox22
> {-0.25, -0.1875, -0.25, 0.3125, -0.125, 0.375}, -- NodeBox23
> {-0.3125, -0.125, -0.25, -0.0625, 0, 0.4375}, -- NodeBox24
> {-0.0625, -0.125, -0.0625, 0, 0, 0.4375}, -- NodeBox26
> {0.0625, -0.125, -0.0625, 0.125, 0, 0.4375}, -- NodeBox27
> {0, -0.125, -0.25, 0.0625, 0, 0.4375}, -- NodeBox28
> {0.125, -0.125, -0.25, 0.375, 0, 0.4375}, -- NodeBox29
> {-0.3125, 0, -0.25, 0.375, 0.0625, 0.4375}, -- NodeBox30
> {-0.3125, 0.0625, -0.25, -0.1875, 0.125, 0.4375}, -- NodeBox31
> {-0.0625, 0.0625, -0.25, 0.125, 0.125, 0.4375}, -- NodeBox32
> {0.25, 0.0625, -0.25, 0.375, 0.125, 0.4375}, -- NodeBox33
> {-0.3125, 0.125, -0.25, -0.25, 0.25, 0.4375}, -- NodeBox34
> {-0.25, 0.25, -0.25, -0.1875, 0.3125, 0.4375}, -- NodeBox35
> {-0.1875, 0.3125, -0.25, 0.25, 0.375, 0.4375}, -- NodeBox37
> {-0.0625, 0.25, -0.25, 0.125, 0.3125, 0.4375}, -- NodeBox39
> {0, 0.125, -0.25, 0.0625, 0.25, 0.4375}, -- NodeBox40
> {0.3125, 0.125, -0.25, 0.375, 0.25, 0.4375}, -- NodeBox41
> {0.25, 0.25, -0.25, 0.3125, 0.3125, 0.4375}, -- NodeBox42
> {-0.25, 0.0625, 0.0625, 0.3125, 0.25, 0.4375}, -- NodeBox46
> {-0.1875, 0.25, 0.0625, 0.25, 0.3125, 0.4375}, -- NodeBox47
> {-0.25, -0.0625, 0.4375, 0.3125, 0.1875, 0.5}, -- NodeBox48
> {-0.125, 0.1875, 0.4375, 0.1875, 0.25, 0.5}, -- NodeBox49
> }
> },
114c147
< meta:set_string("infotext", meta:get_string("owner") .. "'s old bones")
---
> meta:set_string("infotext", meta:get_string("owner") .. "'s old dreams")
115a149,150
> minetest.chat_send_all("Someone's forsaken the carcass of their dreams.")
> minetest.chat_send_all("It can be found at " .. minetest.pos_to_string(pos) .. ".")
235a271,272
> minetest.chat_send_player(player_name, "Your dreams can be found at " .. minetest.pos_to_string(pos) .. ".")
>
237c274
< meta:set_string("infotext", player_name .. "'s fresh bones")
---
> meta:set_string("infotext", player_name .. "'s fresh skull")
247c284
< meta:set_string("infotext", player_name.."'s bones")
---
> meta:set_string("infotext", player_name.."'s old dreams")

View File

@ -0,0 +1,51 @@
License of source code
----------------------
The MIT License (MIT)
Copyright (C) 2012-2016 PilzAdam
Copyright (C) 2012-2016 Various Minetest developers and contributors
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.
For more details:
https://opensource.org/licenses/MIT
Licenses of media (textures & nodebox)
----------------------------
The MIT License (MIT)
Copyright (C) 2017-2018 jadedctrl
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.
For more details:
https://opensource.org/licenses/MIT

View File

@ -0,0 +1,54 @@
28c28
< Licenses of media (textures)
---
> Licenses of media (textures & nodebox)
31,32c31,32
< Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
< Copyright (C) 2016 paramat
---
> The MIT License (MIT)
> Copyright (C) 2017-2018 jadedctrl
34,57c34,48
< You are free to:
< Share — copy and redistribute the material in any medium or format.
< Adapt — remix, transform, and build upon the material for any purpose, even commercially.
< The licensor cannot revoke these freedoms as long as you follow the license terms.
<
< Under the following terms:
<
< Attribution — You must give appropriate credit, provide a link to the license, and
< indicate if changes were made. You may do so in any reasonable manner, but not in any way
< that suggests the licensor endorses you or your use.
<
< ShareAlike — If you remix, transform, or build upon the material, you must distribute
< your contributions under the same license as the original.
<
< No additional restrictions — You may not apply legal terms or technological measures that
< legally restrict others from doing anything the license permits.
<
< Notices:
<
< You do not have to comply with the license for elements of the material in the public
< domain or where your use is permitted by an applicable exception or limitation.
< No warranties are given. The license may not give you all of the permissions necessary
< for your intended use. For example, other rights such as publicity, privacy, or moral
< rights may limit how you use the material.
---
> 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.
58a50,51
> For more details:
> https://opensource.org/licenses/MIT

View File

@ -0,0 +1 @@
https://github.com/minetest/minetest_game/archive/0.4.16.tar.gz

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 740 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 B

View File

@ -0,0 +1,7 @@
Bucket
=====================================================================
Main: Kahrl, celeron55, Ahola
Lisc: LGPL 2.1
Text: CC-BY-SA 3.0
By ElementW
Link: https://github.com/minetest/minetest_game

View File

@ -0,0 +1,22 @@
1,13c1,7
< Minetest Game mod: bucket
< =========================
< See license.txt for license information.
<
< Authors of source code
< ----------------------
< Kahrl <kahrl@gmx.net> (LGPL 2.1)
< celeron55, Perttu Ahola <celeron55@gmail.com> (LGPL 2.1)
< Various Minetest developers and contributors (LGPL 2.1)
<
< Authors of media (textures)
< ---------------------------
< ElementW (CC BY-SA 3.0)
---
> Bucket
> =====================================================================
> Main: Kahrl, celeron55, Ahola
> Lisc: LGPL 2.1
> Text: CC-BY-SA 3.0
> By ElementW
> Link: https://github.com/minetest/minetest_game

View File

@ -0,0 +1,51 @@
License of source code
----------------------
GNU Lesser General Public License, version 2.1
Copyright (C) 2011-2016 Kahrl <kahrl@gmx.net>
Copyright (C) 2011-2016 celeron55, Perttu Ahola <celeron55@gmail.com>
Copyright (C) 2011-2016 Various Minetest developers and contributors
This program is free software; you can redistribute it and/or modify it under the terms
of the GNU Lesser General Public License as published by the Free Software Foundation;
either version 2.1 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Lesser General Public License for more details:
https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
Licenses of media (textures)
----------------------------
Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
Copyright (C) 2015-2016 ElementW
You are free to:
Share — copy and redistribute the material in any medium or format.
Adapt — remix, transform, and build upon the material for any purpose, even commercially.
The licensor cannot revoke these freedoms as long as you follow the license terms.
Under the following terms:
Attribution — You must give appropriate credit, provide a link to the license, and
indicate if changes were made. You may do so in any reasonable manner, but not in any way
that suggests the licensor endorses you or your use.
ShareAlike — If you remix, transform, or build upon the material, you must distribute
your contributions under the same license as the original.
No additional restrictions — You may not apply legal terms or technological measures that
legally restrict others from doing anything the license permits.
Notices:
You do not have to comply with the license for elements of the material in the public
domain or where your use is permitted by an applicable exception or limitation.
No warranties are given. The license may not give you all of the permissions necessary
for your intended use. For example, other rights such as publicity, privacy, or moral
rights may limit how you use the material.
For more details:
http://creativecommons.org/licenses/by-sa/3.0/

View File

View File

@ -0,0 +1 @@
https://github.com/minetest/minetest_game/archive/0.4.16.tar.gz

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 B

View File

@ -0,0 +1 @@
GEGL-geglmodule.c-Message: Module '/usr/lib/gegl-0.2/openraw.so' load error: libopenraw.so.7: cannot open shared object file: No such file or directory

View File

@ -0,0 +1,20 @@
Carts
=====================================================================
Main: SmallJoker
Lisc: MIT
Text: CC-0
Derivative of Gambit
carts_cart_side.png
carts_cart_top.png
carts_cart_front.png
carts_cart.png
Derivative of hexafraction & sofar
carts_rail_*.png
3Dmo: CC-0
By sofar & stujones11
carts_card.b3d
carts_card.blend
Audi: CC-BY-SA 3.9
By YleArkisto
carts_cart_moving*.ogg
Link: https://github.com/minetest/minetest_game

View File

@ -0,0 +1,44 @@
1,22c1,20
< Carts (formerly boost_cart)
< ==========================
<
< Carts, based almost entirely on the mod boost_cart [1], which
< itself is based on (and fully compatible with) the carts mod [2].
<
< The model was originally designed by stujones11 [3] (CC-0).
<
< Cart textures are based on original work from PixelBOX (WTFPL).
<
<
< [1] https://github.com/SmallJoker/boost_cart/
< [2] https://github.com/PilzAdam/carts/
< [3] https://github.com/stujones11/railcart/
<
<
< Features
< ----------
< - A fast cart for your railway or roller coaster (up to 7 m/s!)
< - Boost and brake rails
< - Rail junction switching with the 'right-left' walking keys
< - Handbrake with the 'back' key
---
> Carts
> =====================================================================
> Main: SmallJoker
> Lisc: MIT
> Text: CC-0
> Derivative of Gambit
> carts_cart_side.png
> carts_cart_top.png
> carts_cart_front.png
> carts_cart.png
> Derivative of hexafraction & sofar
> carts_rail_*.png
> 3Dmo: CC-0
> By sofar & stujones11
> carts_card.b3d
> carts_card.blend
> Audi: CC-BY-SA 3.9
> By YleArkisto
> carts_cart_moving*.ogg
> Link: https://github.com/minetest/minetest_game

59
diff/carts.diff/rails.lua Normal file
View File

@ -0,0 +1,59 @@
carts:register_rail("carts:rail", {
description = "Rail",
tiles = {
"carts_rail_straight.png", "carts_rail_curved.png",
"carts_rail_t_junction.png", "carts_rail_crossing.png"
},
inventory_image = "carts_rail_straight.png",
wield_image = "carts_rail_straight.png",
groups = carts:get_rail_groups(),
}, {})
minetest.register_craft({
output = "carts:rail 18",
recipe = {
{"default:steel_ingot", "group:wood", "default:steel_ingot"},
{"default:steel_ingot", "", "default:steel_ingot"},
{"default:steel_ingot", "group:wood", "default:steel_ingot"},
}
})
minetest.register_alias("default:rail", "carts:rail")
carts:register_rail("carts:powerrail", {
description = "Powered Rail",
tiles = {
"carts_rail_straight_pwr.png", "carts_rail_curved_pwr.png",
"carts_rail_t_junction_pwr.png", "carts_rail_crossing_pwr.png"
},
groups = carts:get_rail_groups(),
}, {acceleration = 20})
minetest.register_craft({
output = "carts:powerrail 18",
recipe = {
{"default:steel_ingot", "group:wood", "default:steel_ingot"},
{"default:steel_ingot", "default:mese_crystal", "default:steel_ingot"},
{"default:steel_ingot", "group:wood", "default:steel_ingot"},
}
})
carts:register_rail("carts:brakerail", {
description = "Brake Rail",
tiles = {
"carts_rail_straight_brk.png", "carts_rail_curved_brk.png",
"carts_rail_t_junction_brk.png", "carts_rail_crossing_brk.png"
},
groups = carts:get_rail_groups(),
}, {acceleration = -3})
minetest.register_craft({
output = "carts:brakerail 18",
recipe = {
{"default:steel_ingot", "group:wood", "default:steel_ingot"},
{"default:steel_ingot", "default:coal_lump", "default:steel_ingot"},
{"default:steel_ingot", "group:wood", "default:steel_ingot"},
}
})

View File

@ -0,0 +1,12 @@
25c25
< description = "Powered rail",
---
> description = "Powered Rail",
31c31
< }, {acceleration = 5})
---
> }, {acceleration = 20})
44c44
< description = "Brake rail",
---
> description = "Brake Rail",

View File

@ -0,0 +1 @@
https://github.com/minetest/minetest_game/archive/0.4.16.tar.gz

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 B

1
diff/default.diff/TODO Normal file
View File

@ -0,0 +1 @@
Consolidate torch.lua and nodes.lua

View File

@ -0,0 +1,80 @@
-- mods/default/aliases.lua
-- Aliases to support loading worlds using nodes following the old naming convention
-- These can also be helpful when using chat commands, for example /giveme
minetest.register_alias("stone", "default:stone")
minetest.register_alias("stone_with_coal", "default:stone_with_coal")
minetest.register_alias("stone_with_iron", "default:stone_with_iron")
minetest.register_alias("dirt_with_grass", "default:dirt_with_grass")
minetest.register_alias("dirt_with_grass_footsteps", "default:dirt_with_grass_footsteps")
minetest.register_alias("dirt", "default:dirt")
minetest.register_alias("sand", "default:sand")
minetest.register_alias("gravel", "default:gravel")
minetest.register_alias("sandstone", "default:sandstone")
minetest.register_alias("clay", "default:clay")
minetest.register_alias("brick", "default:brick")
minetest.register_alias("tree", "default:tree")
minetest.register_alias("jungletree", "default:jungletree")
minetest.register_alias("junglegrass", "default:junglegrass")
minetest.register_alias("leaves", "default:leaves")
minetest.register_alias("cactus", "default:cactus")
minetest.register_alias("papyrus", "default:papyrus")
minetest.register_alias("bookshelf", "default:bookshelf")
minetest.register_alias("glass", "default:glass")
minetest.register_alias("wooden_fence", "default:fence_wood")
minetest.register_alias("rail", "carts:rail")
minetest.register_alias("ladder", "default:ladder_wood")
minetest.register_alias("wood", "default:wood")
minetest.register_alias("mese", "default:mese")
minetest.register_alias("cloud", "default:cloud")
minetest.register_alias("water_flowing", "default:water_flowing")
minetest.register_alias("water_source", "default:water_source")
minetest.register_alias("lava_flowing", "default:lava_flowing")
minetest.register_alias("lava_source", "default:lava_source")
minetest.register_alias("torch", "default:torch")
minetest.register_alias("sign_wall", "default:sign_wall_wood")
minetest.register_alias("furnace", "default:furnace")
minetest.register_alias("chest", "default:chest")
minetest.register_alias("locked_chest", "default:chest_locked")
minetest.register_alias("cobble", "default:cobble")
minetest.register_alias("mossycobble", "default:mossycobble")
minetest.register_alias("steelblock", "default:steelblock")
minetest.register_alias("sapling", "default:sapling")
minetest.register_alias("apple", "default:apple")
minetest.register_alias("WPick", "default:pick_wood")
minetest.register_alias("STPick", "default:pick_stone")
minetest.register_alias("SteelPick", "default:pick_steel")
minetest.register_alias("MesePick", "default:pick_mese")
minetest.register_alias("WShovel", "default:shovel_wood")
minetest.register_alias("STShovel", "default:shovel_stone")
minetest.register_alias("SteelShovel", "default:shovel_steel")
minetest.register_alias("WAxe", "default:axe_wood")
minetest.register_alias("STAxe", "default:axe_stone")
minetest.register_alias("SteelAxe", "default:axe_steel")
minetest.register_alias("WSword", "default:sword_wood")
minetest.register_alias("STSword", "default:sword_stone")
minetest.register_alias("SteelSword", "default:sword_steel")
minetest.register_alias("Stick", "default:stick")
minetest.register_alias("paper", "default:paper")
minetest.register_alias("book", "default:book")
minetest.register_alias("lump_of_coal", "default:coal_lump")
minetest.register_alias("lump_of_iron", "default:iron_lump")
minetest.register_alias("lump_of_clay", "default:clay_lump")
minetest.register_alias("steel_ingot", "default:steel_ingot")
minetest.register_alias("clay_brick", "default:clay_brick")
minetest.register_alias("snow", "default:snow")
-- 'mese_block' was used for a while for the block form of mese
minetest.register_alias("default:mese_block", "default:mese")
-- Aliases for corrected pine node names
minetest.register_alias("default:pinetree", "default:pine_tree")
minetest.register_alias("default:pinewood", "default:pine_wood")
minetest.register_alias("default:ladder", "default:ladder_wood")
minetest.register_alias("default:sign_wall", "default:sign_wall_wood")
-- Etc.
minetest.register_alias("default:torch_out", "default:torch")

View File

@ -0,0 +1,4 @@
77a78,80
>
> -- Etc.
> minetest.register_alias("default:torch_out", "default:torch")

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,193 @@
81c81
< {'group:stick'},
---
> {'group:wood'},
89,90c89,90
< {'', 'group:stick', ''},
< {'', 'group:stick', ''},
---
> {'', 'group:wood', ''},
> {'', 'group:wood', ''},
98,99c98,99
< {'', 'group:stick', ''},
< {'', 'group:stick', ''},
---
> {'', 'group:wood', ''},
> {'', 'group:wood', ''},
107,108c107,108
< {'', 'group:stick', ''},
< {'', 'group:stick', ''},
---
> {'', 'group:wood', ''},
> {'', 'group:wood', ''},
116,117c116,117
< {'', 'group:stick', ''},
< {'', 'group:stick', ''},
---
> {'', 'group:wood', ''},
> {'', 'group:wood', ''},
125,126c125,126
< {'', 'group:stick', ''},
< {'', 'group:stick', ''},
---
> {'', 'group:wood', ''},
> {'', 'group:wood', ''},
134,135c134,135
< {'', 'group:stick', ''},
< {'', 'group:stick', ''},
---
> {'', 'group:wood', ''},
> {'', 'group:wood', ''},
143,144c143,144
< {'group:stick'},
< {'group:stick'},
---
> {'group:wood'},
> {'group:wood'},
152,153c152,153
< {'group:stick'},
< {'group:stick'},
---
> {'group:wood'},
> {'group:wood'},
161,162c161,162
< {'group:stick'},
< {'group:stick'},
---
> {'group:wood'},
> {'group:wood'},
170,171c170,171
< {'group:stick'},
< {'group:stick'},
---
> {'group:wood'},
> {'group:wood'},
179,180c179,180
< {'group:stick'},
< {'group:stick'},
---
> {'group:wood'},
> {'group:wood'},
188,234c188,189
< {'group:stick'},
< {'group:stick'},
< }
< })
<
< minetest.register_craft({
< output = 'default:axe_wood',
< recipe = {
< {'group:wood', 'group:wood'},
< {'group:wood', 'group:stick'},
< {'', 'group:stick'},
< }
< })
<
< minetest.register_craft({
< output = 'default:axe_stone',
< recipe = {
< {'group:stone', 'group:stone'},
< {'group:stone', 'group:stick'},
< {'', 'group:stick'},
< }
< })
<
< minetest.register_craft({
< output = 'default:axe_steel',
< recipe = {
< {'default:steel_ingot', 'default:steel_ingot'},
< {'default:steel_ingot', 'group:stick'},
< {'', 'group:stick'},
< }
< })
<
< minetest.register_craft({
< output = 'default:axe_bronze',
< recipe = {
< {'default:bronze_ingot', 'default:bronze_ingot'},
< {'default:bronze_ingot', 'group:stick'},
< {'', 'group:stick'},
< }
< })
<
< minetest.register_craft({
< output = 'default:axe_mese',
< recipe = {
< {'default:mese_crystal', 'default:mese_crystal'},
< {'default:mese_crystal', 'group:stick'},
< {'', 'group:stick'},
---
> {'group:wood'},
> {'group:wood'},
238,245c193,194
< minetest.register_craft({
< output = 'default:axe_diamond',
< recipe = {
< {'default:diamond', 'default:diamond'},
< {'default:diamond', 'group:stick'},
< {'', 'group:stick'},
< }
< })
---
> -- Axes
> -- Recipes face left to match appearence in textures and inventory
251,252c200,201
< {'group:stick', 'group:wood'},
< {'group:stick',''},
---
> {'group:wood', 'group:wood'},
> {'', 'group:wood'},
260,261c209,210
< {'group:stick', 'group:stone'},
< {'group:stick', ''},
---
> {'group:stone', 'group:wood'},
> {'', 'group:wood'},
269,270c218,219
< {'group:stick', 'default:steel_ingot'},
< {'group:stick', ''},
---
> {'default:steel_ingot', 'group:wood'},
> {'', 'group:wood'},
278,279c227,228
< {'group:stick', 'default:bronze_ingot'},
< {'group:stick', ''},
---
> {'default:bronze_ingot', 'group:wood'},
> {'', 'group:wood'},
287,288c236,237
< {'group:stick', 'default:mese_crystal'},
< {'group:stick', ''},
---
> {'default:mese_crystal', 'group:wood'},
> {'', 'group:wood'},
296,297c245,246
< {'group:stick', 'default:diamond'},
< {'group:stick', ''},
---
> {'default:diamond', 'group:wood'},
> {'', 'group:wood'},
306c255
< {'group:stick'},
---
> {'group:wood'},
315c264
< {'group:stick'},
---
> {'group:wood'},
324c273
< {'group:stick'},
---
> {'group:wood'},
333c282
< {'group:stick'},
---
> {'group:wood'},
342c291
< {'group:stick'},
---
> {'group:wood'},
351c300
< {'group:stick'},
---
> {'group:wood'},

View File

@ -0,0 +1 @@
player_api?

View File

@ -0,0 +1,580 @@
-- mods/default/functions.lua
--
-- Sounds
--
function default.node_sound_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "", gain = 1.0}
table.dug = table.dug or
{name = "default_dug_node", gain = 0.25}
table.place = table.place or
{name = "default_place_node_hard", gain = 1.0}
return table
end
function default.node_sound_stone_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_hard_footstep", gain = 0.3}
table.dug = table.dug or
{name = "default_hard_footstep", gain = 1.0}
default.node_sound_defaults(table)
return table
end
function default.node_sound_dirt_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_dirt_footstep", gain = 0.4}
table.dug = table.dug or
{name = "default_dirt_footstep", gain = 1.0}
table.place = table.place or
{name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table)
return table
end
function default.node_sound_sand_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_sand_footstep", gain = 0.12}
table.dug = table.dug or
{name = "default_sand_footstep", gain = 0.24}
table.place = table.place or
{name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table)
return table
end
function default.node_sound_gravel_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_gravel_footstep", gain = 0.4}
table.dug = table.dug or
{name = "default_gravel_footstep", gain = 1.0}
table.place = table.place or
{name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table)
return table
end
function default.node_sound_wood_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_wood_footstep", gain = 0.3}
table.dug = table.dug or
{name = "default_wood_footstep", gain = 1.0}
default.node_sound_defaults(table)
return table
end
function default.node_sound_leaves_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_grass_footstep", gain = 0.45}
table.dug = table.dug or
{name = "default_grass_footstep", gain = 0.7}
table.place = table.place or
{name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table)
return table
end
function default.node_sound_glass_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_glass_footstep", gain = 0.3}
table.dig = table.dig or
{name = "default_glass_footstep", gain = 0.5}
table.dug = table.dug or
{name = "default_break_glass", gain = 1.0}
default.node_sound_defaults(table)
return table
end
function default.node_sound_metal_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_metal_footstep", gain = 0.4}
table.dig = table.dig or
{name = "default_dig_metal", gain = 0.5}
table.dug = table.dug or
{name = "default_dug_metal", gain = 0.5}
table.place = table.place or
{name = "default_place_node_metal", gain = 0.5}
default.node_sound_defaults(table)
return table
end
function default.node_sound_water_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_water_footstep", gain = 0.2}
default.node_sound_defaults(table)
return table
end
--
-- Lavacooling
--
default.cool_lava = function(pos, node)
if node.name == "default:lava_source" then
minetest.set_node(pos, {name = "default:obsidian"})
else -- Lava flowing
minetest.set_node(pos, {name = "default:stone"})
end
minetest.sound_play("default_cool_lava",
{pos = pos, max_hear_distance = 16, gain = 0.25})
end
if minetest.settings:get_bool("enable_lavacooling") ~= false then
minetest.register_abm({
label = "Lava cooling",
nodenames = {"default:lava_source", "default:lava_flowing"},
neighbors = {"group:cools_lava", "group:water"},
interval = 2,
chance = 2,
catch_up = false,
action = function(...)
default.cool_lava(...)
end,
})
end
--
-- optimized helper to put all items in an inventory into a drops list
--
function default.get_inventory_drops(pos, inventory, drops)
local inv = minetest.get_meta(pos):get_inventory()
local n = #drops
for i = 1, inv:get_size(inventory) do
local stack = inv:get_stack(inventory, i)
if stack:get_count() > 0 then
drops[n+1] = stack:to_table()
n = n + 1
end
end
end
--
-- Papyrus and cactus growing
--
-- wrapping the functions in abm action is necessary to make overriding them possible
function default.grow_cactus(pos, node)
if node.param2 >= 4 then
return
end
pos.y = pos.y - 1
if minetest.get_item_group(minetest.get_node(pos).name, "sand") == 0 then
return
end
pos.y = pos.y + 1
local height = 0
while node.name == "default:cactus" and height < 4 do
height = height + 1
pos.y = pos.y + 1
node = minetest.get_node(pos)
end
if height == 4 or node.name ~= "air" then
return
end
if minetest.get_node_light(pos) < 13 then
return
end
minetest.set_node(pos, {name = "default:cactus"})
return true
end
function default.grow_papyrus(pos, node)
pos.y = pos.y - 1
local name = minetest.get_node(pos).name
if name ~= "default:dirt_with_grass" and name ~= "default:dirt" then
return
end
if not minetest.find_node_near(pos, 3, {"group:water"}) then
return
end
pos.y = pos.y + 1
local height = 0
while node.name == "default:papyrus" and height < 4 do
height = height + 1
pos.y = pos.y + 1
node = minetest.get_node(pos)
end
if height == 4 or node.name ~= "air" then
return
end
if minetest.get_node_light(pos) < 13 then
return
end
minetest.set_node(pos, {name = "default:papyrus"})
return true
end
minetest.register_abm({
label = "Grow cactus",
nodenames = {"default:cactus"},
neighbors = {"group:sand"},
interval = 12,
chance = 83,
action = function(...)
default.grow_cactus(...)
end
})
minetest.register_abm({
label = "Grow papyrus",
nodenames = {"default:papyrus"},
neighbors = {"default:dirt", "default:dirt_with_grass"},
interval = 14,
chance = 71,
action = function(...)
default.grow_papyrus(...)
end
})
--
-- dig upwards
--
function default.dig_up(pos, node, digger)
if digger == nil then return end
local np = {x = pos.x, y = pos.y + 1, z = pos.z}
local nn = minetest.get_node(np)
if nn.name == node.name then
minetest.node_dig(np, nn, digger)
end
end
--
-- Fence registration helper
--
function default.register_fence(name, def)
minetest.register_craft({
output = name .. " 4",
recipe = {
{ def.material, 'group:stick', def.material },
{ def.material, 'group:stick', def.material },
}
})
local fence_texture = "default_fence_overlay.png^" .. def.texture ..
"^default_fence_overlay.png^[makealpha:255,126,126"
-- Allow almost everything to be overridden
local default_fields = {
paramtype = "light",
drawtype = "nodebox",
node_box = {
type = "connected",
fixed = {{-1/8, -1/2, -1/8, 1/8, 1/2, 1/8}},
-- connect_top =
-- connect_bottom =
connect_front = {{-1/16,3/16,-1/2,1/16,5/16,-1/8},
{-1/16,-5/16,-1/2,1/16,-3/16,-1/8}},
connect_left = {{-1/2,3/16,-1/16,-1/8,5/16,1/16},
{-1/2,-5/16,-1/16,-1/8,-3/16,1/16}},
connect_back = {{-1/16,3/16,1/8,1/16,5/16,1/2},
{-1/16,-5/16,1/8,1/16,-3/16,1/2}},
connect_right = {{1/8,3/16,-1/16,1/2,5/16,1/16},
{1/8,-5/16,-1/16,1/2,-3/16,1/16}},
},
connects_to = {"group:fence", "group:wood", "group:tree"},
inventory_image = fence_texture,
wield_image = fence_texture,
tiles = {def.texture},
sunlight_propagates = true,
is_ground_content = false,
groups = {},
}
for k, v in pairs(default_fields) do
if not def[k] then
def[k] = v
end
end
-- Always add to the fence group, even if no group provided
def.groups.fence = 1
def.texture = nil
def.material = nil
minetest.register_node(name, def)
end
--
-- Leafdecay
--
-- Prevent decay of placed leaves
default.after_place_leaves = function(pos, placer, itemstack, pointed_thing)
if placer and not placer:get_player_control().sneak then
local node = minetest.get_node(pos)
node.param2 = 1
minetest.set_node(pos, node)
end
end
-- Leafdecay
local function leafdecay_after_destruct(pos, oldnode, def)
for _, v in pairs(minetest.find_nodes_in_area(vector.subtract(pos, def.radius),
vector.add(pos, def.radius), def.leaves)) do
local node = minetest.get_node(v)
local timer = minetest.get_node_timer(v)
if node.param2 == 0 and not timer:is_started() then
timer:start(math.random(20, 120) / 10)
end
end
end
local function leafdecay_on_timer(pos, def)
if minetest.find_node_near(pos, def.radius, def.trunks) then
return false
end
local node = minetest.get_node(pos)
local drops = minetest.get_node_drops(node.name)
for _, item in ipairs(drops) do
local is_leaf
for _, v in pairs(def.leaves) do
if v == item then
is_leaf = true
end
end
if minetest.get_item_group(item, "leafdecay_drop") ~= 0 or
not is_leaf then
minetest.add_item({
x = pos.x - 0.5 + math.random(),
y = pos.y - 0.5 + math.random(),
z = pos.z - 0.5 + math.random(),
}, item)
end
end
minetest.remove_node(pos)
minetest.check_for_falling(pos)
end
function default.register_leafdecay(def)
assert(def.leaves)
assert(def.trunks)
assert(def.radius)
for _, v in pairs(def.trunks) do
minetest.override_item(v, {
after_destruct = function(pos, oldnode)
leafdecay_after_destruct(pos, oldnode, def)
end,
})
end
for _, v in pairs(def.leaves) do
minetest.override_item(v, {
on_timer = function(pos)
leafdecay_on_timer(pos, def)
end,
})
end
end
--
-- Convert dirt to something that fits the environment
--
minetest.register_abm({
label = "Grass spread",
nodenames = {"default:dirt"},
neighbors = {
"air",
"group:grass",
"group:dry_grass",
"default:snow",
},
interval = 6,
chance = 50,
catch_up = false,
action = function(pos, node)
-- Check for darkness: night, shadow or under a light-blocking node
-- Returns if ignore above
local above = {x = pos.x, y = pos.y + 1, z = pos.z}
if (minetest.get_node_light(above) or 0) < 13 then
return
end
-- Look for spreading dirt-type neighbours
local p2 = minetest.find_node_near(pos, 1, "group:spreading_dirt_type")
if p2 then
local n3 = minetest.get_node(p2)
minetest.set_node(pos, {name = n3.name})
return
end
-- Else, any seeding nodes on top?
local name = minetest.get_node(above).name
-- Snow check is cheapest, so comes first
if name == "default:snow" then
minetest.set_node(pos, {name = "default:dirt_with_snow"})
-- Most likely case first
elseif minetest.get_item_group(name, "grass") ~= 0 then
minetest.set_node(pos, {name = "default:dirt_with_grass"})
elseif minetest.get_item_group(name, "dry_grass") ~= 0 then
minetest.set_node(pos, {name = "default:dirt_with_dry_grass"})
end
end
})
--
-- Grass and dry grass removed in darkness
--
minetest.register_abm({
label = "Grass covered",
nodenames = {"group:spreading_dirt_type"},
interval = 8,
chance = 50,
catch_up = false,
action = function(pos, node)
local above = {x = pos.x, y = pos.y + 1, z = pos.z}
local name = minetest.get_node(above).name
local nodedef = minetest.registered_nodes[name]
if name ~= "ignore" and nodedef and not ((nodedef.sunlight_propagates or
nodedef.paramtype == "light") and
nodedef.liquidtype == "none") then
minetest.set_node(pos, {name = "default:dirt"})
end
end
})
--
-- Moss growth on cobble near water
--
minetest.register_abm({
label = "Moss growth",
nodenames = {"default:cobble", "stairs:slab_cobble", "stairs:stair_cobble", "walls:cobble"},
neighbors = {"group:water"},
interval = 16,
chance = 200,
catch_up = false,
action = function(pos, node)
if node.name == "default:cobble" then
minetest.set_node(pos, {name = "default:mossycobble"})
elseif node.name == "stairs:slab_cobble" then
minetest.set_node(pos, {name = "stairs:slab_mossycobble", param2 = node.param2})
elseif node.name == "stairs:stair_cobble" then
minetest.set_node(pos, {name = "stairs:stair_mossycobble", param2 = node.param2})
elseif node.name == "walls:cobble" then
minetest.set_node(pos, {name = "walls:mossycobble", param2 = node.param2})
end
end
})
--
-- Checks if specified volume intersects a protected volume
--
function default.intersects_protection(minp, maxp, player_name, interval)
-- 'interval' is the largest allowed interval for the 3D lattice of checks
-- Compute the optimal float step 'd' for each axis so that all corners and
-- borders are checked. 'd' will be smaller or equal to 'interval'.
-- Subtracting 1e-4 ensures that the max co-ordinate will be reached by the
-- for loop (which might otherwise not be the case due to rounding errors).
local d = {}
for _, c in pairs({"x", "y", "z"}) do
if maxp[c] > minp[c] then
d[c] = (maxp[c] - minp[c]) / math.ceil((maxp[c] - minp[c]) / interval) - 1e-4
elseif maxp[c] == minp[c] then
d[c] = 1 -- Any value larger than 0 to avoid division by zero
else -- maxp[c] < minp[c], print error and treat as protection intersected
minetest.log("error", "maxp < minp in 'default.intersects_protection()'")
return true
end
end
for zf = minp.z, maxp.z, d.z do
local z = math.floor(zf + 0.5)
for yf = minp.y, maxp.y, d.y do
local y = math.floor(yf + 0.5)
for xf = minp.x, maxp.x, d.x do
local x = math.floor(xf + 0.5)
if minetest.is_protected({x = x, y = y, z = z}, player_name) then
return true
end
end
end
end
return false
end
--
-- Coral death near air
--
minetest.register_abm({
nodenames = {"default:coral_brown", "default:coral_orange"},
neighbors = {"air"},
interval = 17,
chance = 5,
catch_up = false,
action = function(pos, node)
minetest.set_node(pos, {name = "default:coral_skeleton"})
end,
})
--
-- NOTICE: This method is not an official part of the API yet!
-- This method may change in future.
--
function default.can_interact_with_node(player, pos)
if player then
if minetest.check_player_privs(player, "protection_bypass") then
return true
end
else
return false
end
local meta = minetest.get_meta(pos)
local owner = meta:get_string("owner")
if not owner or owner == "" or owner == player:get_player_name() then
return true
end
-- is player wielding the right key?
local item = player:get_wielded_item()
if item:get_name() == "default:key" then
local key_meta = item:get_meta()
if key_meta:get_string("secret") == "" then
local key_oldmeta = item:get_metadata()
if key_oldmeta == "" or not minetest.parse_json(key_oldmeta) then
return false
end
key_meta:set_string("secret", minetest.parse_json(key_oldmeta).secret)
item:set_metadata("")
end
return meta:get_string("key_lock_secret") == key_meta:get_string("secret")
end
return false
end

View File

@ -0,0 +1,22 @@
139c139
< interval = 1,
---
> interval = 2,
142c142,144
< action = default.cool_lava,
---
> action = function(...)
> default.cool_lava(...)
> end,
225c227,229
< action = default.grow_cactus
---
> action = function(...)
> default.grow_cactus(...)
> end
234c238,240
< action = default.grow_papyrus
---
> action = function(...)
> default.grow_papyrus(...)
> end

View File

@ -0,0 +1,36 @@
-- mods/default/legacy.lua
-- Horrible stuff to support old code registering falling nodes
-- Don't use this and never do what this does, it's completely wrong!
-- (More specifically, the client and the C++ code doesn't get the group)
function default.register_falling_node(nodename, texture)
minetest.log("error", debug.traceback())
minetest.log('error', "WARNING: default.register_falling_node is deprecated")
if minetest.registered_nodes[nodename] then
minetest.registered_nodes[nodename].groups.falling_node = 1
end
end
function default.spawn_falling_node(p, nodename)
spawn_falling_node(p, nodename)
end
-- Liquids
WATER_ALPHA = minetest.registered_nodes["default:water_source"].alpha
WATER_VISC = minetest.registered_nodes["default:water_source"].liquid_viscosity
LAVA_VISC = minetest.registered_nodes["default:lava_source"].liquid_viscosity
LIGHT_MAX = default.LIGHT_MAX
-- Formspecs
default.gui_suvival_form = default.gui_survival_form
-- Players
if minetest.get_modpath("player_api") then
default.registered_player_models = player_api.registered_models
default.player_register_model = player_api.register_model
default.player_attached = player_api.player_attached
default.player_get_animation = player_api.get_animation
default.player_set_model = player_api.set_model
default.player_set_textures = player_api.set_textures
default.player_set_animation = player_api.set_animation
end

View File

@ -0,0 +1,12 @@
25a26,36
>
> -- Players
> if minetest.get_modpath("player_api") then
> default.registered_player_models = player_api.registered_models
> default.player_register_model = player_api.register_model
> default.player_attached = player_api.player_attached
> default.player_get_animation = player_api.get_animation
> default.player_set_model = player_api.set_model
> default.player_set_textures = player_api.set_textures
> default.player_set_animation = player_api.set_animation
> end

2058
diff/default.diff/mapgen.lua Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,439 @@
46,48d45
< -- Blob ores
< -- These first to avoid other ores in blobs
<
51c48,51
< function default.register_mgv6_blob_ores()
---
> function default.register_mgv6_ores()
>
> -- Blob ore
> -- These first to avoid other ores in blobs
136a137,407
>
> -- Scatter ores
>
> -- Coal
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_coal",
> wherein = "default:stone",
> clust_scarcity = 8 * 8 * 8,
> clust_num_ores = 9,
> clust_size = 3,
> y_min = 1025,
> y_max = 31000,
> })
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_coal",
> wherein = "default:stone",
> clust_scarcity = 8 * 8 * 8,
> clust_num_ores = 8,
> clust_size = 3,
> y_min = -31000,
> y_max = 64,
> })
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_coal",
> wherein = "default:stone",
> clust_scarcity = 24 * 24 * 24,
> clust_num_ores = 27,
> clust_size = 6,
> y_min = -31000,
> y_max = 0,
> })
>
> -- Iron
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_iron",
> wherein = "default:stone",
> clust_scarcity = 9 * 9 * 9,
> clust_num_ores = 12,
> clust_size = 3,
> y_min = 1025,
> y_max = 31000,
> })
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_iron",
> wherein = "default:stone",
> clust_scarcity = 7 * 7 * 7,
> clust_num_ores = 5,
> clust_size = 3,
> y_min = -31000,
> y_max = 0,
> })
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_iron",
> wherein = "default:stone",
> clust_scarcity = 24 * 24 * 24,
> clust_num_ores = 27,
> clust_size = 6,
> y_min = -31000,
> y_max = -64,
> })
>
> -- Copper
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_copper",
> wherein = "default:stone",
> clust_scarcity = 9 * 9 * 9,
> clust_num_ores = 5,
> clust_size = 3,
> y_min = 1025,
> y_max = 31000,
> })
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_copper",
> wherein = "default:stone",
> clust_scarcity = 12 * 12 * 12,
> clust_num_ores = 4,
> clust_size = 3,
> y_min = -63,
> y_max = -16,
> })
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_copper",
> wherein = "default:stone",
> clust_scarcity = 9 * 9 * 9,
> clust_num_ores = 5,
> clust_size = 3,
> y_min = -31000,
> y_max = -64,
> })
>
> -- Tin
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_tin",
> wherein = "default:stone",
> clust_scarcity = 10 * 10 * 10,
> clust_num_ores = 5,
> clust_size = 3,
> y_min = 1025,
> y_max = 31000,
> })
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_tin",
> wherein = "default:stone",
> clust_scarcity = 13 * 13 * 13,
> clust_num_ores = 4,
> clust_size = 3,
> y_min = -127,
> y_max = -32,
> })
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_tin",
> wherein = "default:stone",
> clust_scarcity = 10 * 10 * 10,
> clust_num_ores = 5,
> clust_size = 3,
> y_min = -31000,
> y_max = -128,
> })
>
> -- Gold
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_gold",
> wherein = "default:stone",
> clust_scarcity = 13 * 13 * 13,
> clust_num_ores = 5,
> clust_size = 3,
> y_min = 1025,
> y_max = 31000,
> })
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_gold",
> wherein = "default:stone",
> clust_scarcity = 15 * 15 * 15,
> clust_num_ores = 3,
> clust_size = 2,
> y_min = -255,
> y_max = -64,
> })
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_gold",
> wherein = "default:stone",
> clust_scarcity = 13 * 13 * 13,
> clust_num_ores = 5,
> clust_size = 3,
> y_min = -31000,
> y_max = -256,
> })
>
> -- Mese crystal
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_mese",
> wherein = "default:stone",
> clust_scarcity = 14 * 14 * 14,
> clust_num_ores = 5,
> clust_size = 3,
> y_min = 1025,
> y_max = 31000,
> })
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_mese",
> wherein = "default:stone",
> clust_scarcity = 18 * 18 * 18,
> clust_num_ores = 3,
> clust_size = 2,
> y_min = -255,
> y_max = -64,
> })
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_mese",
> wherein = "default:stone",
> clust_scarcity = 14 * 14 * 14,
> clust_num_ores = 5,
> clust_size = 3,
> y_min = -31000,
> y_max = -256,
> })
>
> -- Diamond
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_diamond",
> wherein = "default:stone",
> clust_scarcity = 15 * 15 * 15,
> clust_num_ores = 4,
> clust_size = 3,
> y_min = 1025,
> y_max = 31000,
> })
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_diamond",
> wherein = "default:stone",
> clust_scarcity = 17 * 17 * 17,
> clust_num_ores = 4,
> clust_size = 3,
> y_min = -255,
> y_max = -128,
> })
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:stone_with_diamond",
> wherein = "default:stone",
> clust_scarcity = 15 * 15 * 15,
> clust_num_ores = 4,
> clust_size = 3,
> y_min = -31000,
> y_max = -256,
> })
>
> -- Mese block
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:mese",
> wherein = "default:stone",
> clust_scarcity = 36 * 36 * 36,
> clust_num_ores = 3,
> clust_size = 2,
> y_min = 1025,
> y_max = 31000,
> })
>
> minetest.register_ore({
> ore_type = "scatter",
> ore = "default:mese",
> wherein = "default:stone",
> clust_scarcity = 36 * 36 * 36,
> clust_num_ores = 3,
> clust_size = 2,
> y_min = -31000,
> y_max = -1024,
> })
142c413,416
< function default.register_blob_ores()
---
> function default.register_ores()
>
> -- Blob ore
> -- These first to avoid other ores in blobs
144a419
> -- This first to avoid clay in sand blobs
191c466
< "floatland_ocean", "floatland_grassland", "floatland_coniferous_forest"}
---
> "floatland_coniferous_forest", "floatland_coniferous_forest_ocean"}
215,216c490
< "rainforest", "rainforest_swamp", "floatland_grassland",
< "floatland_coniferous_forest"}
---
> "rainforest", "rainforest_swamp", "floatland_coniferous_forest"}
245c519
< "floatland_ocean", "floatland_grassland", "floatland_coniferous_forest"}
---
> "floatland_coniferous_forest", "floatland_coniferous_forest_ocean"}
247,248d520
< end
<
250,253c522
< -- Scatter ores
< -- All mapgens
<
< function default.register_ores()
---
> -- Scatter ores
1178a1448
> -- Used when mgv7 'biomerepeat' flag is false
1180,1202c1450
< function default.register_floatland_biomes(floatland_level, shadow_limit)
<
< -- Coniferous forest
<
< minetest.register_biome({
< name = "floatland_coniferous_forest",
< --node_dust = "",
< node_top = "default:dirt_with_grass",
< depth_top = 1,
< node_filler = "default:dirt",
< depth_filler = 3,
< --node_stone = "",
< --node_water_top = "",
< --depth_water_top = ,
< --node_water = "",
< --node_river_water = "",
< --node_riverbed = "",
< --depth_riverbed = ,
< y_min = floatland_level + 2,
< y_max = 31000,
< heat_point = 50,
< humidity_point = 70,
< })
---
> -- TODO Temporary simple biomes to be replaced by special floatland biomes later.
1204c1452
< -- Grassland
---
> function default.register_floatland_biomes(floatland_level, shadow_limit)
1220c1468
< y_min = floatland_level + 2,
---
> y_min = floatland_level + 4,
1223,1245c1471
< humidity_point = 35,
< })
<
< -- Sandstone desert
<
< minetest.register_biome({
< name = "floatland_sandstone_desert",
< --node_dust = "",
< node_top = "default:sand",
< depth_top = 1,
< node_filler = "default:sand",
< depth_filler = 1,
< node_stone = "default:sandstone",
< --node_water_top = "",
< --depth_water_top = ,
< --node_water = "",
< --node_river_water = "",
< --node_riverbed = "",
< --depth_riverbed = ,
< y_min = floatland_level + 2,
< y_max = 31000,
< heat_point = 50,
< humidity_point = 0,
---
> humidity_point = 50,
1248,1249d1473
< -- Floatland ocean / underground
<
1251c1475
< name = "floatland_ocean",
---
> name = "floatland_grassland_ocean",
1265c1489
< y_max = floatland_level + 1,
---
> y_max = floatland_level + 3,
1383c1607
< "floatland_grassland", "floatland_coniferous_forest"},
---
> "floatland_grassland"},
1497c1721
< biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"},
---
> biomes = {"taiga", "coniferous_forest"},
1797c2021
< "mountains, ridges, nofloatlands"
---
> "mountains, ridges, nofloatlands, caverns, biomerepeat"
1799a2024
> local captures_nobiorep = string.match(mgv7_spflags, "nobiomerepeat")
1801,1802c2026,2031
< local mgv7_floatland_level = minetest.get_mapgen_setting("mgv7_floatland_level") or 1280
< local mgv7_shadow_limit = minetest.get_mapgen_setting("mgv7_shadow_limit") or 1024
---
> -- Get setting or default
> -- Make global for mods to use to register floatland biomes
> default.mgv7_floatland_level =
> minetest.get_mapgen_setting("mgv7_floatland_level") or 1280
> default.mgv7_shadow_limit =
> minetest.get_mapgen_setting("mgv7_shadow_limit") or 1024
1808a2038
>
1810,1811c2040
< default.register_mgv6_blob_ores()
< default.register_ores()
---
> default.register_mgv6_ores()
1813,1818c2042,2051
< elseif mg_name == "v7" and captures_float == "floatlands" and
< captures_nofloat ~= "nofloatlands" then
< -- Mgv7 with floatlands
< default.register_biomes(mgv7_shadow_limit - 1)
< default.register_floatland_biomes(mgv7_floatland_level, mgv7_shadow_limit)
< default.register_blob_ores()
---
> elseif mg_name == "v7" and
> captures_float == "floatlands" and
> -- Need to check for 'nofloatlands' because that contains
> -- 'floatlands' which makes the second condition true.
> captures_nofloat ~= "nofloatlands" and
> captures_nobiorep == "nobiomerepeat" then
> -- Mgv7 with floatlands and floatland biomes
> default.register_biomes(default.mgv7_shadow_limit - 1)
> default.register_floatland_biomes(
> default.mgv7_floatland_level, default.mgv7_shadow_limit)
1823d2055
< default.register_blob_ores()

2692
diff/default.diff/nodes.lua Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,610 @@
78,81c78,81
< default:jungletree
< default:junglewood
< default:jungleleaves
< default:junglesapling
---
> default:jungle_tree
> default:jungle_wood
> default:jungle_leaves
> default:jungle_sapling
131c131
< default:junglegrass
---
> default:jungle_grass
188c188
< default:fence_junglewood
---
> default:fence_jungle_wood
572c572
< description = "Tree",
---
> description = "Apple Tree",
583c583
< description = "Wooden Planks",
---
> description = "Apple Wood Planks",
593,595c593,610
< description = "Sapling",
< drawtype = "plantlike",
< tiles = {"default_sapling.png"},
---
> description = "Apple Tree Sapling",
> drawtype = "nodebox",
> paramtype = "light",
> node_box = {
> type = "fixed",
> fixed = {
> {-0.0625, -0.5, -0.0625, 0.0625, -0.3125, 0.0625}, -- NodeBox1
> {-0.125, -0.375, -0.1875, 0.1875, 0, 0.1875}, -- NodeBox2
> {0, -0.125, -0.0625, 0.1875, 0.125, 0.125}, -- NodeBox3
> }
> },
> tiles = {"default_sapling_top.png",
> "default_sapling_bottom.png",
> "default_sapling_side.png",
> "default_sapling_side.png",
> "default_sapling_side.png",
> "default_sapling_side.png"
> },
600c615
< walkable = false,
---
> walkable = true,
611c626
< minetest.get_node_timer(pos):start(math.random(2400,4800))
---
> minetest.get_node_timer(pos):start(math.random(300, 1500))
629c644
< description = "Leaves",
---
> description = "Apple Tree Leaves",
659c674,681
< drawtype = "plantlike",
---
> drawtype = "nodebox",
> node_box = {
> type = "fixed",
> fixed = {
> {-0.25, -0.5, -0.25, 0.25, 0.0625, 0.25}, -- NodeBox1
> {-0.0625, 0.0625, -0.0625, 0.0625, 0.25, 0.0625}, -- NodeBox2
> }
> },
683c705
< minetest.register_node("default:jungletree", {
---
> minetest.register_node("default:jungle_tree", {
685,686c707,708
< tiles = {"default_jungletree_top.png", "default_jungletree_top.png",
< "default_jungletree.png"},
---
> tiles = {"default_jungle_tree_top.png", "default_jungle_tree_top.png",
> "default_jungle_tree.png"},
695c717
< minetest.register_node("default:junglewood", {
---
> minetest.register_node("default:jungle_wood", {
699c721
< tiles = {"default_junglewood.png"},
---
> tiles = {"default_jungle_wood.png"},
705,706c727,728
< minetest.register_node("default:jungleleaves", {
< description = "Jungle Leaves",
---
> minetest.register_node("default:jungle_leaves", {
> description = "Jungle Tree Leaves",
709,710c731,732
< tiles = {"default_jungleleaves.png"},
< special_tiles = {"default_jungleleaves_simple.png"},
---
> tiles = {"default_jungle_leaves.png"},
> special_tiles = {"default_jungle_leaves_simple.png"},
717,718c739,740
< {items = {'default:junglesapling'}, rarity = 20},
< {items = {'default:jungleleaves'}}
---
> {items = {'default:jungle_sapling'}, rarity = 20},
> {items = {'default:jungle_leaves'}}
726,731c748,769
< minetest.register_node("default:junglesapling", {
< description = "Jungle Sapling",
< drawtype = "plantlike",
< tiles = {"default_junglesapling.png"},
< inventory_image = "default_junglesapling.png",
< wield_image = "default_junglesapling.png",
---
> minetest.register_node("default:jungle_sapling", {
> description = "Jungle Tree Sapling",
> tiles = {
> "default_jungle_sapling_top.png",
> "default_jungle_sapling_bottom.png",
> "default_jungle_sapling_side.png",
> "default_jungle_sapling_side.png",
> "default_jungle_sapling_side.png",
> "default_jungle_sapling_side.png"
> },
> drawtype = "nodebox",
> paramtype = "light",
> node_box = {
> type = "fixed",
> fixed = {
> {-0.0625, -0.5, -0.0625, 0.0625, -0.3125, 0.0625}, -- NodeBox1
> {-0.25, -0.3125, -0.25, 0.25, 0, 0.25}, -- NodeBox3
> {-0.125, -0.0625, -0.125, 0.1875, 0.125, 0.1875}, -- NodeBox4
> }
> },
> inventory_image = "default_jungle_sapling.png",
> wield_image = "default_jungle_sapling.png",
734c772
< walkable = false,
---
> walkable = true,
745c783
< minetest.get_node_timer(pos):start(math.random(2400,4800))
---
> minetest.get_node_timer(pos):start(math.random(300, 1500))
806,808c844,865
< description = "Pine Sapling",
< drawtype = "plantlike",
< tiles = {"default_pine_sapling.png"},
---
> description = "Pine Tree Sapling",
> drawtype = "nodebox",
> paramtype = "light",
> node_box = {
> type = "fixed",
> fixed = {
> {-0.0625, -0.5, -0.0625, 0.0625, -0.3125, 0.0625}, -- NodeBox1
> {-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox2
> {-0.25, -0.3125, -0.25, 0.25, -0.25, 0.25}, -- NodeBox3
> {-0.1875, -0.25, -0.1875, 0.1875, -0.125, 0.1875}, -- NodeBox4
> {-0.125, -0.1875, -0.125, 0.125, -0.0625, 0.125}, -- NodeBox5
> {-0.0625, -0.0625, -0.0625, 0.0625, 0.0625, 0.0625}, -- NodeBox6
> }
> },
> tiles = {
> "default_pine_sapling_top.png",
> "default_pine_sapling_bottom.png",
> "default_pine_sapling_side.png",
> "default_pine_sapling_side.png",
> "default_pine_sapling_side.png",
> "default_pine_sapling_side.png"
> },
824c881
< minetest.get_node_timer(pos):start(math.random(2400,4800))
---
> minetest.get_node_timer(pos):start(math.random(300, 1500))
865c922
< description = "Acacia Leaves",
---
> description = "Acacia Tree Leaves",
887,888c944,960
< drawtype = "plantlike",
< tiles = {"default_acacia_sapling.png"},
---
> drawtype = "nodebox",
> paramtype = "light",
> node_box = {
> type = "fixed",
> fixed = {
> {-0.0625, -0.5, -0.0625, 0.0625, -0.3125, 0.0625}, -- NodeBox1
> {-0.125, -0.375, -0.1875, 0.1875, 0, 0.1875}, -- NodeBox2
> {0, -0.125, -0.0625, 0.1875, 0.125, 0.125}, -- NodeBox3
> }
> },
> tiles = {"default_acacia_sapling_top.png",
> "default_acacia_sapling_bottom.png",
> "default_acacia_sapling_side.png",
> "default_acacia_sapling_side.png",
> "default_acacia_sapling_side.png",
> "default_acacia_sapling_side.png"
> },
893c965
< walkable = false,
---
> walkable = true,
904c976
< minetest.get_node_timer(pos):start(math.random(2400,4800))
---
> minetest.get_node_timer(pos):start(math.random(300, 1500))
944c1016
< description = "Aspen Leaves",
---
> description = "Aspen Tree Leaves",
965,966c1037,1053
< drawtype = "plantlike",
< tiles = {"default_aspen_sapling.png"},
---
> drawtype = "nodebox",
> paramtype = "light",
> node_box = {
> type = "fixed",
> fixed = {
> {-0.0625, -0.5, -0.0625, 0.0625, -0.3125, 0.0625}, -- NodeBox1
> {-0.125, -0.375, -0.1875, 0.1875, 0, 0.1875}, -- NodeBox2
> {0, -0.125, -0.0625, 0.1875, 0.125, 0.125}, -- NodeBox3
> }
> },
> tiles = {"default_aspen_sapling_top.png",
> "default_aspen_sapling_bottom.png",
> "default_aspen_sapling_side.png",
> "default_aspen_sapling_side.png",
> "default_aspen_sapling_side.png",
> "default_aspen_sapling_side.png"
> },
971c1058
< walkable = false,
---
> walkable = true,
982c1069
< minetest.get_node_timer(pos):start(math.random(2400,4800))
---
> minetest.get_node_timer(pos):start(math.random(300, 1500))
1147c1234,1243
< drawtype = "plantlike",
---
> drawtype = "nodebox",
> node_box = {
> type = "fixed",
> fixed = {
> {0.1875, -0.5, 0.1875, 0.4375, 0.5, 0.4375}, -- NodeBox1
> {0.1875, -0.5, -0.4375, 0.4375, 0.5, -0.1875}, -- NodeBox2
> {-0.4375, -0.5, -0.4375, -0.1875, 0.5, -0.1875}, -- NodeBox3
> {-0.4375, -0.5, 0.1875, -0.1875, 0.5, 0.4375}, -- NodeBox4
> }
> },
1149,1150c1245,1246
< inventory_image = "default_papyrus.png",
< wield_image = "default_papyrus.png",
---
> inventory_image = "default_inv_papyrus.png",
> wield_image = "default_inv_papyrus.png",
1185c1281
< minetest.register_node("default:junglegrass", {
---
> minetest.register_node("default:jungle_grass", {
1187,1192c1283,1297
< drawtype = "plantlike",
< waving = 1,
< visual_scale = 1.69,
< tiles = {"default_junglegrass.png"},
< inventory_image = "default_junglegrass.png",
< wield_image = "default_junglegrass.png",
---
> drawtype = "nodebox",
> node_box = {
> type = "fixed",
> fixed = {
> {-0.125, -0.5, -0.125, 0.125, 0.25, 0.125}, -- NodeBox18
> {0.125, 0.25, -0.125, 0.375, 0.5, 0.125}, -- NodeBox19
> {0.25, -0.5, 0.25, 0.5, -0.125, 0.5}, -- NodeBox20
> {-0.5, -0.5, 0.25, -0.25, -0.25, 0.5}, -- NodeBox21
> {0.25, -0.5, -0.5, 0.5, -0.1875, -0.25}, -- NodeBox22
> {-0.5, -0.5, -0.5, -0.25, -0.0625, -0.25}, -- NodeBox23
> }
> },
> tiles = {"default_grass.png"},
> inventory_image = "default_jungle_grass.png",
> wield_image = "default_jungle_grass.png",
1193a1299
> paramtype2 = "facedir",
1208c1314,1322
< drawtype = "plantlike",
---
> drawtype = "nodebox",
> node_box = {
> type = "fixed",
> fixed = {
> {-0.375, -0.5, 0.125, -0.125, -0.25, 0.375}, -- NodeBox9
> {0.125, -0.5, 0.125, 0.375, -0.25, 0.375}, -- NodeBox11
> {-0.375, -0.5, -0.375, -0.125, -0.25, -0.125}, -- NodeBox12
> }
> },
1210c1324
< tiles = {"default_grass_1.png"},
---
> tiles = {"default_grass.png"},
1212,1213d1325
< inventory_image = "default_grass_3.png",
< wield_image = "default_grass_3.png",
1223a1336
> })
1225,1231c1338,1364
< on_place = function(itemstack, placer, pointed_thing)
< -- place a random grass node
< local stack = ItemStack("default:grass_" .. math.random(1,5))
< local ret = minetest.item_place(stack, placer, pointed_thing)
< return ItemStack("default:grass_1 " ..
< itemstack:get_count() - (1 - ret:get_count()))
< end,
---
> minetest.register_node("default:grass_2", {
> description = "Grass",
> drawtype = "nodebox",
> node_box = {
> type = "fixed",
> fixed = {
> {-0.125, -0.5, -0.125, 0.125, -0.1875, 0.125}, -- NodeBox8
> {-0.375, -0.5, 0.125, -0.125, 0.0625, 0.375}, -- NodeBox9
> {0.125, -0.5, 0.125, 0.375, 0.0625, 0.375}, -- NodeBox11
> {-0.375, -0.5, -0.375, -0.125, 0.0625, -0.125}, -- NodeBox12
> {0.125, -0.5, -0.375, 0.375, 0.0625, -0.125}, -- NodeBox13
> }
> },
> waving = 1,
> tiles = {"default_grass.png"},
> paramtype = "light",
> sunlight_propagates = true,
> walkable = false,
> buildable_to = true,
> drop = "default:grass_2",
> groups = {snappy = 3, flora = 1, attached_node = 1,
> not_in_creative_inventory = 1, grass = 1, flammable = 1},
> sounds = default.node_sound_leaves_defaults(),
> selection_box = {
> type = "fixed",
> fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16},
> },
1234,1248c1367,1388
< for i = 2, 5 do
< minetest.register_node("default:grass_" .. i, {
< description = "Grass",
< drawtype = "plantlike",
< waving = 1,
< tiles = {"default_grass_" .. i .. ".png"},
< inventory_image = "default_grass_" .. i .. ".png",
< wield_image = "default_grass_" .. i .. ".png",
< paramtype = "light",
< sunlight_propagates = true,
< walkable = false,
< buildable_to = true,
< drop = "default:grass_1",
< groups = {snappy = 3, flora = 1, attached_node = 1,
< not_in_creative_inventory = 1, grass = 1, flammable = 1},
---
> minetest.register_node("default:grass_3", {
> description = "Grass",
> drawtype = "nodebox",
> node_box = {
> type = "fixed",
> fixed = {
> {-0.125, -0.5, -0.125, 0.125, -0.1875, 0.125}, -- NodeBox8
> {-0.375, -0.5, 0.125, -0.125, 0.3125, 0.375}, -- NodeBox9
> {0.125, -0.5, 0.125, 0.375, 0.3125, 0.375}, -- NodeBox11
> {-0.375, -0.5, -0.375, -0.125, 0.3125, -0.125}, -- NodeBox12
> {0.125, -0.5, -0.375, 0.375, 0.3125, -0.125}, -- NodeBox13
> }
> },
> waving = 1,
> tiles = {"default_grass.png"},
> paramtype = "light",
> sunlight_propagates = true,
> walkable = false,
> buildable_to = true,
> drop = "default:grass_3",
> groups = {snappy = 3, flora = 1, attached_node = 1,
> not_in_creative_inventory = 1, grass = 1, flammable = 1},
1250,1255c1390,1423
< selection_box = {
< type = "fixed",
< fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16},
< },
< })
< end
---
> selection_box = {
> type = "fixed",
> fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16},
> },
> })
>
> minetest.register_node("default:grass_4", {
> description = "Grass",
> drawtype = "nodebox",
> node_box = {
> type = "fixed",
> fixed = {
> {0.125, -0.5, 0.125, 0.4375, 0.5, 0.4375}, -- NodeBox1
> {0.125, -0.5, -0.4375, 0.4375, 0.5, -0.125}, -- NodeBox2
> {-0.4375, -0.5, -0.4375, -0.125, 0.5, -0.125}, -- NodeBox3
> {-0.4375, -0.5, 0.125, -0.125, 0.5, 0.4375}, -- NodeBox4
> {-0.125, -0.5, -0.125, 0.125, -0.0625, 0.125}, -- NodeBox7
> }
> },
> waving = 1,
> tiles = {"default_grass.png"},
> paramtype = "light",
> sunlight_propagates = true,
> walkable = false,
> buildable_to = true,
> drop = "default:grass_3",
> groups = {snappy = 3, flora = 1, attached_node = 1,
> not_in_creative_inventory = 1, grass = 1, flammable = 1},
> sounds = default.node_sound_leaves_defaults(),
> selection_box = {
> type = "fixed",
> fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16},
> },
> })
1256a1425,1452
> minetest.register_node("default:grass_5", {
> description = "Grass",
> drawtype = "nodebox",
> node_box = {
> type = "fixed",
> fixed = {
> {0.125, -0.5, 0.125, 0.4375, 0.5, 0.4375}, -- NodeBox1
> {0.125, -0.5, -0.4375, 0.4375, 0.5, -0.125}, -- NodeBox2
> {-0.4375, -0.5, -0.4375, -0.125, 0.5, -0.125}, -- NodeBox3
> {-0.4375, -0.5, 0.125, -0.125, 0.5, 0.4375}, -- NodeBox4
> {-0.125, -0.5, -0.125, 0.125, 0.125, 0.125}, -- NodeBox7
> }
> },
> waving = 1,
> tiles = {"default_grass.png"},
> paramtype = "light",
> sunlight_propagates = true,
> walkable = false,
> buildable_to = true,
> drop = "default:grass_3",
> groups = {snappy = 3, flora = 1, attached_node = 1,
> not_in_creative_inventory = 1, grass = 1, flammable = 1},
> sounds = default.node_sound_leaves_defaults(),
> selection_box = {
> type = "fixed",
> fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16},
> },
> })
1365c1561
< minetest.get_node_timer(pos):start(math.random(1200, 2400))
---
> minetest.get_node_timer(pos):start(math.random(300, 1500))
1436c1632
< minetest.get_node_timer(pos):start(math.random(1200, 2400))
---
> minetest.get_node_timer(pos):start(math.random(300, 1500))
1712c1908
< liquid_renewable = false,
---
> liquid_renewable = true,
1758c1954
< liquid_renewable = false,
---
> liquid_renewable = true,
1769c1965
< local function get_chest_formspec(pos)
---
> function default.get_chest_formspec(pos)
1786c1982
< local above = { x = pos.x, y = pos.y + 1, z = pos.z }
---
> local above = {x = pos.x, y = pos.y + 1, z = pos.z}
1789c1985,1986
< if def.drawtype == "airlike" or
---
> if def and
> (def.drawtype == "airlike" or
1792c1989
< (def.drawtype == "nodebox" and def.paramtype2 == "wallmounted") then
---
> (def.drawtype == "nodebox" and def.paramtype2 == "wallmounted")) then
1892c2089
< "default:chest", get_chest_formspec(pos))
---
> "default:chest", default.get_chest_formspec(pos))
1914c2111
< get_chest_formspec(pos)
---
> default.get_chest_formspec(pos)
1959c2156
< "default:chest", get_chest_formspec(pos))
---
> "default:chest", default.get_chest_formspec(pos))
1991a2189,2195
> for i = 1, #def_opened.tiles do
> if type(def_opened.tiles[i]) == "string" then
> def_opened.tiles[i] = {name = def_opened.tiles[i], backface_culling = true}
> elseif def_opened.tiles[i].backface_culling == nil then
> def_opened.tiles[i].backface_culling = true
> end
> end
1997c2201
< }
---
> }
2146a2351,2389
> torch_box = {
> type = "wallmounted",
> wall_top = {-0.5/3, -0.5/3, -0.5/3, 0.5/3, 1.5/3, 0.5/3},
> wall_bottom = {-0.5/3, -1.5/3, -0.5/3, 0.5/3, 0.5/3, 0.5/3},
> wall_side = {-1.5/3, -0.5/3, -0.5/3, 0.5/3, 0.5/3, 0.5/3},
> }
>
> minetest.register_node("default:torch", {
> drawtype = "nodebox",
> description = "Torch",
> tiles = {"default_torch.png"},
> inventory_image = "default_torch_inventory.png",
> wield_image = "default_torch_inventory.png",
> paramtype = "light",
> paramtype2 = "wallmounted",
> legacy_wallmounted = true,
> sunlight_propagates = true,
> walkable = false,
> light_source = default.LIGHT_MAX-2,
> node_box = torch_box,
> groups = {attached_node=1, dig_immediate=3,not_in_creative_inventory=1},
> drop='"default:torch" 1',
> sounds = default.node_sound_wood_defaults(),
> -- on_construct = function(pos)
> -- local tmr = minetest.env:get_node_timer(pos)
> -- tmr:start(torch_time)
> -- end,
> -- on_rightclick = function(pos, node)
> -- local tmr = minetest.env:get_node_timer(pos)
> -- local meta = minetest.get_meta(pos)
> -- local proc = math.floor(tmr:get_elapsed()/(torch_time/100))
> -- meta:set_string("infotext", proc.."%")
> -- end,
> -- on_timer = function(pos,elapsed)
> -- local node = minetest.get_node(pos)
> -- minetest.set_node(pos, {name="default:torch_out", param2 = node.param2})
> -- end,
> })
>
2247c2490
< description = "Wooden Fence",
---
> description = "Apple Wood Fence",
2257c2500
< description = "Acacia Fence",
---
> description = "Acacia Wood Fence",
2266c2509
< default.register_fence("default:fence_junglewood", {
---
> default.register_fence("default:fence_jungle_wood", {
2268,2271c2511,2514
< texture = "default_fence_junglewood.png",
< inventory_image = "default_fence_overlay.png^default_junglewood.png^default_fence_overlay.png^[makealpha:255,126,126",
< wield_image = "default_fence_overlay.png^default_junglewood.png^default_fence_overlay.png^[makealpha:255,126,126",
< material = "default:junglewood",
---
> texture = "default_fence_jungle_wood.png",
> inventory_image = "default_fence_overlay.png^default_jungle_wood.png^default_fence_overlay.png^[makealpha:255,126,126",
> wield_image = "default_fence_overlay.png^default_jungle_wood.png^default_fence_overlay.png^[makealpha:255,126,126",
> material = "default:jungle_wood",
2277c2520
< description = "Pine Fence",
---
> description = "Pine Wood Fence",
2287c2530
< description = "Aspen Fence",
---
> description = "Aspen Wood Fence",
2301c2544
< paramtype2 = "glasslikeliquidlevel",
---
> -- paramtype2 = "glasslikeliquidlevel",
2389,2390c2632,2633
< trunks = {"default:jungletree"},
< leaves = {"default:jungleleaves"},
---
> trunks = {"default:jungle_tree"},
> leaves = {"default:jungle_leaves"},
2407,2408c2650,2651
< trunks = {"default:jungletree"},
< leaves = {"default:jungleleaves"},
---
> trunks = {"default:jungle_tree"},
> leaves = {"default:jungle_leaves"},
2441a2685,2692
>
> minetest.register_alias("default:jungleleaves", "default:jungle_leaves")
> minetest.register_alias("default:junglewood", "default:jungle_wood")
> minetest.register_alias("default:junglesapling", "default:jungle_sapling")
> minetest.register_alias("default:jungletree", "default:jungle_tree")
> minetest.register_alias("default:junglegrass", "default:jungle_grass")
>
> minetest.register_alias("default:fence_junglewood", "default:fence_jungle_wood")

View File

@ -0,0 +1 @@
https://github.com/minetest/minetest_game/archive/0.4.16.tar.gz

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 528 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 B

Some files were not shown because too many files have changed in this diff Show More