Merge pull request #39 from D00Med/2018update

2018update
master
D00Med 2022-01-26 07:59:01 +10:00 committed by GitHub
commit cae7b83341
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
500 changed files with 11431 additions and 4083 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 684 KiB

After

Width:  |  Height:  |  Size: 675 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 561 KiB

After

Width:  |  Height:  |  Size: 864 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 698 KiB

After

Width:  |  Height:  |  Size: 996 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 784 KiB

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 624 KiB

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 502 KiB

After

Width:  |  Height:  |  Size: 780 KiB

BIN
menu/background.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 675 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 94 KiB

View File

@ -8,6 +8,7 @@ tnt_radius = 3
enable_bed_respawn = true
give_initial_stuff = true
enable_weather = true
underwater_effects = true
loz_mode = true
enable_armour = true
ARMOR_UPDATE_TIME = 1.5
@ -18,4 +19,6 @@ weather_allow_abm = true
enable_moreplants = true
twilight = false
3d_leaves = false
mob_show_health = false
mob_show_health = false
lom_devmode = false
music = 1

View File

@ -378,11 +378,13 @@ minetest.register_on_joinplayer(function(player)
player:get_inventory():set_stack(listname, index, stack)
armor:set_player_armor(player)
armor:update_inventory(player)
minetest.sound_play("metal_sound", {to_player=player:get_player_name(), gain=1.2, loop=false})
end,
on_take = function(inv, listname, index, stack, player)
player:get_inventory():set_stack(listname, index, nil)
armor:set_player_armor(player)
armor:update_inventory(player)
minetest.sound_play("inventory", {to_player=player:get_player_name(), gain=1.2, loop=false})
end,
on_move = function(inv, from_list, from_index, to_list, to_index, count, player)
local plaver_inv = player:get_inventory()
@ -391,6 +393,7 @@ minetest.register_on_joinplayer(function(player)
player_inv:set_stack(from_list, from_index, nil)
armor:set_player_armor(player)
armor:update_inventory(player)
minetest.sound_play("metal_sound", {to_player=player:get_player_name(), gain=1.2, loop=false})
end,
allow_put = function(inv, listname, index, stack, player)
return 1

View File

@ -1,15 +0,0 @@
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)

View File

@ -1,260 +0,0 @@
--
-- Helper functions
--
local function is_water(pos)
local nn = minetest.get_node(pos).name
return minetest.get_item_group(nn, "water") ~= 0
end
local function get_sign(i)
if i == 0 then
return 0
else
return i / math.abs(i)
end
end
local function get_velocity(v, yaw, y)
local x = -math.sin(yaw) * v
local z = math.cos(yaw) * v
return {x = x, y = y, z = z}
end
local function get_v(v)
return math.sqrt(v.x ^ 2 + v.z ^ 2)
end
--
-- Boat entity
--
local boat = {
physical = true,
-- Warning: Do not change the position of the collisionbox top surface,
-- lowering it causes the boat to fall through the world if underwater
collisionbox = {-0.5, -0.35, -0.5, 0.5, 0.3, 0.5},
visual = "mesh",
mesh = "boats_boat.obj",
textures = {"default_wood.png"},
driver = nil,
v = 0,
last_v = 0,
removed = false
}
function boat.on_rightclick(self, clicker)
if not clicker or not clicker:is_player() then
return
end
local name = clicker:get_player_name()
if self.driver and clicker == self.driver then
self.driver = nil
clicker:set_detach()
default.player_attached[name] = false
default.player_set_animation(clicker, "stand" , 30)
local pos = clicker:getpos()
pos = {x = pos.x, y = pos.y + 0.2, z = pos.z}
minetest.after(0.1, function()
clicker:setpos(pos)
end)
elseif not self.driver then
local attach = clicker:get_attach()
if attach and attach:get_luaentity() then
local luaentity = attach:get_luaentity()
if luaentity.driver then
luaentity.driver = nil
end
clicker:set_detach()
end
self.driver = clicker
clicker:set_attach(self.object, "",
{x = 0, y = 11, z = -3}, {x = 0, y = 0, z = 0})
default.player_attached[name] = true
minetest.after(0.2, function()
default.player_set_animation(clicker, "sit" , 30)
end)
clicker:set_look_horizontal(self.object:getyaw())
end
end
function boat.on_activate(self, staticdata, dtime_s)
self.object:set_armor_groups({immortal = 1})
if staticdata then
self.v = tonumber(staticdata)
end
self.last_v = self.v
end
function boat.get_staticdata(self)
return tostring(self.v)
end
function boat.on_punch(self, puncher)
if not puncher or not puncher:is_player() or self.removed then
return
end
if self.driver and puncher == self.driver then
self.driver = nil
puncher:set_detach()
default.player_attached[puncher:get_player_name()] = false
end
if not self.driver then
self.removed = true
local inv = puncher:get_inventory()
if not minetest.setting_getbool("creative_mode")
or not inv:contains_item("main", "boats:boat") then
local leftover = inv:add_item("main", "boats:boat")
-- if no room in inventory add a replacement boat to the world
if not leftover:is_empty() then
minetest.add_item(self.object:getpos(), leftover)
end
end
-- delay remove to ensure player is detached
minetest.after(0.1, function()
self.object:remove()
end)
end
end
function boat.on_step(self, dtime)
self.v = get_v(self.object:getvelocity()) * get_sign(self.v)
if self.driver then
local ctrl = self.driver:get_player_control()
local yaw = self.object:getyaw()
if ctrl.up then
self.v = self.v + 0.1
elseif ctrl.down then
self.v = self.v - 0.1
end
if ctrl.left then
if self.v < 0 then
self.object:setyaw(yaw - (1 + dtime) * 0.03)
else
self.object:setyaw(yaw + (1 + dtime) * 0.03)
end
elseif ctrl.right then
if self.v < 0 then
self.object:setyaw(yaw + (1 + dtime) * 0.03)
else
self.object:setyaw(yaw - (1 + dtime) * 0.03)
end
end
end
local velo = self.object:getvelocity()
if self.v == 0 and velo.x == 0 and velo.y == 0 and velo.z == 0 then
self.object:setpos(self.object:getpos())
return
end
local s = get_sign(self.v)
self.v = self.v - 0.02 * s
if s ~= get_sign(self.v) then
self.object:setvelocity({x = 0, y = 0, z = 0})
self.v = 0
return
end
if math.abs(self.v) > 5 then
self.v = 5 * get_sign(self.v)
end
local p = self.object:getpos()
p.y = p.y - 0.5
local new_velo
local new_acce = {x = 0, y = 0, z = 0}
if not is_water(p) then
local nodedef = minetest.registered_nodes[minetest.get_node(p).name]
if (not nodedef) or nodedef.walkable then
self.v = 0
new_acce = {x = 0, y = 1, z = 0}
else
new_acce = {x = 0, y = -9.8, z = 0}
end
new_velo = get_velocity(self.v, self.object:getyaw(),
self.object:getvelocity().y)
self.object:setpos(self.object:getpos())
else
p.y = p.y + 1
if is_water(p) then
local y = self.object:getvelocity().y
if y >= 5 then
y = 5
elseif y < 0 then
new_acce = {x = 0, y = 20, z = 0}
else
new_acce = {x = 0, y = 5, z = 0}
end
new_velo = get_velocity(self.v, self.object:getyaw(), y)
self.object:setpos(self.object:getpos())
else
new_acce = {x = 0, y = 0, z = 0}
if math.abs(self.object:getvelocity().y) < 1 then
local pos = self.object:getpos()
pos.y = math.floor(pos.y) + 0.5
self.object:setpos(pos)
new_velo = get_velocity(self.v, self.object:getyaw(), 0)
else
new_velo = get_velocity(self.v, self.object:getyaw(),
self.object:getvelocity().y)
self.object:setpos(self.object:getpos())
end
end
end
self.object:setvelocity(new_velo)
self.object:setacceleration(new_acce)
end
minetest.register_entity("boats:boat", boat)
minetest.register_craftitem("boats:boat", {
description = "Boat",
inventory_image = "boats_inventory.png",
wield_image = "boats_wield.png",
wield_scale = {x = 2, y = 2, z = 1},
liquids_pointable = true,
groups = {flammable = 2},
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node" then
return itemstack
end
if not is_water(pointed_thing.under) then
return itemstack
end
pointed_thing.under.y = pointed_thing.under.y + 0.5
boat = minetest.add_entity(pointed_thing.under, "boats:boat")
if boat then
boat:setyaw(placer:get_look_horizontal())
if not minetest.setting_getbool("creative_mode") then
itemstack:take_item()
end
end
return itemstack
end,
})
minetest.register_craft({
output = "boats:boat",
recipe = {
{"", "", "" },
{"group:wood", "", "group:wood"},
{"group:wood", "group:wood", "group:wood"},
},
})
minetest.register_craft({
type = "fuel",
recipe = "boats:boat",
burntime = 20,
})

View File

@ -1,63 +0,0 @@
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 and 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/

View File

@ -1,358 +0,0 @@
# Blender v2.76 (sub 11) OBJ File: 'boat.blend'
# www.blender.org
mtllib boat.mtl
o boats_boat
v -6.786140 -3.033999 -9.415440
v -6.786140 -1.967150 -9.415440
v -6.786140 -1.967150 8.793510
v -6.786140 -3.033999 8.793510
v 5.732520 -1.967150 -9.415440
v 5.732520 -3.033999 -9.415440
v 5.732520 -3.033999 8.793510
v 5.732520 -1.967150 8.793510
v -2.233900 -3.033999 -9.415440
v -2.233900 -1.967150 -9.415440
v -2.233900 -1.967150 8.793510
v -2.233900 -3.033999 8.793510
v 2.318340 -3.033999 -9.415440
v 2.318340 -1.967150 -9.415440
v 2.318340 -1.967150 8.793510
v 2.318340 -3.033999 8.793510
v -3.371960 -3.033999 8.793510
v -3.371960 -1.967150 8.793510
v -3.371960 -1.967150 -9.415440
v -3.371960 -3.033999 -9.415440
v 2.318340 0.276645 8.793510
v 1.180280 -1.967150 8.793510
v 5.732520 0.276645 8.793510
v 5.732520 1.039180 8.793510
v 6.870580 0.276645 8.793510
v 6.870580 -1.967150 8.793510
v 2.318340 1.039180 8.793510
v 1.180280 0.276645 8.793510
v 1.180280 1.039180 8.793510
v 1.180280 -3.033999 8.793510
v -2.233900 0.276645 8.793510
v -3.371960 0.276645 8.793510
v -2.233900 1.039180 8.793510
v -3.371960 1.039180 8.793510
v -6.786140 0.276645 8.793510
v -7.786200 0.276645 8.793510
v -7.786200 -1.967150 8.793510
v -6.786140 1.039180 8.793510
v 1.180280 -1.967150 -9.415440
v 1.180280 -3.033999 -9.415440
v 2.318340 0.276645 -9.415440
v 1.180280 0.276645 -9.415440
v 2.318340 1.039180 -9.415440
v 5.732520 0.276645 -9.415440
v 6.870580 -1.967150 -9.415440
v 5.732520 1.039180 -9.415440
v 6.870580 0.276645 -9.415440
v 0.042220 1.039180 -9.415440
v 1.180280 1.039180 -9.415440
v 0.042220 -1.967150 -9.415440
v -1.095840 -1.967150 -9.415440
v -2.233900 0.276645 -9.415440
v -3.371960 0.276645 -9.415440
v -2.233900 1.039180 -9.415440
v -1.095840 1.039180 -9.415440
v -3.371960 1.039180 -9.415440
v -6.786140 0.276645 -9.415440
v -6.786140 1.039180 -9.415440
v -7.786200 -1.967150 -9.415440
v -7.786200 0.276645 -9.415440
v -1.095840 0.156645 -12.044100
v -1.095840 -4.601110 -9.415440
v -1.095840 1.039181 -10.802900
v -1.095840 2.868579 -10.802900
v -1.095840 2.868580 -7.883420
v -1.095840 3.746069 -12.034100
v -1.095840 3.746070 -7.883420
v -1.095840 0.156645 -14.294900
v -1.095840 -4.601110 -14.284900
v 0.042220 -4.601110 -14.284900
v 0.042220 -4.601110 -9.415440
v 0.042220 1.039181 -10.802900
v 0.042220 0.156645 -12.044100
v 0.042220 2.868579 -10.802900
v 0.042220 0.156645 -14.294900
v 0.042220 3.746069 -12.034100
v 0.042220 3.746070 -7.883420
v 0.042220 2.868580 -7.883420
v -1.096322 -3.033999 -9.415440
v 0.044046 -3.035397 -9.415440
vt 1.000000 0.187500
vt -1.000000 0.312500
vt 1.000000 0.312500
vt 0.687500 1.000000
vt 0.500000 0.875000
vt 0.500000 0.625000
vt -1.000000 0.062500
vt 1.000000 0.062500
vt 1.000000 -0.000000
vt -1.000000 0.125000
vt 1.000000 0.125000
vt 0.437500 0.125000
vt 0.312500 0.500000
vt 0.312500 0.125000
vt 1.000000 0.625000
vt -1.000000 0.500000
vt 1.000000 0.500000
vt 0.187500 0.687500
vt -0.187500 0.687500
vt -0.187500 0.312500
vt 1.000000 0.812500
vt -1.000000 0.937500
vt -1.000000 0.812500
vt 0.812500 0.687500
vt 1.187500 0.687500
vt 0.812500 0.312500
vt 1.000000 0.562500
vt 0.312500 0.437500
vt 1.000000 0.437500
vt 1.000000 0.750000
vt -1.000000 0.875000
vt -1.000000 0.750000
vt -1.000000 1.000000
vt 1.000000 1.000000
vt 0.437500 0.625000
vt 0.562500 0.437500
vt 0.562500 0.625000
vt -1.000000 0.437500
vt -1.000000 0.000000
vt 0.500000 0.062500
vt 0.375000 0.750000
vt 0.500000 0.750000
vt -1.000000 0.250000
vt -1.000000 0.687500
vt 1.000000 0.687500
vt 0.625000 0.375000
vt 1.000000 0.375000
vt 1.000000 0.250000
vt 1.000000 0.937500
vt 0.437500 0.812500
vt 0.312500 0.312500
vt 0.312500 0.812500
vt 0.437500 0.312500
vt 0.437500 0.437500
vt 0.687500 0.812500
vt 0.000000 0.687500
vt 0.000000 0.812500
vt -1.000000 0.562500
vt 0.875000 0.812500
vt 0.875000 0.687500
vt 0.250000 0.312500
vt 0.562500 0.187500
vt 0.250000 0.187500
vt -1.000000 0.187500
vt 0.312500 0.625000
vt 0.312500 0.187500
vt 0.312500 -0.187500
vt 1.000000 -0.187500
vt 0.687500 0.500000
vt -0.000000 1.000000
vt 0.000000 0.875000
vt 0.437500 0.500000
vt -1.000000 0.625000
vt 0.812500 0.187500
vt 1.187500 0.187500
vt 1.187500 0.312500
vt 1.312500 0.312500
vt 1.312500 0.687500
vt 0.687500 0.187500
vt 0.687500 0.312500
vt 1.187500 0.812500
vt 0.812500 0.812500
vt 0.187500 0.312500
vt 0.312500 0.687500
vt 0.687500 0.687500
vt -0.187500 0.187500
vt 0.187500 0.187500
vt -0.312500 0.687500
vt -0.312500 0.312500
vt 0.187500 0.812500
vt -0.187500 0.812500
vt 0.437500 0.687500
vt 0.437500 0.187500
vt 0.562500 0.812500
vt 0.562500 0.687500
vt 0.312500 0.562500
vt 1.000000 0.875000
vt 0.375000 0.062500
vt -1.000000 0.375000
vt 0.625000 0.500000
vt 0.875000 0.562500
vt 0.937500 0.812500
vt 0.937500 0.687500
vt 0.875000 0.937500
vt 0.562500 0.312500
vn -1.000000 0.000000 0.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 0.000000
vn 0.000000 -0.002100 -1.000000
vn 0.001200 -1.000000 0.000000
vn 0.000000 0.002800 -1.000000
vn -0.001200 -1.000000 0.000200
g boats_boat_boats_boat_None
usemtl None
s off
f 41/1/1 27/2/1 43/3/1
f 76/4/2 74/5/2 72/6/2
f 8/7/2 6/1/2 5/8/2
f 15/9/1 13/10/1 16/11/1
f 51/12/3 71/13/3 50/14/3
f 56/15/2 32/16/2 53/17/2
f 15/18/3 8/19/3 23/20/3
f 22/21/2 40/22/2 39/23/2
f 19/24/4 2/25/4 53/26/4
f 70/27/5 62/28/5 69/29/5
f 11/30/5 19/31/5 10/32/5
f 4/15/5 20/33/5 17/34/5
f 72/35/3 64/36/3 63/37/3
f 13/8/5 7/38/5 16/7/5
f 23/39/6 47/11/6 44/9/6
f 68/40/7 70/41/7 69/42/7
f 80/43/8 40/10/8 30/11/8
f 3/15/1 1/32/1 4/30/1
f 20/44/2 18/27/2 17/45/2
f 74/17/5 65/46/5 64/47/5
f 31/43/1 54/47/1 52/48/1
f 22/47/5 14/43/5 15/48/5
f 46/1/2 23/7/2 44/8/2
f 57/21/1 38/22/1 58/49/1
f 61/50/9 76/51/9 73/52/9
f 37/45/5 2/23/5 3/21/5
f 78/28/3 67/53/3 65/54/3
f 64/5/1 66/4/1 63/6/1
f 76/55/6 67/56/6 77/57/6
f 47/17/2 26/10/2 45/11/2
f 5/16/5 26/47/5 8/17/5
f 33/58/6 48/59/6 55/60/6
f 29/38/2 42/3/2 49/29/2
f 32/44/6 52/21/6 53/45/6
f 58/15/6 34/33/6 56/34/6
f 27/7/6 46/29/6 43/8/6
f 73/61/6 68/62/6 61/63/6
f 21/58/6 42/29/6 28/38/6
f 11/29/1 9/58/1 12/27/1
f 59/45/1 36/2/1 60/3/1
f 60/9/6 35/10/6 57/11/6
f 41/1/1 21/64/1 27/2/1
f 72/6/2 48/65/2 50/66/2
f 50/66/2 71/67/2 70/68/2
f 70/68/2 75/17/2 73/69/2
f 76/4/2 77/70/2 74/5/2
f 77/70/2 78/71/2 74/5/2
f 50/66/2 70/68/2 73/69/2
f 73/69/2 76/4/2 72/6/2
f 72/6/2 50/66/2 73/69/2
f 8/7/2 7/64/2 6/1/2
f 15/9/1 14/39/1 13/10/1
f 51/12/3 62/72/3 71/13/3
f 56/15/2 34/73/2 32/16/2
f 32/26/3 34/74/3 38/75/3
f 35/76/3 36/77/3 37/78/3
f 32/26/3 38/75/3 35/76/3
f 29/66/3 33/79/3 31/80/3
f 32/26/3 35/76/3 3/25/3
f 28/51/3 29/66/3 31/80/3
f 31/80/3 32/26/3 18/24/3
f 3/25/3 4/81/3 17/82/3
f 35/76/3 37/78/3 3/25/3
f 21/83/3 28/51/3 22/84/3
f 3/25/3 17/82/3 18/24/3
f 11/85/3 12/55/3 30/52/3
f 32/26/3 3/25/3 18/24/3
f 11/85/3 30/52/3 22/84/3
f 31/80/3 18/24/3 11/85/3
f 24/86/3 27/87/3 21/83/3
f 28/51/3 31/80/3 11/85/3
f 11/85/3 22/84/3 28/51/3
f 24/86/3 21/83/3 23/20/3
f 26/88/3 25/89/3 23/20/3
f 23/20/3 21/83/3 15/18/3
f 15/18/3 16/90/3 7/91/3
f 21/83/3 22/84/3 15/18/3
f 8/19/3 26/88/3 23/20/3
f 15/18/3 7/91/3 8/19/3
f 22/21/2 30/49/2 40/22/2
f 47/89/4 45/88/4 5/19/4
f 5/19/4 6/91/4 13/90/4
f 5/19/4 13/90/4 14/18/4
f 44/20/4 47/89/4 5/19/4
f 43/87/4 46/86/4 44/20/4
f 41/83/4 43/87/4 44/20/4
f 44/20/4 5/19/4 14/18/4
f 39/84/4 40/52/4 80/50/4
f 44/20/4 14/18/4 41/83/4
f 42/51/4 41/83/4 39/84/4
f 39/84/4 80/50/4 50/92/4
f 41/83/4 14/18/4 39/84/4
f 48/93/4 49/66/4 42/51/4
f 50/92/4 48/93/4 42/51/4
f 80/50/4 79/94/4 50/92/4
f 50/92/4 42/51/4 39/84/4
f 54/79/4 55/62/4 52/80/4
f 50/92/4 79/94/4 51/95/4
f 52/80/4 55/62/4 51/95/4
f 51/95/4 79/94/4 10/85/4
f 79/94/4 9/55/4 10/85/4
f 53/26/4 52/80/4 10/85/4
f 58/75/4 56/74/4 53/26/4
f 59/78/4 60/77/4 57/76/4
f 57/76/4 58/75/4 53/26/4
f 52/80/4 51/95/4 10/85/4
f 19/24/4 20/82/4 1/81/4
f 53/26/4 10/85/4 19/24/4
f 59/78/4 57/76/4 2/25/4
f 19/24/4 1/81/4 2/25/4
f 2/25/4 57/76/4 53/26/4
f 70/27/5 71/96/5 62/28/5
f 11/30/5 18/97/5 19/31/5
f 4/15/5 1/73/5 20/33/5
f 72/35/3 74/54/3 64/36/3
f 13/8/5 6/29/5 7/38/5
f 23/39/6 25/10/6 47/11/6
f 68/40/7 75/98/7 70/41/7
f 30/11/5 12/17/5 79/99/5
f 79/99/10 80/43/10 30/11/10
f 12/17/5 9/16/5 79/99/5
f 3/15/1 2/73/1 1/32/1
f 20/44/2 19/58/2 18/27/2
f 74/17/5 78/100/5 65/46/5
f 31/43/1 33/99/1 54/47/1
f 22/47/5 39/99/5 14/43/5
f 46/1/2 24/64/2 23/7/2
f 57/21/1 35/23/1 38/22/1
f 61/50/9 66/53/9 76/51/9
f 37/45/5 59/44/5 2/23/5
f 78/28/3 77/51/3 67/53/3
f 62/67/1 51/66/1 69/68/1
f 51/66/1 55/65/1 63/6/1
f 68/17/1 69/68/1 61/69/1
f 61/69/1 69/68/1 51/66/1
f 61/69/1 51/66/1 63/6/1
f 65/71/1 67/70/1 64/5/1
f 61/69/1 63/6/1 66/4/1
f 64/5/1 67/70/1 66/4/1
f 76/55/6 66/85/6 67/56/6
f 47/17/2 25/16/2 26/10/2
f 5/16/5 45/99/5 26/47/5
f 55/60/6 54/101/6 33/58/6
f 33/58/6 29/22/6 48/59/6
f 48/59/6 72/102/6 63/103/6
f 29/22/6 49/104/6 48/59/6
f 48/59/6 63/103/6 55/60/6
f 29/38/2 28/2/2 42/3/2
f 32/44/6 31/23/6 52/21/6
f 58/15/6 38/73/6 34/33/6
f 27/7/6 24/38/6 46/29/6
f 73/61/6 75/105/6 68/62/6
f 21/58/6 41/27/6 42/29/6
f 11/29/1 10/38/1 9/58/1
f 59/45/1 37/44/1 36/2/1
f 60/9/6 36/39/6 35/10/6

Binary file not shown.

Before

Width:  |  Height:  |  Size: 546 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 542 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 365 B

After

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 392 B

After

Width:  |  Height:  |  Size: 391 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 B

After

Width:  |  Height:  |  Size: 408 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 440 B

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 464 B

After

Width:  |  Height:  |  Size: 461 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 482 B

After

Width:  |  Height:  |  Size: 471 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 431 B

After

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 439 B

After

Width:  |  Height:  |  Size: 440 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 454 B

After

Width:  |  Height:  |  Size: 455 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 459 B

After

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 515 B

After

Width:  |  Height:  |  Size: 529 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 528 B

After

Width:  |  Height:  |  Size: 531 B

116
mods/compass/init.lua Normal file
View File

@ -0,0 +1,116 @@
local compass = {}
compass.items = {
{"compass:n", (math.pi*0.5), "North"},
{"compass:s", (3*math.pi*0.5), "South"},
{"compass:w", (math.pi), "West"},
{"compass:e", (2*math.pi), "East"},
{"compass:ne", (9*math.pi*0.25), "North East"},
{"compass:nw", (3*math.pi*0.25), "North West"},
{"compass:se", (7*math.pi*0.25), "South East"},
{"compass:sw", (5*math.pi*0.25), "South West"},
}
local function compass_use(clicker)
local yaw = clicker:get_look_yaw()
for _, row in ipairs(compass.items) do
if yaw < row[2]+math.pi/8 and yaw >= row[2]-math.pi/8 then
minetest.chat_send_player(clicker:get_player_name(), "You are facing "..row[3])
end
end
end
minetest.register_globalstep(function(dtime)
for _, player in pairs(minetest.get_connected_players()) do
for _, item in pairs(compass.items) do
if player:get_wielded_item():get_name() == item[1] then
local yaw = player:get_look_yaw()
for _, row in pairs(compass.items) do
if yaw < row[2]+math.pi/8 and yaw >= row[2]-math.pi/8 then
player:set_wielded_item(row[1])
return
end
end
end
end
end
end)
minetest.register_craftitem("compass:n", {
description = "Compass",
inventory_image = "compass_n.png",
on_use = function(itemstack, user)
compass_use(user)
end
})
minetest.register_craftitem("compass:ne", {
description = "Compass",
inventory_image = "compass_ne.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user)
compass_use(user)
end
})
minetest.register_craftitem("compass:nw", {
description = "Compass",
inventory_image = "compass_nw.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user)
compass_use(user)
end
})
minetest.register_craftitem("compass:se", {
description = "Compass",
inventory_image = "compass_se.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user)
compass_use(user)
end
})
minetest.register_craftitem("compass:sw", {
description = "Compass",
inventory_image = "compass_sw.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user)
compass_use(user)
end
})
minetest.register_craftitem("compass:s", {
description = "Compass",
inventory_image = "compass_s.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user)
compass_use(user)
end
})
minetest.register_craftitem("compass:e", {
description = "Compass",
inventory_image = "compass_e.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user)
compass_use(user)
end
})
minetest.register_craftitem("compass:w", {
description = "Compass",
inventory_image = "compass_w.png",
groups = {not_in_creative_inventory=1},
on_use = function(itemstack, user)
compass_use(user)
end
})
minetest.register_craft({
output = "compass:n",
recipe = {
{'','default:gold_ingot',''},
{'default:gold_ingot','default:flint','default:gold_ingot'},
{'','default:gold_ingot',''},
},
})

23
mods/compass/license.txt Normal file
View File

@ -0,0 +1,23 @@
License for Code
----------------
Copyright (C) 2018 D00Med <heiselong@gmx.com>
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.
You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
License for Textures
---------------------------------------
CC BY-SA 3.0 UNPORTED.

1
mods/compass/readme.txt Normal file
View File

@ -0,0 +1 @@
compass mod for The Legend of Minetest

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 382 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 405 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 B

View File

@ -4,7 +4,9 @@ local load_time_start = minetest.get_us_time()
local creative_enabled = minetest.setting_getbool"creative_mode"
local big_formspec = "size[13,9]"..
"background[5,5;1,1;gui_formbg.png;true]"..
"list[current_name;main;0,0;13,5;]"..
default.gui_slots ..
"list[current_player;main;2.5,5.2;8,4;]"..
"listring[current_name;main]"..
"listring[current_player;main]"

View File

@ -24,11 +24,14 @@ function creative.init_creative_inventory(player)
return -1
end,
on_move = function(inv, from_list, from_index, to_list, to_index, count, player2)
minetest.sound_play("take", {to_player=player2:get_player_name(), gain=0.5, loop=false})
end,
on_put = function(inv, listname, index, stack, player2)
minetest.sound_play("put", {to_player=player2:get_player_name(), gain=0.5, loop=false})
end,
on_take = function(inv, listname, index, stack, player2)
if stack and stack:get_count() > 0 then
minetest.sound_play("take", {to_player=player2:get_player_name(), gain=0.5, loop=false})
minetest.log("action", player_name .. " takes " .. stack:get_name().. " from creative inventory")
end
end,
@ -126,12 +129,14 @@ function creative.register_tab(name, title, items)
assert(inv)
if fields.creative_clear then
minetest.sound_play("click2_2", {to_player=player_name, gain=1.2, loop=false})
inv.start_i = 0
inv.filter = ""
creative.update_creative_inventory(player_name, items)
sfinv.set_player_inventory_formspec(player, context)
elseif fields.creative_search or
fields.key_enter_field == "creative_filter" then
minetest.sound_play("click2", {to_player=player_name, gain=0.8, loop=false})
inv.start_i = 0
inv.filter = fields.creative_filter:lower()
creative.update_creative_inventory(player_name, items)
@ -140,6 +145,7 @@ function creative.register_tab(name, title, items)
local start_i = inv.start_i or 0
if fields.creative_prev then
minetest.sound_play("click2", {to_player=player_name, gain=0.8, loop=false})
start_i = start_i - 3*8
if start_i < 0 then
start_i = inv.size - (inv.size % (3*8))
@ -148,6 +154,7 @@ function creative.register_tab(name, title, items)
end
end
elseif fields.creative_next then
minetest.sound_play("click2", {to_player=player_name, gain=0.8, loop=false})
start_i = start_i + 3*8
if start_i >= inv.size then
start_i = 0

View File

@ -316,41 +316,41 @@ minetest.register_craft({
}
})
-- minetest.register_craft({
-- output = 'default:sword_steel',
-- recipe = {
-- {'default:steel_ingot'},
-- {'default:steel_ingot'},
-- {'group:stick'},
-- }
-- })
minetest.register_craft({
output = 'default:sword_steel',
recipe = {
{'default:steel_ingot'},
{'default:steel_ingot'},
{'group:stick'},
}
})
-- minetest.register_craft({
-- output = 'default:sword_bronze',
-- recipe = {
-- {'default:bronze_ingot'},
-- {'default:bronze_ingot'},
-- {'group:stick'},
-- }
-- })
minetest.register_craft({
output = 'default:sword_bronze',
recipe = {
{'default:bronze_ingot'},
{'default:bronze_ingot'},
{'group:stick'},
}
})
-- minetest.register_craft({
-- output = 'default:sword_mese',
-- recipe = {
-- {'default:mese_crystal'},
-- {'default:mese_crystal'},
-- {'group:stick'},
-- }
-- })
minetest.register_craft({
output = 'default:sword_mese',
recipe = {
{'default:mese_crystal'},
{'default:mese_crystal'},
{'group:stick'},
}
})
-- minetest.register_craft({
-- output = 'default:sword_diamond',
-- recipe = {
-- {'default:diamond'},
-- {'default:diamond'},
-- {'group:stick'},
-- }
-- })
minetest.register_craft({
output = 'default:sword_diamond',
recipe = {
{'default:diamond'},
{'default:diamond'},
{'group:stick'},
}
})
minetest.register_craft({
output = 'default:skeleton_key',
@ -392,12 +392,6 @@ minetest.register_craft({
}
})
minetest.register_craft({
type = "shapeless",
output = "default:bronze_ingot",
recipe = {"default:steel_ingot", "default:copper_ingot"},
})
minetest.register_craft({
output = 'default:coalblock',
recipe = {
@ -446,6 +440,29 @@ minetest.register_craft({
}
})
minetest.register_craft({
output = "default:tinblock",
recipe = {
{"default:tin_ingot", "default:tin_ingot", "default:tin_ingot"},
{"default:tin_ingot", "default:tin_ingot", "default:tin_ingot"},
{"default:tin_ingot", "default:tin_ingot", "default:tin_ingot"},
}
})
minetest.register_craft({
output = "default:tin_ingot 9",
recipe = {
{"default:tinblock"},
}
})
minetest.register_craft({
output = "default:bronze_ingot 2",
recipe = {
{"default:copper_ingot", "default:tin_ingot"},
}
})
minetest.register_craft({
output = 'default:bronzeblock',
recipe = {
@ -495,34 +512,98 @@ minetest.register_craft({
})
minetest.register_craft({
output = 'default:sandstone',
output = "default:sandstone",
recipe = {
{'group:sand', 'group:sand'},
{'group:sand', 'group:sand'},
{"default:sand", "default:sand"},
{"default:sand", "default:sand"},
}
})
minetest.register_craft({
output = 'default:sand 4',
output = "default:sand 4",
recipe = {
{'default:sandstone'},
{"default:sandstone"},
}
})
minetest.register_craft({
output = 'default:sandstonebrick 4',
output = "default:sandstonebrick 4",
recipe = {
{'default:sandstone', 'default:sandstone'},
{'default:sandstone', 'default:sandstone'},
{"default:sandstone", "default:sandstone"},
{"default:sandstone", "default:sandstone"},
}
})
minetest.register_craft({
output = 'default:sandstone_block 9',
output = "default:sandstone_block 9",
recipe = {
{'default:sandstone', 'default:sandstone', 'default:sandstone'},
{'default:sandstone', 'default:sandstone', 'default:sandstone'},
{'default:sandstone', 'default:sandstone', 'default:sandstone'},
{"default:sandstone", "default:sandstone", "default:sandstone"},
{"default:sandstone", "default:sandstone", "default:sandstone"},
{"default:sandstone", "default:sandstone", "default:sandstone"},
}
})
minetest.register_craft({
output = "default:desert_sandstone",
recipe = {
{"default:desert_sand", "default:desert_sand"},
{"default:desert_sand", "default:desert_sand"},
}
})
minetest.register_craft({
output = "default:desert_sand 4",
recipe = {
{"default:desert_sandstone"},
}
})
minetest.register_craft({
output = "default:desert_sandstone_brick 4",
recipe = {
{"default:desert_sandstone", "default:desert_sandstone"},
{"default:desert_sandstone", "default:desert_sandstone"},
}
})
minetest.register_craft({
output = "default:desert_sandstone_block 9",
recipe = {
{"default:desert_sandstone", "default:desert_sandstone", "default:desert_sandstone"},
{"default:desert_sandstone", "default:desert_sandstone", "default:desert_sandstone"},
{"default:desert_sandstone", "default:desert_sandstone", "default:desert_sandstone"},
}
})
minetest.register_craft({
output = "default:silver_sandstone",
recipe = {
{"default:silver_sand", "default:silver_sand"},
{"default:silver_sand", "default:silver_sand"},
}
})
minetest.register_craft({
output = "default:silver_sand 4",
recipe = {
{"default:silver_sandstone"},
}
})
minetest.register_craft({
output = "default:silver_sandstone_brick 4",
recipe = {
{"default:silver_sandstone", "default:silver_sandstone"},
{"default:silver_sandstone", "default:silver_sandstone"},
}
})
minetest.register_craft({
output = "default:silver_sandstone_block 9",
recipe = {
{"default:silver_sandstone", "default:silver_sandstone", "default:silver_sandstone"},
{"default:silver_sandstone", "default:silver_sandstone", "default:silver_sandstone"},
{"default:silver_sandstone", "default:silver_sandstone", "default:silver_sandstone"},
}
})
@ -582,11 +663,11 @@ minetest.register_craft({
})
minetest.register_craft({
output = 'default:ladder_wood 3',
output = "default:ladder_wood 5",
recipe = {
{'group:stick', '', 'group:stick'},
{'group:stick', 'group:stick', 'group:stick'},
{'group:stick', '', 'group:stick'},
{"group:stick", "", "group:stick"},
{"group:stick", "group:stick", "group:stick"},
{"group:stick", "", "group:stick"},
}
})
@ -632,10 +713,19 @@ minetest.register_craft({
})
minetest.register_craft({
output = 'default:meselamp 1',
output = 'default:meselamp',
recipe = {
{'', 'default:mese_crystal',''},
{'default:mese_crystal', 'default:glass', 'default:mese_crystal'},
{'default:glass'},
{'default:mese_crystal'},
}
})
minetest.register_craft({
output = "default:mese_post_light 3",
recipe = {
{"", "default:glass", ""},
{"default:mese_crystal", "default:mese_crystal", "default:mese_crystal"},
{"", "group:wood", ""},
}
})
@ -776,6 +866,12 @@ minetest.register_craft({
recipe = "default:copper_lump",
})
minetest.register_craft({
type = "cooking",
output = "default:tin_ingot",
recipe = "default:tin_lump",
})
minetest.register_craft({
type = "cooking",
output = "default:gold_ingot",
@ -893,6 +989,18 @@ minetest.register_craft({
burntime = 10,
})
minetest.register_craft({
type = "fuel",
recipe = "default:bush_sapling",
burntime = 6,
})
minetest.register_craft({
type = "fuel",
recipe = "default:acacia_bush_sapling",
burntime = 7,
})
minetest.register_craft({
type = "fuel",
recipe = "default:aspen_sapling",
@ -1075,6 +1183,12 @@ minetest.register_craft({
burntime = 3,
})
minetest.register_craft({
type = "fuel",
recipe = "default:book_written",
burntime = 3,
})
minetest.register_craft({
type = "fuel",
recipe = "default:dry_shrub",

View File

@ -12,14 +12,23 @@ minetest.register_craftitem("default:paper", {
groups = {flammable = 3},
})
local lpp = 14 -- Lines per book's page
local function book_on_use(itemstack, user)
local player_name = user:get_player_name()
local data = minetest.deserialize(itemstack:get_metadata())
local meta = itemstack:get_meta()
local title, text, owner = "", "", player_name
local page, page_max, lines, string = 1, 1, {}, ""
if data then
-- Backwards compatibility
local old_data = minetest.deserialize(itemstack:get_metadata())
if old_data then
meta:from_table({ fields = old_data })
end
local data = meta:to_table().fields
if data.owner then
title = data.title
text = data.text
owner = data.owner
@ -63,6 +72,7 @@ local function book_on_use(itemstack, user)
end
minetest.show_formspec(player_name, "default:book", formspec)
return itemstack
end
minetest.register_on_player_receive_fields(function(player, formname, fields)
@ -81,35 +91,42 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
new_stack = ItemStack("default:book_written")
end
else
data = minetest.deserialize(stack:get_metadata())
data = stack:get_meta():to_table().fields
end
if data and data.owner and data.owner ~= player:get_player_name() then
return
end
if not data then data = {} end
data.title = fields.title
data.owner = player:get_player_name()
data.description = "\""..fields.title.."\" by "..data.owner
data.text = fields.text
data.text_len = #data.text
data.page = 1
data.page_max = math.ceil((#data.text:gsub("[^\n]", "") + 1) / lpp)
data.owner = player:get_player_name()
local data_str = minetest.serialize(data)
if new_stack then
new_stack:set_metadata(data_str)
new_stack:get_meta():from_table({ fields = data })
if inv:room_for_item("main", new_stack) then
inv:add_item("main", new_stack)
else
minetest.add_item(player:getpos(), new_stack)
end
else
stack:set_metadata(data_str)
stack:get_meta():from_table({ fields = data })
end
elseif fields.book_next or fields.book_prev then
local data = minetest.deserialize(stack:get_metadata())
local data = stack:get_meta():to_table().fields
if not data or not data.page then
return
end
data.page = tonumber(data.page)
data.page_max = tonumber(data.page_max)
if fields.book_next then
data.page = data.page + 1
if data.page > data.page_max then
@ -122,11 +139,11 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
end
end
local data_str = minetest.serialize(data)
stack:set_metadata(data_str)
book_on_use(stack, player)
stack:get_meta():from_table({fields = data})
stack = book_on_use(stack, player)
end
-- Update stack
player:set_wielded_item(stack)
end)
@ -167,13 +184,69 @@ minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv
if not original then
return
end
local copymeta = original:get_metadata()
local copymeta = original:get_meta():to_table()
-- copy of the book held by player's mouse cursor
itemstack:set_metadata(copymeta)
itemstack:get_meta():from_table(copymeta)
-- put the book with metadata back in the craft grid
craft_inv:set_stack("craft", index, original)
end)
minetest.register_craftitem("default:skeleton_key", {
description = "Skeleton Key",
inventory_image = "default_key_skeleton.png",
groups = {key = 1},
on_use = function(itemstack, user, pointed_thing)
if pointed_thing.type ~= "node" then
return itemstack
end
local pos = pointed_thing.under
local node = minetest.get_node(pos)
if not node then
return itemstack
end
local on_skeleton_key_use = minetest.registered_nodes[node.name].on_skeleton_key_use
if not on_skeleton_key_use then
return itemstack
end
-- make a new key secret in case the node callback needs it
local random = math.random
local newsecret = string.format(
"%04x%04x%04x%04x",
random(2^16) - 1, random(2^16) - 1,
random(2^16) - 1, random(2^16) - 1)
local secret, _, _ = on_skeleton_key_use(pos, user, newsecret)
if secret then
local inv = minetest.get_inventory({type="player", name=user:get_player_name()})
-- update original itemstack
itemstack:take_item()
-- finish and return the new key
local new_stack = ItemStack("default:key")
local meta = new_stack:get_meta()
meta:set_string("secret", secret)
meta:set_string("description", "Key to "..user:get_player_name().."'s "
..minetest.registered_nodes[node.name].description)
if itemstack:get_count() == 0 then
itemstack = new_stack
else
if inv:add_item("main", new_stack):get_count() > 0 then
minetest.add_item(user:getpos(), new_stack)
end -- else: added to inventory successfully
end
return itemstack
end
end
})
minetest.register_craftitem("default:coal_lump", {
description = "Coal Lump",
inventory_image = "default_coal_lump.png",
@ -190,6 +263,11 @@ minetest.register_craftitem("default:copper_lump", {
inventory_image = "default_copper_lump.png",
})
minetest.register_craftitem("default:tin_lump", {
description = "Tin Lump",
inventory_image = "default_tin_lump.png",
})
minetest.register_craftitem("default:mese_crystal", {
description = "Mese Crystal",
inventory_image = "default_mese_crystal.png",
@ -220,6 +298,11 @@ minetest.register_craftitem("default:copper_ingot", {
inventory_image = "default_copper_ingot.png",
})
minetest.register_craftitem("default:tin_ingot", {
description = "Tin Ingot",
inventory_image = "default_tin_ingot.png",
})
minetest.register_craftitem("default:bronze_ingot", {
description = "Bronze Ingot",
inventory_image = "default_bronze_ingot.png",
@ -249,4 +332,3 @@ minetest.register_craftitem("default:flint", {
description = "Flint",
inventory_image = "default_flint.png"
})

View File

@ -18,7 +18,7 @@ end
function default.node_sound_stone_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_hard_footstep", gain = 0.5}
{name = "default_hard_footstep", gain = 0.3}
table.dug = table.dug or
{name = "default_hard_footstep", gain = 1.0}
default.node_sound_defaults(table)
@ -28,9 +28,9 @@ end
function default.node_sound_dirt_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_dirt_footstep", gain = 1.0}
{name = "default_dirt_footstep", gain = 0.4}
table.dug = table.dug or
{name = "default_dirt_footstep", gain = 1.5}
{name = "default_dirt_footstep", gain = 1.0}
table.place = table.place or
{name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table)
@ -52,7 +52,7 @@ end
function default.node_sound_gravel_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_gravel_footstep", gain = 0.5}
{name = "default_gravel_footstep", gain = 0.4}
table.dug = table.dug or
{name = "default_gravel_footstep", gain = 1.0}
table.place = table.place or
@ -64,7 +64,7 @@ end
function default.node_sound_wood_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_wood_footstep", gain = 0.5}
{name = "default_wood_footstep", gain = 0.3}
table.dug = table.dug or
{name = "default_wood_footstep", gain = 1.0}
default.node_sound_defaults(table)
@ -74,11 +74,9 @@ end
function default.node_sound_leaves_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_grass_footstep", gain = 0.35}
{name = "default_grass_footstep", gain = 0.45}
table.dug = table.dug or
{name = "default_grass_footstep", gain = 0.7}
table.dig = table.dig or
{name = "default_dig_crumbly", gain = 0.4}
table.place = table.place or
{name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table)
@ -88,6 +86,8 @@ 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}
@ -98,7 +98,7 @@ end
function default.node_sound_metal_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_metal_footstep", gain = 0.5}
{name = "default_metal_footstep", gain = 0.4}
table.dig = table.dig or
{name = "default_dig_metal", gain = 0.5}
table.dug = table.dug or
@ -131,18 +131,17 @@ default.cool_lava = function(pos, node)
{pos = pos, max_hear_distance = 16, gain = 0.25})
end
minetest.register_abm({
label = "Lava cooling",
nodenames = {"default:lava_source", "default:lava_flowing"},
neighbors = {"group:cools_lava", "group:water"},
interval = 1,
chance = 1,
catch_up = false,
action = function(...)
default.cool_lava(...)
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 = 1,
chance = 2,
catch_up = false,
action = default.cool_lava,
})
end
--
-- optimized helper to put all items in an inventory into a drops list
@ -184,6 +183,9 @@ function default.grow_cactus(pos, node)
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
@ -207,6 +209,9 @@ function default.grow_papyrus(pos, node)
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
@ -217,9 +222,7 @@ minetest.register_abm({
neighbors = {"group:sand"},
interval = 12,
chance = 83,
action = function(...)
default.grow_cactus(...)
end
action = default.grow_cactus
})
minetest.register_abm({
@ -228,9 +231,7 @@ minetest.register_abm({
neighbors = {"default:dirt", "default:dirt_with_grass"},
interval = 14,
chance = 71,
action = function(...)
default.grow_papyrus(...)
end
action = default.grow_papyrus
})
@ -319,47 +320,65 @@ default.after_place_leaves = function(pos, placer, itemstack, pointed_thing)
end
end
-- Leafdecay ABM
minetest.register_abm({
label = "Leaf decay",
nodenames = {"group:leafdecay"},
neighbors = {"air"},
interval = 2,
chance = 10,
catch_up = false,
action = function(pos, node, _, _)
-- Check if leaf is placed
if node.param2 ~= 0 then
return
-- 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 rad = minetest.registered_nodes[node.name].groups.leafdecay
-- Assume ignore is a trunk, to make this
-- work at the border of a loaded area
if minetest.find_node_near(pos, rad, {"ignore", "group:tree"}) then
return
end
-- Drop stuff
local itemstacks = minetest.get_node_drops(node.name)
for _, itemname in ipairs(itemstacks) do
if itemname ~= node.name or
minetest.get_item_group(node.name, "leafdecay_drop") ~= 0 then
local p_drop = {
x = pos.x - 0.5 + math.random(),
y = pos.y - 0.5 + math.random(),
z = pos.z - 0.5 + math.random(),
}
minetest.add_item(p_drop, itemname)
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
-- Remove node
minetest.remove_node(pos)
minetest.check_for_falling(pos)
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
@ -437,7 +456,7 @@ minetest.register_abm({
minetest.register_abm({
label = "Moss growth",
nodenames = {"default:cobble", "stairs:slab_cobble", "stairs:stair_cobble"},
nodenames = {"default:cobble", "stairs:slab_cobble", "stairs:stair_cobble", "walls:cobble"},
neighbors = {"group:water"},
interval = 16,
chance = 200,
@ -449,6 +468,8 @@ minetest.register_abm({
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
})
@ -508,3 +529,46 @@ minetest.register_abm({
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

@ -113,62 +113,78 @@ local function furnace_node_timer(pos, elapsed)
local fuel_totaltime = meta:get_float("fuel_totaltime") or 0
local inv = meta:get_inventory()
local srclist = inv:get_list("src")
local fuellist = inv:get_list("fuel")
local srclist, fuellist
--
-- Cooking
--
local cookable, cooked
local fuel
-- Check if we have cookable content
local cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
local cookable = true
local update = true
while update do
update = false
if cooked.time == 0 then
cookable = false
end
srclist = inv:get_list("src")
fuellist = inv:get_list("fuel")
-- Check if we have enough fuel to burn
if fuel_time < fuel_totaltime then
-- The furnace is currently active and has enough fuel
fuel_time = fuel_time + 1
--
-- Cooking
--
-- If there is a cookable item then check if it is ready yet
if cookable then
src_time = src_time + 1
if src_time >= cooked.time then
-- Place result in dst list if possible
if inv:room_for_item("dst", cooked.item) then
inv:add_item("dst", cooked.item)
inv:set_stack("src", 1, aftercooked.items[1])
src_time = 0
-- Check if we have cookable content
local aftercooked
cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
cookable = cooked.time ~= 0
-- Check if we have enough fuel to burn
if fuel_time < fuel_totaltime then
-- The furnace is currently active and has enough fuel
fuel_time = fuel_time + elapsed
-- If there is a cookable item then check if it is ready yet
if cookable then
src_time = src_time + elapsed
if src_time >= cooked.time then
-- Place result in dst list if possible
if inv:room_for_item("dst", cooked.item) then
inv:add_item("dst", cooked.item)
inv:set_stack("src", 1, aftercooked.items[1])
src_time = src_time - cooked.time
update = true
end
end
end
end
else
-- Furnace ran out of fuel
if cookable then
-- We need to get new fuel
local fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
if fuel.time == 0 then
-- No valid fuel in fuel list
fuel_totaltime = 0
fuel_time = 0
src_time = 0
else
-- Take fuel from fuel list
inv:set_stack("fuel", 1, afterfuel.items[1])
fuel_totaltime = fuel.time
fuel_time = 0
end
else
-- We don't need to get new fuel since there is no cookable item
fuel_totaltime = 0
-- Furnace ran out of fuel
if cookable then
-- We need to get new fuel
local afterfuel
fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
if fuel.time == 0 then
-- No valid fuel in fuel list
fuel_totaltime = 0
src_time = 0
else
-- Take fuel from fuel list
inv:set_stack("fuel", 1, afterfuel.items[1])
update = true
fuel_totaltime = fuel.time + (fuel_time - fuel_totaltime)
src_time = src_time + elapsed
end
else
-- We don't need to get new fuel since there is no cookable item
fuel_totaltime = 0
src_time = 0
end
fuel_time = 0
src_time = 0
end
elapsed = 0
end
if fuel and fuel_totaltime > fuel.time then
fuel_totaltime = fuel.time
end
if srclist[1]:is_empty() then
src_time = 0
end
--
@ -196,7 +212,7 @@ local function furnace_node_timer(pos, elapsed)
local active = "inactive "
local result = false
if fuel_time <= fuel_totaltime and fuel_totaltime ~= 0 then
if fuel_totaltime ~= 0 then
active = "active "
local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100)
fuel_state = fuel_percent .. "%"
@ -210,8 +226,7 @@ local function furnace_node_timer(pos, elapsed)
end
swap_node(pos, "default:furnace")
-- stop timer on the inactive furnace
local timer = minetest.get_node_timer(pos)
timer:stop()
minetest.get_node_timer(pos):stop()
end
local infotext = "Furnace " .. active .. "(Item: " .. item_state .. "; Fuel: " .. fuel_state .. ")"
@ -259,13 +274,11 @@ minetest.register_node("default:furnace", {
end,
on_metadata_inventory_move = function(pos)
local timer = minetest.get_node_timer(pos)
timer:start(1.0)
minetest.get_node_timer(pos):start(1.0)
end,
on_metadata_inventory_put = function(pos)
-- start timer function, it will sort out whether furnace can burn or not.
local timer = minetest.get_node_timer(pos)
timer:start(1.0)
minetest.get_node_timer(pos):start(1.0)
end,
on_blast = function(pos)
local drops = {}

View File

@ -27,7 +27,7 @@ default.gui_survival_form = "size[8,8.5]"..
default.gui_slots..
"list[current_player;main;0,4.25;8,1;]"..
"list[current_player;main;0,5.5;8,3;8]"..
"list[current_player;craft;1.75,0.5;2,2;]"..
"list[current_player;craft;1.75,0.5;3,3;]"..
"list[current_player;craftpreview;5.75,1.5;1,1;]"..
"image[4.75,1.5;1,1;gui_furnace_arrow_bg.png^[transformR270]"..
"listring[current_player;main]"..

View File

@ -84,7 +84,7 @@ default_diamond.png
default_torch_on_floor_animated.png
default_brick.png
default_jungletree.png default_tree_top.png
default_water_source_animated.png
default_water_source_animated_old.png
default_water_flowing_animated.png
default_sand.png
default_river_water_source_animated.png
@ -93,6 +93,7 @@ default_jungletree.png default_tree_top.png
by D00Med and toby109tt(aka tobyplowy) (CC BY-SA 3.0):
default_clay.png
default_dirt.png
default_water_source_animated.png
toby109tt(aka tobyplowy) (CC BY-SA 3.0):
default_stone.png

View File

@ -238,7 +238,41 @@ function default.register_ores()
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({

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 804 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -0,0 +1,12 @@
# Blender MTL File: 'None'
# Material Count: 1
newmtl Material
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ni 1.000000
d 1.000000
illum 2
map_Kd D:\Games\minetest-0.4.16-win64\games\LegendofMinetest\mods\hyrule_mapgen\textures\default_chest_open.png

View File

@ -0,0 +1,172 @@
# Blender v2.72 (sub 0) OBJ File: ''
# www.blender.org
mtllib chest_open.mtl
o Cube.004_Cube.005
v 0.850148 -0.231463 -0.858028
v 0.850148 -0.231463 0.852617
v 0.850148 0.012844 0.852617
v 0.850148 0.012844 -0.858028
v 1.000000 -0.991358 -1.000000
v 1.000000 0.012844 -1.000000
v 1.000000 0.012844 1.000000
v 1.000000 -0.991359 1.000000
v -1.000000 -0.991359 -1.000000
v -1.000000 0.012843 -1.000000
v 0.850148 0.012844 -1.000000
v -0.844246 -0.231464 -0.858028
v -0.844246 0.012843 -0.858028
v -0.844246 -0.231464 0.852617
v -1.000000 -0.991359 1.000000
v 0.850148 0.012844 1.000000
v -0.844246 0.012843 0.852617
v -1.000000 0.012843 1.000000
v -1.000000 0.013792 0.999608
v -1.000000 0.165023 1.414298
v -1.000000 2.043976 0.729068
v -1.000000 1.892744 0.314378
v -1.000000 1.759364 0.363020
v 1.000000 2.043976 0.729069
v 1.000000 0.165023 1.414298
v 1.000000 0.013792 0.999608
v 1.000000 1.892744 0.314378
v -0.999271 1.988884 0.588066
v -0.999271 0.121475 1.268899
v -0.999271 0.018663 0.987067
v -0.999271 1.886070 0.306234
v 0.993368 1.988883 0.588066
v 0.993368 1.886070 0.306234
v 0.993369 0.121475 1.268899
v 0.844246 0.013792 0.999608
v 0.993368 0.018663 0.987067
v -0.989339 0.767963 1.734911
v -0.989339 1.788985 1.362558
v -0.989339 1.688742 1.087686
v -0.989339 0.667721 1.460039
v 0.991289 1.788985 1.362558
v 0.991289 1.688742 1.087686
v 0.991289 0.767963 1.734911
v 0.991289 0.667721 1.460039
v -0.992142 0.572787 1.663177
v -0.992142 1.892160 1.182019
v -0.992142 1.791919 0.907147
v -0.992142 0.472544 1.388305
v 0.994097 1.892160 1.182019
v 0.994097 1.791919 0.907146
v 0.994097 0.572787 1.663178
v 0.994097 0.472544 1.388305
v -0.995146 0.384756 1.593919
v -0.995146 1.991462 1.007975
v -0.995146 1.891218 0.733103
v -0.995146 0.284514 1.319046
v 0.997107 1.991462 1.007975
v 0.997107 1.891218 0.733103
v 0.997107 0.384756 1.593918
v 0.997107 0.284514 1.319046
vt 0.354167 0.500000
vt 0.354167 0.718750
vt 0.666667 0.000000
vt 0.666667 0.250000
vt 0.333333 0.250000
vt 0.333333 0.000000
vt 0.645833 0.500000
vt 0.645833 0.718750
vt 0.666667 0.500000
vt 1.000000 0.000000
vt 1.000000 0.500000
vt 0.000000 0.000000
vt 0.666667 0.375000
vt 0.333333 0.375000
vt 0.645833 0.812500
vt 0.000000 0.375000
vt 0.000000 0.250000
vt 0.354167 0.906250
vt 0.645833 0.906250
vt 0.354167 0.812500
vt 0.333333 0.500000
vt 0.333333 1.000000
vt 0.000000 1.000000
vt 0.000000 0.500000
vt 0.416667 0.500000
vt 0.583333 0.500000
vt 0.583333 0.406250
vt 0.416667 0.406250
vt 0.000000 0.437500
vt 0.333333 0.437500
vt 0.666667 0.437500
vt 0.333333 0.718750
vt 0.333333 0.812500
vt 0.000000 0.812500
vt 0.000000 0.718750
vt 0.395833 0.468750
vt 0.604167 0.468750
vt 0.604167 0.375000
vt 0.395833 0.375000
vt 0.333333 0.468750
vt 0.000000 0.468750
vt 0.000000 0.406250
vt 0.333333 0.406250
vt 0.333333 0.562500
vt 0.333333 0.781250
vt 0.000000 0.781250
vt 0.000000 0.562500
vt 0.354167 0.437500
vt 0.645833 0.437500
vt 0.645833 0.343750
vt 0.354167 0.343750
vt 0.333333 0.906250
vt 0.000000 0.906250
vt 0.541667 0.656250
vt 0.520833 0.656250
vt 0.520833 0.718750
vt 0.541667 0.718750
vt 0.520833 0.843750
vt 0.520833 0.812500
vt 0.520833 0.687500
vt 0.479167 0.656250
vt 0.479167 0.687500
vt 0.479167 0.812500
vt 0.479167 0.843750
vt 0.645833 0.250000
vt 0.354167 0.250000
vt 0.020833 0.250000
usemtl Material
s off
f 1/1 2/1 3/2 4/2
f 5/3 6/4 7/5 8/6
f 12/7 1/1 4/2 13/8
f 2/9 1/3 12/10 14/11
f 15/6 9/6 5/12 8/12
f 2/1 14/7 17/8 3/2
f 14/7 12/7 13/8 17/8
f 24/13 25/14 26/5 27/4
f 28/15 29/15 30/8 31/8
f 9/3 15/6 18/5 10/4
f 21/14 24/16 27/17 22/5
f 32/18 28/19 31/15 33/20
f 29/15 28/15 32/20 34/20
f 25/21 24/22 21/23 20/24
f 29/15 34/20 36/2 30/8
f 34/20 32/20 33/2 36/2
f 37/25 38/26 39/27 40/28
f 38/21 41/24 42/29 39/30
f 41/26 43/25 44/28 42/27
f 43/30 37/31 40/13 44/14
f 40/30 39/30 42/29 44/29
f 43/32 41/33 38/34 37/35
f 45/36 46/37 47/38 48/39
f 46/40 49/41 50/42 47/43
f 49/37 51/36 52/39 50/38
f 51/30 45/31 48/13 52/14
f 48/43 47/43 50/42 52/42
f 51/44 49/45 46/46 45/47
f 53/48 54/49 55/50 56/51
f 54/30 57/29 58/16 55/14
f 57/49 59/48 60/51 58/50
f 59/30 53/31 56/13 60/14
f 59/44 57/52 54/53 53/47
f 3/54 16/54 7/55 6/56 11/57 4/54
f 3/58 17/59 13/60 4/55 11/61 10/62 18/63 16/64
f 23/65 19/5 20/14 21/13 22/4
f 18/4 15/3 8/6 7/5 16/66
f 20/13 19/4 35/66 26/5 25/14
f 10/5 11/67 6/17 5/12 9/6

File diff suppressed because it is too large Load Diff

View File

@ -95,10 +95,6 @@ minetest.register_on_joinplayer(function(player)
default.player_set_model(player, "character.b3d")
player:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30)
-- set GUI
if not minetest.setting_getbool("creative_mode") then
player:set_inventory_formspec(default.gui_survival_form)
end
player:hud_set_hotbar_image("gui_hotbar.png")
player:hud_set_hotbar_selected_image("gui_hotbar_selected.png")
end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 494 B

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 476 B

After

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 688 B

After

Width:  |  Height:  |  Size: 796 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 483 B

After

Width:  |  Height:  |  Size: 607 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 863 B

After

Width:  |  Height:  |  Size: 740 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 510 B

After

Width:  |  Height:  |  Size: 681 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 722 B

After

Width:  |  Height:  |  Size: 747 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 428 B

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 277 B

After

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 292 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 B

After

Width:  |  Height:  |  Size: 600 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 358 B

After

Width:  |  Height:  |  Size: 570 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 785 B

After

Width:  |  Height:  |  Size: 808 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 B

After

Width:  |  Height:  |  Size: 749 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 736 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 648 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 B

After

Width:  |  Height:  |  Size: 695 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 719 B

After

Width:  |  Height:  |  Size: 731 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 726 B

After

Width:  |  Height:  |  Size: 798 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 714 B

After

Width:  |  Height:  |  Size: 697 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 B

After

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 B

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 B

After

Width:  |  Height:  |  Size: 486 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 B

After

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 B

After

Width:  |  Height:  |  Size: 545 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 539 B

After

Width:  |  Height:  |  Size: 686 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 B

After

Width:  |  Height:  |  Size: 803 B

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